mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Allow setting a self-destruct timer
This is a rough prototype of #1837 meant to make testing the UI easier.
This commit is contained in:
@@ -138,6 +138,7 @@ import static org.briarproject.briar.android.util.UiUtils.observeOnce;
|
||||
import static org.briarproject.briar.android.view.AuthorView.setAvatar;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
|
||||
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
|
||||
import static org.briarproject.briar.api.messaging.PrivateMessageFormat.TEXT_IMAGES_AUTO_DELETE;
|
||||
import static org.briarproject.briar.api.messaging.PrivateMessageFormat.TEXT_ONLY;
|
||||
|
||||
@MethodsNotNullByDefault
|
||||
@@ -366,6 +367,11 @@ public class ConversationActivity extends BriarActivity
|
||||
// enable alias action if available
|
||||
observeOnce(viewModel.getContactItem(), this, contact ->
|
||||
menu.findItem(R.id.action_set_alias).setEnabled(true));
|
||||
// show auto-delete timer setting only, if contacts supports it
|
||||
observeOnce(viewModel.getPrivateMessageFormat(), this, format -> {
|
||||
boolean visible = format == TEXT_IMAGES_AUTO_DELETE;
|
||||
menu.findItem(R.id.action_auto_delete).setVisible(visible);
|
||||
});
|
||||
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
@@ -387,6 +393,11 @@ public class ConversationActivity extends BriarActivity
|
||||
AliasDialogFragment.newInstance().show(
|
||||
getSupportFragmentManager(), AliasDialogFragment.TAG);
|
||||
return true;
|
||||
case R.id.action_auto_delete:
|
||||
boolean enabled = !item.isChecked();
|
||||
viewModel.setAutoDeleteTimerEnabled(enabled);
|
||||
item.setChecked(enabled);
|
||||
return true;
|
||||
case R.id.action_delete_all_messages:
|
||||
askToDeleteAllMessages();
|
||||
return true;
|
||||
|
||||
@@ -59,6 +59,7 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import static androidx.lifecycle.Transformations.map;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
import static java.util.concurrent.TimeUnit.DAYS;
|
||||
import static java.util.logging.Level.WARNING;
|
||||
import static java.util.logging.Logger.getLogger;
|
||||
import static org.briarproject.bramble.util.LogUtils.logDuration;
|
||||
@@ -66,6 +67,7 @@ import static org.briarproject.bramble.util.LogUtils.logException;
|
||||
import static org.briarproject.bramble.util.LogUtils.now;
|
||||
import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE;
|
||||
import static org.briarproject.briar.android.util.UiUtils.observeForeverOnce;
|
||||
import static org.briarproject.briar.api.autodelete.AutoDeleteConstants.NO_AUTO_DELETE_TIMER;
|
||||
import static org.briarproject.briar.api.messaging.PrivateMessageFormat.TEXT_IMAGES;
|
||||
import static org.briarproject.briar.api.messaging.PrivateMessageFormat.TEXT_ONLY;
|
||||
|
||||
@@ -367,6 +369,20 @@ public class ConversationViewModel extends DbViewModel
|
||||
});
|
||||
}
|
||||
|
||||
void setAutoDeleteTimerEnabled(boolean enabled) {
|
||||
final long timer = enabled ? DAYS.toMillis(7) : NO_AUTO_DELETE_TIMER;
|
||||
// ContactId is set before menu gets inflated and UI interaction
|
||||
final ContactId c = requireNonNull(contactId);
|
||||
runOnDbThread(() -> {
|
||||
try {
|
||||
db.transaction(false, txn ->
|
||||
autoDeleteManager.setAutoDeleteTimer(txn, c, timer));
|
||||
} catch (DbException e) {
|
||||
logException(LOG, WARNING, e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
AttachmentRetriever getAttachmentRetriever() {
|
||||
return attachmentRetriever;
|
||||
}
|
||||
|
||||
@@ -1,30 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_introduction"
|
||||
android:enabled="false"
|
||||
android:icon="@drawable/introduction_white"
|
||||
android:title="@string/introduction_menu_item"
|
||||
android:enabled="false"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_set_alias"
|
||||
android:title="@string/set_contact_alias"
|
||||
android:enabled="false"
|
||||
app:showAsAction="never"/>
|
||||
android:title="@string/set_contact_alias"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_auto_delete"
|
||||
android:checkable="true"
|
||||
android:title="@string/menu_item_auto_delete"
|
||||
android:visible="false"
|
||||
app:showAsAction="never"
|
||||
tools:visible="true" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_delete_all_messages"
|
||||
android:title="@string/delete_all_messages"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_social_remove_person"
|
||||
android:icon="@drawable/action_delete_white"
|
||||
android:title="@string/delete_contact"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
@@ -165,6 +165,7 @@
|
||||
<string name="image_attach_error_invalid_mime_type">Image format unsupported: %s</string>
|
||||
<string name="set_contact_alias">Change contact name</string>
|
||||
<string name="set_contact_alias_hint">Contact name</string>
|
||||
<string name="menu_item_auto_delete">Disappearing messages</string>
|
||||
<string name="delete_all_messages">Delete all messages</string>
|
||||
<string name="dialog_title_delete_all_messages">Confirm Message Deletion</string>
|
||||
<string name="dialog_message_delete_all_messages">Are you sure that you want to delete all messages?</string>
|
||||
|
||||
Reference in New Issue
Block a user