step 23 : fix check isTokenExpired > 3 menit refreshToken

This commit is contained in:
sindhu
2025-02-27 01:25:19 +07:00
parent a28830deb0
commit b723dc4596
4 changed files with 62 additions and 125 deletions

View File

@@ -121,7 +121,6 @@ class NoLoginNotifier extends StateNotifier<NoLoginState> {
required String host,
required String password,
}) async {
try {
state = NoLoginStateLoading();
final resp = await NoLoginAuthRepository(
dio: ref.read(dioProvider),
@@ -135,43 +134,19 @@ class NoLoginNotifier extends StateNotifier<NoLoginState> {
// Simpan ke SharedPreferences
final shared = await SharedPreferences.getInstance();
String expireDateStr = resp.expire_date;
// Pastikan format ISO 8601 dengan "T"
if (!expireDateStr.contains("T")) {
expireDateStr = expireDateStr.replaceFirst(" ", "T");
}
// Cek apakah expire_date valid
try {
DateTime.parse(expireDateStr);
} catch (e) {
print(
"❌ Format expire_date tidak valid: $expireDateStr, menggunakan waktu default.");
expireDateStr = DateTime.now().toIso8601String();
}
// Simpan token dalam format JSON
final token = jsonEncode({
"expire_date": resp.expire_date,
"host": host,
"date": DateTime.now().toIso8601String(),
"token": resp.token,
"client_id": resp.client_id,
"expire_date": expireDateStr,
"isLogin": resp.isLogin,
});
await shared.setString(Constant.bearerName, token);
ref.read(noLoginCurrentUserProvider.notifier).state = resp;
print("✅ Token berhasil disimpan ke SharedPreferences!");
} catch (e) {
if (e is BaseRepositoryException) {
state = NoLoginStateError(message: e.message);
} else {
state = NoLoginStateError(message: e.toString());
}
}
}
}