master/main fix (#1150)

This commit is contained in:
Srinath Narayanan 2021-10-28 04:38:34 -07:00 committed by GitHub
parent 7d9faec81e
commit 4ce1252e58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 18 deletions

View File

@ -1,14 +1,14 @@
import { DefaultButton, IButtonProps, ITextFieldProps, TextField } from "@fluentui/react"; import { DefaultButton, IButtonProps, ITextFieldProps, TextField } from "@fluentui/react";
import * as React from "react"; import * as React from "react";
import * as Constants from "../../../Common/Constants"; import * as Constants from "../../../Common/Constants";
import * as UrlUtility from "../../../Common/UrlUtility";
import { IGitHubRepo } from "../../../GitHub/GitHubClient";
import { Action } from "../../../Shared/Telemetry/TelemetryConstants"; import { Action } from "../../../Shared/Telemetry/TelemetryConstants";
import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor";
import * as GitHubUtils from "../../../Utils/GitHubUtils";
import Explorer from "../../Explorer";
import { RepoListItem } from "./GitHubReposComponent"; import { RepoListItem } from "./GitHubReposComponent";
import { ChildrenMargin } from "./GitHubStyleConstants"; import { ChildrenMargin } from "./GitHubStyleConstants";
import * as GitHubUtils from "../../../Utils/GitHubUtils";
import { IGitHubRepo } from "../../../GitHub/GitHubClient";
import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor";
import * as UrlUtility from "../../../Common/UrlUtility";
import Explorer from "../../Explorer";
export interface AddRepoComponentProps { export interface AddRepoComponentProps {
container: Explorer; container: Explorer;
@ -27,7 +27,6 @@ export class AddRepoComponent extends React.Component<AddRepoComponentProps, Add
private static readonly ButtonText = "Add"; private static readonly ButtonText = "Add";
private static readonly TextFieldPlaceholder = "https://github.com/owner/repo/tree/branch"; private static readonly TextFieldPlaceholder = "https://github.com/owner/repo/tree/branch";
private static readonly TextFieldErrorMessage = "Invalid url"; private static readonly TextFieldErrorMessage = "Invalid url";
private static readonly DefaultBranchName = "master";
constructor(props: AddRepoComponentProps) { constructor(props: AddRepoComponentProps) {
super(props); super(props);
@ -78,7 +77,7 @@ export class AddRepoComponent extends React.Component<AddRepoComponentProps, Add
}); });
let enteredUrl = this.state.textFieldValue; let enteredUrl = this.state.textFieldValue;
if (enteredUrl.indexOf("/tree/") === -1) { if (enteredUrl.indexOf("/tree/") === -1) {
enteredUrl = UrlUtility.createUri(enteredUrl, `tree/${AddRepoComponent.DefaultBranchName}`); enteredUrl = UrlUtility.createUri(enteredUrl, `tree/`);
} }
const repoInfo = GitHubUtils.fromRepoUri(enteredUrl); const repoInfo = GitHubUtils.fromRepoUri(enteredUrl);
@ -93,11 +92,7 @@ export class AddRepoComponent extends React.Component<AddRepoComponentProps, Add
const item: RepoListItem = { const item: RepoListItem = {
key: GitHubUtils.toRepoFullName(repo.owner, repo.name), key: GitHubUtils.toRepoFullName(repo.owner, repo.name),
repo, repo,
branches: [ branches: repoInfo.branch ? [{ name: repoInfo.branch }] : [],
{
name: repoInfo.branch,
},
],
}; };
TelemetryProcessor.traceSuccess( TelemetryProcessor.traceSuccess(

View File

@ -24,11 +24,11 @@ import { RepoListItem } from "./GitHubReposComponent";
import { import {
BranchesDropdownCheckboxStyles, BranchesDropdownCheckboxStyles,
BranchesDropdownOptionContainerStyle, BranchesDropdownOptionContainerStyle,
BranchesDropdownStyles,
BranchesDropdownWidth,
ReposListBranchesColumnWidth,
ReposListCheckboxStyles, ReposListCheckboxStyles,
ReposListRepoColumnMinWidth, ReposListRepoColumnMinWidth,
ReposListBranchesColumnWidth,
BranchesDropdownWidth,
BranchesDropdownStyles,
} from "./GitHubStyleConstants"; } from "./GitHubStyleConstants";
export interface ReposListComponentProps { export interface ReposListComponentProps {
@ -44,6 +44,7 @@ export interface BranchesProps {
lastPageInfo?: IGitHubPageInfo; lastPageInfo?: IGitHubPageInfo;
hasMore: boolean; hasMore: boolean;
isLoading: boolean; isLoading: boolean;
defaultBranchName: string;
loadMore: () => void; loadMore: () => void;
} }
@ -64,7 +65,7 @@ export class ReposListComponent extends React.Component<ReposListComponentProps>
private static readonly BranchesColumnName = "Branches"; private static readonly BranchesColumnName = "Branches";
private static readonly LoadingText = "Loading..."; private static readonly LoadingText = "Loading...";
private static readonly LoadMoreText = "Load more"; private static readonly LoadMoreText = "Load more";
private static readonly DefaultBranchName = "master"; private static readonly DefaultBranchNames = "master/main";
private static readonly FooterIndex = -1; private static readonly FooterIndex = -1;
public render(): JSX.Element { public render(): JSX.Element {
@ -155,6 +156,10 @@ export class ReposListComponent extends React.Component<ReposListComponentProps>
} }
const branchesProps = this.props.branchesProps[GitHubUtils.toRepoFullName(item.repo.owner, item.repo.name)]; const branchesProps = this.props.branchesProps[GitHubUtils.toRepoFullName(item.repo.owner, item.repo.name)];
if (item.branches.length === 0 && branchesProps.defaultBranchName) {
item.branches = [{ name: branchesProps.defaultBranchName }];
}
const options: IDropdownOption[] = branchesProps.branches.map((branch) => ({ const options: IDropdownOption[] = branchesProps.branches.map((branch) => ({
key: branch.name, key: branch.name,
text: branch.name, text: branch.name,
@ -198,7 +203,7 @@ export class ReposListComponent extends React.Component<ReposListComponentProps>
const dropdownProps: IDropdownProps = { const dropdownProps: IDropdownProps = {
styles: BranchesDropdownStyles, styles: BranchesDropdownStyles,
options: [], options: [],
placeholder: ReposListComponent.DefaultBranchName, placeholder: ReposListComponent.DefaultBranchNames,
disabled: true, disabled: true,
}; };
@ -272,7 +277,7 @@ export class ReposListComponent extends React.Component<ReposListComponentProps>
styles: ReposListCheckboxStyles, styles: ReposListCheckboxStyles,
onChange: () => { onChange: () => {
const repoListItem = { ...item }; const repoListItem = { ...item };
repoListItem.branches = [{ name: ReposListComponent.DefaultBranchName }]; repoListItem.branches = [];
this.props.pinRepo(repoListItem); this.props.pinRepo(repoListItem);
}, },
}; };

View File

@ -35,6 +35,9 @@ interface IGitHubReposPanelState {
} }
export class GitHubReposPanel extends React.Component<IGitHubReposPanelProps, IGitHubReposPanelState> { export class GitHubReposPanel extends React.Component<IGitHubReposPanelProps, IGitHubReposPanelState> {
private static readonly PageSize = 30; private static readonly PageSize = 30;
private static readonly MasterBranchName = "master";
private static readonly MainBranchName = "main";
private isAddedRepo = false; private isAddedRepo = false;
private gitHubClient: GitHubClient; private gitHubClient: GitHubClient;
private junoClient: JunoClient; private junoClient: JunoClient;
@ -116,6 +119,8 @@ export class GitHubReposPanel extends React.Component<IGitHubReposPanelProps, IG
if (response.status !== HttpStatusCodes.OK) { if (response.status !== HttpStatusCodes.OK) {
throw new Error(`Received HTTP ${response.status} when saving pinned repos`); throw new Error(`Received HTTP ${response.status} when saving pinned repos`);
} }
this.props.explorer.notebookManager?.refreshPinnedRepos();
} catch (error) { } catch (error) {
handleError(error, "GitHubReposPane/submit", "Failed to save pinned repos"); handleError(error, "GitHubReposPane/submit", "Failed to save pinned repos");
} }
@ -207,6 +212,14 @@ export class GitHubReposPanel extends React.Component<IGitHubReposPanelProps, IG
if (response.data) { if (response.data) {
branchesProps.branches = branchesProps.branches.concat(response.data); branchesProps.branches = branchesProps.branches.concat(response.data);
branchesProps.lastPageInfo = response.pageInfo; branchesProps.lastPageInfo = response.pageInfo;
branchesProps.defaultBranchName = branchesProps.branches[0].name;
const defaultbranchName = branchesProps.branches.find(
(branch) =>
branch.name === GitHubReposPanel.MasterBranchName || branch.name === GitHubReposPanel.MainBranchName
)?.name;
if (defaultbranchName) {
branchesProps.defaultBranchName = defaultbranchName;
}
} }
} catch (error) { } catch (error) {
handleError(error, "GitHubReposPane/loadMoreBranches", "Failed to fetch branches"); handleError(error, "GitHubReposPane/loadMoreBranches", "Failed to fetch branches");
@ -298,6 +311,17 @@ export class GitHubReposPanel extends React.Component<IGitHubReposPanelProps, IG
const existingRepo = this.pinnedReposProps.repos.find((repo) => repo.key === item.key); const existingRepo = this.pinnedReposProps.repos.find((repo) => repo.key === item.key);
if (existingRepo) { if (existingRepo) {
existingRepo.branches = item.branches; existingRepo.branches = item.branches;
this.setState({
gitHubReposState: {
...this.state.gitHubReposState,
reposListProps: {
...this.state.gitHubReposState.reposListProps,
pinnedReposProps: {
repos: this.pinnedReposProps.repos,
},
},
},
});
} else { } else {
this.pinnedReposProps.repos = [...this.pinnedReposProps.repos, item]; this.pinnedReposProps.repos = [...this.pinnedReposProps.repos, item];
} }
@ -374,6 +398,7 @@ export class GitHubReposPanel extends React.Component<IGitHubReposPanelProps, IG
lastPageInfo: undefined, lastPageInfo: undefined,
hasMore: true, hasMore: true,
isLoading: true, isLoading: true,
defaultBranchName: undefined,
loadMore: (): Promise<void> => this.loadMoreBranches(item.repo), loadMore: (): Promise<void> => this.loadMoreBranches(item.repo),
}; };
this.loadMoreBranches(item.repo); this.loadMoreBranches(item.repo);