mirror of
https://github.com/immich-app/immich.git
synced 2025-06-23 15:30:51 -04:00
* feat: working widgets * chore/feat: cleaned up API, added album picker to random widget * album filtering for requests * check album and throw if not found * fix app IDs and project configuration * switch to repository/service model for updating widgets * fix: remove home widget import * revert info.plist formatting changes * ran swift-format on widget code * more formatting changes (this time run from xcode) * show memory on widget picker snapshot * fix: dart changes from code review * fix: swift code review changes (not including task groups) * fix: use task groups to run image retrievals concurrently, get rid of do catch in favor of if let * chore: cleanup widget service in dart app * chore: format swift * fix: remove comma why does xcode not freak out over this >:( * switch to preview size for thumbnail * chore: cropped large image * fix: properly resize widgets so we dont OOM * fix: set app group on logout happens on first install * fix: stupid app ids * fix: revert back to thumbnail we are hitting OOM exceptions due to resizing, once we have on-the-fly resizing on server this can be upgraded * fix: more memory efficient resizing method, remove extraneous resize commands from API call * fix: random widget use 12 entries instead of 24 to save memory * fix: modify duration of entries to 20 minutes and only generate 10 at a time to avoid OOM * feat: toggle to show album name on random widget * Podfile lock --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
41 lines
1.3 KiB
Dart
41 lines
1.3 KiB
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:immich_mobile/constants/constants.dart';
|
|
import 'package:immich_mobile/interfaces/widget.interface.dart';
|
|
import 'package:immich_mobile/repositories/widget.repository.dart';
|
|
|
|
final widgetServiceProvider = Provider((ref) {
|
|
return WidgetService(
|
|
ref.watch(widgetRepositoryProvider),
|
|
);
|
|
});
|
|
|
|
class WidgetService {
|
|
final IWidgetRepository _repository;
|
|
|
|
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 name in kWidgetNames) {
|
|
await _repository.refresh(name);
|
|
}
|
|
}
|
|
}
|