Skip to content

Commit

Permalink
fix: event delivery issue
Browse files Browse the repository at this point in the history
  • Loading branch information
yaslam-dev committed Feb 23, 2024
1 parent 48dc5f4 commit acbcb95
Show file tree
Hide file tree
Showing 5 changed files with 137 additions and 61 deletions.
7 changes: 7 additions & 0 deletions ext-src/commands/DetailDocument.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ export function activateDetailSuggestionCommand(context: vscode.ExtensionContext
}

if (!sessionToken || !analyzeStateValue) {
getExtensionEventEmitter().fire({
type: 'CURRENT_PROJECT',
data: {
name: currentWorkSpaceFolder
},
});

extensionEventEmitter.fire({
type: 'CURRENT_FILE',
data: { ...documentMetaData.editor.document },
Expand Down
59 changes: 40 additions & 19 deletions ext-src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import { Analyze } from './state';
import { Problem } from './types';

export function activate(context: vscode.ExtensionContext): void {
let isChangingSelection = false;
let previousEditor: vscode.TextEditor | undefined = undefined;
bootstrapExtensionEventEmitter();
debugChannel.show(true);
Expand Down Expand Up @@ -197,7 +196,7 @@ export function activate(context: vscode.ExtensionContext): void {
const isValidEditor = Util.isValidDocument(editor.document);

if (isValidEditor) {
getExtensionEventEmitter().fire({
extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});
Expand Down Expand Up @@ -293,11 +292,6 @@ export function activate(context: vscode.ExtensionContext): void {
},
});

extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});

extensionEventEmitter.fire({
type: 'CURRENT_FILE',
data: { ...activeTextEditor.document },
Expand All @@ -309,6 +303,17 @@ export function activate(context: vscode.ExtensionContext): void {
name: currentWorkSpaceFolder,
},
});

extensionEventEmitter.fire({
type: 'onDiscardSuggestionClicked:Success',
data: {},
});

extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});

debugChannel.appendLine(
'onDidOpenTextDocument: results have zero length. ' + documentMetaData.fileName,
);
Expand All @@ -331,9 +336,9 @@ export function activate(context: vscode.ExtensionContext): void {
},
});

getExtensionEventEmitter().fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
extensionEventEmitter.fire({
type: 'onDiscardSuggestionClicked:Success',
data: {},
});

extensionEventEmitter.fire({
Expand All @@ -342,6 +347,11 @@ export function activate(context: vscode.ExtensionContext): void {
name: currentWorkSpaceFolder,
},
});

extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});
}),
);

Expand Down Expand Up @@ -384,10 +394,6 @@ export function activate(context: vscode.ExtensionContext): void {
hasWorkSpaceFolders: true,
},
});
getExtensionEventEmitter().fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});

extensionEventEmitter.fire({
type: 'CURRENT_FILE',
Expand All @@ -401,6 +407,16 @@ export function activate(context: vscode.ExtensionContext): void {
},
});

extensionEventEmitter.fire({
type: 'onDiscardSuggestionClicked:Success',
data: {},
});

extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});

debugChannel.appendLine(
'onDidChangeActiveTextEditor: results array has zero length. ' + fileName,
);
Expand All @@ -418,11 +434,6 @@ export function activate(context: vscode.ExtensionContext): void {
},
});

getExtensionEventEmitter().fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});

extensionEventEmitter.fire({
type: 'CURRENT_FILE',
data: { ...e.document },
Expand All @@ -435,6 +446,16 @@ export function activate(context: vscode.ExtensionContext): void {
},
});

extensionEventEmitter.fire({
type: 'onDiscardSuggestionClicked:Success',
data: {},
});

extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...analyzeValue },
});

previousEditor = e;
}),
);
Expand Down
77 changes: 40 additions & 37 deletions ext-src/providers/recommendation.provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import { BackendService, GetChatGPTToken } from '../config';
import { DiscardCommandHandler, EndorseCommandHandler } from '../commands';
import CONSTANTS from '../constants';
import Util from '../utils';
import debugChannel from '../debug';
import { AnalysisEvents } from '../events';
import { Problem } from '../types';

