TIF_E41211491/lib/app/modules/navigationKurir/controllers/navigationKurir_controller....

103 lines
2.6 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
import "package:http/http.dart" as http;
import '../../../data/providers/services.dart';
class NavigationKurirController extends GetxController {
//TODO: Implement NavigationController
var tabIndex = 0;
@override
void onInit() {
super.onInit();
checkToken();
}
@override
void onReady() {
super.onReady();
}
@override
void onClose() {
super.onClose();
}
// Tambahkan metode untuk memperbarui currentScreen
void updateCurrentScreen(int index) {
tabIndex = index;
update();
}
Future<void> checkToken() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? id_kurir = prefs.getString('id_kurir');
try {
final response = await http.post(
Uri.parse(Api.getTokenKurir),
body: {
'id_kurir': id_kurir, // Ganti dengan informasi unik dari pengguna
},
);
if (response.statusCode == 200) {
final jsonResponse = jsonDecode(response.body);
final newToken = jsonResponse['data']['token'];
// Bandingkan token yang ada dengan newToken
String? existingToken = prefs.getString('tokenKurir');
if (existingToken != newToken) {
// Token tidak sesuai, tampilkan dialog untuk login ulang
_showLogoutDialog();
} else {
// Token sesuai, tidak perlu tindakan tambahan
print('Token masih valid.');
}
} else {
print('Gagal ambil data. Status code: ${response.statusCode}');
}
} catch (error) {
print('Error: $error');
}
}
Future<void> logout() async {
// Hapus data dari SharedPreferences
await clearSharedPreferences();
// Navigasi ke halaman login
Get.offAllNamed('/login');
}
Future<void> clearSharedPreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
List<String> keys = prefs.getKeys().toList();
for (String key in keys) {
if (key != 'tokenfcm') {
prefs.remove(key);
}
}
}
void _showLogoutDialog() {
// Tampilkan dialog atau notifikasi untuk login ulang
Get.defaultDialog(
title: 'Sesi Berakhir',
middleText:
'Sesi Anda telah berakhir. Mohon tekan ok untuk login kembali',
confirm: ElevatedButton(
onPressed: () {
// Lakukan logout atau aksi lainnya
logout();
Get.offAllNamed('/login');
},
child: Text('OK'),
),
);
}
}