checkAndRefreshToken method

Future<void> checkAndRefreshToken()

Implementation

Future<void> checkAndRefreshToken() async {
  print('Checking and refreshing token...');
  final FlutterSecureStorage secureStorage = FlutterSecureStorage();
  final String? jwtToken = await secureStorage.read(key: "JWT_Token");
  if (jwtToken != null && jwtToken.isNotEmpty) {
    Map<String, dynamic> decodedToken = JwtDecoder.decode(jwtToken);
    int exp = decodedToken['exp'];
    int currentTime = DateTime.now().millisecondsSinceEpoch ~/ 1000;
    int remainingTime = exp - currentTime;
    double remainingTimeInMinutes = remainingTime / 60;
    if (remainingTimeInMinutes < 10) {
      print('Token is about to expire. Refreshing token...');
      final String? refreshToken = await secureStorage.read(key: "Refresh_Token");
      final String? username = await secureStorage.read(key: "Username");
      if (refreshToken != null && username != null) {
        print(username);
          print(refreshToken);
        await _refreshToken(refreshToken, username);
      } else {
        print('Refresh token or username is null');
      }
    } else {
       String formattedTime = remainingTimeInMinutes.toStringAsFixed(0);
      print("Remaining time before token expires: $formattedTime minutes");
    }
  } else {
    print('No Jwt token found...');
  }
}