fix: await download provider init before offline navigation
This commit is contained in:
@@ -342,6 +342,8 @@ class _SetupScreenState extends State<SetupScreen> {
|
||||
MaterialPageRoute(builder: (context) => MainScreen(client: result.firstClient!)),
|
||||
);
|
||||
} else {
|
||||
await context.read<DownloadProvider>().ensureInitialized();
|
||||
if (!mounted) return;
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => const MainScreen(isOfflineMode: true)),
|
||||
@@ -351,6 +353,8 @@ class _SetupScreenState extends State<SetupScreen> {
|
||||
appLogger.e('Error during multi-server connection', error: e, stackTrace: stackTrace);
|
||||
|
||||
if (mounted) {
|
||||
await context.read<DownloadProvider>().ensureInitialized();
|
||||
if (!mounted) return;
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => const MainScreen(isOfflineMode: true)),
|
||||
|
||||
@@ -33,6 +33,7 @@ class DownloadProvider extends ChangeNotifier {
|
||||
final DownloadManagerService _downloadManager;
|
||||
StreamSubscription<DownloadProgress>? _progressSubscription;
|
||||
StreamSubscription<DeletionProgress>? _deletionProgressSubscription;
|
||||
late final Future<void> _initFuture;
|
||||
|
||||
// Track download progress by globalKey (serverId:ratingKey)
|
||||
final Map<String, DownloadProgress> _downloads = {};
|
||||
@@ -61,9 +62,12 @@ class DownloadProvider extends ChangeNotifier {
|
||||
_deletionProgressSubscription = _downloadManager.deletionProgressStream.listen(_onDeletionProgressUpdate);
|
||||
|
||||
// Load persisted downloads from database
|
||||
_loadPersistedDownloads();
|
||||
_initFuture = _loadPersistedDownloads();
|
||||
}
|
||||
|
||||
/// Ensures persisted downloads have been loaded from disk.
|
||||
Future<void> ensureInitialized() => _initFuture;
|
||||
|
||||
/// Load all persisted downloads and metadata from the database/cache
|
||||
Future<void> _loadPersistedDownloads() async {
|
||||
try {
|
||||
|
||||
@@ -95,7 +95,7 @@ Future<MediaNavigationResult> navigateToMediaItem(
|
||||
continue defaultCase;
|
||||
|
||||
case PlexMediaType.season:
|
||||
await Navigator.push(context, MaterialPageRoute(builder: (context) => SeasonDetailScreen(season: metadata)));
|
||||
await Navigator.push(context, MaterialPageRoute(builder: (context) => SeasonDetailScreen(season: metadata, isOffline: isOffline)));
|
||||
onRefresh?.call(metadata.ratingKey);
|
||||
return MediaNavigationResult.navigated;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user