import 'dart:convert'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:pocketbase/pocketbase.dart'; class PbAuthStore extends AuthStore { final FlutterSecureStorage _storage; final String _saveKey = 'pb_auth'; PbAuthStore({FlutterSecureStorage? storage}) : _storage = storage ?? const FlutterSecureStorage( aOptions: AndroidOptions(encryptedSharedPreferences: true), ); @override Future save(String token, dynamic model) async { super.save(token, model); final encoded = jsonEncode({ 'token': token, 'model': model, }); await _storage.write(key: _saveKey, value: encoded); } @override Future clear() async { super.clear(); await _storage.delete(key: _saveKey); } Future loadFromStorage() async { final raw = await _storage.read(key: _saveKey); if (raw != null && raw.isNotEmpty) { try { final decoded = jsonDecode(raw); final token = decoded['token'] as String? ?? ''; final modelData = decoded['model']; dynamic model; if (modelData is Map) { if (modelData.containsKey('collectionId')) { model = RecordModel.fromJson(modelData); } else { model = RecordModel.fromJson(modelData); // model = AdminModel.fromJson(modelData); } } super.save(token, model); } catch (e) { await clear(); } } } }