mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-20 22:41:38 +02:00
refactor(repo): prepare install paths in the repo notifier
The store list and the detail screen both built the temp and extension directories before calling the notifier. The notifier now offers installExtensionToDefaultPaths and updateExtensionToDefaultPaths; the existing methods keep their signatures.
This commit is contained in:
1 parent
b10370e4fc
commit
ba376d69fc
3 files changed
+18
-17
No files matched your search
@@ -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<RepoState> {
|
||||
);
|
||||
}
|
||||
|
||||
/// Installs [extensionId] using the app's temp and extension directories.
|
||||
Future<bool> 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<bool> updateExtensionToDefaultPaths(String extensionId) async {
|
||||
final tempDir = await getTemporaryDirectory();
|
||||
return updateExtension(extensionId, tempDir.path);
|
||||
}
|
||||
|
||||
Future<bool> updateExtension(String extensionId, String tempDir) {
|
||||
return _runSerialized(
|
||||
() => _downloadAndApplyExtension(
|
||||
|
||||
@@ -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<void> _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<void> _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(
|
||||
|
||||
@@ -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<RepoTab> {
|
||||
}
|
||||
|
||||
Future<void> _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<RepoTab> {
|
||||
}
|
||||
|
||||
Future<void> _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(
|
||||
|
||||
Reference in new issue
Block a user