mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-17 04:20:00 +03:00
Remove usage of GlobalScope
This commit is contained in:
parent
8211cc266f
commit
1f7482922d
5 changed files with 46 additions and 19 deletions
|
@ -18,6 +18,7 @@ package im.vector.app.features.media
|
||||||
|
|
||||||
import im.vector.app.core.date.VectorDateFormatter
|
import im.vector.app.core.date.VectorDateFormatter
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
import org.matrix.android.sdk.api.session.room.Room
|
import org.matrix.android.sdk.api.session.room.Room
|
||||||
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
||||||
|
@ -30,24 +31,31 @@ class AttachmentProviderFactory @Inject constructor(
|
||||||
private val session: Session
|
private val session: Session
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun createProvider(attachments: List<TimelineEvent>): RoomEventsAttachmentProvider {
|
fun createProvider(attachments: List<TimelineEvent>,
|
||||||
|
coroutineScope: CoroutineScope
|
||||||
|
): RoomEventsAttachmentProvider {
|
||||||
return RoomEventsAttachmentProvider(
|
return RoomEventsAttachmentProvider(
|
||||||
attachments,
|
attachments = attachments,
|
||||||
imageContentRenderer,
|
imageContentRenderer = imageContentRenderer,
|
||||||
vectorDateFormatter,
|
dateFormatter = vectorDateFormatter,
|
||||||
session.fileService(),
|
fileService = session.fileService(),
|
||||||
stringProvider
|
coroutineScope = coroutineScope,
|
||||||
|
stringProvider = stringProvider
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createProvider(attachments: List<AttachmentData>, room: Room?): DataAttachmentRoomProvider {
|
fun createProvider(attachments: List<AttachmentData>,
|
||||||
|
room: Room?,
|
||||||
|
coroutineScope: CoroutineScope
|
||||||
|
): DataAttachmentRoomProvider {
|
||||||
return DataAttachmentRoomProvider(
|
return DataAttachmentRoomProvider(
|
||||||
attachments,
|
attachments = attachments,
|
||||||
room,
|
room = room,
|
||||||
imageContentRenderer,
|
imageContentRenderer = imageContentRenderer,
|
||||||
vectorDateFormatter,
|
dateFormatter = vectorDateFormatter,
|
||||||
session.fileService(),
|
fileService = session.fileService(),
|
||||||
stringProvider
|
coroutineScope = coroutineScope,
|
||||||
|
stringProvider = stringProvider
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@ import im.vector.lib.attachmentviewer.AttachmentInfo
|
||||||
import im.vector.lib.attachmentviewer.AttachmentSourceProvider
|
import im.vector.lib.attachmentviewer.AttachmentSourceProvider
|
||||||
import im.vector.lib.attachmentviewer.ImageLoaderTarget
|
import im.vector.lib.attachmentviewer.ImageLoaderTarget
|
||||||
import im.vector.lib.attachmentviewer.VideoLoaderTarget
|
import im.vector.lib.attachmentviewer.VideoLoaderTarget
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.matrix.android.sdk.api.session.events.model.isVideoMessage
|
import org.matrix.android.sdk.api.session.events.model.isVideoMessage
|
||||||
|
@ -44,6 +44,7 @@ abstract class BaseAttachmentProvider<Type>(
|
||||||
private val attachments: List<Type>,
|
private val attachments: List<Type>,
|
||||||
private val imageContentRenderer: ImageContentRenderer,
|
private val imageContentRenderer: ImageContentRenderer,
|
||||||
protected val fileService: FileService,
|
protected val fileService: FileService,
|
||||||
|
private val coroutineScope: CoroutineScope,
|
||||||
private val dateFormatter: VectorDateFormatter,
|
private val dateFormatter: VectorDateFormatter,
|
||||||
private val stringProvider: StringProvider
|
private val stringProvider: StringProvider
|
||||||
) : AttachmentSourceProvider {
|
) : AttachmentSourceProvider {
|
||||||
|
@ -155,7 +156,7 @@ abstract class BaseAttachmentProvider<Type>(
|
||||||
target.onVideoURLReady(info.uid, data.url)
|
target.onVideoURLReady(info.uid, data.url)
|
||||||
} else {
|
} else {
|
||||||
target.onVideoFileLoading(info.uid)
|
target.onVideoFileLoading(info.uid)
|
||||||
GlobalScope.launch(Dispatchers.Main) {
|
coroutineScope.launch(Dispatchers.IO) {
|
||||||
val result = runCatching {
|
val result = runCatching {
|
||||||
fileService.downloadFile(
|
fileService.downloadFile(
|
||||||
fileName = data.filename,
|
fileName = data.filename,
|
||||||
|
|
|
@ -19,6 +19,7 @@ package im.vector.app.features.media
|
||||||
import im.vector.app.core.date.VectorDateFormatter
|
import im.vector.app.core.date.VectorDateFormatter
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.lib.attachmentviewer.AttachmentInfo
|
import im.vector.lib.attachmentviewer.AttachmentInfo
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||||
import org.matrix.android.sdk.api.session.file.FileService
|
import org.matrix.android.sdk.api.session.file.FileService
|
||||||
import org.matrix.android.sdk.api.session.room.Room
|
import org.matrix.android.sdk.api.session.room.Room
|
||||||
|
@ -32,8 +33,16 @@ class DataAttachmentRoomProvider(
|
||||||
imageContentRenderer: ImageContentRenderer,
|
imageContentRenderer: ImageContentRenderer,
|
||||||
dateFormatter: VectorDateFormatter,
|
dateFormatter: VectorDateFormatter,
|
||||||
fileService: FileService,
|
fileService: FileService,
|
||||||
|
coroutineScope: CoroutineScope,
|
||||||
stringProvider: StringProvider
|
stringProvider: StringProvider
|
||||||
) : BaseAttachmentProvider<AttachmentData>(attachments, imageContentRenderer, fileService, dateFormatter, stringProvider) {
|
) : BaseAttachmentProvider<AttachmentData>(
|
||||||
|
attachments = attachments,
|
||||||
|
imageContentRenderer = imageContentRenderer,
|
||||||
|
fileService = fileService,
|
||||||
|
coroutineScope = coroutineScope,
|
||||||
|
dateFormatter = dateFormatter,
|
||||||
|
stringProvider = stringProvider
|
||||||
|
) {
|
||||||
|
|
||||||
override fun getAttachmentInfoAt(position: Int): AttachmentInfo {
|
override fun getAttachmentInfoAt(position: Int): AttachmentInfo {
|
||||||
return getItem(position).let {
|
return getItem(position).let {
|
||||||
|
|
|
@ -19,6 +19,7 @@ package im.vector.app.features.media
|
||||||
import im.vector.app.core.date.VectorDateFormatter
|
import im.vector.app.core.date.VectorDateFormatter
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.lib.attachmentviewer.AttachmentInfo
|
import im.vector.lib.attachmentviewer.AttachmentInfo
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||||
import org.matrix.android.sdk.api.session.events.model.toModel
|
import org.matrix.android.sdk.api.session.events.model.toModel
|
||||||
import org.matrix.android.sdk.api.session.file.FileService
|
import org.matrix.android.sdk.api.session.file.FileService
|
||||||
|
@ -38,8 +39,16 @@ class RoomEventsAttachmentProvider(
|
||||||
imageContentRenderer: ImageContentRenderer,
|
imageContentRenderer: ImageContentRenderer,
|
||||||
dateFormatter: VectorDateFormatter,
|
dateFormatter: VectorDateFormatter,
|
||||||
fileService: FileService,
|
fileService: FileService,
|
||||||
|
coroutineScope: CoroutineScope,
|
||||||
stringProvider: StringProvider
|
stringProvider: StringProvider
|
||||||
) : BaseAttachmentProvider<TimelineEvent>(attachments, imageContentRenderer, fileService, dateFormatter, stringProvider) {
|
) : BaseAttachmentProvider<TimelineEvent>(
|
||||||
|
attachments = attachments,
|
||||||
|
imageContentRenderer = imageContentRenderer,
|
||||||
|
fileService = fileService,
|
||||||
|
coroutineScope = coroutineScope,
|
||||||
|
dateFormatter = dateFormatter,
|
||||||
|
stringProvider = stringProvider
|
||||||
|
) {
|
||||||
|
|
||||||
override fun getAttachmentInfoAt(position: Int): AttachmentInfo {
|
override fun getAttachmentInfoAt(position: Int): AttachmentInfo {
|
||||||
return getItem(position).let {
|
return getItem(position).let {
|
||||||
|
|
|
@ -122,11 +122,11 @@ class VectorAttachmentViewerActivity : AttachmentViewerActivity(), BaseAttachmen
|
||||||
val inMemoryData = intent.getParcelableArrayListExtra<AttachmentData>(EXTRA_IN_MEMORY_DATA)
|
val inMemoryData = intent.getParcelableArrayListExtra<AttachmentData>(EXTRA_IN_MEMORY_DATA)
|
||||||
val sourceProvider = if (inMemoryData != null) {
|
val sourceProvider = if (inMemoryData != null) {
|
||||||
initialIndex = inMemoryData.indexOfFirst { it.eventId == args.eventId }.coerceAtLeast(0)
|
initialIndex = inMemoryData.indexOfFirst { it.eventId == args.eventId }.coerceAtLeast(0)
|
||||||
dataSourceFactory.createProvider(inMemoryData, room)
|
dataSourceFactory.createProvider(inMemoryData, room, lifecycleScope)
|
||||||
} else {
|
} else {
|
||||||
val events = room?.getAttachmentMessages().orEmpty()
|
val events = room?.getAttachmentMessages().orEmpty()
|
||||||
initialIndex = events.indexOfFirst { it.eventId == args.eventId }.coerceAtLeast(0)
|
initialIndex = events.indexOfFirst { it.eventId == args.eventId }.coerceAtLeast(0)
|
||||||
dataSourceFactory.createProvider(events)
|
dataSourceFactory.createProvider(events, lifecycleScope)
|
||||||
}
|
}
|
||||||
sourceProvider.interactionListener = this
|
sourceProvider.interactionListener = this
|
||||||
setSourceProvider(sourceProvider)
|
setSourceProvider(sourceProvider)
|
||||||
|
|
Loading…
Add table
Reference in a new issue