@@ -3,17 +3,20 @@ package uk.co.sentinelweb.cuer.app.ui.main
3
3
import uk.co.sentinelweb.cuer.app.backup.AutoBackupFileExporter
4
4
import uk.co.sentinelweb.cuer.app.orchestrator.MediaOrchestrator
5
5
import uk.co.sentinelweb.cuer.app.orchestrator.OrchestratorContract.Filter.PlatformIdListFilter
6
- import uk.co.sentinelweb.cuer.app.orchestrator.OrchestratorContract.Options
7
6
import uk.co.sentinelweb.cuer.app.orchestrator.OrchestratorContract.Source.LOCAL
7
+ import uk.co.sentinelweb.cuer.app.orchestrator.PlaylistOrchestrator
8
+ import uk.co.sentinelweb.cuer.app.orchestrator.flatOptions
8
9
import uk.co.sentinelweb.cuer.app.ui.cast.CastController
9
10
import uk.co.sentinelweb.cuer.app.ui.ytplayer.floating.FloatingPlayerContract
10
11
import uk.co.sentinelweb.cuer.app.util.chromecast.listener.ChromecastContract
11
12
import uk.co.sentinelweb.cuer.app.util.permission.NotificationPermissionCheckDialog
12
13
import uk.co.sentinelweb.cuer.app.util.share.scan.LinkScanner
13
14
import uk.co.sentinelweb.cuer.core.wrapper.LogWrapper
14
15
import uk.co.sentinelweb.cuer.domain.MediaDomain
15
- import uk.co.sentinelweb.cuer.domain.ObjectTypeDomain
16
+ import uk.co.sentinelweb.cuer.domain.ObjectTypeDomain.MEDIA
17
+ import uk.co.sentinelweb.cuer.domain.ObjectTypeDomain.PLAYLIST
16
18
import uk.co.sentinelweb.cuer.domain.PlatformDomain
19
+ import uk.co.sentinelweb.cuer.domain.PlaylistDomain
17
20
18
21
class MainPresenter (
19
22
private val view : MainContract .View ,
@@ -27,6 +30,7 @@ class MainPresenter(
27
30
private val castController : CastController ,
28
31
private val linkScanner : LinkScanner ,
29
32
private val mediaOrchestrator : MediaOrchestrator ,
33
+ private val playlistOrchestrator : PlaylistOrchestrator ,
30
34
) : MainContract.Presenter {
31
35
32
36
init {
@@ -84,12 +88,31 @@ class MainPresenter(
84
88
override suspend fun checkClipboardUrl (primaryClip : String ): String? =
85
89
linkScanner
86
90
.scan(primaryClip)
87
- ?.takeIf { it.first == ObjectTypeDomain .MEDIA && (it.second as MediaDomain ).platform == PlatformDomain .YOUTUBE }
88
- ?.let { it.second as MediaDomain }
89
- ?.takeIf {
90
- mediaOrchestrator.loadList(
91
- PlatformIdListFilter (listOf (it.platformId)), Options (LOCAL )
92
- ).size == 0
91
+ ?.takeIf { listOf (MEDIA , PLAYLIST ).contains(it.first) }
92
+ ?.let {
93
+ when (it.first) {
94
+ MEDIA -> {
95
+ (it.second as MediaDomain )
96
+ .takeIf { it.platform == PlatformDomain .YOUTUBE }
97
+ ?.platformId
98
+ ?.takeIf {
99
+ mediaOrchestrator.loadList(
100
+ PlatformIdListFilter (listOf (it)),
101
+ LOCAL .flatOptions()
102
+ ).size == 0
103
+ }
104
+ ?.let { primaryClip }
105
+ }
106
+
107
+ PLAYLIST -> {
108
+ (it.second as PlaylistDomain )
109
+ .takeIf { it.platform == PlatformDomain .YOUTUBE }
110
+ ?.platformId
111
+ ?.takeIf { playlistOrchestrator.loadByPlatformId(it, LOCAL .flatOptions()) == null }
112
+ ?.let { primaryClip }
113
+ }
114
+
115
+ else -> null
116
+ }
93
117
}
94
- ?.url
95
118
}
0 commit comments