feat(mobile): use custom headers when connecting in widget (#20666)

* feat(mobile): use custom headers when connecting in widget

* delete log in android widget

* chore: code review changes
This commit is contained in:
Brandon Wees
2025-08-05 10:29:27 -05:00
committed by GitHub
parent 7a7843467c
commit 13d43e193e
6 changed files with 58 additions and 8 deletions

View File

@@ -30,9 +30,10 @@ const int kTimelineAssetLoadBatchSize = 256;
const int kTimelineAssetLoadOppositeSize = 64;
// Widget keys
const String appShareGroupId = "group.app.immich.share";
const String kWidgetAuthToken = "widget_auth_token";
const String kWidgetServerEndpoint = "widget_server_url";
const String appShareGroupId = "group.app.immich.share";
const String kWidgetCustomHeaders = "widget_custom_headers";
// add widget identifiers here for new widgets
// these are used to force a widget refresh

View File

@@ -121,7 +121,9 @@ class AuthNotifier extends StateNotifier<AuthState> {
Future<bool> saveAuthInfo({required String accessToken}) async {
await _apiService.setAccessToken(accessToken);
await _widgetService.writeCredentials(Store.get(StoreKey.serverEndpoint), accessToken);
final serverEndpoint = Store.get(StoreKey.serverEndpoint);
final customHeaders = Store.get(StoreKey.customHeaders);
await _widgetService.writeCredentials(serverEndpoint, accessToken, customHeaders);
// Get the deviceid from the store if it exists, otherwise generate a new one
String deviceId = Store.tryGet(StoreKey.deviceId) ?? await FlutterUdid.consistentUdid;

View File

@@ -11,10 +11,11 @@ class WidgetService {
const WidgetService(this._repository);
Future<void> writeCredentials(String serverURL, String sessionKey) async {
Future<void> writeCredentials(String serverURL, String sessionKey, String customHeaders) async {
await _repository.setAppGroupId(appShareGroupId);
await _repository.saveData(kWidgetServerEndpoint, serverURL);
await _repository.saveData(kWidgetAuthToken, sessionKey);
await _repository.saveData(kWidgetCustomHeaders, customHeaders);
// wait 3 seconds to ensure the widget is updated, dont block
Future.delayed(const Duration(seconds: 3), refreshWidgets);
@@ -24,6 +25,7 @@ class WidgetService {
await _repository.setAppGroupId(appShareGroupId);
await _repository.saveData(kWidgetServerEndpoint, "");
await _repository.saveData(kWidgetAuthToken, "");
await _repository.saveData(kWidgetCustomHeaders, "");
// wait 3 seconds to ensure the widget is updated, dont block
Future.delayed(const Duration(seconds: 3), refreshWidgets);