diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java index a91359cd3..13fda0948 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java @@ -140,6 +140,7 @@ import static org.briarproject.briar.android.util.UiUtils.getBulbTransitionName; import static org.briarproject.briar.android.util.UiUtils.observeOnce; 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 @@ -381,6 +382,11 @@ public class ConversationActivity extends BriarActivity // enable alias action if available observeOnce(viewModel.getContact(), 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); } @@ -402,6 +408,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; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java index 94ce67231..90011e548 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java @@ -54,6 +54,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Transformations; 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; @@ -61,6 +62,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; @@ -336,6 +338,20 @@ public class ConversationViewModel extends AndroidViewModel }); } + 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); + dbExecutor.execute(() -> { + try { + db.transaction(false, txn -> + autoDeleteManager.setAutoDeleteTimer(txn, c, timer)); + } catch (DbException e) { + logException(LOG, WARNING, e); + } + }); + } + AttachmentRetriever getAttachmentRetriever() { return attachmentRetriever; } diff --git a/briar-android/src/main/res/menu/conversation_actions.xml b/briar-android/src/main/res/menu/conversation_actions.xml index 8447178c7..8695171fa 100644 --- a/briar-android/src/main/res/menu/conversation_actions.xml +++ b/briar-android/src/main/res/menu/conversation_actions.xml @@ -1,30 +1,38 @@ -
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 66cd51313..f7c72e850 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -165,6 +165,7 @@