fix(settings): keep full refresh busy across phases

Centralize persisted full-refresh phase detection so the Settings rebuild button stays in its refreshing state during Laya, projection, writing, and EPG phases.

Refs #44

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
blomios
2026-10-08 19:30:31 +02:00
parent 4d02331501
commit 043afde553
4 changed files with 79 additions and 7 deletions

View File

@ -154,12 +154,9 @@ class SettingsPage {
const presentation = LiveAnalysisPresentation.present(status);
buttons.forEach(button => { button.disabled = presentation.busy; });
const rebuildButton = document.getElementById('live-rebuild-catalog-button');
const fullRefreshPhases = new Set([
'refreshing_live_sources', 'refreshing_epg_sources', 'matching_epg',
'laya_epg_matching', 'writing_epg_matches'
]);
const fullRefreshBusy = presentation.busy &&
(this.currentLiveAnalysisAction === 'rebuild' || fullRefreshPhases.has(presentation.phase));
(this.currentLiveAnalysisAction === 'rebuild' ||
LiveAnalysisPresentation.isFullRefreshPhase(presentation.phase));
if (rebuildButton) rebuildButton.textContent = fullRefreshBusy ? 'Refreshing…' : 'Run full refresh';
statusElement.textContent = presentation.statusLabel;
progress.hidden = !presentation.busy;

View File

@ -8,6 +8,14 @@
const INDETERMINATE_PHASES = new Set([
'writing', 'refreshing_live_sources', 'refreshing_epg_sources', 'writing_epg_matches'
]);
const FULL_REFRESH_PHASES = new Set([
'refreshing_live_sources', 'laya_identity', 'laya_language', 'projecting', 'writing',
'refreshing_epg_sources', 'matching_epg', 'laya_epg_matching', 'writing_epg_matches'
]);
function isFullRefreshPhase(phase) {
return FULL_REFRESH_PHASES.has(String(phase || '').toLowerCase());
}
function progressValues(status, phase) {
if (phase === 'laya_identity') {
@ -93,5 +101,5 @@
: '';
}
return { layaFallbackMessage, present };
return { isFullRefreshPhase, layaFallbackMessage, present };
});