import 'package:hive_ce/hive.dart'; import '../models/user_model.dart'; /// Abstract interface for users local data source abstract class UsersLocalDataSource { /// Get all users from local storage Future> getUsers(); /// Save users to local storage Future saveUsers(List users); /// Clear all users from local storage Future clearUsers(); } /// Implementation of UsersLocalDataSource using Hive class UsersLocalDataSourceImpl implements UsersLocalDataSource { static const String _boxName = 'users'; Future> get _box async { if (!Hive.isBoxOpen(_boxName)) { return await Hive.openBox(_boxName); } return Hive.box(_boxName); } @override Future> getUsers() async { try { final box = await _box; return box.values.toList(); } catch (e) { throw Exception('Failed to get users from local storage: $e'); } } @override Future saveUsers(List users) async { try { final box = await _box; await box.clear(); // Save users with their ID as key for (final user in users) { await box.put(user.id, user); } } catch (e) { throw Exception('Failed to save users to local storage: $e'); } } @override Future clearUsers() async { try { final box = await _box; await box.clear(); } catch (e) { throw Exception('Failed to clear users from local storage: $e'); } } }