diff --git a/Core b/Core index 5b5f878e07..6c4d2b5f64 160000 --- a/Core +++ b/Core @@ -1 +1 @@ -Subproject commit 5b5f878e0714806705a27e580248180d26923e0f +Subproject commit 6c4d2b5f64cc0b17b4c06b8ace71a4d6809bcd32 diff --git a/app/src/main/java/com/infomaniak/drive/MainApplication.kt b/app/src/main/java/com/infomaniak/drive/MainApplication.kt index 8036de2a5f..fa76a4a00c 100644 --- a/app/src/main/java/com/infomaniak/drive/MainApplication.kt +++ b/app/src/main/java/com/infomaniak/drive/MainApplication.kt @@ -46,7 +46,9 @@ import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.lib.core.InfomaniakCore import com.infomaniak.lib.core.auth.TokenInterceptorListener import com.infomaniak.lib.core.models.user.User +import com.infomaniak.lib.core.networking.AccessTokenUsageInterceptor import com.infomaniak.lib.core.networking.HttpClient +import com.infomaniak.lib.core.networking.HttpClientConfig import com.infomaniak.lib.core.utils.CoilUtils import com.infomaniak.lib.core.utils.NotificationUtilsCore.Companion.pendingIntentFlags import com.infomaniak.lib.core.utils.clearStack @@ -77,7 +79,8 @@ class MainApplication : Application(), ImageLoaderFactory, DefaultLifecycleObser ProcessLifecycleOwner.get().lifecycle.addObserver(this) - AppCompatDelegate.setDefaultNightMode(UiSettings(this).nightMode) + val uiSettings = UiSettings(this) + AppCompatDelegate.setDefaultNightMode(uiSettings.nightMode) if (BuildConfig.DEBUG) { Stetho.initializeWithDefaults(this) @@ -129,7 +132,15 @@ class MainApplication : Application(), ImageLoaderFactory, DefaultLifecycleObser AccountUtils.onRefreshTokenError = refreshTokenError initNotificationChannel() - HttpClient.init(tokenInterceptorListener()) + val tokenInterceptorListener = tokenInterceptorListener() + HttpClientConfig.customInterceptors = listOf( + AccessTokenUsageInterceptor( + tokenInterceptorListener = tokenInterceptorListener, + previousApiCall = uiSettings.accessTokenApiCallRecord, + updateLastApiCall = { uiSettings.accessTokenApiCallRecord = it }, + ) + ) + HttpClient.init(tokenInterceptorListener) MqttClientWrapper.init(applicationContext) } @@ -173,8 +184,8 @@ class MainApplication : Application(), ImageLoaderFactory, DefaultLifecycleObser refreshTokenError(AccountUtils.currentUser!!) } - override suspend fun getApiToken(): ApiToken { - return AccountUtils.currentUser!!.apiToken + override suspend fun getApiToken(): ApiToken? { + return AccountUtils.currentUser?.apiToken } } } diff --git a/app/src/main/java/com/infomaniak/drive/data/models/UiSettings.kt b/app/src/main/java/com/infomaniak/drive/data/models/UiSettings.kt index 771735c7f2..70188857a3 100644 --- a/app/src/main/java/com/infomaniak/drive/data/models/UiSettings.kt +++ b/app/src/main/java/com/infomaniak/drive/data/models/UiSettings.kt @@ -23,6 +23,7 @@ import com.infomaniak.drive.R import com.infomaniak.drive.data.models.File.SortType import com.infomaniak.drive.ui.bottomSheetDialogs.BackgroundSyncPermissionsBottomSheetDialog.Companion.manufacturerWarning import com.infomaniak.drive.utils.Utils +import com.infomaniak.lib.core.networking.AccessTokenUsageInterceptor.ApiCallRecord import com.infomaniak.lib.core.utils.SharedValues import com.infomaniak.lib.core.utils.sharedValue import com.infomaniak.lib.core.utils.transaction @@ -59,6 +60,7 @@ class UiSettings(context: Context) : SharedValues { var nightMode by sharedValue("nightMode", MODE_NIGHT_FOLLOW_SYSTEM) var recentSearches by sharedValue("recentSearches", emptyList()) var sortType by sharedValue("sortType", SortType.NAME_AZ) + var accessTokenApiCallRecord by sharedValue("accessTokenApiCallRecord", null) data class SaveExternalFilesData( val userId: Int,