Ответ 1
У меня была проблема simillar, и я сделал что-то вроде этого:
обертка:
class LoggedUserProvider {
private User user;
User getLoggedUser() {
return user;
}
void setLoggedUser(User user) {
this.user = user;
}
}
модуль:
@Module(injects = Endpoint.class)
public class AuthenticationModule {
@Provides
@Singleton
LoggedUserProvider provideLoggedUserProvider() {
return new LoggedUserProvider();
}
}
После этого вы можете использовать @Inject LoggedUserProvider
и просто использовать getter/setter, чтобы установить, какой пользователь в настоящий момент зарегистрирован.
ИЛИ
Если вы хотите сделать это без оболочки, я думаю, вам нужно будет сделать этот модуль:
@Module(injects = Endpoint.class)
public class AuthenticationModule {
@Provides
User provideUser() {
return null;
}
}
и это, но не включать это до авторизации:
@Module(overrides = true)
public class CurrentUserModule {
User currentUser;
public CurrentUserModule(User currentUser) {
this.currentUser = currentUser;
}
@Provides
@Singleton
User provideUser() {
return currentUser;
}
}
то после авторизации добавьте этот модуль к объектуGraph (передайте зарегистрированного пользователя в конструктор) и заново создайте весь граф.
Это просто идея, я никогда не делаю этого таким образом.