Skip to content

Commit 67ef470

Browse files
committed
Persist and restore find relevant files checked state during workspace duplication
- when duplicating workspace, copy frf context as well └── apps └── editor └── src ├── commands │ └── duplicate-workspace-command.ts ├── constants │ └── state-keys.ts └── context ├── context-initialization.ts ├── helpers │ ├── get-all-workspace-files.ts │ └── get-selected-files.ts ├── providers │ ├── open-editors │ │ └── open-editors-provider.ts │ ├── selected-files │ │ └── selected-files-provider.ts │ └── workspace │ ├── modules │ │ ├── index.ts │ │ └── token-calculator.ts │ └── workspace-provider.ts ├── shared-context-state.ts └── utils └── shrink-file ├── index.ts ├── languages │ ├── c-style.ts │ ├── css.ts │ ├── html.ts │ ├── jsx.ts │ ├── python.ts │ ├── ruby.ts │ └── sql.ts ├── shrink-file.spec.ts ├── shrink-file.ts └── test-cases ├── c-style │ ├── input.txt │ └── output.txt ├── css │ ├── input.txt │ └── output.txt ├── html │ ├── input.txt │ └── output.txt ├── jsx │ ├── input.txt │ └── output.txt ├── python │ ├── input.txt │ └── output.txt ├── ruby │ ├── input.txt │ └── output.txt ├── scss │ ├── input.txt │ └── output.txt └── sql ├── input.txt └── output.txt
1 parent f70f55a commit 67ef470

4 files changed

Lines changed: 55 additions & 7 deletions

File tree

