-
Notifications
You must be signed in to change notification settings - Fork 19
/
WireWorkerFactory.kt
69 lines (60 loc) 路 3.13 KB
/
WireWorkerFactory.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
* Wire
* Copyright (C) 2024 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.android.workmanager
import android.content.Context
import androidx.work.ListenableWorker
import androidx.work.WorkerFactory
import androidx.work.WorkerParameters
import com.wire.android.di.KaliumCoreLogic
import com.wire.android.feature.StartPersistentWebsocketIfNecessaryUseCase
import com.wire.android.migration.MigrationManager
import com.wire.android.notification.NotificationChannelsManager
import com.wire.android.notification.WireNotificationManager
import com.wire.android.workmanager.worker.MigrationWorker
import com.wire.android.workmanager.worker.NotificationFetchWorker
import com.wire.android.workmanager.worker.PersistentWebsocketCheckWorker
import com.wire.android.workmanager.worker.SingleUserMigrationWorker
import com.wire.kalium.logic.CoreLogic
import com.wire.kalium.logic.sync.WrapperWorker
import com.wire.kalium.logic.sync.WrapperWorkerFactory
import javax.inject.Inject
class WireWorkerFactory @Inject constructor(
private val wireNotificationManager: WireNotificationManager,
private val notificationChannelsManager: NotificationChannelsManager,
private val migrationManager: MigrationManager,
private val startPersistentWebsocketIfNecessary: StartPersistentWebsocketIfNecessaryUseCase,
@KaliumCoreLogic
private val coreLogic: CoreLogic
) : WorkerFactory() {
override fun createWorker(appContext: Context, workerClassName: String, workerParameters: WorkerParameters): ListenableWorker? {
return when (workerClassName) {
WrapperWorker::class.java.canonicalName ->
WrapperWorkerFactory(coreLogic, WireForegroundNotificationDetailsProvider)
.createWorker(appContext, workerClassName, workerParameters)
NotificationFetchWorker::class.java.canonicalName ->
NotificationFetchWorker(appContext, workerParameters, wireNotificationManager, notificationChannelsManager)
MigrationWorker::class.java.canonicalName ->
MigrationWorker(appContext, workerParameters, migrationManager, notificationChannelsManager)
SingleUserMigrationWorker::class.java.canonicalName ->
SingleUserMigrationWorker(appContext, workerParameters, migrationManager, notificationChannelsManager)
PersistentWebsocketCheckWorker::class.java.canonicalName ->
PersistentWebsocketCheckWorker(appContext, workerParameters, startPersistentWebsocketIfNecessary)
else -> null
}
}
}