mirror of
https://github.com/immich-app/immich.git
synced 2025-07-31 15:08:44 -04:00
* wip * wip widgets * more wip changes * latest changes * working random widget * cleanup * add configurable widget * add memory widget and cleanup of codebase * album name handling * add deeplinks * finish minor refactoring and add some polish :) * fix single shot type on random widget Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> * switch to ExposedDropdownMenuBox for random configure activity * handle empty album and no connection edge cases * android project cleanup * fix proguard and gson issues * fix deletion handling * fix proguard stripping for widget model classes/enums * change random configuration activity close to a checkmark on right side --------- Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
40 lines
1.3 KiB
Dart
40 lines
1.3 KiB
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/constants/constants.dart';
|
|
import 'package:immich_mobile/repositories/widget.repository.dart';
|
|
|
|
final widgetServiceProvider = Provider((ref) {
|
|
return WidgetService(
|
|
ref.watch(widgetRepositoryProvider),
|
|
);
|
|
});
|
|
|
|
class WidgetService {
|
|
final WidgetRepository _repository;
|
|
|
|
const WidgetService(this._repository);
|
|
|
|
Future<void> writeCredentials(String serverURL, String sessionKey) async {
|
|
await _repository.setAppGroupId(appShareGroupId);
|
|
await _repository.saveData(kWidgetServerEndpoint, serverURL);
|
|
await _repository.saveData(kWidgetAuthToken, sessionKey);
|
|
|
|
// wait 3 seconds to ensure the widget is updated, dont block
|
|
Future.delayed(const Duration(seconds: 3), refreshWidgets);
|
|
}
|
|
|
|
Future<void> clearCredentials() async {
|
|
await _repository.setAppGroupId(appShareGroupId);
|
|
await _repository.saveData(kWidgetServerEndpoint, "");
|
|
await _repository.saveData(kWidgetAuthToken, "");
|
|
|
|
// wait 3 seconds to ensure the widget is updated, dont block
|
|
Future.delayed(const Duration(seconds: 3), refreshWidgets);
|
|
}
|
|
|
|
Future<void> refreshWidgets() async {
|
|
for (final (iOSName, androidName) in kWidgetNames) {
|
|
await _repository.refresh(iOSName, androidName);
|
|
}
|
|
}
|
|
}
|