Files
Immich/mobile/lib/data/store.dart
T
Santo Shakil 28a52948a9 feat(mobile): passkeys page with new passkey (#32781)
* feat(mobile): passkeys page with new passkey

* feat(mobile): passkeys entry under settings

* show it in settings when logged in and passkeys are on
* remove it from the profile menu

* feat(mobile): use the server feature level for passkeys

* hide passkeys below the passkeys feature level, without asking the server
* keep the server's feature level on ServerVersion

* fix(mobile): passkeys as a settings section through the store

* fix(mobile): filter the settings sections in SettingSection

* fix(mobile): remove the passkeys description and use the settings padding
2026-11-05 20:35:16 +03:00

52 lines
2.1 KiB
Dart

import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/data/data_controller.dart';
import 'package:immich_mobile/data/db/main/database.dart';
import 'package:immich_mobile/data/store/activity.dart';
import 'package:immich_mobile/data/store/ocr.dart';
import 'package:immich_mobile/data/store/passkey.dart';
import 'package:immich_mobile/data/store/person.dart';
import 'package:immich_mobile/data/store/tag.dart';
import 'package:immich_mobile/data/store/user_metadata.dart';
import 'package:immich_mobile/services/api.service.dart';
/// The [DataController] backing this container's store
///
/// Must be overridden with a constructed instance (`Store.overrideWithValue`)
final _dataControllerProvider = Provider<DataController>(
(ref) => throw UnimplementedError("DataController instance must be set via Store.overrideWith"),
);
final _apiServiceProvider = Provider<ApiService>(
(ref) => throw UnimplementedError("ApiService instance must be set via Store.overrideWith"),
);
/// Global data layer, providing access to Drift and HTTP APIs, scoped by entity
abstract final class Store {
static List<Override> overrideWith({required DataController dataController, required ApiService apiService}) => [
_dataControllerProvider.overrideWithValue(dataController),
_apiServiceProvider.overrideWithValue(apiService),
];
/// Direct database access for the repositories that have not yet been migrated to `Store`
// TODO(rewrite): Remove this provider once all repositories have migrated to `Store`
static final db = Provider<Drift>((ref) => ref.watch(_dataControllerProvider).db);
/// Direct API access for the repositories that have not yet been migrated to `Store`
// TODO(rewrite): Remove this provider once all repositories have migrated to `Store`
static final api = Provider<ApiService>((ref) => ref.watch(_apiServiceProvider));
// ----
static final people = PersonStore.instance;
static final activity = ActivityStore.instance;
static final ocr = OcrStore.instance;
static final passkeys = PasskeyStore.instance;
static final tags = TagStore.instance;
static final userMetadata = UserMetadataStore.instance;
}