Skip to content

Commit 4fbd2b3

Browse files
committed
Update WebsitesProvider import paths and refactor preset/group selection state management
1 parent c1208ea commit 4fbd2b3

10 files changed

Lines changed: 37 additions & 63 deletions

File tree

packages/vscode/src/commands/checkpoints-command/actions/create-checkpoint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import * as path from 'path'
2121
import { Logger } from '@shared/utils/logger'
2222
import { PanelProvider } from '@/views/panel/backend/panel-provider'
2323
import { dictionary } from '@shared/constants/dictionary'
24-
import { WebsitesProvider } from '@/context/providers/websites-provider'
24+
import { WebsitesProvider } from '@/context/providers/websites/websites-provider'
2525
import { response_preview_promise_resolve } from '../../apply-chat-response-command/utils/preview'
2626
import { remove_old_checkpoints } from './get-checkpoints'
2727

packages/vscode/src/commands/checkpoints-command/actions/create-temporary-checkpoint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from '../utils/git-utils'
1010
import * as path from 'path'
1111
import { Logger } from '@shared/utils/logger'
12-
import { WebsitesProvider } from '@/context/providers/websites-provider'
12+
import { WebsitesProvider } from '@/context/providers/websites/websites-provider'
1313

1414
export const create_temporary_checkpoint = async (
1515
workspace_provider: WorkspaceProvider,

packages/vscode/src/commands/checkpoints-command/actions/restore-checkpoint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { PanelProvider } from '@/views/panel/backend/panel-provider'
2121
import { response_preview_promise_resolve } from '../../apply-chat-response-command/utils/preview'
2222
import { ongoing_review_cleanup_promise } from '../../apply-chat-response-command/utils/preview-handler'
2323
import { dictionary } from '@shared/constants/dictionary'
24-
import { WebsitesProvider } from '@/context/providers/websites-provider'
24+
import { WebsitesProvider } from '@/context/providers/websites/websites-provider'
2525
import { get_git_info } from '../utils/git-utils'
2626

2727
export const restore_checkpoint = async (params: {

packages/vscode/src/commands/checkpoints-command/checkpoints-command.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
} from './actions'
2020
import { PanelProvider } from '@/views/panel/backend/panel-provider'
2121
import { get_checkpoint_path } from './utils'
22-
import { WebsitesProvider } from '@/context/providers/websites-provider'
22+
import { WebsitesProvider } from '@/context/providers/websites/websites-provider'
2323
import { dictionary } from '@shared/constants/dictionary'
2424

2525
dayjs.extend(relativeTime)

packages/vscode/src/commands/duplicate-workspace-command.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as vscode from 'vscode'
22
import { WorkspaceProvider } from '../context/providers/workspace/workspace-provider'
3-
import { WebsitesProvider } from '../context/providers/websites-provider'
3+
import { WebsitesProvider } from '../context/providers/websites/websites-provider'
44
import {
55
API_EDIT_FORMAT_STATE_KEY,
66
CHAT_EDIT_FORMAT_STATE_KEY,

packages/vscode/src/constants/state-keys.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,6 @@ export const get_configurations_collapsed_state_key = (
6767
api_prompt_type: string
6868
) => `configurations-collapsed-${api_prompt_type}`
6969

70-
export const get_last_selected_preset_or_group_key = (
71-
web_prompt_type: string
72-
) => `last-selected-preset-or-group-${web_prompt_type}`
73-
7470
export const get_recently_used_presets_or_groups_key = (
7571
web_prompt_type: string
7672
) => `recently-used-presets-or-groups-${web_prompt_type}`

packages/vscode/src/services/websocket-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from '@shared/types/websocket-message'
1010
import { CHATBOTS } from '@shared/constants/chatbots'
1111
import { DEFAULT_PORT, SECURITY_TOKENS } from '@shared/constants/websocket'
12-
import { WebsitesProvider } from '../context/providers/websites-provider'
12+
import { WebsitesProvider } from '../context/providers/websites/websites-provider'
1313
import { dictionary } from '@shared/constants/dictionary'
1414
import { Logger } from '@shared/utils/logger'
1515
import { Preset } from '@shared/types/preset'

packages/vscode/src/views/panel/backend/message-handlers/handle-send-prompt.ts

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ import {
1010
replace_commit_symbol
1111
} from '@/views/panel/backend/utils/replace-git-symbols'
1212
import { code_completion_instructions_for_panel } from '@/constants/instructions'
13-
import {
14-
get_last_selected_preset_or_group_key,
15-
get_recently_used_presets_or_groups_key
16-
} from '@/constants/state-keys'
13+
import { get_recently_used_presets_or_groups_key } from '@/constants/state-keys'
1714
import { ConfigPresetFormat } from '../utils/preset-format-converters'
1815
import { MODE } from '@/views/panel/types/main-view-mode'
1916
import { WebPromptType } from '@shared/types/prompt-types'
@@ -81,25 +78,11 @@ export const handle_send_prompt = async (params: {
8178
const resolved_preset_names = resolution.preset_names
8279

8380
if (params.preset_name !== undefined || params.group_name) {
84-
const name_to_save = params.preset_name ?? params.group_name!
8581
update_last_used_preset_or_group({
8682
panel_provider: params.panel_provider,
8783
preset_name: params.preset_name,
8884
group_name: params.group_name
8985
})
90-
const recents_key = get_recently_used_presets_or_groups_key(
91-
params.panel_provider.web_prompt_type
92-
)
93-
const recents =
94-
params.panel_provider.context.globalState.get<string[]>(
95-
recents_key,
96-
[]
97-
) ?? []
98-
const new_recents = [
99-
name_to_save,
100-
...recents.filter((r) => r != name_to_save)
101-
].slice(0, 10)
102-
params.panel_provider.context.globalState.update(recents_key, new_recents)
10386
}
10487

10588
await vscode.workspace.saveAll()
@@ -337,10 +320,7 @@ async function show_preset_quick_pick(params: {
337320
quick_pick.title = 'Recently Used Presets and Groups'
338321
quick_pick.matchOnDescription = true
339322

340-
const last_selected_key = get_last_selected_preset_or_group_key(mode)
341-
const last_selected_name =
342-
context.workspaceState.get<string>(last_selected_key) ??
343-
context.globalState.get<string>(last_selected_key)
323+
const last_selected_name = recent_names[0]
344324

345325
let last_selected_preset_name: string | undefined
346326
if (last_selected_name) {
@@ -473,8 +453,9 @@ async function resolve_presets(params: {
473453
show_quick_pick?: boolean
474454
context: vscode.ExtensionContext
475455
}): Promise<{ preset_names: string[] }> {
476-
const last_selected_preset_or_group_key =
477-
get_last_selected_preset_or_group_key(params.panel_provider.web_prompt_type)
456+
const recents_key = get_recently_used_presets_or_groups_key(
457+
params.panel_provider.web_prompt_type
458+
)
478459
const config = vscode.workspace.getConfiguration('codeWebChat')
479460
const presets_config_key = params.panel_provider.get_presets_config_key()
480461
const all_presets = config.get<ConfigPresetFormat[]>(presets_config_key, [])
@@ -604,12 +585,8 @@ async function resolve_presets(params: {
604585
params.group_name === undefined
605586
) {
606587
// Try to use last selection if "Send" button is clicked without specific preset/group
607-
const last_selected_name =
608-
params.context.workspaceState.get<string>(
609-
last_selected_preset_or_group_key
610-
) ??
611-
params.context.globalState.get<string>(last_selected_preset_or_group_key)
612-
588+
const recents = params.context.globalState.get<string[]>(recents_key, [])
589+
const last_selected_name = recents[0]
613590
if (last_selected_name) {
614591
const item = all_presets.find((p) => p.name === last_selected_name)
615592
if (item) {
Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,34 @@
11
import { PanelProvider } from '@/views/panel/backend/panel-provider'
2-
import { get_last_selected_preset_or_group_key } from '@/constants/state-keys'
2+
import { get_recently_used_presets_or_groups_key } from '@/constants/state-keys'
33

44
export const update_last_used_preset_or_group = (params: {
55
panel_provider: PanelProvider
66
preset_name?: string
77
group_name?: string
88
}) => {
9-
if (params.preset_name !== undefined) {
10-
const key = get_last_selected_preset_or_group_key(
11-
params.panel_provider.web_prompt_type
12-
)
13-
params.panel_provider.context.workspaceState.update(key, params.preset_name)
14-
params.panel_provider.context.globalState.update(key, params.preset_name)
15-
params.panel_provider.send_message({
16-
command: 'SELECTED_PRESET_OR_GROUP_CHANGED',
17-
mode: params.panel_provider.web_prompt_type,
18-
name: params.preset_name
19-
})
20-
} else if (params.group_name) {
21-
const key = get_last_selected_preset_or_group_key(
9+
const name_to_save = params.preset_name ?? params.group_name
10+
11+
if (name_to_save) {
12+
const recents_key = get_recently_used_presets_or_groups_key(
2213
params.panel_provider.web_prompt_type
2314
)
24-
params.panel_provider.context.workspaceState.update(key, params.group_name)
25-
params.panel_provider.context.globalState.update(key, params.group_name)
15+
const recents =
16+
params.panel_provider.context.globalState.get<string[]>(
17+
recents_key,
18+
[]
19+
) ?? []
20+
21+
const new_recents = [
22+
name_to_save,
23+
...recents.filter((r) => r != name_to_save)
24+
].slice(0, 10)
25+
26+
params.panel_provider.context.globalState.update(recents_key, new_recents)
27+
2628
params.panel_provider.send_message({
2729
command: 'SELECTED_PRESET_OR_GROUP_CHANGED',
2830
mode: params.panel_provider.web_prompt_type,
29-
name: params.group_name
31+
name: name_to_save
3032
})
3133
}
3234
}

packages/vscode/src/views/panel/backend/panel-provider.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,12 @@ import {
8080
INSTRUCTIONS_EDIT_CONTEXT_STATE_KEY,
8181
INSTRUCTIONS_NO_CONTEXT_STATE_KEY,
8282
get_configurations_collapsed_state_key,
83-
get_last_selected_preset_or_group_key,
8483
LAST_APPLIED_CHANGES_STATE_KEY,
8584
LAST_SELECTED_CODE_COMPLETION_CONFIG_ID_STATE_KEY,
8685
LAST_SELECTED_EDIT_CONTEXT_CONFIG_ID_STATE_KEY,
8786
get_presets_collapsed_state_key,
88-
WEB_MODE_STATE_KEY
87+
WEB_MODE_STATE_KEY,
88+
get_recently_used_presets_or_groups_key
8989
} from '@/constants/state-keys'
9090
import {
9191
config_preset_to_ui_format,
@@ -776,10 +776,9 @@ export class PanelProvider implements vscode.WebviewViewProvider {
776776
web_modes.map((mode) => {
777777
const presets_for_mode = all_presets[mode]
778778
let selected_name: string | undefined = undefined
779-
const key = get_last_selected_preset_or_group_key(mode)
780-
const last_selected =
781-
this.context.workspaceState.get<string>(key) ??
782-
this.context.globalState.get<string>(key)
779+
const key = get_recently_used_presets_or_groups_key(mode)
780+
const recents = this.context.globalState.get<string[]>(key, [])
781+
const last_selected = recents[0]
783782
if (last_selected) {
784783
if (last_selected === 'Ungrouped') {
785784
const first_group_index = presets_for_mode.findIndex(

0 commit comments

Comments
 (0)