TIF_NGANJUK_E41211358/lib/presentation/controller/controller_shared_prefs.dart

58 lines
1.7 KiB
Dart

import 'dart:convert';
import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../config/models/users.dart';
class ControllerSharedPrefs extends GetxController {
static const String KEY_USER = 'user_data';
static const String KEY_IS_LOGGED_IN = 'is_logged_in';
static const String KEY_FCM_TOKEN = 'fcm_token'; // Kunci untuk token FCM
var user = Rxn<Users>();
var isLoggedIn = false.obs;
Future<void> saveUser(Users userData) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(KEY_USER, jsonEncode(userData.toJson()));
await prefs.setBool(KEY_IS_LOGGED_IN, true);
user.value = userData;
isLoggedIn.value = true;
}
Future<void> loadUser() async {
final prefs = await SharedPreferences.getInstance();
final userStr = prefs.getString(KEY_USER);
final logged = prefs.getBool(KEY_IS_LOGGED_IN) ?? false;
if (userStr != null) {
user.value = Users.fromJson(jsonDecode(userStr));
}
isLoggedIn.value = logged;
}
Future<void> clearUser() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(KEY_USER);
await prefs.setBool(KEY_IS_LOGGED_IN, false);
user.value = null;
isLoggedIn.value = false;
}
Future<void> saveToken(String token) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(KEY_FCM_TOKEN, token);
}
Future<String?> getStoredToken() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getString(KEY_FCM_TOKEN);
}
Future<void> clearToken() async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(KEY_FCM_TOKEN);
}
}