‎apps/editor/src/commands/duplicate-workspace-command.ts‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ export const duplicate_workspace_command = (
1616
async () => {
1717
const export_state = workspace_provider.get_export_state()
1818

19-
const checked_files = export_state.regular.checked_files
20-
const checked_files_timestamps = export_state.regular.checked_timestamps
21-
2219
const workspace_root_folders =
2320
vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath) ??
2421
[]
@@ -43,8 +40,10 @@ export const duplicate_workspace_command = (
4340
RANGES_STATE_KEY
4441
)
4542
const context_to_save: DuplicateWorkspaceContext = {
46-
checked_files,
47-
checked_files_timestamps,
43+
checked_files: export_state.regular.checked_files,
44+
checked_files_timestamps: export_state.regular.checked_timestamps,
45+
frf_checked_files: export_state.frf.checked_files,
46+
frf_checked_files_timestamps: export_state.frf.checked_timestamps,
4847
workspace_root_folders,
4948
timestamp: Date.now(),
5049
open_editors,

‎apps/editor/src/constants/state-keys.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ export const LAST_RANGES_SAVE_LOCATION_STATE_KEY = 'last-ranges-save-location'
1010
export const LAST_APPLY_CONTEXT_OPTION_STATE_KEY = 'last-apply-context-option'
1111
export const CONTEXT_CHECKED_PATHS_STATE_KEY = 'context-checked-paths'
1212
export const CONTEXT_CHECKED_TIMESTAMPS_STATE_KEY = 'context-checked-timestamps'
13+
export const CONTEXT_FRF_CHECKED_PATHS_STATE_KEY = 'context-frf-checked-paths'
14+
export const CONTEXT_FRF_CHECKED_TIMESTAMPS_STATE_KEY =
15+
'context-frf-checked-timestamps'
1316
export const LAST_APPLY_CONTEXT_MERGE_REPLACE_OPTION_STATE_KEY =
1417
'last-apply-context-merge-replace-option'
1518
export const LAST_FIND_RELEVANT_FILES_MERGE_REPLACE_OPTION_STATE_KEY =
@@ -116,6 +119,8 @@ export const LAST_COPY_PATHS_FORMAT_STATE_KEY = 'last-copy-paths-format'
116119
export type DuplicateWorkspaceContext = {
117120
checked_files: string[]
118121
checked_files_timestamps: Record<string, number>
122+
frf_checked_files?: string[]
123+
frf_checked_files_timestamps?: Record<string, number>
119124
timestamp: number
120125
workspace_root_folders: string[]
121126
open_editors?: { path: string; view_column?: number }[]

‎apps/editor/src/context/context-initialization.ts‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { EventEmitter } from 'events'
99
import {
1010
CONTEXT_CHECKED_PATHS_STATE_KEY,
1111
CONTEXT_CHECKED_TIMESTAMPS_STATE_KEY,
12+
CONTEXT_FRF_CHECKED_PATHS_STATE_KEY,
13+
CONTEXT_FRF_CHECKED_TIMESTAMPS_STATE_KEY,
1214
DUPLICATE_WORKSPACE_CONTEXT_STATE_KEY,
1315
RANGES_STATE_KEY,
1416
type DuplicateWorkspaceContext
@@ -62,6 +64,20 @@ const restore_duplicated_workspace_context = async (
6264
duplicated_context.checked_files_timestamps
6365
)
6466

67+
if (duplicated_context.frf_checked_files) {
68+
await extension_context.workspaceState.update(
69+
CONTEXT_FRF_CHECKED_PATHS_STATE_KEY,
70+
duplicated_context.frf_checked_files
71+
)
72+
}
73+
74+
if (duplicated_context.frf_checked_files_timestamps) {
75+
await extension_context.workspaceState.update(
76+
CONTEXT_FRF_CHECKED_TIMESTAMPS_STATE_KEY,
77+
duplicated_context.frf_checked_files_timestamps
78+
)
79+
}
80+
6581
if (duplicated_context.ranges) {
6682
await extension_context.workspaceState.update(
6783
RANGES_STATE_KEY,

‎apps/editor/src/context/providers/workspace/workspace-provider.ts‎

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import ignore, { Ignore } from 'ignore'
55
import {
66
CONTEXT_CHECKED_PATHS_STATE_KEY,
77
CONTEXT_CHECKED_TIMESTAMPS_STATE_KEY,
8+
CONTEXT_FRF_CHECKED_PATHS_STATE_KEY,
9+
CONTEXT_FRF_CHECKED_TIMESTAMPS_STATE_KEY,
810
RANGES_STATE_KEY
911
} from '@/constants/state-keys'
1012
import { IGNORED_LOCK_FILES } from '@/constants/ignored-lock-files'
@@ -225,9 +227,20 @@ export class WorkspaceProvider
225227
}
226228

227229
private async _save_checked_files_state(): Promise<void> {
228-
if (this._is_frf_mode) return
229-
230230
const checked_paths = this.get_all_checked_paths()
231+
232+
if (this._is_frf_mode) {
233+
await this._extension_context.workspaceState.update(
234+
CONTEXT_FRF_CHECKED_PATHS_STATE_KEY,
235+
checked_paths
236+
)
237+
await this._extension_context.workspaceState.update(
238+
CONTEXT_FRF_CHECKED_TIMESTAMPS_STATE_KEY,
239+
Object.fromEntries(this._checked_timestamps)
240+
)
241+
return
242+
}
243+
231244
await this._extension_context.workspaceState.update(
232245
CONTEXT_CHECKED_PATHS_STATE_KEY,
233246
checked_paths
@@ -247,6 +260,13 @@ export class WorkspaceProvider
247260
Record<string, number>
248261
>(CONTEXT_CHECKED_TIMESTAMPS_STATE_KEY)
249262

263+
const frf_paths = this._extension_context.workspaceState.get<string[]>(
264+
CONTEXT_FRF_CHECKED_PATHS_STATE_KEY
265+
)
266+
const frf_times = this._extension_context.workspaceState.get<
267+
Record<string, number>
268+
>(CONTEXT_FRF_CHECKED_TIMESTAMPS_STATE_KEY)
269+
250270
await this.gitignore_initialization
251271
const prev_mode = this._is_frf_mode
252272

@@ -258,6 +278,14 @@ export class WorkspaceProvider
258278
)
259279
}
260280

281+
this._is_frf_mode = true
282+
if (frf_paths && frf_paths.length > 0) {
283+
await this.set_checked_files(
284+
frf_paths,
285+
frf_times ? new Map(Object.entries(frf_times)) : undefined
286+
)
287+
}
288+
261289
this._is_frf_mode = prev_mode
262290
}
263291
load()

0 commit comments

Comments
 (0)