feat(09-03): add scan control UI with pause/resume/cancel and confirmation dialog

- Pause/Resume buttons replace Soft Scan/Full Rescan during active scan
- Cancel button shows confirmation dialog with Keep/Discard/Continue options
- Register LibraryScanPaused/Resumed/Cancelled event handlers
- Status bar shows 'Scan paused.' with accent color when paused
- Add CancelScan/PauseScan/ResumeScan Wails binding stubs
- Cancel dialog overlay dismissible by clicking outside or Continue Scanning
- Add cancelled field to ScanMetrics TypeScript interface
This commit is contained in:
2026-03-06 21:54:50 -05:00
parent 6bb266e234
commit 391436927c
4 changed files with 441 additions and 23 deletions
+10
View File
@@ -3,10 +3,16 @@
import {library} from '../models';
import {context} from '../models';
export function CancelScan():Promise<void>;
export function FullRescan():Promise<library.ScanMetrics>;
export function GetAlbumTracks(arg1:number):Promise<Array<library.Track>>;
export function IsScanActive():Promise<boolean>;
export function IsScanPaused():Promise<boolean>;
export function GetAlbumsByArtist(arg1:number):Promise<Array<library.Album>>;
export function GetAllAlbums():Promise<Array<library.Album>>;
@@ -19,6 +25,10 @@ export function GetAllTracks():Promise<Array<library.Track>>;
export function GetTracksByGenre(arg1:string):Promise<Array<library.Track>>;
export function PauseScan():Promise<void>;
export function ResumeScan():Promise<void>;
export function Scan():Promise<library.ScanMetrics>;
export function SearchTracks(arg1:string):Promise<Array<library.Track>>;
+20
View File
@@ -2,6 +2,10 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export function CancelScan() {
return window['go']['library']['Library']['CancelScan']();
}
export function FullRescan() {
return window['go']['library']['Library']['FullRescan']();
}
@@ -10,6 +14,14 @@ export function GetAlbumTracks(arg1) {
return window['go']['library']['Library']['GetAlbumTracks'](arg1);
}
export function IsScanActive() {
return window['go']['library']['Library']['IsScanActive']();
}
export function IsScanPaused() {
return window['go']['library']['Library']['IsScanPaused']();
}
export function GetAlbumsByArtist(arg1) {
return window['go']['library']['Library']['GetAlbumsByArtist'](arg1);
}
@@ -34,6 +46,14 @@ export function GetTracksByGenre(arg1) {
return window['go']['library']['Library']['GetTracksByGenre'](arg1);
}
export function PauseScan() {
return window['go']['library']['Library']['PauseScan']();
}
export function ResumeScan() {
return window['go']['library']['Library']['ResumeScan']();
}
export function Scan() {
return window['go']['library']['Library']['Scan']();
}