diff --git a/package-lock.json b/package-lock.json index e6af9de62..459d3b3db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "codex-editor-extension", - "version": "0.26.0", + "version": "0.27.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codex-editor-extension", - "version": "0.26.0", + "version": "0.27.0", "license": "MIT", "dependencies": { "@types/csv-parse": "^1.2.5", diff --git a/src/providers/codexCellEditorProvider/codexCellEditorMessagehandling.ts b/src/providers/codexCellEditorProvider/codexCellEditorMessagehandling.ts index 5a5c84ae1..0bd12f297 100644 --- a/src/providers/codexCellEditorProvider/codexCellEditorMessagehandling.ts +++ b/src/providers/codexCellEditorProvider/codexCellEditorMessagehandling.ts @@ -1787,6 +1787,66 @@ const messageHandlers: Record Promise { + const typedEvent = event as Extract; + const { cellId, hidden } = typedEvent.content; + + debug("toggleCellVisibility message received for cell:", cellId, "hidden:", hidden); + + try { + const currentCellData = document.getCellData(cellId) || {}; + + document.updateCellData(cellId, { + ...currentCellData, + hidden, + }); + + try { + const cellForEdits = document.getCell(cellId); + if (cellForEdits) { + if (!cellForEdits.metadata.edits) { + cellForEdits.metadata.edits = [] as any; + } + const ts = Date.now(); + let user = "anonymous"; + try { + const authApi = await provider.getAuthApi(); + const userInfo = await authApi?.getUserInfo(); + user = userInfo?.username || "anonymous"; + } catch { /* ignore */ } + (cellForEdits.metadata.edits as any[]).push({ + editMap: EditMapUtils.metadataNested("data", "hidden"), + value: hidden, + timestamp: ts, + type: EditType.USER_EDIT, + author: user, + validatedBy: [], + }); + } + } catch (e) { + console.warn("Failed to record visibility edit entry on cell", e); + } + + await document.save(new vscode.CancellationTokenSource().token); + + debug(`Successfully toggled visibility for cell: ${cellId}, hidden: ${hidden}`); + + const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri); + if (workspaceFolder) { + await provider.toggleCellVisibilityInPairedFile(cellId, hidden, document.uri.toString(), workspaceFolder); + } else { + console.warn("No workspace folder found, skipping paired file visibility toggle"); + } + + updateWebview(); + } catch (error) { + console.error("Error toggling cell visibility:", cellId, error); + vscode.window.showErrorMessage( + `Failed to toggle cell visibility: ${error instanceof Error ? error.message : String(error)}` + ); + } + }, + triggerReindexing: async () => { debug("Triggering reindexing after all translations completed"); await vscode.commands.executeCommand("codex-editor-extension.forceReindex"); diff --git a/src/providers/codexCellEditorProvider/codexCellEditorProvider.ts b/src/providers/codexCellEditorProvider/codexCellEditorProvider.ts index af5d5ed0c..d386c692c 100755 --- a/src/providers/codexCellEditorProvider/codexCellEditorProvider.ts +++ b/src/providers/codexCellEditorProvider/codexCellEditorProvider.ts @@ -2362,6 +2362,7 @@ export class CodexCellEditorProvider implements vscode.CustomEditorProvider