Convert the UsernameRepository to an object.

This commit is contained in:
Greyson Parrelli 2023-11-08 10:58:01 -05:00 committed by Cody Henthorne
parent 73de2dfda7
commit 3f32f816b0
4 changed files with 11 additions and 16 deletions

View file

@ -57,7 +57,6 @@ class UsernameLinkSettingsViewModel : ViewModel() {
private val disposable: CompositeDisposable = CompositeDisposable()
private val usernameLink: BehaviorSubject<Optional<UsernameLinkComponents>> = BehaviorSubject.createDefault(Optional.ofNullable(SignalStore.account().usernameLink))
private val usernameRepo: UsernameRepository = UsernameRepository()
init {
disposable += usernameLink
@ -112,7 +111,7 @@ class UsernameLinkSettingsViewModel : ViewModel() {
qrCodeState = QrCodeState.Loading
)
disposable += usernameRepo.createOrResetUsernameLink()
disposable += UsernameRepository.createOrResetUsernameLink()
.observeOn(AndroidSchedulers.mainThread())
.subscribe { result ->
val components: Optional<UsernameLinkComponents> = when (result) {
@ -153,7 +152,7 @@ class UsernameLinkSettingsViewModel : ViewModel() {
indeterminateProgress = true
)
disposable += usernameRepo.convertLinkToUsernameAndAci(url)
disposable += UsernameRepository.convertLinkToUsernameAndAci(url)
.map { result ->
when (result) {
is UsernameRepository.UsernameLinkConversionResult.Success -> QrScanResult.Success(Recipient.externalUsername(result.aci, result.username.toString()))

View file

@ -51,7 +51,6 @@ class EditProfileViewModel extends ViewModel {
private final SingleLiveEvent<Event> events;
private final RecipientForeverObserver observer;
private final EditProfileRepository repository;
private final UsernameRepository usernameEditRepository;
private final MutableLiveData<Optional<Badge>> badge;
private byte[] previousAvatar;
@ -64,7 +63,6 @@ class EditProfileViewModel extends ViewModel {
this.aboutEmoji = new MutableLiveData<>();
this.events = new SingleLiveEvent<>();
this.repository = new EditProfileRepository();
this.usernameEditRepository = new UsernameRepository();
this.badge = new DefaultValueLiveData<>(Optional.empty());
this.observer = this::onRecipientChanged;
this.avatarState = LiveDataUtil.combineLatest(Recipient.self().live().getLiveData(), internalAvatarState, (self, state) -> new AvatarState(state, self));
@ -106,7 +104,7 @@ class EditProfileViewModel extends ViewModel {
}
public Single<UsernameRepository.UsernameDeleteResult> deleteUsername() {
return usernameEditRepository.deleteUsername().observeOn(AndroidSchedulers.mainThread());
return UsernameRepository.deleteUsername().observeOn(AndroidSchedulers.mainThread());
}
public boolean shouldShowUsername() {

View file

@ -32,7 +32,6 @@ import java.util.concurrent.TimeUnit
*/
internal class UsernameEditViewModel private constructor(private val isInRegistration: Boolean) : ViewModel() {
private val events: PublishSubject<Event> = PublishSubject.create()
private val repo: UsernameRepository = UsernameRepository()
private val nicknamePublisher: PublishProcessor<String> = PublishProcessor.create()
private val disposables: CompositeDisposable = CompositeDisposable()
@ -114,7 +113,7 @@ internal class UsernameEditViewModel private constructor(private val isInRegistr
uiState.update { State(ButtonState.SUBMIT_LOADING, UsernameStatus.NONE, it.username) }
disposables += repo.confirmUsername(usernameState).subscribe { result: UsernameSetResult ->
disposables += UsernameRepository.confirmUsername(usernameState).subscribe { result: UsernameSetResult ->
val nickname = usernameState.getNickname()
when (result) {
@ -147,7 +146,7 @@ internal class UsernameEditViewModel private constructor(private val isInRegistr
fun onUsernameDeleted() {
uiState.update { state: State -> State(ButtonState.DELETE_LOADING, UsernameStatus.NONE, state.username) }
disposables += repo.deleteUsername().subscribe { result: UsernameDeleteResult ->
disposables += UsernameRepository.deleteUsername().subscribe { result: UsernameDeleteResult ->
when (result) {
UsernameDeleteResult.SUCCESS -> {
uiState.update { state: State -> State(ButtonState.DELETE_DISABLED, UsernameStatus.NONE, state.username) }
@ -190,7 +189,7 @@ internal class UsernameEditViewModel private constructor(private val isInRegistr
uiState.update { State(ButtonState.SUBMIT_DISABLED, UsernameStatus.NONE, UsernameState.Loading) }
disposables += repo.reserveUsername(nickname).subscribe { result: Result<UsernameState.Reserved, UsernameSetResult> ->
disposables += UsernameRepository.reserveUsername(nickname).subscribe { result: Result<UsernameState.Reserved, UsernameSetResult> ->
result.either(
onSuccess = { reserved: UsernameState.Reserved ->
uiState.update { State(ButtonState.SUBMIT, UsernameStatus.NONE, reserved) }

View file

@ -31,8 +31,10 @@ import java.io.IOException
/**
* Performs various actions around usernames and username links.
*/
class UsernameRepository {
private val accountManager: SignalServiceAccountManager = ApplicationDependencies.getSignalServiceAccountManager()
object UsernameRepository {
private val TAG = Log.tag(UsernameRepository::class.java)
private val accountManager: SignalServiceAccountManager get() = ApplicationDependencies.getSignalServiceAccountManager()
/**
* Given a nickname, this will temporarily reserve a matching discriminator that can later be confirmed via [confirmUsername].
@ -55,6 +57,7 @@ class UsernameRepository {
/**
* Deletes the username from the local user's account
*/
@JvmStatic
fun deleteUsername(): Single<UsernameDeleteResult> {
return Single
.fromCallable { deleteUsernameInternal() }
@ -274,8 +277,4 @@ class UsernameRepository {
/** No user exists for the given link. */
data class NotFound(val username: Username?) : UsernameLinkConversionResult()
}
companion object {
private val TAG = Log.tag(UsernameRepository::class.java)
}
}