From 7d7059d9f855a22660ac91639d2378de16d283d4 Mon Sep 17 00:00:00 2001 From: Samsularifin01 <158025491+Samsularifin01@users.noreply.github.com> Date: Wed, 20 May 2026 00:18:11 +0700 Subject: [PATCH] fix forgot password and otp --- lib/models/forgot_password_response.dart | 6 +++--- lib/screens/otp_screen.dart | 15 ++++++++------- lib/services/api_config.dart | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/models/forgot_password_response.dart b/lib/models/forgot_password_response.dart index 10dde95..e2c1519 100644 --- a/lib/models/forgot_password_response.dart +++ b/lib/models/forgot_password_response.dart @@ -2,7 +2,7 @@ class ForgotPasswordResponse { final String status; final String message; final String? token; - final int? expired; + final String? expired; const ForgotPasswordResponse({ required this.status, @@ -12,12 +12,12 @@ class ForgotPasswordResponse { }); factory ForgotPasswordResponse.fromJson(Map json) { - final dynamic expiredValue = json["expired"]; + return ForgotPasswordResponse( status: json["status"]?.toString() ?? "error", message: json["message"]?.toString() ?? "", token: json["token"]?.toString(), - expired: expiredValue is num ? expiredValue.toInt() : null, + expired: json["expired"]?.toString(), ); } diff --git a/lib/screens/otp_screen.dart b/lib/screens/otp_screen.dart index 3ac8c24..546a581 100644 --- a/lib/screens/otp_screen.dart +++ b/lib/screens/otp_screen.dart @@ -11,7 +11,7 @@ import 'reset_password_screen.dart'; class OTPScreen extends StatefulWidget { final String email; final String serverToken; - final int expiredAt; + final String expiredAt; const OTPScreen({ super.key, @@ -29,7 +29,7 @@ class _OTPScreenState extends State { final TTSService tts = TTSService(); final ForgotPasswordApiService forgotApi = ForgotPasswordApiService(); late String currentToken; - late int currentExpiredAt; + late String currentExpiredAt; @override void initState() { @@ -54,11 +54,12 @@ class _OTPScreenState extends State { return; } - final int nowSeconds = DateTime.now().millisecondsSinceEpoch ~/ 1000; - if (nowSeconds > currentExpiredAt) { - tts.speak("OTP sudah kedaluwarsa"); - return; - } + final DateTime expiredTime = DateTime.parse(currentExpiredAt); + + if (DateTime.now().isAfter(expiredTime)) { + tts.speak("OTP sudah kedaluwarsa"); + return; +} if (otp != currentToken) { tts.speak("OTP tidak sesuai"); diff --git a/lib/services/api_config.dart b/lib/services/api_config.dart index fc0bb8b..85bf63b 100644 --- a/lib/services/api_config.dart +++ b/lib/services/api_config.dart @@ -5,7 +5,7 @@ class ApiConfig { static const bool useAndroidEmulator = false; // Ganti IP ini dengan IP laptop/PC Anda saat menggunakan HP fisik (ADB). - static const String deviceHost = "192.168.18.14:8000"; + static const String deviceHost = "192.168.0.31:8000"; static String get baseUrl { if (Platform.isAndroid && useAndroidEmulator) {