refreshToken static method

Future<bool> refreshToken({
  1. BuildContext? context,
  2. required String clientID,
  3. required String clientSecret,
  4. required bool isSandbox,
})

Method that refreshes the Dexcom access token.

Implementation

static Future<bool> refreshToken(
    {BuildContext? context,
    required String clientID,
    required String clientSecret,
    required bool isSandbox}) async {
  // Instantiate Dio and its Response
  Dio dio = Dio();
  Response response;

  // Generate the Dexcom url
  final dexcomAuthorizeUrl = DexcomAuthAPIURL.refreshToken(
        clientID: clientID,
        clientSecret: clientSecret,
        isSandbox: isSandbox);

    response = await dio.post(
      dexcomAuthorizeUrl.url,
      data: dexcomAuthorizeUrl.data,
      options: Options(
        contentType: Headers.formUrlEncodedContentType,
      ),
    );

  // Debugging
  final logger = Logger();
  logger.i('$response');

  // Overwrite the tokens into the shared preferences
  final accessToken = response.data['access_token'] as String;
  final refreshToken = response.data['refresh_token'] as String;
  final expires = response.data['expires_in'] as int;

  GetIt.instance<SharedPreferences>()
      .setString('dexcomAccessToken', accessToken);
  GetIt.instance<SharedPreferences>()
      .setString('dexcomRefreshToken', refreshToken);
  GetIt.instance<SharedPreferences>()
        .setString('dexcomTokenExpires', Formats.fullDateFormat.format(DateTime.now().add(Duration(seconds: expires))));

  return true;
}