i wanna add a token to request headers in Interceptor . but now i dont now what should i do.
here is my datastore
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
class SettingsManager(context: Context) {
private val dataStore = context.dataStore
val getToken = dataStore.data
.catch {
if (it is IOException) {
it.printStackTrace()
emit(emptyPreferences())
} else {
throw it
}
}.map { preference ->
preference[token] ?: ""
}
suspend fun setToken(tokenStr: String) {
dataStore.edit { preferences ->
preferences[token] = tokenStr
}
}
companion object {
val token = stringPreferencesKey("token")
}
}
i can not get the context object in Interceptor 。
so i try to use hilt to fix it
class RequestInterceptor(private val settingsManager: SettingsManager) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
runBlocking {
val first = settingsManager.getToken.first()
LogUtil.i("token " + first)
request.newBuilder().addHeader("token", first).build();
}
return chain.proceed(request)
}
}
i dont know the next step @AndroidEntryPoint
cant use on Interceptor class .
plz guys , give me some solutions