Implement UI for unpairing the mailbox

This commit is contained in:
Torsten Grote
2022-04-20 11:49:57 -03:00
parent fa3db0f888
commit fa3a5be083
4 changed files with 49 additions and 5 deletions

View File

@@ -12,7 +12,6 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import org.briarproject.bramble.api.mailbox.MailboxStatus;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
@@ -25,6 +24,7 @@ import androidx.annotation.ColorRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;
@@ -57,6 +57,8 @@ public class MailboxStatusFragment extends Fragment {
private ImageView imageView;
private TextView statusTitleView;
private TextView statusInfoView;
private Button unlinkButton;
private ProgressBar unlinkProgress;
@Override
public void onAttach(Context context) {
@@ -101,10 +103,9 @@ public class MailboxStatusFragment extends Fragment {
// TODO
// * Implement UI for warning user when mailbox is unreachable #2175
// * add "Unlink" button confirmation dialog and functionality #2173
Button unlinkButton = v.findViewById(R.id.unlinkButton);
unlinkButton.setOnClickListener(view -> Toast.makeText(requireContext(),
"NOT IMPLEMENTED", Toast.LENGTH_SHORT).show());
unlinkButton = v.findViewById(R.id.unlinkButton);
unlinkProgress = v.findViewById(R.id.unlinkProgress);
unlinkButton.setOnClickListener(view -> onUnlinkButtonClicked());
}
@Override
@@ -167,4 +168,21 @@ public class MailboxStatusFragment extends Fragment {
}
}
private void onUnlinkButtonClicked() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(),
R.style.BriarDialogTheme);
builder.setTitle(R.string.mailbox_status_unlink_dialog_title);
builder.setMessage(R.string.mailbox_status_unlink_dialog_message);
builder.setPositiveButton(R.string.cancel,
(dialog, which) -> dialog.cancel());
builder.setNegativeButton(R.string.mailbox_status_unlink_button,
(dialog, which) -> {
beginDelayedTransition((ViewGroup) requireView());
unlinkButton.setVisibility(INVISIBLE);
unlinkProgress.setVisibility(VISIBLE);
viewModel.unlink();
});
builder.show();
}
}

View File

@@ -6,6 +6,7 @@ import com.google.zxing.Result;
import org.briarproject.bramble.api.Consumer;
import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.TransactionManager;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.event.EventBus;
@@ -220,6 +221,18 @@ class MailboxViewModel extends DbViewModel
return liveData;
}
@UiThread
void unlink() {
ioExecutor.execute(() -> {
try {
mailboxManager.unPair();
pairingState.postEvent(new MailboxState.NotSetup());
} catch (DbException e) {
handleException(e);
}
});
}
@UiThread
LiveEvent<MailboxState> getPairingState() {
return pairingState;

View File

@@ -83,4 +83,15 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/unlinkProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/unlinkButton"
app:layout_constraintEnd_toEndOf="@+id/unlinkButton"
app:layout_constraintStart_toStartOf="@+id/unlinkButton"
app:layout_constraintTop_toTopOf="@+id/unlinkButton"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -651,6 +651,8 @@
<!-- Indicates that there never was a connection to the mailbox. Last connection: Never -->
<string name="mailbox_status_connected_never">Never</string>
<string name="mailbox_status_unlink_button">Unlink</string>
<string name="mailbox_status_unlink_dialog_title">Unlink mailbox?</string>
<string name="mailbox_status_unlink_dialog_message">Unlinking a working Mailbox will result in message delivery issues, even when relinking it later again.</string>
<!-- Conversation Settings -->
<string name="disappearing_messages_title">Disappearing messages</string>