diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java
index a0ddffd78..962fe10a4 100644
--- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java
+++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java
@@ -1124,6 +1124,10 @@ public class ChatMessagesFragment extends Fragment
if (!mChatRoom.hasCapability(ChatRoomCapabilities.Encrypted.toInt())) {
builder.removeItem(R.id.chat_room_participants_devices);
builder.removeItem(R.id.chat_room_ephemeral_messages);
+ } else {
+ if (!LinphonePreferences.instance().isEphemeralMessagesEnabled()) {
+ builder.removeItem(R.id.chat_room_ephemeral_messages);
+ }
}
builder.setCallback(
diff --git a/app/src/main/java/org/linphone/settings/ChatSettingsFragment.java b/app/src/main/java/org/linphone/settings/ChatSettingsFragment.java
index b00420b7b..fc45c0b44 100644
--- a/app/src/main/java/org/linphone/settings/ChatSettingsFragment.java
+++ b/app/src/main/java/org/linphone/settings/ChatSettingsFragment.java
@@ -29,7 +29,9 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
+import org.linphone.LinphoneManager;
import org.linphone.R;
+import org.linphone.core.ChatRoom;
import org.linphone.core.tools.Log;
import org.linphone.mediastream.Version;
import org.linphone.settings.widget.BasicSetting;
@@ -45,6 +47,7 @@ public class ChatSettingsFragment extends SettingsFragment {
private BasicSetting mAndroidNotificationSettings;
private ListSetting mAutoDownloadIncomingFilesPolicy;
private SwitchSetting mHideEmptyRooms, mHideRemovedProxiesRooms, mMakeDownloadedImagesPublic;
+ private SwitchSetting mEnableEphemeralBeta;
@Nullable
@Override
@@ -85,6 +88,9 @@ public class ChatSettingsFragment extends SettingsFragment {
mHideRemovedProxiesRooms =
mRootView.findViewById(R.id.pref_android_app_hide_chat_rooms_from_removed_proxies);
+
+ mEnableEphemeralBeta =
+ mRootView.findViewById(R.id.pref_android_app_enable_ephemeral_messages_beta);
}
private void setListeners() {
@@ -166,6 +172,19 @@ public class ChatSettingsFragment extends SettingsFragment {
LinphonePreferences.instance().setHideRemovedProxiesChatRooms(newValue);
}
});
+
+ mEnableEphemeralBeta.setListener(
+ new SettingListenerBase() {
+ @Override
+ public void onBoolValueChanged(boolean newValue) {
+ LinphonePreferences.instance().enableEphemeralMessages(newValue);
+ if (!newValue) {
+ for (ChatRoom room : LinphoneManager.getCore().getChatRooms()) {
+ room.enableEphemeral(false);
+ }
+ }
+ }
+ });
}
private void updateValues() {
@@ -184,6 +203,9 @@ public class ChatSettingsFragment extends SettingsFragment {
mHideRemovedProxiesRooms.setChecked(
LinphonePreferences.instance().hideRemovedProxiesChatRooms());
+ mEnableEphemeralBeta.setChecked(
+ LinphonePreferences.instance().isEphemeralMessagesEnabled());
+
setListeners();
}
diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
index f26672449..43e611e33 100644
--- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java
+++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java
@@ -1312,4 +1312,14 @@ public class LinphonePreferences {
if (getConfig() == null) return;
getConfig().setBool("misc", "hide_chat_rooms_from_removed_proxies", hide);
}
+
+ public void enableEphemeralMessages(boolean enable) {
+ if (getConfig() == null) return;
+ getConfig().setBool("app", "ephemeral", enable);
+ }
+
+ public boolean isEphemeralMessagesEnabled() {
+ if (getConfig() == null) return true;
+ return getConfig().getBool("app", "ephemeral", false);
+ }
}
diff --git a/app/src/main/res/layout/settings_chat.xml b/app/src/main/res/layout/settings_chat.xml
index 4097769c1..e9c213a71 100644
--- a/app/src/main/res/layout/settings_chat.xml
+++ b/app/src/main/res/layout/settings_chat.xml
@@ -60,6 +60,12 @@
linphone:title="@string/pref_android_app_hide_chat_rooms_from_removed_proxies_title"
linphone:subtitle="@string/pref_android_app_hide_chat_rooms_from_removed_proxies_desc" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9bd416354..b80d51490 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -502,6 +502,7 @@
If you have missing chat rooms, try to uncheck this setting
Make downloaded images visible in native gallery
Images in ephemeral messages won\'t be
+ Enable ephemeral messages (beta)
Network