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

Unverified Commit 02885947 authored by Sunik Kupfer's avatar Sunik Kupfer Committed by Ricki Hirner
Browse files

Refactor DavService to WorkManager (bitfireAT/#164)



* SyncManager: remove retry intent
* refactor DavService to RefreshCollectionsWorker now using WorkManager
* move DavResourceFinder to new service detection package
* Optimize imports

Co-authored-by: default avatarRicki Hirner <hirner@bitfire.at>
parent 3f2fcda6
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -113,15 +113,19 @@ dependencies {
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'androidx.browser:browser:1.4.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.concurrent:concurrent-futures-ktx:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'androidx.fragment:fragment-ktx:1.5.4'
    implementation 'androidx.hilt:hilt-work:1.0.0'
    kapt 'androidx.hilt:hilt-compiler:1.0.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
    implementation 'androidx.paging:paging-runtime-ktx:3.1.1'
    implementation 'androidx.preference:preference-ktx:1.2.0'
    implementation 'androidx.security:security-crypto:1.1.0-alpha04'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
    implementation 'androidx.work:work-runtime-ktx:2.7.1'
    implementation 'com.google.android.flexbox:flexbox:3.0.0'
    implementation 'com.google.android.material:material:1.7.0'

@@ -160,6 +164,7 @@ dependencies {
    androidTestImplementation 'androidx.test:runner:1.5.1'
    androidTestImplementation 'androidx.test:rules:1.5.0'
    androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.4'
    androidTestImplementation 'androidx.work:work-testing:2.7.1'
    androidTestImplementation "com.squareup.okhttp3:mockwebserver:${versions.okhttp}"
    androidTestImplementation 'io.mockk:mockk-android:1.13.2'
    androidTestImplementation 'junit:junit:4.13.2'
+2 −1
Original line number Diff line number Diff line
@@ -13,8 +13,9 @@ import at.bitfire.dav4jvm.property.ResourceType
import at.bitfire.davdroid.HttpClient
import at.bitfire.davdroid.db.Credentials
import at.bitfire.davdroid.log.Logger
import at.bitfire.davdroid.servicedetection.DavResourceFinder
import at.bitfire.davdroid.settings.SettingsManager
import at.bitfire.davdroid.ui.setup.DavResourceFinder.Configuration.ServiceInfo
import at.bitfire.davdroid.servicedetection.DavResourceFinder.Configuration.ServiceInfo
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import okhttp3.mockwebserver.Dispatcher
+7 −1
Original line number Diff line number Diff line
@@ -50,7 +50,13 @@
        tools:ignore="UnusedAttribute"
        android:supportsRtl="true">

        <service android:name=".DavService"/>
        <!-- required for Hilt/WorkManager integration -->
        <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="${applicationId}.androidx-startup"
            tools:node="remove">
        </provider>

        <service android:name=".ForegroundService"/>

        <activity android:name=".ui.intro.IntroActivity" android:theme="@style/AppTheme.NoActionBar" />
+9 −2
Original line number Diff line number Diff line
@@ -10,6 +10,8 @@ import android.net.Uri
import android.os.StrictMode
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.graphics.drawable.toBitmap
import androidx.hilt.work.HiltWorkerFactory
import androidx.work.Configuration
import at.bitfire.davdroid.log.Logger
import at.bitfire.davdroid.settings.AccountSettings
import at.bitfire.davdroid.syncadapter.AccountsUpdatedListener
@@ -24,7 +26,7 @@ import kotlin.concurrent.thread
import kotlin.system.exitProcess

@HiltAndroidApp
class App: Application(), Thread.UncaughtExceptionHandler {
class App: Application(), Thread.UncaughtExceptionHandler, Configuration.Provider {

    companion object {

@@ -42,7 +44,7 @@ class App: Application(), Thread.UncaughtExceptionHandler {

    @Inject lateinit var accountsUpdatedListener: AccountsUpdatedListener
    @Inject lateinit var storageLowReceiver: StorageLowReceiver

    @Inject lateinit var workerFactory: HiltWorkerFactory

    override fun onCreate() {
        super.onCreate()
@@ -92,6 +94,11 @@ class App: Application(), Thread.UncaughtExceptionHandler {
        }
    }

    override fun getWorkManagerConfiguration() =
        Configuration.Builder()
            .setWorkerFactory(workerFactory)
            .build()

    override fun uncaughtException(t: Thread, e: Throwable) {
        Logger.log.log(Level.SEVERE, "Unhandled exception!", e)

+1 −3
Original line number Diff line number Diff line
@@ -17,9 +17,7 @@ import at.bitfire.davdroid.log.Logger
import at.bitfire.ical4android.AndroidTaskList
import at.bitfire.ical4android.AndroidTaskListFactory
import at.bitfire.ical4android.TaskProvider
import org.dmfs.tasks.contract.TaskContract.Tasks
import org.dmfs.tasks.contract.TaskContract.TaskLists
import org.dmfs.tasks.contract.TaskContract.TaskListColumns
import org.dmfs.tasks.contract.TaskContract.*
import java.util.logging.Level

class LocalTaskList private constructor(
Loading