From 5e1b69bbe6f227b9d2dbc8ca970a2db8b34b9311 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 17 Mar 2021 10:24:13 +0100 Subject: [PATCH 1/3] split userId on last @ (e.g. necessary if email adresses are taken as userId) --- .../main/java/com/nextcloud/talk/activities/MainActivity.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 993174edd..ce059de71 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -171,8 +171,8 @@ class MainActivity : BaseActivity(), ActionBarProvider { when (intent.type) { "vnd.android.cursor.item/vnd.com.nextcloud.talk2.chat" -> { - val user = userId.split("@")[0] - val baseUrl = userId.split("@")[1] + val user = userId.substringBeforeLast("@") + val baseUrl = userId.substringAfterLast("@") if (userUtils.currentUser?.baseUrl?.endsWith(baseUrl) == true) { startConversation(user) } else { From 5b6fd3759f090a7a593756bd1ddde34f4cf6e0ce Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 17 Mar 2021 11:17:36 +0100 Subject: [PATCH 2/3] only check for nc contacts if phonebook on device is not empty --- .../talk/jobs/ContactAddressBookWorker.kt | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt index ad86c08d2..d4c7092dd 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt @@ -91,40 +91,38 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar // collect all contacts with phone number val contactsWithNumbers = collectPhoneNumbers() - val currentLocale = ConfigurationCompat.getLocales(context.resources.configuration)[0].country + if(contactsWithNumbers.isNotEmpty()){ + val currentLocale = ConfigurationCompat.getLocales(context.resources.configuration)[0].country - val map = mutableMapOf() - map["location"] = currentLocale - map["search"] = contactsWithNumbers + val map = mutableMapOf() + map["location"] = currentLocale + map["search"] = contactsWithNumbers - val json = Gson().toJson(map) + val json = Gson().toJson(map) - ncApi.searchContactsByPhoneNumber( - ApiUtils.getCredentials(currentUser.username, currentUser.token), - ApiUtils.getUrlForSearchByNumber(currentUser.baseUrl), - RequestBody.create(MediaType.parse("application/json"), json)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Observer { - override fun onComplete() { - } + ncApi.searchContactsByPhoneNumber( + ApiUtils.getCredentials(currentUser.username, currentUser.token), + ApiUtils.getUrlForSearchByNumber(currentUser.baseUrl), + RequestBody.create(MediaType.parse("application/json"), json)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Observer { + override fun onComplete() { + } - override fun onSubscribe(d: Disposable) { - } + override fun onSubscribe(d: Disposable) { + } - override fun onNext(foundContacts: ContactsByNumberOverall) { - Log.d(javaClass.simpleName, "next") + override fun onNext(foundContacts: ContactsByNumberOverall) { + up(foundContacts) + } - // todo update - up(foundContacts) - } + override fun onError(e: Throwable) { + Log.e(javaClass.simpleName, "Failed to searchContactsByPhoneNumber", e) + } - override fun onError(e: Throwable) { - // TODO error handling - Log.d(javaClass.simpleName, "error") - } - - }) + }) + } // store timestamp appPreferences.setPhoneBookIntegrationLastRun(System.currentTimeMillis()) From 6e885af18cfda528ed9aca969ba2dcf92678e6b5 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 17 Mar 2021 15:43:20 +0100 Subject: [PATCH 3/3] avoid Security Exeception from AccountManager --- .../com/nextcloud/talk/jobs/ContactAddressBookWorker.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt index d4c7092dd..69d7e63d3 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt @@ -86,7 +86,9 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar } } - AccountManager.get(context).addAccountExplicitly(Account(ACCOUNT_NAME, ACCOUNT_TYPE), "", null) + if(AccountManager.get(context).getAccountsByType(ACCOUNT_TYPE).isEmpty()){ + AccountManager.get(context).addAccountExplicitly(Account(ACCOUNT_NAME, ACCOUNT_TYPE), "", null) + } // collect all contacts with phone number val contactsWithNumbers = collectPhoneNumbers() @@ -319,9 +321,9 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar try { context.contentResolver.applyBatch(ContactsContract.AUTHORITY, ops) } catch (e: OperationApplicationException) { - e.printStackTrace() + Log.e(javaClass.simpleName, "", e) } catch (e: RemoteException) { - e.printStackTrace() + Log.e(javaClass.simpleName, "", e) } }