diff --git a/app/src/main/assets/assistant_default_values b/app/src/main/assets/assistant_default_values
index e5192e38c..11e69874a 100644
--- a/app/src/main/assets/assistant_default_values
+++ b/app/src/main/assets/assistant_default_values
@@ -24,6 +24,9 @@
+
MD5
diff --git a/app/src/main/assets/assistant_linphone_default_values b/app/src/main/assets/assistant_linphone_default_values
index 497e98efc..f4a5aee7f 100644
--- a/app/src/main/assets/assistant_linphone_default_values
+++ b/app/src/main/assets/assistant_linphone_default_values
@@ -24,11 +24,8 @@
stun.linphone.org
stun,ice
-
- sips:rls@sip.linphone.org
-
-
- https://lime.linphone.org/lime-server/lime-server.php
+
sip.linphone.org
diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt
index 4cf945451..7c07f3755 100644
--- a/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/fragments/AccountLoginFragment.kt
@@ -93,7 +93,7 @@ class AccountLoginFragment : AbstractPhoneFragment {
- coreContext.contactsManager.updateLocalContacts()
+ coreContext.newAccountConfigured(true)
if (coreContext.core.isEchoCancellerCalibrationRequired) {
navigateToEchoCancellerCalibration()
diff --git a/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt b/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt
index 6ecdfc9d6..81fc5d5d3 100644
--- a/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/viewmodels/GenericLoginViewModel.kt
@@ -24,7 +24,6 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import org.linphone.LinphoneApplication.Companion.coreContext
-import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.core.*
import org.linphone.core.tools.Log
import org.linphone.utils.Event
@@ -141,13 +140,6 @@ class GenericLoginViewModel(private val accountCreator: AccountCreator) : ViewMo
}
Log.i("[Assistant] [Generic Login] Proxy config created")
- // The following is required to keep the app alive
- // and be able to receive calls while in background
- if (domain.value.orEmpty() != corePreferences.defaultDomain) {
- Log.i("[Assistant] [Generic Login] Background mode with foreground service automatically enabled")
- corePreferences.keepServiceAlive = true
- coreContext.notificationsManager.startForeground()
- }
}
private fun isLoginButtonEnabled(): Boolean {
diff --git a/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt b/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt
index 103a650f7..fd2428bee 100644
--- a/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt
+++ b/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt
@@ -328,17 +328,14 @@ class DialerFragment : SecureFragment() {
}
private fun checkForUpdate() {
- val url: String? = corePreferences.checkIfUpdateAvailableUrl
- if (url != null && url.isNotEmpty()) {
- val lastTimestamp: Int = corePreferences.lastUpdateAvailableCheckTimestamp
- val currentTimeStamp = System.currentTimeMillis().toInt()
- val interval: Int = corePreferences.checkUpdateAvailableInterval
- if (lastTimestamp == 0 || currentTimeStamp - lastTimestamp >= interval) {
- val currentVersion = BuildConfig.VERSION_NAME
- Log.i("[Dialer] Checking for update using url [$url] and current version [$currentVersion]")
- coreContext.core.checkForUpdate(currentVersion)
- corePreferences.lastUpdateAvailableCheckTimestamp = currentTimeStamp
- }
+ val lastTimestamp: Int = corePreferences.lastUpdateAvailableCheckTimestamp
+ val currentTimeStamp = System.currentTimeMillis().toInt()
+ val interval: Int = corePreferences.checkUpdateAvailableInterval
+ if (lastTimestamp == 0 || currentTimeStamp - lastTimestamp >= interval) {
+ val currentVersion = BuildConfig.VERSION_NAME
+ Log.i("[Dialer] Checking for update using current version [$currentVersion]")
+ coreContext.core.checkForUpdate(currentVersion)
+ corePreferences.lastUpdateAvailableCheckTimestamp = currentTimeStamp
}
}
diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt
index 6b56265d0..4b6f9f423 100644
--- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt
@@ -38,6 +38,7 @@ class ContactsSettingsViewModel : GenericSettingsViewModel() {
}
}
val friendListSubscribe = MutableLiveData()
+ val rlsAddressAvailable = MutableLiveData()
val showNewContactAccountDialogListener = object : SettingListenerStub() {
override fun onBoolValueChanged(newValue: Boolean) {
@@ -95,6 +96,7 @@ class ContactsSettingsViewModel : GenericSettingsViewModel() {
readContactsPermissionGranted.value = PermissionHelper.get().hasReadContactsPermission()
friendListSubscribe.value = core.isFriendListSubscriptionEnabled
+ rlsAddressAvailable.value = core.defaultFriendList?.rlsAddress?.asStringUriOnly().orEmpty().isNotEmpty()
showNewContactAccountDialog.value = prefs.showNewContactAccountDialog
nativePresence.value = prefs.storePresenceInNativeContact
showOrganization.value = prefs.displayOrganization
diff --git a/app/src/main/java/org/linphone/contact/ContactLoader.kt b/app/src/main/java/org/linphone/contact/ContactLoader.kt
index 07bf6ab2e..c9300c53a 100644
--- a/app/src/main/java/org/linphone/contact/ContactLoader.kt
+++ b/app/src/main/java/org/linphone/contact/ContactLoader.kt
@@ -61,11 +61,18 @@ class ContactLoader : LoaderManager.LoaderCallbacks {
override fun onCreateLoader(id: Int, args: Bundle?): Loader {
Log.i("[Contacts Loader] Loader created")
coreContext.contactsManager.fetchInProgress.value = true
+
+ val selection = if (corePreferences.fetchContactsFromDefaultDirectory) {
+ ContactsContract.Data.IN_DEFAULT_DIRECTORY + " == 1"
+ } else {
+ null
+ }
+
return CursorLoader(
coreContext.context,
ContactsContract.Data.CONTENT_URI,
projection,
- ContactsContract.Data.IN_DEFAULT_DIRECTORY + " == 1",
+ selection,
null,
null
)
diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt
index 56d7d7b15..96508422c 100644
--- a/app/src/main/java/org/linphone/core/CoreContext.kt
+++ b/app/src/main/java/org/linphone/core/CoreContext.kt
@@ -425,16 +425,6 @@ class CoreContext(val context: Context, coreConfig: Config) : LifecycleOwner, Vi
Log.i("[Context] Account params have been updated, apply changes")
account.params = params
}
-
- // Ensure LIME server URL is set if at least one sip.linphone.org proxy
- if (core.limeX3DhAvailable()) {
- var url: String? = core.limeX3DhServerUrl
- if (url == null || url.isEmpty()) {
- url = corePreferences.limeX3dhServerUrl
- Log.i("[Context] Setting LIME X3Dh server url to default value: $url")
- core.limeX3DhServerUrl = url
- }
- }
}
}
@@ -470,6 +460,30 @@ class CoreContext(val context: Context, coreConfig: Config) : LifecycleOwner, Vi
}
}
+ fun newAccountConfigured(isLinphoneAccount: Boolean) {
+ Log.i("[Context] A new ${if (isLinphoneAccount) AppUtils.getString(R.string.app_name) else "third-party"} account has been configured")
+
+ if (isLinphoneAccount) {
+ core.config.setString("sip", "rls_uri", corePreferences.defaultRlsUri)
+ val rlsAddress = core.interpretUrl(corePreferences.defaultRlsUri)
+ if (rlsAddress != null) {
+ for (friendList in core.friendsLists) {
+ friendList.rlsAddress = rlsAddress
+ }
+ }
+
+ if (core.limeX3DhAvailable()) {
+ core.limeX3DhServerUrl = corePreferences.defaultLimeServerUrl
+ }
+ } else {
+ Log.i("[Context] Background mode with foreground service automatically enabled")
+ corePreferences.keepServiceAlive = true
+ notificationsManager.startForeground()
+ }
+
+ contactsManager.updateLocalContacts()
+ }
+
/* Call related functions */
fun initPhoneStateListener() {
diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt
index 074ce89e9..6b2e2e945 100644
--- a/app/src/main/java/org/linphone/core/CorePreferences.kt
+++ b/app/src/main/java/org/linphone/core/CorePreferences.kt
@@ -474,6 +474,9 @@ class CorePreferences constructor(private val context: Context) {
val defaultRlsUri: String
get() = config.getString("sip", "rls_uri", "sips:rls@sip.linphone.org")!!
+ val defaultLimeServerUrl: String
+ get() = config.getString("lime", "lime_server_url", "https://lime.linphone.org/lime-server/lime-server.php")!!
+
val debugPopupCode: String
get() = config.getString("app", "debug_popup_magic", "#1234#")!!
@@ -495,20 +498,6 @@ class CorePreferences constructor(private val context: Context) {
""
)!!
- val limeX3dhServerUrl: String
- get() = config.getString(
- "app",
- "default_lime_x3dh_server_url",
- "https://lime.linphone.org/lime-server/lime-server.php"
- )!!
-
- val checkIfUpdateAvailableUrl: String?
- get() = config.getString(
- "misc",
- "version_check_url_root",
- "https://linphone.org/releases/android/RELEASE"
- )
-
val checkUpdateAvailableInterval: Int
get() = config.getInt("app", "version_check_interval", 86400000)
diff --git a/app/src/main/res/layout/settings_contacts_fragment.xml b/app/src/main/res/layout/settings_contacts_fragment.xml
index 6a75622f3..dc51fbcc7 100644
--- a/app/src/main/res/layout/settings_contacts_fragment.xml
+++ b/app/src/main/res/layout/settings_contacts_fragment.xml
@@ -73,7 +73,7 @@
linphone:title="@{@string/contacts_settings_friendlist_subscribe_title}"
linphone:listener="@{viewModel.friendListSubscribeListener}"
linphone:checked="@={viewModel.friendListSubscribe}"
- linphone:enabled="@{viewModel.readContactsPermissionGranted}"/>
+ linphone:enabled="@{viewModel.readContactsPermissionGranted && viewModel.rlsAddressAvailable}"/>