import 'dart:developer'; import 'package:hive/hive.dart'; import '../environment/app_config.dart'; import '../presentation/screens/login/models/response_user.dart'; final LocalStorage = HiveLocalStorage(); class HiveLocalStorage { final box = Hive.box(FlavorConfig.values.LocalDBName); void open() { Hive.openBox(FlavorConfig.values.LocalDBName); } String getString(String key, {String? defaultValue}) { try { return box.get(key, defaultValue: defaultValue ?? ''); } catch (_) { return ''; } } int getInt(String key, {int? defaultValue}) { try { return box.get(key, defaultValue: defaultValue ?? -1); } catch (_) { return -1; } } bool getBool(String key, {bool? defaultValue}) { try { return box.get(key, defaultValue: defaultValue ?? false); } catch (_) { return false; } } dynamic getObject(String key) { try { return box.get(key); } catch (_) { return null; } } void save(String key, dynamic value) { box.put(key, value); } void clearUserInfo() { LocalStorage.save(LocalStorageKey.is_logged, false); LocalStorage.save(LocalStorageKey.access_token, ''); LocalStorage.save(LocalStorageKey.full_name, ''); LocalStorage.save(LocalStorageKey.user_id, ''); LocalStorage.save(LocalStorageKey.username, ''); LocalStorage.save(LocalStorageKey.username, ''); LocalStorage.save(LocalStorageKey.trai_hien_tai, ''); LocalStorage.save(LocalStorageKey.ten_hien_tai, ''); LocalStorage.save(LocalStorageKey.ma_trais, []); LocalStorage.save(LocalStorageKey.user_roles, []); LocalStorage.save(LocalStorageKey.user_roles_by_tenants, []); } void saveUserInfo(ResponseUser data, String username) { try { // var decodedToken = JwtDecoder.decode(data.accessToken!); // var givenName = decodedToken['given_name'] ?? ''; // var fullName = decodedToken['family_name'] ?? ''; // var userId = decodedToken['userid'] ?? ''; // var roles = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] as List; // // var roles = decodedToken['resource_access']['uca']['roles'] as List; // // var userRoles = roles.join('|'); // // LocalStorage.save(LocalStorageKey.user_permission, userRoles); // LocalStorage.save(LocalStorageKey.is_logged, true); // LocalStorage.save(LocalStorageKey.username, username); // LocalStorage.save(LocalStorageKey.access_token, data.accessToken); // LocalStorage.save(LocalStorageKey.refresh_token, ''); // LocalStorage.save(LocalStorageKey.given_name, givenName); // LocalStorage.save(LocalStorageKey.full_name, fullName); // LocalStorage.save(LocalStorageKey.user_id, userId); // LocalStorage.save(LocalStorageKey.user_roles, roles); } catch (e) { print(e); } } } class LocalStorageKey { static const String username = 'username'; static const String access_token = 'access_token'; static const String refresh_token = 'refresh_token'; static const String is_logged = 'is_logged'; static const String full_name = 'full_name'; static const String given_name = 'given_name'; static const String user_id = 'user_id'; static const String user_roles = 'user_roles'; static const String user_roles_by_tenants = 'user_roles_by_tenants'; static const String ma_trais = 'ma_trais'; static const String ten_trais = 'ten_trais'; static const String trai_hien_tai = 'trai_hien_tai'; static const String ten_hien_tai = 'ten_hien_tai'; static const String device_key = 'device_key'; }