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 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 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; }