import 'dart:convert'; import 'package:enter_farma_plus_mobile/src/core/storage/tenant_session_store.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; final recentSelectionsStoreProvider = Provider( (ref) => RecentSelectionsStore(ref.watch(secureStorageProvider)), ); class RecentSelectionsStore { const RecentSelectionsStore(this._storage); final dynamic _storage; Future>> read(String scope) async { final raw = await _storage.read(key: _key(scope)); if (raw == null || raw.isEmpty) { return const []; } final decoded = jsonDecode(raw); if (decoded is! List) { return const []; } return decoded .whereType() .map((item) => Map.from(item)) .toList(); } Future push(String scope, Map record) async { final current = await read(scope); final normalized = { 'id': record['id'], 'label': record['label'] ?? record['name'] ?? record['description'] ?? '', 'subtitle': record['subtitle'] ?? record['number'] ?? '', }; final items = >[ normalized, ...current.where((item) => '${item['id']}' != '${normalized['id']}'), ]; await _storage.write( key: _key(scope), value: jsonEncode(items.take(8).toList()), ); } String _key(String scope) => 'recent.$scope'; }