BayernMessenger/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/DefaultSendService.kt

37 lines
1.3 KiB
Kotlin
Raw Normal View History

package im.vector.matrix.android.internal.session.room.send
2018-11-09 13:06:23 +00:00
import androidx.work.*
import im.vector.matrix.android.api.session.room.SendService
import im.vector.matrix.android.api.util.Cancelable
import im.vector.matrix.android.internal.util.CancelableWork
2018-11-09 13:06:23 +00:00
import im.vector.matrix.android.internal.util.WorkerParamsFactory
import java.util.concurrent.TimeUnit
2018-11-09 13:06:23 +00:00
private const val SEND_WORK = "SEND_WORK"
internal class DefaultSendService(private val roomId: String) : SendService {
private val sendConstraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
override fun sendTextMessage(text: String): Cancelable {
val sendContentWorkerParams = SendEventWorker.Params(roomId, text)
2018-11-09 13:06:23 +00:00
val workData = WorkerParamsFactory.toData(sendContentWorkerParams)
2018-11-09 13:06:23 +00:00
val sendWork = OneTimeWorkRequestBuilder<SendEventWorker>()
.setConstraints(sendConstraints)
.setInputData(workData)
.setBackoffCriteria(BackoffPolicy.LINEAR, 10_000, TimeUnit.MILLISECONDS)
.build()
val work = WorkManager.getInstance()
2018-11-09 13:06:23 +00:00
.beginUniqueWork(SEND_WORK, ExistingWorkPolicy.APPEND, sendWork)
.enqueue()
return CancelableWork(work)
}
}