diff --git a/README.md b/README.md index 07dbb03df..77803fa8d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![pipeline status](https://gitlab.linphone.org/BC/public/linphone-sdk/badges/master/pipeline.svg)](https://gitlab.linphone.org/BC/public/linphone-android/commits/master) +[![pipeline status](https://gitlab.linphone.org/BC/public/linphone-android/badges/master/pipeline.svg)](https://gitlab.linphone.org/BC/public/linphone-android/commits/master) Linphone is a free VoIP and video softphone based on the SIP protocol. diff --git a/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java b/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java index 690437678..6f6cbbc60 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java @@ -25,13 +25,9 @@ import android.view.View; import android.view.ViewGroup; import androidx.recyclerview.widget.DiffUtil; import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; import java.util.List; import org.linphone.LinphoneManager; -import org.linphone.R; import org.linphone.core.ChatRoom; -import org.linphone.utils.LinphoneUtils; import org.linphone.utils.SelectableAdapter; import org.linphone.utils.SelectableHelper; @@ -75,23 +71,7 @@ public class ChatRoomsAdapter extends SelectableAdapter { public void refresh() { ChatRoom[] rooms = LinphoneManager.getCore().getChatRooms(); - List roomsList; - if (mContext.getResources().getBoolean(R.bool.hide_empty_one_to_one_chat_rooms)) { - roomsList = LinphoneUtils.removeEmptyOneToOneChatRooms(rooms); - } else { - roomsList = Arrays.asList(rooms); - } - - Collections.sort( - roomsList, - new Comparator() { - public int compare(ChatRoom cr1, ChatRoom cr2) { - long timeDiff = cr1.getLastUpdateTime() - cr2.getLastUpdateTime(); - if (timeDiff > 0) return -1; - else if (timeDiff == 0) return 0; - return 1; - } - }); + List roomsList = Arrays.asList(rooms); DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new ChatRoomDiffCallback(roomsList, mRooms)); @@ -99,11 +79,6 @@ public class ChatRoomsAdapter extends SelectableAdapter { mRooms = roomsList; } - public void clear() { - mRooms.clear(); - // Do not notify data set changed, we don't want the list to empty when fragment is paused - } - /** Adapter's methods */ @Override public int getItemCount() { @@ -112,7 +87,8 @@ public class ChatRoomsAdapter extends SelectableAdapter { @Override public Object getItem(int position) { - return mRooms.get(position); + if (position < mRooms.size()) return mRooms.get(position); + return null; } @Override @@ -141,15 +117,12 @@ public class ChatRoomsAdapter extends SelectableAdapter { @Override public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { - ChatRoom oldRoom = oldChatRooms.get(oldItemPosition); - ChatRoom newRoom = newChatRooms.get(newItemPosition); - return oldRoom.getLocalAddress().weakEqual(newRoom.getLocalAddress()) - && oldRoom.getPeerAddress().weakEqual(newRoom.getPeerAddress()); + return oldChatRooms.get(oldItemPosition) == (newChatRooms.get(newItemPosition)); } @Override public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { - return oldChatRooms.get(oldItemPosition).equals(newChatRooms.get(newItemPosition)); + return newChatRooms.get(newItemPosition).getUnreadMessagesCount() > 0; } } } diff --git a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java index 6a341b058..3750944e2 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java @@ -44,7 +44,6 @@ import org.linphone.core.ChatRoomListenerStub; import org.linphone.core.Core; import org.linphone.core.CoreListenerStub; import org.linphone.core.ProxyConfig; -import org.linphone.utils.LinphoneUtils; import org.linphone.utils.SelectableHelper; import org.linphone.views.LinphoneLinearLayoutManager; @@ -79,12 +78,7 @@ public class ChatRoomsFragment extends Fragment mNoChatHistory = view.findViewById(R.id.noChatHistory); ChatRoom[] rooms = LinphoneManager.getCore().getChatRooms(); - List mRooms; - if (getResources().getBoolean(R.bool.hide_empty_one_to_one_chat_rooms)) { - mRooms = LinphoneUtils.removeEmptyOneToOneChatRooms(rooms); - } else { - mRooms = Arrays.asList(rooms); - } + List mRooms = Arrays.asList(rooms); mSelectionHelper = new SelectableHelper(view, this); mChatRoomsAdapter = @@ -244,7 +238,6 @@ public class ChatRoomsFragment extends Fragment core.removeListener(mListener); } ContactsManager.getInstance().removeContactsListener(this); - mChatRoomsAdapter.clear(); super.onPause(); } diff --git a/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java b/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java index f102e286e..dfd19537b 100644 --- a/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java +++ b/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java @@ -26,8 +26,6 @@ import android.content.Context; import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import org.linphone.LinphoneManager; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.LinphoneContact; @@ -37,7 +35,6 @@ import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.tools.Log; import org.linphone.settings.LinphonePreferences; import org.linphone.utils.LinphoneShortcutManager; -import org.linphone.utils.LinphoneUtils; @TargetApi(25) class ApiTwentyFivePlus { @@ -57,24 +54,11 @@ class ApiTwentyFivePlus { ArrayList shortcuts = new ArrayList<>(); ChatRoom[] rooms = LinphoneManager.getCore().getChatRooms(); - ArrayList notEmptyOneToOneRooms = - LinphoneUtils.removeEmptyOneToOneChatRooms(rooms); - Collections.sort( - notEmptyOneToOneRooms, - new Comparator() { - public int compare(ChatRoom cr1, ChatRoom cr2) { - long timeDiff = cr1.getLastUpdateTime() - cr2.getLastUpdateTime(); - if (timeDiff > 0) return -1; - else if (timeDiff == 0) return 0; - return 1; - } - }); int i = 0; - int maxShortcuts = - min(notEmptyOneToOneRooms.size(), shortcutManager.getMaxShortcutCountPerActivity()); + int maxShortcuts = min(rooms.length, shortcutManager.getMaxShortcutCountPerActivity()); ArrayList contacts = new ArrayList<>(); - for (ChatRoom room : notEmptyOneToOneRooms) { + for (ChatRoom room : rooms) { // Android can only have around 4-5 shortcuts at a time if (i >= maxShortcuts) break; diff --git a/app/src/main/java/org/linphone/firebase/FirebaseMessaging.java b/app/src/main/java/org/linphone/firebase/FirebaseMessaging.java index d5d45f390..256283344 100644 --- a/app/src/main/java/org/linphone/firebase/FirebaseMessaging.java +++ b/app/src/main/java/org/linphone/firebase/FirebaseMessaging.java @@ -27,6 +27,7 @@ import com.google.firebase.messaging.RemoteMessage; import org.linphone.LinphoneManager; import org.linphone.LinphoneService; import org.linphone.core.Core; +import org.linphone.core.tools.Log; import org.linphone.settings.LinphonePreferences; import org.linphone.utils.LinphoneUtils; @@ -57,7 +58,7 @@ public class FirebaseMessaging extends FirebaseMessagingService { intent.putExtra("PushNotification", true); startService(intent); } else { - android.util.Log.i("FirebaseMessaging", "[Push Notification] Notifying Core"); + Log.i("[Push Notification] Notifying Core"); if (LinphoneManager.getInstance() != null) { Core core = LinphoneManager.getCore(); if (core != null) { diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.java b/app/src/main/java/org/linphone/utils/LinphoneUtils.java index f0c33fce1..3e2a5e729 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.java +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.java @@ -39,7 +39,6 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.core.content.ContextCompat; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Calendar; import java.util.Locale; import java.util.regex.Pattern; @@ -49,8 +48,6 @@ import org.linphone.R; import org.linphone.core.Address; import org.linphone.core.Call; import org.linphone.core.CallLog; -import org.linphone.core.ChatRoom; -import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.Core; import org.linphone.core.Factory; import org.linphone.core.LogCollectionState; @@ -343,18 +340,6 @@ public final class LinphoneUtils { return Html.fromHtml(text); } - public static ArrayList removeEmptyOneToOneChatRooms(ChatRoom[] rooms) { - ArrayList newRooms = new ArrayList<>(); - for (ChatRoom room : rooms) { - // Hide 1-1 chat rooms without messages - if (!(room.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) - && room.getHistorySize() == 0)) { - newRooms.add(room); - } - } - return newRooms; - } - public static void showTrustDeniedDialog(Context context) { final Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml index fb8d4f996..c29105570 100644 --- a/app/src/main/res/values/non_localizable_custom.xml +++ b/app/src/main/res/values/non_localizable_custom.xml @@ -93,7 +93,6 @@ true true false - true true false