mirror of
https://github.com/immich-app/immich.git
synced 2025-12-26 09:14:58 +03:00
refactor: clean up
This commit is contained in:
@@ -1,60 +1,42 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:immich_mobile/domain/models/store.model.dart';
|
||||
import 'package:immich_mobile/entities/store.entity.dart';
|
||||
import 'package:immich_mobile/utils/action_button.utils.dart';
|
||||
|
||||
/// Repository for managing quick action button order persistence.
|
||||
/// Handles serialization, deserialization, and storage operations.
|
||||
class ActionButtonOrderRepository {
|
||||
const ActionButtonOrderRepository();
|
||||
|
||||
/// Default order for quick actions
|
||||
static const List<ActionButtonType> defaultOrder = [
|
||||
ActionButtonType.share,
|
||||
ActionButtonType.upload,
|
||||
ActionButtonType.edit,
|
||||
ActionButtonType.add,
|
||||
ActionButtonType.archive,
|
||||
ActionButtonType.delete,
|
||||
ActionButtonType.removeFromAlbum,
|
||||
ActionButtonType.likeActivity,
|
||||
];
|
||||
static const storeKey = StoreKey.viewerQuickActionOrder;
|
||||
|
||||
/// Get the current quick action order from storage
|
||||
List<ActionButtonType> get() {
|
||||
final json = Store.tryGet(StoreKey.viewerQuickActionOrder);
|
||||
final json = Store.tryGet(storeKey);
|
||||
if (json == null || json.isEmpty) {
|
||||
return defaultOrder;
|
||||
return ActionButtonBuilder.defaultQuickActionOrder;
|
||||
}
|
||||
|
||||
final deserialized = _deserialize(json);
|
||||
return deserialized.isEmpty ? defaultOrder : deserialized;
|
||||
return deserialized.isEmpty ? ActionButtonBuilder.defaultQuickActionOrder : deserialized;
|
||||
}
|
||||
|
||||
/// Save quick action order to storage
|
||||
Future<void> set(List<ActionButtonType> order) async {
|
||||
final json = _serialize(order);
|
||||
await Store.put(StoreKey.viewerQuickActionOrder, json);
|
||||
await Store.put(storeKey, json);
|
||||
}
|
||||
|
||||
/// Watch for changes to quick action order
|
||||
Stream<List<ActionButtonType>> watch() {
|
||||
return Store.watch(StoreKey.viewerQuickActionOrder).map((json) {
|
||||
return Store.watch(storeKey).map((json) {
|
||||
if (json == null || json.isEmpty) {
|
||||
return defaultOrder;
|
||||
return ActionButtonBuilder.defaultQuickActionOrder;
|
||||
}
|
||||
final deserialized = _deserialize(json);
|
||||
return deserialized.isEmpty ? defaultOrder : deserialized;
|
||||
return deserialized.isEmpty ? ActionButtonBuilder.defaultQuickActionOrder : deserialized;
|
||||
});
|
||||
}
|
||||
|
||||
/// Serialize a list of ActionButtonType to JSON string
|
||||
String _serialize(List<ActionButtonType> order) {
|
||||
return jsonEncode(order.map((type) => type.name).toList());
|
||||
}
|
||||
|
||||
/// Deserialize a JSON string to a list of ActionButtonType
|
||||
List<ActionButtonType> _deserialize(String json) {
|
||||
try {
|
||||
final list = jsonDecode(json) as List<dynamic>;
|
||||
|
||||
Reference in New Issue
Block a user