[REF] unify pool handling with extension methods
- Move pool filtering and parsing logic into SnFilePool extension - Replace PoolService and pool_utils with unified extension - Update settings screen to use pools.filterValid() + resolveDefaultPoolId - Cleanup references in compose_shared.dart - Remove obsolete files: pool_service.dart, pool_utils.dart Signed-off-by: Texas0295 <kimura@texas0295.top>
This commit is contained in:
@@ -1,14 +1,28 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:island/services/pool_service.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:island/models/file_pool.dart';
|
||||
import 'package:island/pods/config.dart';
|
||||
import 'package:island/pods/network.dart';
|
||||
|
||||
final poolServiceProvider = Provider<PoolService>((ref) {
|
||||
final poolsProvider = FutureProvider<List<SnFilePool>>((ref) async {
|
||||
final dio = ref.watch(apiClientProvider);
|
||||
return PoolService(dio);
|
||||
final response = await dio.get('/drive/pools');
|
||||
final pools = SnFilePoolList.listFromResponse(response.data);
|
||||
return pools.filterValid();
|
||||
});
|
||||
|
||||
final poolsProvider = FutureProvider<List<SnFilePool>>((ref) async {
|
||||
final service = ref.watch(poolServiceProvider);
|
||||
return service.fetchPools();
|
||||
});
|
||||
String resolveDefaultPoolId(WidgetRef ref, List<SnFilePool> pools) {
|
||||
final settings = ref.watch(appSettingsNotifierProvider);
|
||||
final validPools = pools.filterValid();
|
||||
|
||||
final configuredId = settings.defaultPoolId;
|
||||
if (configuredId != null && validPools.any((p) => p.id == configuredId)) {
|
||||
return configuredId;
|
||||
}
|
||||
|
||||
if (validPools.isNotEmpty) {
|
||||
return validPools.first.id;
|
||||
}
|
||||
|
||||
// DEFAULT: Solar Network Driver
|
||||
return '500e5ed8-bd44-4359-bc0a-ec85e2adf447'; }
|
||||
|
||||
|
Reference in New Issue
Block a user