new favourites feature
This commit is contained in:
@@ -7,6 +7,8 @@ import 'package:flutter/foundation.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../models/bank.dart';
|
||||
import '../models/home_filter_widget.dart';
|
||||
import '../models/overview_favourite.dart';
|
||||
import '../models/transaction_meta.dart';
|
||||
import '../utils/constants.dart';
|
||||
|
||||
@@ -133,6 +135,54 @@ class StorageService {
|
||||
return _prefs.setInt(StorageKeys.lookAheadMaxYears, years.clamp(1, 30));
|
||||
}
|
||||
|
||||
List<OverviewFavourite> loadOverviewFavourites() {
|
||||
final raw = _prefs.getString(StorageKeys.overviewFavourites);
|
||||
if (raw == null || raw.isEmpty) return const [];
|
||||
try {
|
||||
final decoded = jsonDecode(raw);
|
||||
if (decoded is! List) return const [];
|
||||
return [
|
||||
for (final item in decoded)
|
||||
if (item is Map)
|
||||
OverviewFavourite.fromJson(Map<String, dynamic>.from(item)),
|
||||
];
|
||||
} catch (_) {
|
||||
return const [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> saveOverviewFavourites(List<OverviewFavourite> favourites) {
|
||||
final encoded = jsonEncode([
|
||||
for (final fav in favourites) fav.toJson(),
|
||||
]);
|
||||
return _prefs.setString(StorageKeys.overviewFavourites, encoded);
|
||||
}
|
||||
|
||||
List<HomeFilterWidget> loadHomeFilterWidgets() {
|
||||
final raw = _prefs.getString(StorageKeys.homeFilterWidgets);
|
||||
if (raw == null || raw.isEmpty) return const [];
|
||||
try {
|
||||
final decoded = jsonDecode(raw);
|
||||
if (decoded is! List) return const [];
|
||||
final list = [
|
||||
for (final item in decoded)
|
||||
if (item is Map)
|
||||
HomeFilterWidget.fromJson(Map<String, dynamic>.from(item)),
|
||||
];
|
||||
list.sort((a, b) => a.sortOrder.compareTo(b.sortOrder));
|
||||
return list;
|
||||
} catch (_) {
|
||||
return const [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> saveHomeFilterWidgets(List<HomeFilterWidget> widgets) {
|
||||
final encoded = jsonEncode([
|
||||
for (final w in widgets) w.toJson(),
|
||||
]);
|
||||
return _prefs.setString(StorageKeys.homeFilterWidgets, encoded);
|
||||
}
|
||||
|
||||
bool get useRemoteData => _prefs.getBool(StorageKeys.useRemoteData) ?? false;
|
||||
|
||||
Future<void> setUseRemoteData(bool value) {
|
||||
|
||||
Reference in New Issue
Block a user