From 3bd8b747864864d6e1a8acbc4f670e9d68147bab Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 13 Feb 2020 14:04:52 +0100 Subject: [PATCH] Disable ephemeral messages beta feature unless manually enabled in chat settings --- .../linphone/chat/ChatMessagesFragment.java | 4 ++++ .../settings/ChatSettingsFragment.java | 22 +++++++++++++++++++ .../settings/LinphonePreferences.java | 10 +++++++++ app/src/main/res/layout/settings_chat.xml | 6 +++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 43 insertions(+) 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