diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt index 08f83327b0..27b68e57be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/usernamelinks/main/UsernameLinkSettingsViewModel.kt @@ -57,7 +57,6 @@ class UsernameLinkSettingsViewModel : ViewModel() { private val disposable: CompositeDisposable = CompositeDisposable() private val usernameLink: BehaviorSubject> = 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 = 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())) diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileViewModel.java index 7684a8bf49..0a78309a40 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileViewModel.java @@ -51,7 +51,6 @@ class EditProfileViewModel extends ViewModel { private final SingleLiveEvent events; private final RecipientForeverObserver observer; private final EditProfileRepository repository; - private final UsernameRepository usernameEditRepository; private final MutableLiveData> 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 deleteUsername() { - return usernameEditRepository.deleteUsername().observeOn(AndroidSchedulers.mainThread()); + return UsernameRepository.deleteUsername().observeOn(AndroidSchedulers.mainThread()); } public boolean shouldShowUsername() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt index b2242734bb..ac7fffbd69 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameEditViewModel.kt @@ -32,7 +32,6 @@ import java.util.concurrent.TimeUnit */ internal class UsernameEditViewModel private constructor(private val isInRegistration: Boolean) : ViewModel() { private val events: PublishSubject = PublishSubject.create() - private val repo: UsernameRepository = UsernameRepository() private val nicknamePublisher: PublishProcessor = 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 -> + disposables += UsernameRepository.reserveUsername(nickname).subscribe { result: Result -> result.either( onSuccess = { reserved: UsernameState.Reserved -> uiState.update { State(ButtonState.SUBMIT, UsernameStatus.NONE, reserved) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt index 0c38de9c93..8c392a95ff 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt @@ -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 { 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) - } }