Skip to content

Commit 354974a

Browse files
authored
Fix invalid email address on EMU (#5994)
Fixes #5842
1 parent 8e78405 commit 354974a

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

src/github/credentials.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export interface GitHub {
3838
octokit: LoggingOctokit;
3939
graphql: LoggingApolloClient;
4040
currentUser?: Promise<IAccount>;
41+
isEmu?: Promise<boolean>;
4142
}
4243

4344
interface AuthResult {
@@ -347,18 +348,33 @@ export class CredentialStore implements vscode.Disposable {
347348
return (await this._githubAPI?.currentUser)?.login === username || (await this._githubEnterpriseAPI?.currentUser)?.login == username;
348349
}
349350

351+
public async getIsEmu(authProviderId: AuthProvider): Promise<boolean> {
352+
const github = this.getHub(authProviderId);
353+
return !!(await github?.isEmu);
354+
}
355+
350356
public getCurrentUser(authProviderId: AuthProvider): Promise<IAccount> {
351357
const github = this.getHub(authProviderId);
352358
const octokit = github?.octokit;
353359
return (octokit && github?.currentUser)!;
354360
}
355361

356362
private setCurrentUser(github: GitHub): void {
357-
github.currentUser = new Promise(resolve => {
363+
const getUser: ReturnType<typeof github.octokit.api.users.getAuthenticated> = new Promise(resolve => {
358364
github.octokit.call(github.octokit.api.users.getAuthenticated, {}).then(result => {
365+
resolve(result);
366+
});
367+
});
368+
github.currentUser = new Promise(resolve => {
369+
getUser.then(result => {
359370
resolve(convertRESTUserToAccount(result.data));
360371
});
361372
});
373+
github.isEmu = new Promise(resolve => {
374+
getUser.then(result => {
375+
resolve(result.data.plan?.name === 'emu_user');
376+
});
377+
});
362378
}
363379

364380
private async getSession(authProviderId: AuthProvider, getAuthSessionOptions: vscode.AuthenticationGetSessionOptions, scopes: string[], requireScopes: boolean): Promise<{ session: vscode.AuthenticationSession | undefined, isNew: boolean, scopes: string[] }> {

src/github/pullRequestOverview.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
197197
this._folderRepositoryManager.getOrgTeamsCount(pullRequestModel.githubRepository),
198198
this._folderRepositoryManager.mergeQueueMethodForBranch(pullRequestModel.base.ref, pullRequestModel.remote.owner, pullRequestModel.remote.repositoryName),
199199
this._folderRepositoryManager.isHeadUpToDateWithBase(pullRequestModel),
200-
pullRequestModel.getMergeability()])
200+
pullRequestModel.getMergeability(),
201+
this._folderRepositoryManager.credentialStore.getIsEmu(pullRequestModel.remote.authProviderId)])
201202
.then(result => {
202203
const [
203204
pullRequest,
@@ -212,7 +213,8 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
212213
orgTeamsCount,
213214
mergeQueueMethod,
214215
isBranchUpToDateWithBase,
215-
mergeability
216+
mergeability,
217+
isEmu
216218
] = result;
217219
if (!pullRequest) {
218220
throw new Error(
@@ -290,7 +292,7 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
290292
milestone: pullRequest.milestone,
291293
assignees: pullRequest.assignees,
292294
continueOnGitHub,
293-
emailForCommit: currentUser.email,
295+
emailForCommit: isEmu ? undefined : currentUser.email,
294296
isAuthor: currentUser.login === pullRequest.author.login,
295297
currentUserReviewState: reviewState,
296298
isDarkTheme: vscode.window.activeColorTheme.kind === vscode.ColorThemeKind.Dark,

0 commit comments

Comments
 (0)