dynamically set accountType and accountName

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2021-03-23 21:48:26 +01:00
parent 8c86fa0135
commit d9f9f8c280
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B

View File

@ -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,19 @@ 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
Log.d(TAG, "accountName: " + accountName)
Log.d(TAG, "accountType: " + accountType)
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 +95,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 +193,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 +235,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 +303,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 +348,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 +361,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,