diff --git a/lib/providers/repo_provider.dart b/lib/providers/repo_provider.dart index 247988f0..2505e431 100644 --- a/lib/providers/repo_provider.dart +++ b/lib/providers/repo_provider.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:spotiflac_android/constants/app_info.dart'; +import 'package:spotiflac_android/services/extension_storage_service.dart'; import 'package:spotiflac_android/services/platform_bridge.dart'; import 'package:spotiflac_android/utils/logger.dart'; import 'package:spotiflac_android/providers/extension_provider.dart'; @@ -383,6 +384,19 @@ class RepoNotifier extends Notifier { ); } + /// Installs [extensionId] using the app's temp and extension directories. + Future installExtensionToDefaultPaths(String extensionId) async { + final tempDir = await getTemporaryDirectory(); + final storage = await ExtensionStorageService.prepare(); + return installExtension(extensionId, tempDir.path, storage.extensionsDir); + } + + /// Updates [extensionId] using the app's temp directory. + Future updateExtensionToDefaultPaths(String extensionId) async { + final tempDir = await getTemporaryDirectory(); + return updateExtension(extensionId, tempDir.path); + } + Future updateExtension(String extensionId, String tempDir) { return _runSerialized( () => _downloadAndApplyExtension( diff --git a/lib/screens/repo/extension_details_screen.dart b/lib/screens/repo/extension_details_screen.dart index 178266c9..10aa6b4b 100644 --- a/lib/screens/repo/extension_details_screen.dart +++ b/lib/screens/repo/extension_details_screen.dart @@ -2,11 +2,9 @@ import 'package:flutter/material.dart'; import 'package:spotiflac_android/widgets/app_snack_bar.dart'; import 'package:flutter/cupertino.dart' show CupertinoIcons; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:spotiflac_android/l10n/l10n.dart'; import 'package:spotiflac_android/providers/repo_provider.dart'; import 'package:spotiflac_android/providers/extension_provider.dart'; -import 'package:spotiflac_android/services/extension_storage_service.dart'; import 'package:spotiflac_android/utils/adaptive_layout.dart'; import 'package:spotiflac_android/utils/nav_bar_inset.dart'; import 'package:spotiflac_android/theme/mornye_theme.dart'; @@ -569,12 +567,9 @@ class _ExtensionDetailsScreenState } Future _installExtension(RepoExtension ext) async { - final tempDir = await getTemporaryDirectory(); - final storage = await ExtensionStorageService.prepare(); - final success = await ref .read(repoProvider.notifier) - .installExtension(ext.id, tempDir.path, storage.extensionsDir); + .installExtensionToDefaultPaths(ext.id); if (mounted) { showAppSnackBar( @@ -590,11 +585,9 @@ class _ExtensionDetailsScreenState } Future _updateExtension(RepoExtension ext) async { - final tempDir = await getTemporaryDirectory(); - final success = await ref .read(repoProvider.notifier) - .updateExtension(ext.id, tempDir.path); + .updateExtensionToDefaultPaths(ext.id); if (mounted) { showAppSnackBar( diff --git a/lib/screens/repo_tab.dart b/lib/screens/repo_tab.dart index f4e07889..0dc08237 100644 --- a/lib/screens/repo_tab.dart +++ b/lib/screens/repo_tab.dart @@ -15,7 +15,6 @@ import 'package:spotiflac_android/providers/repo_provider.dart'; import 'package:spotiflac_android/widgets/settings_group.dart'; import 'package:spotiflac_android/widgets/animation_utils.dart'; import 'package:spotiflac_android/screens/repo/extension_details_screen.dart'; -import 'package:spotiflac_android/services/extension_storage_service.dart'; import 'package:spotiflac_android/utils/adaptive_layout.dart'; import 'package:spotiflac_android/utils/nav_bar_inset.dart'; import 'package:spotiflac_android/providers/runtime_profile_provider.dart'; @@ -600,12 +599,9 @@ class _RepoTabState extends ConsumerState { } Future _installExtension(RepoExtension ext) async { - final tempDir = await getTemporaryDirectory(); - final storage = await ExtensionStorageService.prepare(); - final success = await ref .read(repoProvider.notifier) - .installExtension(ext.id, tempDir.path, storage.extensionsDir); + .installExtensionToDefaultPaths(ext.id); if (mounted) { showAppSnackBar( @@ -621,11 +617,9 @@ class _RepoTabState extends ConsumerState { } Future _updateExtension(RepoExtension ext) async { - final tempDir = await getTemporaryDirectory(); - final success = await ref .read(repoProvider.notifier) - .updateExtension(ext.id, tempDir.path); + .updateExtensionToDefaultPaths(ext.id); if (mounted) { showAppSnackBar(