-
Notifications
You must be signed in to change notification settings - Fork 19
/
EnqueueImportContentEntryUseCaseAndroid.kt
47 lines (41 loc) · 1.74 KB
/
EnqueueImportContentEntryUseCaseAndroid.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
package com.ustadmobile.core.domain.contententry.importcontent
import android.content.Context
import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import com.ustadmobile.core.account.Endpoint
import com.ustadmobile.core.db.UmAppDatabase
import com.ustadmobile.core.io.ext.isRemote
import com.ustadmobile.door.DoorUri
import com.ustadmobile.lib.db.entities.ContentEntryImportJob
/**
* @param enqueueRemoteImport delegate used when the user is importing a remote link link eg http/https
*/
class EnqueueImportContentEntryUseCaseAndroid(
private val db: UmAppDatabase,
private val appContext: Context,
private val endpoint: Endpoint,
private val enqueueRemoteImport: EnqueueContentEntryImportUseCase,
) : EnqueueContentEntryImportUseCase {
override suspend fun invoke(
contentJobItem: ContentEntryImportJob,
) {
val sourceUri = DoorUri.parse(contentJobItem.sourceUri!!)
if(sourceUri.isRemote()) {
enqueueRemoteImport(contentJobItem)
}else{
val uid = db.contentEntryImportJobDao.insertJobItem(contentJobItem)
val jobData = Data.Builder()
.putString(EnqueueContentEntryImportUseCase.DATA_ENDPOINT, endpoint.url)
.putLong(EnqueueContentEntryImportUseCase.DATA_JOB_UID, uid)
.build()
val workRequest = OneTimeWorkRequestBuilder<ImportContentEntryWorker>()
.setInputData(jobData)
.build()
WorkManager.getInstance(appContext).enqueueUniqueWork(
EnqueueContentEntryImportUseCase.uniqueNameFor(endpoint, uid),
ExistingWorkPolicy.REPLACE, workRequest)
}
}
}