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:
zarzet committed 2026-10-19 00:48:31 +07:00
1 parent b10370e4fc
commit ba376d69fc
3 files changed
+18 -17

No files matched your search

+14
View File
@@ -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(
+2 -8
View File
@@ -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(