Expand Down Expand Up @@ -84,19 +83,10 @@ export class RecommendationWebView implements WebviewViewProvider {
if (!getanalyzeState) return;
const editor = window.activeTextEditor;
if (!editor) return;
const currentWorkSpaceFolder = Util.getWorkspacePath();
const currentWorkSpaceFolder = Util.getRootFolderName();

if (this._view?.visible === true) {
setTimeout(() => {
this.extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: {
shouldResetRecomendation: true,
shouldMoveToAnalyzePage: true,
...getanalyzeState,
},
});

this.extensionEventEmitter.fire({
type: 'CURRENT_FILE',
data: { ...editor.document },
Expand All @@ -113,6 +103,15 @@ export class RecommendationWebView implements WebviewViewProvider {
type: 'onDiscardSuggestionClicked:Success',
data: {},
});

this.extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: {
shouldResetRecomendation: true,
shouldMoveToAnalyzePage: true,
...getanalyzeState,
},
});
}, 500);
}
}
Expand All @@ -128,40 +127,31 @@ export class RecommendationWebView implements WebviewViewProvider {

for (let i = 0; i < this.eventEmitterQueue.length; i++) {
const event = this.eventEmitterQueue[i];
debugChannel.appendLine(
'Metabob webview is visible now. Sending events: ' + this.eventEmitterQueue.length,
);

if (event) {
this?._view?.webview?.postMessage(event);
}
}

this.eventEmitterQueue = [];
clearInterval(this.interval);
}

activateExtensionEventListener(): void {
const self = this;
this.extensionEventEmitter.event(event => {
if (this?._view === null || this?._view === undefined || !this?._view.webview) {
debugChannel.appendLine(
`Metabob: this.view.webview is undefined and got event ${JSON.stringify(event)}`,
);

return;
}

if (this._view.visible === false) {
debugChannel.appendLine('Metabob webview is not visible. Starting event queue.');
this.eventEmitterQueue.push(event);
if (!this.interval) {
if (this.interval !== undefined) {
this.interval = setInterval(this.intervalHandler.bind(self), 300);
}
return;
}

this.eventEmitterQueue = [];
clearInterval(this.interval);
this._view.webview.postMessage(event);
});
}
Expand Down Expand Up @@ -369,13 +359,14 @@ export class RecommendationWebView implements WebviewViewProvider {
postInitData(): void {
const getanalyzeState = new Analyze(this.extensionContext).get()?.value;
const currentEditor = window.activeTextEditor;
const currentWorkSpaceFolder = Util.getRootFolderName();

if (
this._view === null ||
this._view === undefined ||
this._view.webview === undefined ||
!currentEditor ||
this._view.visible === false
currentEditor === undefined ||
currentWorkSpaceFolder === undefined
) {
return;
}
Expand All @@ -384,41 +375,53 @@ export class RecommendationWebView implements WebviewViewProvider {
initData?: any;
hasOpenTextDocuments?: boolean;
hasWorkSpaceFolders?: boolean;
currentWorkSpaceFolder?: string
currentFile?: any
} = {};

if (getanalyzeState) {
initPayload.initData = { ...getanalyzeState };
}

if (currentWorkSpaceFolder) {
initPayload.currentWorkSpaceFolder = currentWorkSpaceFolder
}

if (currentEditor) {
initPayload.currentFile = { ...currentEditor.document }
}

initPayload.hasOpenTextDocuments = Util.hasOpenTextDocuments();
initPayload.hasWorkSpaceFolders = Util.hasWorkspaceFolder();
this._view.webview.postMessage({
type: 'initData',
data: { ...initPayload },
});

this.extensionEventEmitter.fire({
this._view.webview.postMessage({
type: 'INIT_DATA_UPON_NEW_FILE_OPEN',
data: {
hasOpenTextDocuments: true,
hasWorkSpaceFolders: true,
},
});

this.extensionEventEmitter.fire({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: false, shouldMoveToAnalyzePage: false, ...getanalyzeState },
this._view.webview.postMessage({
type: 'CURRENT_PROJECT',
data: {
name: currentWorkSpaceFolder,
},
});

this.extensionEventEmitter.fire({
this._view.webview.postMessage({
type: 'CURRENT_FILE',
data: { ...currentEditor.document },
});

this._view.webview
.postMessage({
type: 'initData',
data: { ...initPayload },
})
.then(undefined, err => {
window.showErrorMessage(err);
});
this._view.webview.postMessage({
type: 'Analysis_Completed',
data: { shouldResetRecomendation: true, shouldMoveToAnalyzePage: true, ...getanalyzeState },
});
}

async handleApplyRecommendation(input: string, initData: CurrentQuestionState) {
Expand Down
14 changes: 12 additions & 2 deletions ext-src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,19 @@ export default class Utils {
static sleep = (ms: number): Promise<void> => new Promise(res => setTimeout(res, ms));

static getWorkspacePath(): string | undefined {
const folders = workspace.workspaceFolders;
let folders = workspace.workspaceFolders;
let path = folders ? folders![0].uri.fsPath : undefined;
if (path === undefined) {
return undefined
}

const splitPath: string | undefined = path.split('/').pop()?.replace('.git', '');

if (splitPath === undefined) {
return undefined
}

return folders ? folders![0].uri.fsPath : undefined;
return splitPath
}

static getResource(rel: string): string {
Expand Down
Loading

0 comments on commit acbcb95

Please sign in to comment.