Skip to content

[BUG] onRefresh called when it shouldn't be #12

Description

@AlexandreKueny

Describe the bug
shouldRefresh returns false but onRefresh is executed anyway.

To Reproduce
This is th code I'm using

DioRefreshInterceptor(
  tokenManager: tokenManager,
  authHeader: (tokenStore) {
    if (tokenStore.accessToken == null) {
      return {};
    }
    return {'Authorization': 'Bearer ${tokenStore.accessToken}'};
  },
  shouldRefresh: (response) {
    talker.log(response?.statusCode);
    talker.log(response?.statusCode == 401 || response?.statusCode == 403);
    return response?.statusCode == 401 || response?.statusCode == 403;
  },
  onRefresh: (dio, tokenStore) async {
    talker.log('try refresh');
    final response = await dio.post(
      '${F.apiUrl}/api/auth/refresh',
      data: {'refreshToken': tokenStore.refreshToken},
      options: Options(headers: {'Authorization': null}),
    );
    secureStorage.write(
      key: 'refreshToken',
      value: response.data['refreshToken'],
    );
    return TokenStore(
      accessToken: response.data['jwt'],
      refreshToken: response.data['refreshToken'],
    );
  },
  onRefreshFailedCallback: (error) {
    // Handle refresh failure side effects, such as clearing session state.
    talker.error('Token refresh failed: $error');
  },
  retryInterceptors: [
    TalkerDioLogger(
      talker: talker,
      settings: const TalkerDioLoggerSettings(
        printResponseData: false,
        printRequestHeaders: false,
        printResponseHeaders: false,
        printErrorHeaders: false,
      ),
    ),
  ],
),

On my specific case, talker.log(response?.statusCode) logs 400
So as expected talker.log(response?.statusCode == 401 || response?.statusCode == 403) logs false
But talker.log('try refresh') is still logged.

Expected behavior
onRefresh is not called

Smartphone (please complete the following information):

  • Device: Pixel 10 Pro XL
  • OS: Android 17

flutter doctor -v output

Details [√] Flutter (Channel stable, 3.47.1, on Microsoft Windows [version 10.0.26200.9168], locale fr-FR) [198ms] • Flutter version 3.47.1 on channel stable at C:\Tools\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 6655482ec0 (9 days ago), 2026-08-19 10:07:23 -0700 • Engine revision 5d53178869 • Dart version 3.13.1 • DevTools version 2.60.0 • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, enable-record-use, enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration

[√] Windows Version (Windows 11 or higher, 25H2, 2009) [847ms]

[√] Android toolchain - develop for Android devices (Android SDK version 37.0.0) [2,3s]
• Android SDK at C:\Users\Alexandre\AppData\Local\Android\sdk
• Emulator version 36.6.11.0 (build_id 15507667) (CL:N/A)
• Platform android-37.0, build-tools 37.0.0
• Java binary at: C:\Program Files\Java\jdk-21.0.11\bin\java
This JDK is specified in your Flutter configuration.
To change the current JDK, run: flutter config --jdk-dir="path/to/jdk".
• Java version Java(TM) SE Runtime Environment (build 21.0.11+9-LTS-211)
• All Android licenses accepted.

[√] Chrome - develop for the web [10ms]
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop Windows apps [9ms]
X Visual Studio not installed; this is necessary to develop Windows apps.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components

[√] Connected device (4 available) [375ms]
• sdk gphone16k x86 64 (mobile) • emulator-5554 • android-x64 • Android 17 (API 37) (emulator)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [version 10.0.26200.9168]
• Chrome (web) • chrome • web-javascript • Google Chrome 151.0.7922.170
• Edge (web) • edge • web-javascript • Microsoft Edge 151.0.4129.107

[√] Network resources [373ms]
• All expected network resources are available.

! Doctor found issues in 1 category.

Additional context
Add any other context about the problem here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions