Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit ca26155e authored by Arnau Mora's avatar Arnau Mora Committed by Ricki Hirner
Browse files

jtxBoard collections: honor "Manage calendar colors" account setting (bitfireAT/davx5#427)



Signed-off-by: default avatarArnau Mora <arnyminerz@proton.me>
parent 1a36ee2d
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ package at.bitfire.davdroid.resource
import android.accounts.Account
import android.content.ContentProviderClient
import android.content.ContentValues
import at.bitfire.davdroid.Constants
import at.bitfire.davdroid.db.*
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.log.Logger
@@ -24,11 +25,11 @@ class LocalJtxCollection(account: Account, client: ContentProviderClient, id: Lo
    companion object {

        fun create(account: Account, client: ContentProviderClient, info: Collection, owner: Principal?) {
            val values = valuesFromCollection(info, account, owner)
            val values = valuesFromCollection(info, account, owner, true)
            create(account, client, values)
        }

        fun valuesFromCollection(info: Collection, account: Account, owner: Principal?) =
        fun valuesFromCollection(info: Collection, account: Account, owner: Principal?, withColor: Boolean) =
            ContentValues().apply {
                put(JtxContract.JtxCollection.URL, info.url.toString())
                put(JtxContract.JtxCollection.DISPLAYNAME, info.displayName ?: DavUtils.lastSegmentOfUrl(info.url))
@@ -37,7 +38,8 @@ class LocalJtxCollection(account: Account, client: ContentProviderClient, id: Lo
                    put(JtxContract.JtxCollection.OWNER, owner.url.toString())
                else Logger.log.log(Level.SEVERE, "No collection owner given. Will create jtx collection without owner")
                put(JtxContract.JtxCollection.OWNER_DISPLAYNAME, owner?.displayName)
                put(JtxContract.JtxCollection.COLOR, info.color)
                if (withColor)
                    put(JtxContract.JtxCollection.COLOR, info.color ?: Constants.DAVDROID_GREEN_RGBA)
                put(JtxContract.JtxCollection.SUPPORTSVEVENT, info.supportsVEVENT)
                put(JtxContract.JtxCollection.SUPPORTSVJOURNAL, info.supportsVJOURNAL)
                put(JtxContract.JtxCollection.SUPPORTSVTODO, info.supportsVTODO)
@@ -55,8 +57,8 @@ class LocalJtxCollection(account: Account, client: ContentProviderClient, id: Lo
        get() = SyncState.fromString(syncstate)
        set(value) { syncstate = value.toString() }

    fun updateCollection(info: Collection, owner: Principal?) {
        val values = valuesFromCollection(info, account, owner)
    fun updateCollection(info: Collection, owner: Principal?, withColor: Boolean) {
        val values = valuesFromCollection(info, account, owner, withColor)
        update(values)
    }

+5 −3
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ class JtxSyncer(context: Context): Syncer(context) {
            val accountSettings = AccountSettings(context, account)

            // sync list of collections
            updateLocalCollections(account, provider)
            updateLocalCollections(account, provider, accountSettings)

            // sync contents of collections
            val collections = JtxCollection.find(account, provider, context, LocalJtxCollection.Factory, null, null)
@@ -69,7 +69,7 @@ class JtxSyncer(context: Context): Syncer(context) {
        Logger.log.info("jtx sync complete")
    }

    private fun updateLocalCollections(account: Account, client: ContentProviderClient) {
    private fun updateLocalCollections(account: Account, client: ContentProviderClient, settings: AccountSettings) {
        val service = db.serviceDao().getByAccountAndType(account.name, Service.TYPE_CALDAV)

        val remoteCollections = mutableMapOf<HttpUrl, Collection>()
@@ -77,6 +77,8 @@ class JtxSyncer(context: Context): Syncer(context) {
            for (collection in db.collectionDao().getSyncJtxCollections(service.id))
                remoteCollections[collection.url] = collection

        val updateColors = settings.getManageCalendarColors()

        for (jtxCollection in JtxCollection.find(account, client, context, LocalJtxCollection.Factory, null, null))
            jtxCollection.url?.let { strUrl ->
                val url = strUrl.toHttpUrl()
@@ -88,7 +90,7 @@ class JtxSyncer(context: Context): Syncer(context) {
                    // remote CollectionInfo found for this local collection, update data
                    Logger.log.log(Level.FINE, "Updating local collection $url", info)
                    val owner = info.ownerId?.let { db.principalDao().get(it) }
                    jtxCollection.updateCollection(info, owner)
                    jtxCollection.updateCollection(info, owner, updateColors)
                    // we already have a local task list for this remote collection, don't take into consideration anymore
                    remoteCollections -= url
                }