kopia lustrzana https://github.com/ryukoposting/Signal-Android
Remove SingleLiveEvent from EditAboutViewModel.
rodzic
3478e13d38
commit
498b7fee69
|
@ -24,11 +24,12 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import org.signal.core.util.BreakIteratorCompat;
|
import org.signal.core.util.BreakIteratorCompat;
|
||||||
import org.signal.core.util.EditTextUtil;
|
import org.signal.core.util.EditTextUtil;
|
||||||
|
import org.signal.core.util.StringUtil;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.components.emoji.EmojiUtil;
|
import org.thoughtcrime.securesms.components.emoji.EmojiUtil;
|
||||||
import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment;
|
import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
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.ViewUtil;
|
||||||
import org.thoughtcrime.securesms.util.adapter.AlwaysChangedDiffUtil;
|
import org.thoughtcrime.securesms.util.adapter.AlwaysChangedDiffUtil;
|
||||||
import org.thoughtcrime.securesms.util.text.AfterTextChanged;
|
import org.thoughtcrime.securesms.util.text.AfterTextChanged;
|
||||||
|
@ -64,6 +65,7 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
|
||||||
private TextView countView;
|
private TextView countView;
|
||||||
private CircularProgressMaterialButton saveButton;
|
private CircularProgressMaterialButton saveButton;
|
||||||
private EditAboutViewModel viewModel;
|
private EditAboutViewModel viewModel;
|
||||||
|
private LifecycleDisposable lifecycleDisposable;
|
||||||
|
|
||||||
private String selectedEmoji;
|
private String selectedEmoji;
|
||||||
|
|
||||||
|
@ -79,6 +81,9 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
|
||||||
this.countView = view.findViewById(R.id.edit_about_count);
|
this.countView = view.findViewById(R.id.edit_about_count);
|
||||||
this.saveButton = view.findViewById(R.id.edit_about_save);
|
this.saveButton = view.findViewById(R.id.edit_about_save);
|
||||||
|
|
||||||
|
lifecycleDisposable = new LifecycleDisposable();
|
||||||
|
lifecycleDisposable.bindTo(getViewLifecycleOwner());
|
||||||
|
|
||||||
initializeViewModel();
|
initializeViewModel();
|
||||||
|
|
||||||
view.<Toolbar>findViewById(R.id.toolbar)
|
view.<Toolbar>findViewById(R.id.toolbar)
|
||||||
|
@ -146,8 +151,10 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
|
||||||
private void initializeViewModel() {
|
private void initializeViewModel() {
|
||||||
this.viewModel = new ViewModelProvider(this).get(EditAboutViewModel.class);
|
this.viewModel = new ViewModelProvider(this).get(EditAboutViewModel.class);
|
||||||
|
|
||||||
viewModel.getSaveState().observe(getViewLifecycleOwner(), this::presentSaveState);
|
lifecycleDisposable.addAll(
|
||||||
viewModel.getEvents().observe(getViewLifecycleOwner(), this::presentEvent);
|
viewModel.getSaveState().subscribe(this::presentSaveState),
|
||||||
|
viewModel.getEvents().subscribe(this::presentEvent)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void presentCount(@NonNull String aboutBody) {
|
private void presentCount(@NonNull String aboutBody) {
|
||||||
|
|
|
@ -3,42 +3,43 @@ package org.thoughtcrime.securesms.profiles.manage;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.LiveData;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
|
||||||
import androidx.lifecycle.ViewModel;
|
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 {
|
public final class EditAboutViewModel extends ViewModel {
|
||||||
|
|
||||||
private final ManageProfileRepository repository;
|
private final ManageProfileRepository repository;
|
||||||
private final MutableLiveData<SaveState> saveState;
|
private final BehaviorSubject<SaveState> saveState;
|
||||||
private final SingleLiveEvent<Event> events;
|
private final PublishSubject<Event> events;
|
||||||
|
|
||||||
public EditAboutViewModel() {
|
public EditAboutViewModel() {
|
||||||
this.repository = new ManageProfileRepository();
|
this.repository = new ManageProfileRepository();
|
||||||
this.saveState = new MutableLiveData<>(SaveState.IDLE);
|
this.saveState = BehaviorSubject.createDefault(SaveState.IDLE);
|
||||||
this.events = new SingleLiveEvent<>();
|
this.events = PublishSubject.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull LiveData<SaveState> getSaveState() {
|
@NonNull Observable<SaveState> getSaveState() {
|
||||||
return saveState;
|
return saveState.observeOn(AndroidSchedulers.mainThread());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull LiveData<Event> getEvents() {
|
@NonNull Observable<Event> getEvents() {
|
||||||
return events;
|
return events.observeOn(AndroidSchedulers.mainThread());
|
||||||
}
|
}
|
||||||
|
|
||||||
void onSaveClicked(@NonNull Context context, @NonNull String about, @NonNull String emoji) {
|
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 -> {
|
repository.setAbout(context, about, emoji, result -> {
|
||||||
switch (result) {
|
switch (result) {
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
saveState.postValue(SaveState.DONE);
|
saveState.onNext(SaveState.DONE);
|
||||||
break;
|
break;
|
||||||
case FAILURE_NETWORK:
|
case FAILURE_NETWORK:
|
||||||
saveState.postValue(SaveState.IDLE);
|
saveState.onNext(SaveState.IDLE);
|
||||||
events.postValue(Event.NETWORK_FAILURE);
|
events.onNext(Event.NETWORK_FAILURE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Ładowanie…
Reference in New Issue