diff --git a/apps/staged/src/lib/commands.ts b/apps/staged/src/lib/commands.ts index 5e57b990c..113a31581 100644 --- a/apps/staged/src/lib/commands.ts +++ b/apps/staged/src/lib/commands.ts @@ -802,16 +802,6 @@ export function getDeletedComments(reviewId: string): Promise { return invoke('get_deleted_comments', { reviewId }); } -/** Add a reference file to a review. */ -export function addReferenceFile(reviewId: string, path: string): Promise { - return invoke('add_reference_file', { reviewId, path }); -} - -/** Remove a reference file from a review. */ -export function removeReferenceFile(reviewId: string, path: string): Promise { - return invoke('remove_reference_file', { reviewId, path }); -} - // ============================================================================= // Auto review // ============================================================================= diff --git a/apps/staged/src/lib/features/diff/DiffModal.svelte b/apps/staged/src/lib/features/diff/DiffModal.svelte index 1a26833fc..4a761d594 100644 --- a/apps/staged/src/lib/features/diff/DiffModal.svelte +++ b/apps/staged/src/lib/features/diff/DiffModal.svelte @@ -3,13 +3,13 @@ Opened from a branch card or timeline item. Contains: - DiffViewer (renders the selected file's diff) - - File sidebar on the right with tree view, review status, reference files, comments + - File sidebar on the right with tree view, review status, comments Props: branchId, commitSha (optional), scope, onClose. State management: - diffViewerState: file list + on-demand diff cache - - reviewState: lazy review creation, comments, reviewed paths, reference files + - reviewState: lazy review creation, comments, reviewed paths --> - -
-
-
- REFERENCE - {#if referenceFiles.length > 0} - {referenceFiles.length} - {/if} -
-
-
- -{#if referenceFiles.length > 0} -
    - {#each referenceFiles as refFile (refFile.path)} -
  • -
    onSelectFile(refFile.path)} - onkeydown={(e) => e.key === 'Enter' && onSelectFile(refFile.path)} - title={refFile.path} - > - - {refFile.path} - -
    -
  • - {/each} -
-{/if} - - diff --git a/apps/staged/src/lib/features/diff/reviewState.svelte.ts b/apps/staged/src/lib/features/diff/reviewState.svelte.ts index 5ebbf6f8d..cfd1bd68a 100644 --- a/apps/staged/src/lib/features/diff/reviewState.svelte.ts +++ b/apps/staged/src/lib/features/diff/reviewState.svelte.ts @@ -1,5 +1,5 @@ // Re-export types from shared package -export { type ReviewState, type ReferenceFile } from '@builderbot/diff-viewer/state'; +export { type ReviewState } from '@builderbot/diff-viewer/state'; // Re-export with Staged's Tauri commands pre-bound import * as commands from '../../api/commands'; diff --git a/packages/diff-viewer/src/lib/state/index.ts b/packages/diff-viewer/src/lib/state/index.ts index 97b40c360..41ec37ae8 100644 --- a/packages/diff-viewer/src/lib/state/index.ts +++ b/packages/diff-viewer/src/lib/state/index.ts @@ -4,7 +4,7 @@ export { type DiffViewerState, } from './diffViewerState.svelte'; -export { createReviewState, type ReviewState, type ReferenceFile } from './reviewState.svelte'; +export { createReviewState, type ReviewState } from './reviewState.svelte'; export { createScrollController } from './scrollController.svelte'; diff --git a/packages/diff-viewer/src/lib/state/reviewState.svelte.ts b/packages/diff-viewer/src/lib/state/reviewState.svelte.ts index c7eda1058..c3ec3b879 100644 --- a/packages/diff-viewer/src/lib/state/reviewState.svelte.ts +++ b/packages/diff-viewer/src/lib/state/reviewState.svelte.ts @@ -13,18 +13,12 @@ * This is a factory — each DiffModal creates its own instance. */ -import type { DiffCommands, ReviewCommands, Comment, Span, Review, FileContent } from '../types'; +import type { ReviewCommands, Comment, Span, Review } from '../types'; // ============================================================================= // Type // ============================================================================= -/** A reference file loaded into the sidebar. */ -export interface ReferenceFile { - path: string; - content: FileContent; -} - export interface ReviewState { /** The review record (null until first persistent action). */ review: Review | null; @@ -34,8 +28,6 @@ export interface ReviewState { deletedComments: Comment[]; /** Paths marked as reviewed. */ reviewedPaths: string[]; - /** Reference files pinned for viewing. */ - referenceFiles: ReferenceFile[]; /** Whether the review is being created/loaded. */ loading: boolean; } @@ -55,7 +47,7 @@ export interface ReviewState { * ID the lookup would return an arbitrary match. */ export function createReviewState( - commands: ReviewCommands & Pick, + commands: ReviewCommands, branchId: string, commitSha: string, scope: 'branch' | 'commit', @@ -66,7 +58,6 @@ export function createReviewState( comments: [], deletedComments: [], reviewedPaths: [], - referenceFiles: [], loading: false, }); @@ -88,11 +79,6 @@ export function createReviewState( state.comments = review.comments; state.reviewedPaths = review.reviewed; - // Load reference files in background - if (review.referenceFiles.length > 0) { - loadReferenceFilesFromPaths(review.referenceFiles); - } - // Load deleted comments in background loadDeletedComments(review.id); @@ -123,10 +109,6 @@ export function createReviewState( state.comments = review.comments; state.reviewedPaths = review.reviewed; - if (review.referenceFiles.length > 0) { - loadReferenceFilesFromPaths(review.referenceFiles); - } - // Load deleted comments in background loadDeletedComments(review.id); } @@ -266,24 +248,6 @@ export function createReviewState( } } - /** - * Load reference files from persisted paths (fire-and-forget). - */ - async function loadReferenceFilesFromPaths(paths: string[]): Promise { - const results = await Promise.allSettled( - paths.map(async (path) => { - const file = await commands.getFileAtRef(branchId, 'HEAD', path); - return { path: file.path, content: file.content } as ReferenceFile; - }) - ); - - const loaded: ReferenceFile[] = []; - for (const result of results) { - if (result.status === 'fulfilled') loaded.push(result.value); - } - state.referenceFiles = loaded; - } - /** * Toggle reviewed status of a file. */ @@ -302,43 +266,6 @@ export function createReviewState( return state.reviewedPaths.includes(path); } - // ========================================================================= - // Reference file actions - // ========================================================================= - - /** - * Add a reference file. Creates the review if it doesn't exist yet. - * Loads file content from the repo at HEAD. - */ - async function addReferenceFile(path: string): Promise { - // Don't add duplicates - if (state.referenceFiles.some((f) => f.path === path)) return; - - const reviewId = await ensureReviewExists(); - if (!reviewId) return; - - try { - const file = await commands.getFileAtRef(branchId, 'HEAD', path); - state.referenceFiles = [...state.referenceFiles, { path: file.path, content: file.content }]; - await commands.addReferenceFile(reviewId, path); - } catch (e) { - console.error('Failed to add reference file:', e); - } - } - - /** - * Remove a reference file (optimistic). - */ - async function removeReferenceFile(path: string): Promise { - state.referenceFiles = state.referenceFiles.filter((f) => f.path !== path); - - if (state.review) { - commands.removeReferenceFile(state.review.id, path).catch((e) => { - console.error('Failed to remove reference file from DB:', e); - }); - } - } - /** * Delete all comments (optimistic, single atomic backend call). */ @@ -368,7 +295,5 @@ export function createReviewState( unmarkReviewed, toggleReviewed, isReviewed, - addReferenceFile, - removeReferenceFile, }; } diff --git a/packages/diff-viewer/src/lib/types.ts b/packages/diff-viewer/src/lib/types.ts index 9932b5756..a8132f27d 100644 --- a/packages/diff-viewer/src/lib/types.ts +++ b/packages/diff-viewer/src/lib/types.ts @@ -194,6 +194,4 @@ export interface ReviewCommands { markReviewed(reviewId: string, path: string): Promise; unmarkReviewed(reviewId: string, path: string): Promise; - addReferenceFile(reviewId: string, path: string): Promise; - removeReferenceFile(reviewId: string, path: string): Promise; }