import 'dart:convert'; import 'package:jiffy/jiffy.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'constant.dart'; String formatDateJiffy(String serverDate) { return Jiffy.parse(serverDate).format(pattern: 'dd-MM-yyyy'); } Future isTokenExpired() async { final prefs = await SharedPreferences.getInstance(); final bearerString = prefs.getString(Constant.bearerName); if (bearerString == null || bearerString == "null") { print("BEARER STRING NULL"); return true; } final xmodel = jsonDecode(bearerString); if (xmodel == null) return true; final String? expireDateStr = xmodel['expire_date']; print("EXPIRE DATE $expireDateStr"); if (expireDateStr == null || expireDateStr.isEmpty) { print("Token EXPIRED (Tidak Ada Tanggal Expire)"); return true; // Anggap expired jika tidak ada data } try { DateTime expiredDate = DateTime.parse(expireDateStr); DateTime batasExpired = expiredDate.subtract(Duration(minutes: 3)); DateTime now = DateTime.now(); final bool expired = now.isAfter(batasExpired); print(expired ? "Token EXPIRED (Perlu Refresh)" : "Token MASIH AKTIF"); return expired; } catch (e) { print("Token EXPIRED (Format Salah)"); return true; // Anggap expired jika terjadi error parsing } }