feat(mobile): android widgets (#19310)
* 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>
This commit is contained in:
@@ -28,7 +28,8 @@ const String appShareGroupId = "group.app.immich.share";
|
||||
|
||||
// add widget identifiers here for new widgets
|
||||
// these are used to force a widget refresh
|
||||
const List<String> kWidgetNames = [
|
||||
'com.immich.widget.random',
|
||||
'com.immich.widget.memory',
|
||||
// (iOSName, androidFQDN)
|
||||
const List<(String, String)> kWidgetNames = [
|
||||
('com.immich.widget.random', 'app.alextran.immich.widget.RandomReceiver'),
|
||||
('com.immich.widget.memory', 'app.alextran.immich.widget.MemoryReceiver'),
|
||||
];
|
||||
|
||||
@@ -10,8 +10,11 @@ class WidgetRepository {
|
||||
await HomeWidget.saveWidgetData<String>(key, value);
|
||||
}
|
||||
|
||||
Future<void> refresh(String name) async {
|
||||
await HomeWidget.updateWidget(name: name, iOSName: name);
|
||||
Future<void> refresh(String iosName, String androidName) async {
|
||||
await HomeWidget.updateWidget(
|
||||
iOSName: iosName,
|
||||
qualifiedAndroidName: androidName,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> setAppGroupId(String appGroupId) async {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'dart:io';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/constants/constants.dart';
|
||||
import 'package:immich_mobile/repositories/widget.repository.dart';
|
||||
@@ -33,10 +32,8 @@ class WidgetService {
|
||||
}
|
||||
|
||||
Future<void> refreshWidgets() async {
|
||||
if (Platform.isAndroid) return;
|
||||
|
||||
for (final name in kWidgetNames) {
|
||||
await _repository.refresh(name);
|
||||
for (final (iOSName, androidName) in kWidgetNames) {
|
||||
await _repository.refresh(iOSName, androidName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user