import 'dart:async'; import 'package:immich_mobile/domain/interfaces/store.interface.dart'; import 'package:immich_mobile/domain/interfaces/user.interface.dart'; import 'package:immich_mobile/domain/models/user.model.dart'; import 'package:immich_mobile/service_locator.dart'; class StoreEnumConverter extends IStoreConverter { const StoreEnumConverter(this.values); final List values; @override T? fromPrimitive(int value) => values.elementAtOrNull(value); @override int toPrimitive(T value) => value.index; } class StoreBooleanConverter extends IStoreConverter { const StoreBooleanConverter(); @override bool fromPrimitive(int value) => value != 0; @override int toPrimitive(bool value) => value ? 1 : 0; } class _StorePrimitiveConverter extends IStoreConverter { const _StorePrimitiveConverter(); @override T fromPrimitive(T value) => value; @override T toPrimitive(T value) => value; } class StoreStringConverter extends _StorePrimitiveConverter { const StoreStringConverter(); } class StoreIntConverter extends _StorePrimitiveConverter { const StoreIntConverter(); } class StoreUserConverter extends IStoreConverter { const StoreUserConverter(); @override Future fromPrimitive(String value) async { return await di().fetch(value); } @override String toPrimitive(User value) => value.id; }