step 22 : no_login -> login dan list riwayat pake JWT done, masih belum done di refreshToken karena check waktu expired salah

This commit is contained in:
sindhu
2025-02-26 19:28:02 +07:00
parent 113da748fa
commit a28830deb0
14 changed files with 1897 additions and 3 deletions

View File

@@ -1,5 +1,59 @@
import 'package:jiffy/jiffy.dart';
import 'package:shared_preferences/shared_preferences.dart';
String formatDateJiffy(String serverDate) {
return Jiffy.parse(serverDate).format(pattern: 'dd-MM-yyyy');
}
}
// Future<bool> isTokenExpired() async {
// final prefs = await SharedPreferences.getInstance();
// final String? expireDateStr = prefs.getString("expire_date");
// if (expireDateStr == null) return true;
// final DateTime expireDateTime = DateTime.parse(expireDateStr);
// final DateTime now = DateTime.now();
// print('expireDateTime : '+expireDateTime.toString());
// print('now : '+now.toString());
// // return DateTime.now().isAfter(expireDateTime);
// // Jika token kurang dari 1 menit lagi akan kedaluwarsa,
// // atau lebih dari = 2 menit, maka harus refresh
// return (expireDateTime.difference(now).inMinutes == 1) || (expireDateTime.difference(now).inMinutes >= 2);
// }
Future<bool> isTokenExpired() async {
final prefs = await SharedPreferences.getInstance();
final String? expireDateStr = prefs.getString("expire_date");
print("📌 Expire Date dari SharedPreferences: $expireDateStr");
if (expireDateStr == null) {
print("❌ Expire date tidak ditemukan, dianggap expired.");
return true;
}
DateTime? expireDateTime;
try {
expireDateTime = DateTime.parse(expireDateStr);
} catch (e) {
print("❌ Format expire_date tidak valid: $expireDateStr, Error: $e");
return true;
}
final DateTime now = DateTime.now();
final int diffInMinutes = expireDateTime.difference(now).inMinutes;
print("🕒 Expire date: $expireDateTime");
print("🕒 Waktu sekarang: $now");
print("⏳ Selisih waktu dalam menit: $diffInMinutes");
// Jika sudah lewat atau kurang dari 4 menit, anggap expired agar bisa di-refresh sebelum benar-benar habis
final bool expired = now.isAfter(expireDateTime) || diffInMinutes <= 4;
print(expired ? "🔴 Token EXPIRED (Perlu Refresh)" : "🟢 Token MASIH AKTIF");
// final bool expired = now.isAfter(expireDateTime);
return expired;
}