chore: code review changes from @shenlong-tanwen

This commit is contained in:
bwees 2025-06-24 09:18:11 -05:00
parent c6cd4dce78
commit 97329d488b
No known key found for this signature in database

View File

@ -4,45 +4,44 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/constants.dart'; import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/domain/models/store.model.dart';
import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/entities/store.entity.dart';
import 'package:immich_mobile/models/auth/auxilary_endpoint.model.dart'; import 'package:immich_mobile/repositories/auth.repository.dart';
import 'package:immich_mobile/repositories/widget.repository.dart'; import 'package:immich_mobile/repositories/widget.repository.dart';
final widgetServiceProvider = Provider((ref) { final widgetServiceProvider = Provider((ref) {
return WidgetService( return WidgetService(
ref.watch(widgetRepositoryProvider), ref.watch(widgetRepositoryProvider),
ref.watch(authRepositoryProvider),
); );
}); });
class WidgetService { class WidgetService {
final WidgetRepository _repository; final WidgetRepository _widgetRepository;
final AuthRepository _authRepository;
WidgetService(this._repository); WidgetService(this._widgetRepository, this._authRepository);
Future<void> writeSessionKey( Future<void> writeSessionKey(
String sessionKey, String sessionKey,
) async { ) async {
await _repository.setAppGroupId(appShareGroupId); await _widgetRepository.setAppGroupId(appShareGroupId);
await _repository.saveData(kWidgetAuthToken, sessionKey); await _widgetRepository.saveData(kWidgetAuthToken, sessionKey);
// wait 3 seconds to ensure the widget is updated, dont block // wait 3 seconds to ensure the widget is updated, dont block
Future.delayed(const Duration(seconds: 3), refreshWidgets); Future.delayed(const Duration(seconds: 3), refreshWidgets);
} }
Future<void> writeServerList() async { Future<void> writeServerList() async {
await _repository.setAppGroupId(appShareGroupId); await _widgetRepository.setAppGroupId(appShareGroupId);
// create json string from serverURLS // create json string from serverURLS
final serverURLSString = jsonEncode(_buildServerList()); final serverURLSString = jsonEncode(_buildServerList());
await _repository.saveData(kWidgetServerEndpoint, serverURLSString); await _widgetRepository.saveData(kWidgetServerEndpoint, serverURLSString);
Future.delayed(const Duration(seconds: 3), refreshWidgets); Future.delayed(const Duration(seconds: 3), refreshWidgets);
} }
List<String> _buildServerList() { List<String> _buildServerList() {
final List<dynamic> jsonList = final endpointList = _authRepository.getExternalEndpointList();
jsonDecode(Store.tryGet(StoreKey.externalEndpointList) ?? "[]");
final endpointList =
jsonList.map((e) => AuxilaryEndpoint.fromJson(e)).toList();
final String? localEndpoint = Store.tryGet(StoreKey.localEndpoint); final String? localEndpoint = Store.tryGet(StoreKey.localEndpoint);
final String? serverUrl = Store.tryGet(StoreKey.serverUrl); final String? serverUrl = Store.tryGet(StoreKey.serverUrl);
@ -53,20 +52,17 @@ class WidgetService {
serverUrlList.insert(0, localEndpoint); serverUrlList.insert(0, localEndpoint);
} }
if (serverUrl != null && serverUrl != localEndpoint) { if (serverUrl != null) {
serverUrlList.insert(0, serverUrl); serverUrlList.insert(0, serverUrl);
} }
// remove duplicates return serverUrlList.toSet().toList();
final Set<String> uniqueServerUrls = serverUrlList.toSet();
return uniqueServerUrls.toList();
} }
Future<void> clearCredentials() async { Future<void> clearCredentials() async {
await _repository.setAppGroupId(appShareGroupId); await _widgetRepository.setAppGroupId(appShareGroupId);
await _repository.saveData(kWidgetServerEndpoint, ""); await _widgetRepository.saveData(kWidgetServerEndpoint, "");
await _repository.saveData(kWidgetAuthToken, ""); await _widgetRepository.saveData(kWidgetAuthToken, "");
// wait 3 seconds to ensure the widget is updated, dont block // wait 3 seconds to ensure the widget is updated, dont block
Future.delayed(const Duration(seconds: 3), refreshWidgets); Future.delayed(const Duration(seconds: 3), refreshWidgets);
@ -74,7 +70,7 @@ class WidgetService {
Future<void> refreshWidgets() async { Future<void> refreshWidgets() async {
for (final name in kWidgetNames) { for (final name in kWidgetNames) {
await _repository.refresh(name); await _widgetRepository.refresh(name);
} }
} }
} }