fix: initialize all user stores in offline session activation

activate_offline_session was only initializing library, offline,
offline_cache, audio_settings, and playback_prefs. Missing stores
caused "No active session" errors for:
- download_settings (Show in Local Library toggle)
- session_store (session persistence)
- favorites_cache/prefs (favorites view)
- tray_settings (tray icon settings)

Now mirrors activate_session but skips online-only services
(MusicBrainz, ListenBrainz, Last.fm, API cache, artist vectors).

cc
This commit is contained in:
vicrodh committed 2026-03-21 14:32:02 -06:00
1 parent 86520df919
commit eeb155641c
1 file changed
+23 -1
+23 -1
View File
@@ -364,19 +364,41 @@ pub async fn activate_offline_session(app: &tauri::AppHandle) -> Result<(), Stri
std::fs::create_dir_all(&cache_dir)
.map_err(|e| format!("Failed to create offline cache dir: {}", e))?;
// Initialize only the stores needed for offline operation
// Initialize all per-user stores needed for offline operation.
// This mirrors activate_session but skips online-only services
// (MusicBrainz, ListenBrainz, Last.fm, API cache, artist vectors).
let library = app.state::<crate::library::commands::LibraryState>();
let offline = app.state::<crate::offline::OfflineState>();
let offline_cache = app.state::<crate::offline_cache::OfflineCacheState>();
let audio_settings = app.state::<crate::config::audio_settings::AudioSettingsState>();
let playback_prefs =
app.state::<crate::config::playback_preferences::PlaybackPreferencesState>();
let session_store = app.state::<crate::session_store::SessionStoreState>();
let download_settings = app.state::<crate::config::download_settings::DownloadSettingsState>();
let favorites_cache = app.state::<crate::config::favorites_cache::FavoritesCacheState>();
let tray_settings = app.state::<crate::config::tray_settings::TraySettingsState>();
let favorites_prefs =
app.state::<crate::config::favorites_preferences::FavoritesPreferencesState>();
library.init_at(&data_dir).await?;
offline.init_at(&data_dir)?;
offline_cache.init_at(&cache_dir).await?;
offline_cache.init_library_connection(&data_dir).await?;
audio_settings.init_at(&data_dir)?;
session_store.init_at(&data_dir)?;
favorites_cache.init_at(&data_dir)?;
favorites_prefs.init_at(&data_dir)?;
tray_settings.init_at(&data_dir)?;
// Download settings — needed for "Show in Local Library" toggle
{
use crate::config::download_settings::DownloadSettingsStore;
crate::commands::user_session::init_type_alias_state(
&*download_settings,
&data_dir,
DownloadSettingsStore::new_at,
)?;
}
// Sync audio settings to CoreBridge player (same as normal session)
{