Я хочу не добавлять в каждый маркер сетевого вызова и параметры локали, но они не являются постоянными и могут измениться. Чтобы добиться этого, я хочу использовать сетевой перехватчик.
Строка локали взята из LocaleManager, который содержит ссылку на PreferenceManager ... А у UserManager есть токен поля, который довольно часто обновляется из серверной части.
Сеть по модулю:
@Provides
@Singleton
@QueryInterceptor
public Interceptor queryInterceptor(@UserLocale final String userLocale) {
return new Interceptor() {
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request request = chain.request();
final HttpUrl url = request.url().newBuilder()
.addQueryParameter(QUERY_PARAM_OS, ANDROID_OS)
.addQueryParameter(QUERY_PARAM_VERSION, BuildConfig.VERSION_NAME)
.addQueryParameter(QUERY_PARAM_LOCALE, userLocale)
.build();
request = request.newBuilder().url(url).build();
return chain.proceed(request);
}
};
}
Язык:
@Provides
@UserLocale
public String userLocale(LocaleManager localeManager) {
return localeManager.getCurrentLanguageCode();
}
и что-то похожее с токеном пользователя.
Это хорошая практика?
Извините, Dagger2 для меня все еще довольно новый.