mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-19 10:45:13 +01:00
Merge pull request #1068 from nextcloud/fixNullNameInPhonebook
Fix null name in phonebook
This commit is contained in:
commit
c9dc3938b1
@ -38,6 +38,8 @@ import androidx.work.*
|
|||||||
import autodagger.AutoInjector
|
import autodagger.AutoInjector
|
||||||
import com.bluelinelabs.conductor.Controller
|
import com.bluelinelabs.conductor.Controller
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
|
import com.nextcloud.talk.BuildConfig
|
||||||
|
import com.nextcloud.talk.R
|
||||||
import com.nextcloud.talk.api.NcApi
|
import com.nextcloud.talk.api.NcApi
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||||
@ -52,7 +54,6 @@ import io.reactivex.schedulers.Schedulers
|
|||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import com.nextcloud.talk.R
|
|
||||||
|
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication::class)
|
@AutoInjector(NextcloudTalkApplication::class)
|
||||||
@ -68,11 +69,17 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var appPreferences: AppPreferences
|
lateinit var appPreferences: AppPreferences
|
||||||
|
|
||||||
|
private lateinit var accountName: String
|
||||||
|
private lateinit var accountType: String
|
||||||
|
|
||||||
override fun doWork(): Result {
|
override fun doWork(): Result {
|
||||||
sharedApplication!!.componentApplication.inject(this)
|
sharedApplication!!.componentApplication.inject(this)
|
||||||
|
|
||||||
val currentUser = userUtils.currentUser
|
val currentUser = userUtils.currentUser
|
||||||
|
|
||||||
|
accountName = context.getString(R.string.nc_app_name)
|
||||||
|
accountType = BuildConfig.APPLICATION_ID
|
||||||
|
|
||||||
if (currentUser == null) {
|
if (currentUser == null) {
|
||||||
Log.e(javaClass.simpleName, "No current user!")
|
Log.e(javaClass.simpleName, "No current user!")
|
||||||
return Result.failure()
|
return Result.failure()
|
||||||
@ -86,8 +93,10 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(AccountManager.get(context).getAccountsByType(ACCOUNT_TYPE).isEmpty()){
|
if(AccountManager.get(context).getAccountsByType(accountType).isEmpty()){
|
||||||
AccountManager.get(context).addAccountExplicitly(Account(ACCOUNT_NAME, ACCOUNT_TYPE), "", null)
|
AccountManager.get(context).addAccountExplicitly(Account(accountName, accountType), "", null)
|
||||||
|
} else {
|
||||||
|
Log.d(TAG, "Account already exists")
|
||||||
}
|
}
|
||||||
|
|
||||||
// collect all contacts with phone number
|
// collect all contacts with phone number
|
||||||
@ -182,12 +191,12 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
private fun up(foundContacts: ContactsByNumberOverall) {
|
private fun up(foundContacts: ContactsByNumberOverall) {
|
||||||
val map = foundContacts.ocs.map
|
val map = foundContacts.ocs.map
|
||||||
|
|
||||||
// Delete all old associations (those that are associated on phone, but not in server response)
|
// Delete all old associations (those that are associated on phone, but not in server response)
|
||||||
val rawContactUri = ContactsContract.Data.CONTENT_URI
|
val rawContactUri = ContactsContract.Data.CONTENT_URI
|
||||||
.buildUpon()
|
.buildUpon()
|
||||||
.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
|
.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
|
||||||
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_NAME, "Nextcloud Talk")
|
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
|
||||||
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.nextcloud.talk2")
|
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
|
||||||
.appendQueryParameter(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.com.nextcloud.talk2.chat")
|
.appendQueryParameter(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.com.nextcloud.talk2.chat")
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
@ -224,7 +233,7 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
for (contact in foundContacts.ocs.map) {
|
for (contact in foundContacts.ocs.map) {
|
||||||
val lookupKey = contact.key
|
val lookupKey = contact.key
|
||||||
val cloudId = contact.value
|
val cloudId = contact.value
|
||||||
|
|
||||||
update(lookupKey, cloudId)
|
update(lookupKey, cloudId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -292,8 +301,8 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
|
|
||||||
ops.add(ContentProviderOperation
|
ops.add(ContentProviderOperation
|
||||||
.newInsert(rawContactsUri)
|
.newInsert(rawContactsUri)
|
||||||
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, ACCOUNT_NAME)
|
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
|
||||||
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, ACCOUNT_TYPE)
|
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
|
||||||
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE,
|
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE,
|
||||||
ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
|
ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
|
||||||
.withValue(ContactsContract.RawContacts.SYNC2, cloudId)
|
.withValue(ContactsContract.RawContacts.SYNC2, cloudId)
|
||||||
@ -337,8 +346,8 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
val rawContactUri = ContactsContract.RawContacts.CONTENT_URI
|
val rawContactUri = ContactsContract.RawContacts.CONTENT_URI
|
||||||
.buildUpon()
|
.buildUpon()
|
||||||
.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
|
.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
|
||||||
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_NAME, "Nextcloud Talk")
|
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
|
||||||
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.nextcloud.talk2")
|
.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
|
||||||
@ -350,8 +359,6 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar
|
|||||||
const val TAG = "ContactAddressBook"
|
const val TAG = "ContactAddressBook"
|
||||||
const val REQUEST_PERMISSION = 231
|
const val REQUEST_PERMISSION = 231
|
||||||
const val KEY_FORCE = "KEY_FORCE"
|
const val KEY_FORCE = "KEY_FORCE"
|
||||||
const val ACCOUNT_TYPE = "com.nextcloud.talk2"
|
|
||||||
const val ACCOUNT_NAME = "Nextcloud Talk"
|
|
||||||
|
|
||||||
fun run(context: Context) {
|
fun run(context: Context) {
|
||||||
if (ContextCompat.checkSelfPermission(context,
|
if (ContextCompat.checkSelfPermission(context,
|
||||||
|
@ -23,4 +23,4 @@
|
|||||||
android:accountType="com.nextcloud.talk2"
|
android:accountType="com.nextcloud.talk2"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:smallIcon="@mipmap/ic_launcher"
|
android:smallIcon="@mipmap/ic_launcher"
|
||||||
android:label="Nextcloud Talk"/>
|
android:label="@string/nc_app_name"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user