Skip to content

Commit 14671a1

Browse files
authored
Begin merging Copilot and PR notifications (#7957)
* Begin merging Copilot and PR notifications * Fix prompt tsx * Rename
1 parent e74c935 commit 14671a1

18 files changed

+278
-539
lines changed

src/commands.ts

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import { GitHubRepository } from './github/githubRepository';
2626
import { Issue } from './github/interface';
2727
import { IssueModel } from './github/issueModel';
2828
import { IssueOverviewPanel } from './github/issueOverview';
29-
import { NotificationProvider } from './github/notifications';
3029
import { GHPRComment, GHPRCommentThread, TemporaryComment } from './github/prComment';
3130
import { PullRequestModel } from './github/pullRequestModel';
3231
import { PullRequestOverviewPanel } from './github/pullRequestOverview';
@@ -35,7 +34,7 @@ import { RepositoriesManager } from './github/repositoriesManager';
3534
import { getIssuesUrl, getPullsUrl, isInCodespaces, ISSUE_OR_URL_EXPRESSION, parseIssueExpressionOutput, vscodeDevPrLink } from './github/utils';
3635
import { OverviewContext } from './github/views';
3736
import { isNotificationTreeItem, NotificationTreeItem } from './notifications/notificationItem';
38-
import { PullRequestsTreeDataProvider } from './view/prsTreeDataProvider';
37+
import { NotificationsManager } from './notifications/notificationsManager';
3938
import { ReviewCommentController } from './view/reviewCommentController';
4039
import { ReviewManager } from './view/reviewManager';
4140
import { ReviewsManager } from './view/reviewsManager';
@@ -149,7 +148,6 @@ export async function openDescription(
149148
folderManager: FolderRepositoryManager,
150149
revealNode: boolean,
151150
preserveFocus: boolean = true,
152-
notificationProvider?: NotificationProvider
153151
) {
154152
const issue = ensurePR(folderManager, issueModel);
155153
if (revealNode) {
@@ -165,12 +163,6 @@ export async function openDescription(
165163
*/
166164
telemetry.sendTelemetryEvent('issue.openDescription');
167165
}
168-
169-
if (notificationProvider?.hasNotification(issue)) {
170-
notificationProvider.markPrNotificationsAsRead(issue);
171-
}
172-
173-
174166
}
175167

176168
export async function openPullRequestOnGitHub(e: PRNode | RepositoryChangesNode | IssueModel | NotificationTreeItem, telemetry: ITelemetry) {
@@ -210,8 +202,8 @@ export function registerCommands(
210202
reposManager: RepositoriesManager,
211203
reviewsManager: ReviewsManager,
212204
telemetry: ITelemetry,
213-
tree: PullRequestsTreeDataProvider,
214205
copilotRemoteAgentManager: CopilotRemoteAgentManager,
206+
notificationManager: NotificationsManager
215207
) {
216208
const logId = 'RegisterCommands';
217209
context.subscriptions.push(
@@ -907,10 +899,7 @@ export function registerCommands(
907899
context.subscriptions.push(
908900
vscode.commands.registerCommand('pr.dismissNotification', node => {
909901
if (node instanceof PRNode) {
910-
tree.notificationProvider.markPrNotificationsAsRead(node.pullRequestModel).then(
911-
() => tree.refresh(node)
912-
);
913-
902+
notificationManager.markPrNotificationsAsRead(node.pullRequestModel);
914903
}
915904
}),
916905
);
@@ -968,7 +957,7 @@ export function registerCommands(
968957

969958
const revealDescription = !(argument instanceof PRNode);
970959

971-
await openDescription(telemetry, issueModel, descriptionNode, folderManager, revealDescription, !(argument instanceof RepositoryChangesNode), tree.notificationProvider);
960+
await openDescription(telemetry, issueModel, descriptionNode, folderManager, revealDescription, !(argument instanceof RepositoryChangesNode));
972961
}
973962

974963
async function checkoutChatSessionPullRequest(argument: ChatSessionWithPR) {

src/common/settingKeys.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const OVERRIDE_DEFAULT_BRANCH = 'overrideDefaultBranch';
1919
export const PULL_BRANCH = 'pullBranch';
2020
export const PULL_REQUEST_DESCRIPTION = 'pullRequestDescription';
2121
export const NOTIFICATION_SETTING = 'notifications';
22+
export type NotificationVariants = 'off' | 'pullRequests';
2223
export const POST_CREATE = 'postCreate';
2324
export const POST_DONE = 'postDone';
2425
export const QUERIES = 'queries';

src/extension.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ import { ChatParticipant, ChatParticipantState } from './lm/participants';
3737
import { registerTools } from './lm/tools/tools';
3838
import { migrate } from './migrations';
3939
import { NotificationsFeatureRegister } from './notifications/notificationsFeatureRegistar';
40+
import { NotificationsManager } from './notifications/notificationsManager';
41+
import { NotificationsProvider } from './notifications/notificationsProvider';
4042
import { ThemeWatcher } from './themeWatcher';
4143
import { UriHandler } from './uriHandler';
4244
import { CommentDecorationProvider } from './view/commentDecorationProvider';
@@ -46,7 +48,6 @@ import { FileTypeDecorationProvider } from './view/fileTypeDecorationProvider';
4648
import { GitHubCommitFileSystemProvider } from './view/githubFileContentProvider';
4749
import { getInMemPRFileSystemProvider } from './view/inMemPRContentProvider';
4850
import { PullRequestChangesTreeDataProvider } from './view/prChangesTreeDataProvider';
49-
import { PRNotificationDecorationProvider } from './view/prNotificationDecorationProvider';
5051
import { PullRequestsTreeDataProvider } from './view/prsTreeDataProvider';
5152
import { ReviewManager, ShowPullRequest } from './view/reviewManager';
5253
import { ReviewsManager } from './view/reviewsManager';
@@ -170,7 +171,13 @@ async function init(
170171
context.subscriptions.push(treeDecorationProviders);
171172
treeDecorationProviders.registerProviders([new FileTypeDecorationProvider(), new CommentDecorationProvider(reposManager)]);
172173

173-
const reviewsManager = new ReviewsManager(context, reposManager, reviewManagers, tree, changesTree, telemetry, credentialStore, git, copilotRemoteAgentManager);
174+
const notificationsProvider = new NotificationsProvider(credentialStore, reposManager);
175+
context.subscriptions.push(notificationsProvider);
176+
177+
const notificationsManager = new NotificationsManager(notificationsProvider, credentialStore, reposManager, context);
178+
context.subscriptions.push(notificationsManager);
179+
180+
const reviewsManager = new ReviewsManager(context, reposManager, reviewManagers, tree, changesTree, telemetry, credentialStore, git, copilotRemoteAgentManager, notificationsManager);
174181
context.subscriptions.push(reviewsManager);
175182

176183
git.onDidChangeState(() => {
@@ -218,7 +225,6 @@ async function init(
218225
return;
219226
}
220227
addRepo();
221-
tree.notificationProvider.refreshOrLaunchPolling();
222228
const disposable = repo.state.onDidChange(() => {
223229
Logger.appendLine(`Repo state for ${repo.rootUri} changed.`, ACTIVATION);
224230
addRepo();
@@ -229,14 +235,11 @@ async function init(
229235
git.onDidCloseRepository(repo => {
230236
reposManager.removeRepo(repo);
231237
reviewsManager.removeReviewManager(repo);
232-
tree.notificationProvider.refreshOrLaunchPolling();
233238
});
234239

235-
tree.initialize(reviewsManager.reviewManagers.map(manager => manager.reviewModel), credentialStore);
236-
237-
context.subscriptions.push(new PRNotificationDecorationProvider(tree.notificationProvider));
240+
tree.initialize(reviewsManager.reviewManagers.map(manager => manager.reviewModel), notificationsManager);
238241

239-
registerCommands(context, reposManager, reviewsManager, telemetry, tree, copilotRemoteAgentManager);
242+
registerCommands(context, reposManager, reviewsManager, telemetry, copilotRemoteAgentManager, notificationsManager);
240243

241244
const layout = vscode.workspace.getConfiguration(PR_SETTINGS_NAMESPACE).get<string>(FILE_LIST_LAYOUT);
242245
await vscode.commands.executeCommand('setContext', 'fileListLayout:flat', layout === 'flat');
@@ -245,7 +248,7 @@ async function init(
245248
context.subscriptions.push(issuesFeatures);
246249
await issuesFeatures.initialize();
247250

248-
const notificationsFeatures = new NotificationsFeatureRegister(credentialStore, reposManager, telemetry, context);
251+
const notificationsFeatures = new NotificationsFeatureRegister(credentialStore, reposManager, telemetry, notificationsManager);
249252
context.subscriptions.push(notificationsFeatures);
250253

251254
context.subscriptions.push(new GitLensIntegration());

0 commit comments

Comments
 (0)