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