From 7b48d41d29f8096b087ee2dc6bb914a15d515699 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 5 Sep 2023 13:41:53 +0200 Subject: [PATCH] Using new APIs --- .../ui/main/calls/viewmodel/CallLogViewModel.kt | 11 +++++++++-- .../main/calls/viewmodel/CallsListViewModel.kt | 16 ++++++++++++---- .../ui/main/viewmodel/BottomNavBarViewModel.kt | 7 +++++-- .../java/org/linphone/utils/LinphoneUtils.kt | 6 ++++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallLogViewModel.kt b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallLogViewModel.kt index 3774b3bc3..cc124d9d7 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallLogViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallLogViewModel.kt @@ -9,6 +9,7 @@ import org.linphone.core.Call import org.linphone.ui.main.calls.model.CallLogHistoryModel import org.linphone.ui.main.calls.model.CallLogModel import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils class CallLogViewModel @UiThread constructor() : ViewModel() { val showBackButton = MutableLiveData() @@ -32,10 +33,16 @@ class CallLogViewModel @UiThread constructor() : ViewModel() { address = model.address callLogModel.postValue(model) - val localAddress = if (callLog.dir == Call.Dir.Outgoing) callLog.fromAddress else callLog.toAddress val peerAddress = if (callLog.dir == Call.Dir.Outgoing) callLog.toAddress else callLog.fromAddress val history = arrayListOf() - for (log in core.getCallHistory(peerAddress, localAddress)) { + val account = LinphoneUtils.getDefaultAccount() + val list = if (account == null) { + val localAddress = if (callLog.dir == Call.Dir.Outgoing) callLog.fromAddress else callLog.toAddress + core.getCallHistory(peerAddress, localAddress) + } else { + account.getCallLogsForAddress(peerAddress) + } + for (log in list) { val historyModel = CallLogHistoryModel(log) history.add(historyModel) } diff --git a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt index 943d8b25e..0d9cee8a0 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt @@ -29,6 +29,7 @@ import org.linphone.core.CoreListenerStub import org.linphone.ui.main.calls.model.CallLogModel import org.linphone.ui.main.viewmodel.AbstractTopBarViewModel import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils class CallsListViewModel @UiThread constructor() : AbstractTopBarViewModel() { val callLogs = MutableLiveData>() @@ -74,9 +75,15 @@ class CallsListViewModel @UiThread constructor() : AbstractTopBarViewModel() { @UiThread fun removeAllCallLogs() { coreContext.postOnCoreThread { core -> - for (callLog in core.callLogs) { - core.removeCallLog(callLog) + val account = LinphoneUtils.getDefaultAccount() + if (account != null) { + account.clearCallLogs() + } else { + for (callLog in core.callLogs) { + core.removeCallLog(callLog) + } } + historyDeletedEvent.postValue(Event(true)) computeCallLogsList(currentFilter) } @@ -86,9 +93,10 @@ class CallsListViewModel @UiThread constructor() : AbstractTopBarViewModel() { private fun computeCallLogsList(filter: String) { val list = arrayListOf() - // TODO : filter depending on currently selected account // TODO : Add support for call logs in magic search - for (callLog in coreContext.core.callLogs) { + val account = LinphoneUtils.getDefaultAccount() + val logs = account?.callLogs ?: coreContext.core.callLogs + for (callLog in logs) { if (callLog.remoteAddress.asStringUriOnly().contains(filter)) { val model = CallLogModel(callLog) list.add(model) diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt index cb87d37d4..577ba150c 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt @@ -29,6 +29,7 @@ import org.linphone.core.Call import org.linphone.core.Core import org.linphone.core.CoreListenerStub import org.linphone.core.tools.Log +import org.linphone.utils.LinphoneUtils class BottomNavBarViewModel @UiThread constructor() : ViewModel() { companion object { @@ -84,7 +85,8 @@ class BottomNavBarViewModel @UiThread constructor() : ViewModel() { @WorkerThread fun updateMissedCallsCount() { - val count = coreContext.core.missedCallsCount + val account = LinphoneUtils.getDefaultAccount() + val count = account?.missedCallsCount ?: coreContext.core.missedCallsCount val moreThanOne = count > 1 Log.i( "$TAG There ${if (moreThanOne) "are" else "is"} [$count] missed ${if (moreThanOne) "calls" else "call"}" @@ -95,7 +97,8 @@ class BottomNavBarViewModel @UiThread constructor() : ViewModel() { @UiThread fun resetMissedCallsCount() { coreContext.postOnCoreThread { core -> - core.resetMissedCallsCount() + val account = LinphoneUtils.getDefaultAccount() + account?.resetMissedCallsCount() ?: core.resetMissedCallsCount() updateMissedCallsCount() } } diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index a41964c3b..371042e2a 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -30,6 +30,7 @@ import androidx.emoji2.text.EmojiCompat import java.util.Locale import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R +import org.linphone.core.Account import org.linphone.core.Address import org.linphone.core.Call import org.linphone.core.Call.Dir @@ -41,6 +42,11 @@ class LinphoneUtils { companion object { private const val TAG = "[App Utils]" + @WorkerThread + fun getDefaultAccount(): Account? { + return coreContext.core.defaultAccount ?: coreContext.core.accountList.first() + } + @AnyThread fun getFirstLetter(displayName: String): String { return getInitials(displayName, 1)