import 'dart:convert'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import '../../../../core/errors/exceptions.dart'; import '../../../../core/utils/constants.dart'; import '../models/token_model.dart'; abstract class LoginLocalDataSource { Future getToken(); Future saveToken(TokenModel tokenModel); } class LoginLocalDataSourceImpl implements LoginLocalDataSource { final FlutterSecureStorage storage; LoginLocalDataSourceImpl({required this.storage}); @override Future saveToken(TokenModel tokenModel) async { return await storage.write( key: storageDefaultAuthToken, value: jsonEncode(tokenModel)); } @override Future getToken() async { String? jsonStr = await storage.read(key: storageDefaultAuthToken); if (jsonStr == null) { throw CacheException(); } return TokenModel.fromJson(jsonDecode(jsonStr)); } }