feat(offline): add manual network check button

Make NowPlayingBar offline indicator clickable to force immediate
network check. Add Check Now button in Settings offline section.

cc
This commit is contained in:
victorrhgap committed 2026-03-25 16:46:53 -06:00
1 parent a8910a66c7
commit cf2df33bc4
7 files changed
+57 -11

No files matched your search

+19 -6
View File
@@ -28,6 +28,7 @@
subscribe as subscribeOffline,
isOffline as checkIsOffline,
getOfflineReason,
refreshStatus,
type OfflineReason
} from '$lib/stores/offlineStore';
import { toggleMute } from '$lib/stores/playerStore';
@@ -174,6 +175,11 @@
}
}
// Force an immediate network check when the offline indicator is clicked
async function handleCheckNetwork() {
await refreshStatus();
}
const effectiveTime = $derived(dragPreviewTime ?? currentTime);
const progress = $derived(duration > 0 ? (effectiveTime / duration) * 100 : 0);
const hasTrack = $derived(trackTitle !== '');
@@ -420,14 +426,14 @@
<!-- Right: Actions & Volume -->
<div class="right-section">
{#if isOffline}
<div
<button
class="offline-indicator"
title={getOfflineReasonText(offlineReason)}
role="status"
aria-label={getOfflineReasonText(offlineReason)}
title={$translateStore('offline.checkNow')}
onclick={handleCheckNetwork}
aria-label={$translateStore('offline.checkNow')}
>
<img src="/offline-small.svg" alt="" class="offline-icon" aria-hidden="true" />
</div>
</button>
{/if}
<button
@@ -804,7 +810,14 @@
height: 30px;
border-radius: 6px;
background: rgba(234, 179, 8, 0.15);
cursor: help;
border: none;
padding: 0;
cursor: pointer;
transition: background-color 150ms ease;
}
.offline-indicator:hover {
background: rgba(234, 179, 8, 0.3);
}
.offline-icon {
@@ -63,6 +63,7 @@
setAllowAccumulatedScrobbling,
setShowNetworkFoldersInManualOffline,
checkNetwork,
refreshStatus,
type OfflineStatus,
type OfflineSettings
} from '$lib/stores/offlineStore';
@@ -2373,6 +2374,13 @@
}
}
// Force an immediate network check from the settings view
async function handleCheckNow() {
await refreshStatus();
offlineStatus = getOfflineStatus();
offlineSettings = getOfflineSettings();
}
// Offline mode handlers
async function handleManualOfflineChange(enabled: boolean) {
// If enabling offline mode, just do it directly
@@ -4742,6 +4750,9 @@
{/if}
</span>
</div>
<button class="check-now-btn" onclick={handleCheckNow}>
{$t('offline.checkNow')}
</button>
</div>
<div class="setting-row">
<div class="setting-info">
@@ -6575,6 +6586,23 @@ flatpak override --user --filesystem=/home/USUARIO/Música com.blitzfc.qbz</pre>
cursor: not-allowed;
}
.check-now-btn {
padding: 6px 14px;
border-radius: 8px;
border: 1px solid var(--border-subtle);
background: var(--bg-tertiary);
color: var(--text-secondary);
font-size: 0.85rem;
font-weight: 500;
cursor: pointer;
transition: background-color 150ms ease, color 150ms ease;
}
.check-now-btn:hover {
background: var(--bg-hover);
color: var(--text-primary);
}
.reset-btn {
padding: 8px 16px;
border-radius: 8px;
+2 -1
View File
@@ -1472,7 +1472,8 @@
"allowAccumulatedScrobblingDesc": "Scrobbles in Warteschlange stellen und später synchronisieren, wenn wieder online",
"scrobbleTimeLimit": "Last.fm akzeptiert Scrobbles bis zu 2 Wochen alt",
"showNetworkFolders": "Netzwerkordner-Inhalt anzeigen",
"showNetworkFoldersDesc": "Inhalte aus eingebundenen Netzwerkordnern (NAS, Samba usw.) im manuellen Offline-Modus anzeigen"
"showNetworkFoldersDesc": "Inhalte aus eingebundenen Netzwerkordnern (NAS, Samba usw.) im manuellen Offline-Modus anzeigen",
"checkNow": "Jetzt pruefen"
},
"download": {
"makeAvailable": "Offline verfügbar machen",
+2 -1
View File
@@ -1580,7 +1580,8 @@
"allowAccumulatedScrobblingDesc": "Queue scrobbles for later when back online",
"scrobbleTimeLimit": "Last.fm accepts scrobbles up to 2 weeks old",
"showNetworkFolders": "Show Network Folder Content",
"showNetworkFoldersDesc": "Display content from network-mounted folders (NAS, Samba, etc.) while in manual offline mode"
"showNetworkFoldersDesc": "Display content from network-mounted folders (NAS, Samba, etc.) while in manual offline mode",
"checkNow": "Check now"
},
"download": {
"makeAvailable": "Make available offline",
+2 -1
View File
@@ -1581,7 +1581,8 @@
"allowAccumulatedScrobblingDesc": "Almacenar scrobbles para enviar cuando vuelvas a estar en linea",
"scrobbleTimeLimit": "Last.fm acepta scrobbles de hasta 2 semanas de antiguedad",
"showNetworkFolders": "Mostrar Contenido de Carpetas de Red",
"showNetworkFoldersDesc": "Mostrar contenido de carpetas montadas en red (NAS, Samba, etc.) mientras estas en modo offline manual"
"showNetworkFoldersDesc": "Mostrar contenido de carpetas montadas en red (NAS, Samba, etc.) mientras estas en modo offline manual",
"checkNow": "Verificar ahora"
},
"download": {
"makeAvailable": "Hacer disponible offline",
+2 -1
View File
@@ -1493,7 +1493,8 @@
"allowAccumulatedScrobblingDesc": "Mettre les scrobbles en file d'attente pour plus tard lorsque vous serez de nouveau en ligne",
"scrobbleTimeLimit": "Last.fm accepte les scrobbles jusqu'à 2 semaines",
"showNetworkFolders": "Afficher le contenu du dossier réseau",
"showNetworkFoldersDesc": "Afficher le contenu des dossiers montés en réseau (NAS, Samba, etc.) en mode hors ligne manuel"
"showNetworkFoldersDesc": "Afficher le contenu des dossiers montés en réseau (NAS, Samba, etc.) en mode hors ligne manuel",
"checkNow": "Verifier maintenant"
},
"download": {
"makeAvailable": "Rendre disponible hors ligne",
+2 -1
View File
@@ -1567,7 +1567,8 @@
"allowAccumulatedScrobblingDesc": "Enfileirar scrobbles para enviar depois quando voltar online",
"scrobbleTimeLimit": "O Last.fm aceita scrobbles de até 2 semanas atrás",
"showNetworkFolders": "Mostrar Conteúdo de Pastas de Rede",
"showNetworkFoldersDesc": "Exibir conteúdo de pastas montadas em rede (NAS, Samba, etc.) no modo offline manual"
"showNetworkFoldersDesc": "Exibir conteúdo de pastas montadas em rede (NAS, Samba, etc.) no modo offline manual",
"checkNow": "Verificar agora"
},
"download": {
"makeAvailable": "Disponibilizar offline",