Remove SingleLiveEvent from EditAboutViewModel.
This commit is contained in:
parent
3478e13d38
commit
498b7fee69
2 changed files with 26 additions and 18 deletions
|
@ -24,11 +24,12 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||
|
||||
import org.signal.core.util.BreakIteratorCompat;
|
||||
import org.signal.core.util.EditTextUtil;
|
||||
import org.signal.core.util.StringUtil;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiUtil;
|
||||
import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.signal.core.util.StringUtil;
|
||||
import org.thoughtcrime.securesms.util.LifecycleDisposable;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.thoughtcrime.securesms.util.adapter.AlwaysChangedDiffUtil;
|
||||
import org.thoughtcrime.securesms.util.text.AfterTextChanged;
|
||||
|
@ -64,6 +65,7 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
|
|||
private TextView countView;
|
||||
private CircularProgressMaterialButton saveButton;
|
||||
private EditAboutViewModel viewModel;
|
||||
private LifecycleDisposable lifecycleDisposable;
|
||||
|
||||
private String selectedEmoji;
|
||||
|
||||
|
@ -79,6 +81,9 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
|
|||
this.countView = view.findViewById(R.id.edit_about_count);
|
||||
this.saveButton = view.findViewById(R.id.edit_about_save);
|
||||
|
||||
lifecycleDisposable = new LifecycleDisposable();
|
||||
lifecycleDisposable.bindTo(getViewLifecycleOwner());
|
||||
|
||||
initializeViewModel();
|
||||
|
||||
view.<Toolbar>findViewById(R.id.toolbar)
|
||||
|
@ -146,8 +151,10 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
|
|||
private void initializeViewModel() {
|
||||
this.viewModel = new ViewModelProvider(this).get(EditAboutViewModel.class);
|
||||
|
||||
viewModel.getSaveState().observe(getViewLifecycleOwner(), this::presentSaveState);
|
||||
viewModel.getEvents().observe(getViewLifecycleOwner(), this::presentEvent);
|
||||
lifecycleDisposable.addAll(
|
||||
viewModel.getSaveState().subscribe(this::presentSaveState),
|
||||
viewModel.getEvents().subscribe(this::presentEvent)
|
||||
);
|
||||
}
|
||||
|
||||
private void presentCount(@NonNull String aboutBody) {
|
||||
|
|
|
@ -3,42 +3,43 @@ package org.thoughtcrime.securesms.profiles.manage;
|
|||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import org.thoughtcrime.securesms.util.SingleLiveEvent;
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
import io.reactivex.rxjava3.subjects.PublishSubject;
|
||||
|
||||
public final class EditAboutViewModel extends ViewModel {
|
||||
|
||||
private final ManageProfileRepository repository;
|
||||
private final MutableLiveData<SaveState> saveState;
|
||||
private final SingleLiveEvent<Event> events;
|
||||
private final BehaviorSubject<SaveState> saveState;
|
||||
private final PublishSubject<Event> events;
|
||||
|
||||
public EditAboutViewModel() {
|
||||
this.repository = new ManageProfileRepository();
|
||||
this.saveState = new MutableLiveData<>(SaveState.IDLE);
|
||||
this.events = new SingleLiveEvent<>();
|
||||
this.saveState = BehaviorSubject.createDefault(SaveState.IDLE);
|
||||
this.events = PublishSubject.create();
|
||||
}
|
||||
|
||||
@NonNull LiveData<SaveState> getSaveState() {
|
||||
return saveState;
|
||||
@NonNull Observable<SaveState> getSaveState() {
|
||||
return saveState.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
@NonNull LiveData<Event> getEvents() {
|
||||
return events;
|
||||
@NonNull Observable<Event> getEvents() {
|
||||
return events.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
void onSaveClicked(@NonNull Context context, @NonNull String about, @NonNull String emoji) {
|
||||
saveState.setValue(SaveState.IN_PROGRESS);
|
||||
saveState.onNext(SaveState.IN_PROGRESS);
|
||||
repository.setAbout(context, about, emoji, result -> {
|
||||
switch (result) {
|
||||
case SUCCESS:
|
||||
saveState.postValue(SaveState.DONE);
|
||||
saveState.onNext(SaveState.DONE);
|
||||
break;
|
||||
case FAILURE_NETWORK:
|
||||
saveState.postValue(SaveState.IDLE);
|
||||
events.postValue(Event.NETWORK_FAILURE);
|
||||
saveState.onNext(SaveState.IDLE);
|
||||
events.onNext(Event.NETWORK_FAILURE);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue