mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 11:06:16 -08:00
Rebase follow-up. #1274 split the settings page into facades and #1277 split its spec along the same seams, so this PR's renderer changes moved: - the failed-read warning is now raised by `SettingsFormFacade.loadSettings()`, which owns the store call - the cover-size and EPG-view-mode writes moved into the facade, so their rejection handling went with them - `showStorageFailure()` became `SettingsSnackbarService.storageFailure()`, because the component and the facade both need it and neither can reach the other's copy - `onSubmit()` still owns the dialog, so the catch and the "close only after the write succeeded" ordering stay in the component The four regression tests live in `settings.component.storage-failure.spec.ts` rather than being appended to `settings.component.form.spec.ts`, which would have pushed that file to 427 lines, past the 400-line lint maximum. They assert against the MatDialog the component actually calls — spying on the instance from `TestBed.inject(MatDialog)` does not observe it — and one of them stubs the post-save EPG fetch, since a throw there would otherwise land in the same catch and look like a failed write. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>