Skip to content

Commit 657510b

Browse files
authored
refactor(costrict): rename MyCodeLensProvider to CostrictCodeLensProvider and add API provider validation for code review features (#639)
1 parent 66ca5d8 commit 657510b

File tree

5 files changed

+66
-5
lines changed

5 files changed

+66
-5
lines changed

src/core/costrict/activate.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type { ClineProvider } from "../webview/ClineProvider"
1111
// Import from migrated modules
1212
import { AICompletionProvider, CompletionStatusBar, shortKeyCut } from "./completion"
1313

14-
import { MyCodeLensProvider, codeLensCallBackCommand, codeLensCallBackMoreCommand } from "./codelens"
14+
import { CostrictCodeLensProvider, codeLensCallBackCommand, codeLensCallBackMoreCommand } from "./codelens"
1515

1616
import {
1717
configCompletion,
@@ -170,7 +170,7 @@ export async function activate(
170170
codeLensCallBackMoreCommand.callback(context),
171171
),
172172
// Register function header menu
173-
vscode.languages.registerCodeLensProvider("*", new MyCodeLensProvider()),
173+
vscode.languages.registerCodeLensProvider("*", new CostrictCodeLensProvider()),
174174
)
175175

176176
// Listen for configuration changes

src/core/costrict/code-review/index.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { CodeReviewService } from "./codeReviewService"
1111
import { CommentService } from "../../../integrations/comment"
1212
import type { ReviewComment } from "./reviewComment"
1313
import { supportPrompt } from "../../../shared/support-prompt"
14+
import { t } from "../../../i18n"
1415
export function initCodeReview(
1516
context: vscode.ExtensionContext,
1617
provider: ClineProvider,
@@ -36,6 +37,11 @@ export function initCodeReview(
3637
if (!visibleProvider || !editor) {
3738
return
3839
}
40+
const { apiConfiguration } = await visibleProvider.getState()
41+
if (apiConfiguration.apiProvider !== "zgsm") {
42+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
43+
return
44+
}
3945
const fileUri = editor.document.uri
4046
const range = editor.selection
4147
const cwd = visibleProvider.cwd.toPosix()
@@ -61,6 +67,11 @@ export function initCodeReview(
6167
if (!visibleProvider) {
6268
return
6369
}
70+
const { apiConfiguration } = await visibleProvider.getState()
71+
if (apiConfiguration.apiProvider !== "zgsm") {
72+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
73+
return
74+
}
6475
const cwd = visibleProvider.cwd.toPosix()
6576
const targets: ReviewTarget[] = await Promise.all(
6677
selectedUris.map(async (uri) => {
@@ -79,6 +90,11 @@ export function initCodeReview(
7990
if (!visibleProvider) {
8091
return
8192
}
93+
const { apiConfiguration } = await visibleProvider.getState()
94+
if (apiConfiguration.apiProvider !== "zgsm") {
95+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
96+
return
97+
}
8298
reviewInstance.setProvider(visibleProvider)
8399
reviewInstance.startReview([
84100
{
@@ -92,6 +108,11 @@ export function initCodeReview(
92108
if (!visibleProvider) {
93109
return
94110
}
111+
const { apiConfiguration } = await visibleProvider.getState()
112+
if (apiConfiguration.apiProvider !== "zgsm") {
113+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
114+
return
115+
}
95116
reviewInstance.setProvider(visibleProvider)
96117
const comments = thread.comments as ReviewComment[]
97118
comments.forEach(async (comment) => {
@@ -103,6 +124,11 @@ export function initCodeReview(
103124
if (!visibleProvider) {
104125
return
105126
}
127+
const { apiConfiguration } = await visibleProvider.getState()
128+
if (apiConfiguration.apiProvider !== "zgsm") {
129+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
130+
return
131+
}
106132
reviewInstance.setProvider(visibleProvider)
107133
const comments = thread.comments as ReviewComment[]
108134
comments.forEach(async (comment) => {
@@ -114,6 +140,11 @@ export function initCodeReview(
114140
if (!visibleProvider) {
115141
return
116142
}
143+
const { apiConfiguration } = await visibleProvider.getState()
144+
if (apiConfiguration.apiProvider !== "zgsm") {
145+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
146+
return
147+
}
117148
reviewInstance.setProvider(visibleProvider)
118149
const comment = thread.comments[0] as ReviewComment
119150
if (comment) {
@@ -125,6 +156,11 @@ export function initCodeReview(
125156
if (!visibleProvider) {
126157
return
127158
}
159+
const { apiConfiguration } = await visibleProvider.getState()
160+
if (apiConfiguration.apiProvider !== "zgsm") {
161+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
162+
return
163+
}
128164
visibleProvider.log(`[CodeReview] start review ${args}`)
129165

130166
const data = args?.[0]?.[0]
@@ -160,6 +196,11 @@ export function initCodeReview(
160196
if (!visibleProvider) {
161197
return
162198
}
199+
const { apiConfiguration } = await visibleProvider.getState()
200+
if (apiConfiguration.apiProvider !== "zgsm") {
201+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
202+
return
203+
}
163204
visibleProvider.log(`[CodeReview] start review ${JSON.stringify(args)}`)
164205
const data = args?.[0]?.[0]
165206
if (!data) {
@@ -184,6 +225,11 @@ export function initCodeReview(
184225
if (!visibleProvider) {
185226
return
186227
}
228+
const { apiConfiguration } = await visibleProvider.getState()
229+
if (apiConfiguration.apiProvider !== "zgsm") {
230+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
231+
return
232+
}
187233
reviewInstance.setProvider(visibleProvider)
188234
visibleProvider.log(`[CodeReview] accept issue ${JSON.stringify(args)}`)
189235
const data = args?.[0]?.[0]
@@ -200,6 +246,11 @@ export function initCodeReview(
200246
if (!visibleProvider) {
201247
return
202248
}
249+
const { apiConfiguration } = await visibleProvider.getState()
250+
if (apiConfiguration.apiProvider !== "zgsm") {
251+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
252+
return
253+
}
203254
reviewInstance.setProvider(visibleProvider)
204255
visibleProvider.log(`[CodeReview] reject issue ${JSON.stringify(args)}`)
205256
const data = args?.[0]?.[0]
@@ -216,6 +267,11 @@ export function initCodeReview(
216267
if (!visibleProvider) {
217268
return
218269
}
270+
const { apiConfiguration } = await visibleProvider.getState()
271+
if (apiConfiguration.apiProvider !== "zgsm") {
272+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
273+
return
274+
}
219275
visibleProvider.log(`[CodeReview] ask review suggestion with AI ${JSON.stringify(args)}`)
220276
reviewInstance.setProvider(visibleProvider)
221277
const data = args?.[0]?.[0]

src/core/costrict/codelens/CodeLensProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { LangSetting, LangSwitch, getLanguageByFilePath } from "../base/common/l
1515
/**
1616
* Service provider for codelens (header menu group for symbol definitions)
1717
*/
18-
export class MyCodeLensProvider implements vscode.CodeLensProvider {
18+
export class CostrictCodeLensProvider implements vscode.CodeLensProvider {
1919
async provideCodeLenses(document: vscode.TextDocument, token: vscode.CancellationToken) {
2020
const editor = vscode.window.activeTextEditor
2121
if (!editor) {

src/core/costrict/codelens/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99

1010
// Main codelens provider exports
1111
export * from "./types"
12-
export { MyCodeLensProvider } from "./CodeLensProvider"
12+
export { CostrictCodeLensProvider } from "./CodeLensProvider"
1313
export * from "./CodeLensCallbacks"

src/core/webview/ClineProvider.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,8 +687,12 @@ export class ClineProvider
687687
return
688688
}
689689

690-
const { customSupportPrompts } = await visibleProvider.getState()
690+
const { customSupportPrompts, apiConfiguration } = await visibleProvider.getState()
691691
if (promptType === "ZGSM_CODE_REVIEW") {
692+
if (apiConfiguration.apiProvider !== "zgsm") {
693+
vscode.window.showInformationMessage(t("common:review.tip.api_provider_not_support"))
694+
return
695+
}
692696
const reviewInstance = CodeReviewService.getInstance()
693697
reviewInstance.setProvider(visibleProvider)
694698
const filePath = toRelativePath(params.filePath as string, visibleProvider.cwd)
@@ -705,6 +709,7 @@ export class ClineProvider
705709
line_range: [Number(params.startLine), Number(params.endLine)],
706710
},
707711
])
712+
return
708713
}
709714

710715
// TODO: Improve type safety for promptType.

0 commit comments

Comments
 (0)