mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Remove manual initial state and oldTask state argument
The latter is now handled via a LiveEvent
This commit is contained in:
@@ -72,6 +72,8 @@ public class ReceiveFragment extends Fragment {
|
||||
button.setOnClickListener(view ->
|
||||
launcher.launch("*/*")
|
||||
);
|
||||
viewModel.getOldTaskResumedEvent()
|
||||
.observeEvent(getViewLifecycleOwner(), this::onOldTaskResumed);
|
||||
viewModel.getState()
|
||||
.observe(getViewLifecycleOwner(), this::onStateChanged);
|
||||
return v;
|
||||
@@ -83,6 +85,13 @@ public class ReceiveFragment extends Fragment {
|
||||
requireActivity().setTitle(R.string.removable_drive_title_receive);
|
||||
}
|
||||
|
||||
private void onOldTaskResumed(boolean resumed) {
|
||||
if (resumed) {
|
||||
Toast.makeText(requireContext(),
|
||||
R.string.removable_drive_ongoing, LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void onStateChanged(TransferDataState state) {
|
||||
if (state instanceof TransferDataState.NoDataToSend) {
|
||||
throw new IllegalStateException();
|
||||
@@ -90,10 +99,6 @@ public class ReceiveFragment extends Fragment {
|
||||
button.setEnabled(true);
|
||||
} else if (state instanceof TransferDataState.TaskAvailable) {
|
||||
button.setEnabled(false);
|
||||
if (((TransferDataState.TaskAvailable) state).isOldTask) {
|
||||
Toast.makeText(requireContext(),
|
||||
R.string.removable_drive_ongoing, LENGTH_LONG).show();
|
||||
}
|
||||
progressBar.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,9 +43,10 @@ class RemovableDriveViewModel extends DbViewModel {
|
||||
private final RemovableDriveManager manager;
|
||||
|
||||
private final MutableLiveEvent<Action> action = new MutableLiveEvent<>();
|
||||
private final MutableLiveEvent<Boolean> oldTaskResumed =
|
||||
new MutableLiveEvent<>();
|
||||
private final MutableLiveData<TransferDataState> state =
|
||||
new MutableLiveData<>();
|
||||
private final State initialState = new State(0, 0, false, false);
|
||||
@Nullable
|
||||
private ContactId contactId = null;
|
||||
@Nullable
|
||||
@@ -102,10 +103,11 @@ class RemovableDriveViewModel extends DbViewModel {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// observe old task and start with initial state
|
||||
taskObserver = s -> observeTask(s, true);
|
||||
taskObserver.accept(initialState);
|
||||
// observe old task
|
||||
taskObserver =
|
||||
s -> state.setValue(new TransferDataState.TaskAvailable(s));
|
||||
task.addObserver(taskObserver);
|
||||
oldTaskResumed.setEvent(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,18 +120,14 @@ class RemovableDriveViewModel extends DbViewModel {
|
||||
if (task == null) {
|
||||
state.setValue(new TransferDataState.Ready());
|
||||
} else {
|
||||
// observe old task and start with initial state
|
||||
taskObserver = s -> observeTask(s, true);
|
||||
taskObserver.accept(initialState);
|
||||
// observe old task
|
||||
taskObserver =
|
||||
s -> state.setValue(new TransferDataState.TaskAvailable(s));
|
||||
task.addObserver(taskObserver);
|
||||
oldTaskResumed.setEvent(true);
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
private void observeTask(RemovableDriveTask.State s, boolean isOldTask) {
|
||||
state.setValue(new TransferDataState.TaskAvailable(s, isOldTask));
|
||||
}
|
||||
|
||||
String getFileName() {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", US);
|
||||
return sdf.format(new Date()) + ".zip";
|
||||
@@ -144,8 +142,9 @@ class RemovableDriveViewModel extends DbViewModel {
|
||||
if (task != null) throw new IllegalStateException();
|
||||
|
||||
// from now on, we are not re-usable
|
||||
taskObserver = s -> observeTask(s, false);
|
||||
taskObserver.accept(initialState);
|
||||
// (because gets a state update right away on the UiThread)
|
||||
taskObserver =
|
||||
s -> state.setValue(new TransferDataState.TaskAvailable(s));
|
||||
|
||||
// start the writer task for this contact and observe it
|
||||
TransportProperties p = new TransportProperties();
|
||||
@@ -164,8 +163,9 @@ class RemovableDriveViewModel extends DbViewModel {
|
||||
if (task != null) throw new IllegalStateException();
|
||||
|
||||
// from now on, we are not re-usable
|
||||
taskObserver = s -> observeTask(s, false);
|
||||
taskObserver.accept(initialState);
|
||||
// (because gets a state update right away on the UiThread)
|
||||
taskObserver =
|
||||
s -> state.setValue(new TransferDataState.TaskAvailable(s));
|
||||
|
||||
TransportProperties p = new TransportProperties();
|
||||
p.put(PROP_URI, uri.toString());
|
||||
@@ -177,6 +177,10 @@ class RemovableDriveViewModel extends DbViewModel {
|
||||
return action;
|
||||
}
|
||||
|
||||
LiveEvent<Boolean> getOldTaskResumedEvent() {
|
||||
return oldTaskResumed;
|
||||
}
|
||||
|
||||
LiveData<TransferDataState> getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ public class SendFragment extends Fragment {
|
||||
TextView introTextView;
|
||||
Button button;
|
||||
ProgressBar progressBar;
|
||||
boolean hasShownOldTaskToast = false;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
@@ -72,6 +71,8 @@ public class SendFragment extends Fragment {
|
||||
launcher.launch(viewModel.getFileName())
|
||||
);
|
||||
|
||||
viewModel.getOldTaskResumedEvent()
|
||||
.observeEvent(getViewLifecycleOwner(), this::onOldTaskResumed);
|
||||
viewModel.getState()
|
||||
.observe(getViewLifecycleOwner(), this::onStateChanged);
|
||||
|
||||
@@ -84,6 +85,13 @@ public class SendFragment extends Fragment {
|
||||
requireActivity().setTitle(R.string.removable_drive_title_send);
|
||||
}
|
||||
|
||||
private void onOldTaskResumed(boolean resumed) {
|
||||
if (resumed) {
|
||||
Toast.makeText(requireContext(),
|
||||
R.string.removable_drive_ongoing, LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void onStateChanged(TransferDataState state) {
|
||||
if (state instanceof TransferDataState.NoDataToSend) {
|
||||
introTextView.setText(R.string.removable_drive_send_no_data);
|
||||
@@ -92,12 +100,6 @@ public class SendFragment extends Fragment {
|
||||
button.setEnabled(true);
|
||||
} else if (state instanceof TransferDataState.TaskAvailable) {
|
||||
button.setEnabled(false);
|
||||
if (!hasShownOldTaskToast &&
|
||||
((TransferDataState.TaskAvailable) state).isOldTask) {
|
||||
Toast.makeText(requireContext(),
|
||||
R.string.removable_drive_ongoing, LENGTH_LONG).show();
|
||||
hasShownOldTaskToast = true;
|
||||
}
|
||||
RemovableDriveTask.State s =
|
||||
((TransferDataState.TaskAvailable) state).state;
|
||||
if (s.getTotal() > 0L && progressBar.getVisibility() != VISIBLE) {
|
||||
|
||||
@@ -24,15 +24,9 @@ abstract class TransferDataState {
|
||||
*/
|
||||
static class TaskAvailable extends TransferDataState {
|
||||
final RemovableDriveTask.State state;
|
||||
/**
|
||||
* This is an old task that is still ongoing. The user needs to wait for
|
||||
* it to complete before starting a new task.
|
||||
*/
|
||||
final boolean isOldTask;
|
||||
|
||||
TaskAvailable(RemovableDriveTask.State state, boolean isOldTask) {
|
||||
TaskAvailable(RemovableDriveTask.State state) {
|
||||
this.state = state;
|
||||
this.isOldTask = isOldTask;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user