Skip to content

Commit d4def7c

Browse files
sentinelwebsentinelweb
authored andcommitted
#496 - auto paste for youtube media links
1 parent 86db482 commit d4def7c

File tree

3 files changed

+46
-14
lines changed

3 files changed

+46
-14
lines changed

app/src/main/java/uk/co/sentinelweb/cuer/app/ui/main/MainActivity.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,15 +196,26 @@ class MainActivity :
196196
}
197197

198198
fun checkIntentAndPasteAdd() {
199-
// check clipboard data
200199
clipboard.getPrimaryClip()
201200
?.getItemAt(0)
202201
?.text
203-
?.takeIf { it.startsWith("http") }
202+
?.toString()
204203
?.also { startActivity(ShareActivity.intent(this, true)) }
205204
?: also { snackBarWrapper.makeError("There's no url on the clipboard").show() }
206205
}
207206

207+
fun checkOnResumeIntentAndPasteAdd() {
208+
lifecycleScope.launch {
209+
delay(50)
210+
clipboard.getPrimaryClip()
211+
?.getItemAt(0)
212+
?.text
213+
?.toString()
214+
?.let { presenter.checkClipboardUrl(it) }
215+
?.also { startActivity(ShareActivity.intent(this@MainActivity, true)) }
216+
}
217+
}
218+
208219
override fun checkPlayServices() {
209220
chromeCastWrapper.checkPlayServices(
210221
this,
@@ -241,6 +252,11 @@ class MainActivity :
241252
hideShowPlayerIfOnboarding()
242253
}
243254

255+
override fun onResume() {
256+
super.onResume()
257+
checkOnResumeIntentAndPasteAdd()
258+
}
259+
244260
override fun onStop() {
245261
super.onStop()
246262
presenter.onStop()
@@ -409,8 +425,9 @@ class MainActivity :
409425
}
410426

411427
fun startFromService(c: Context) {
412-
c.startActivity(Intent(c, MainActivity::class.java)
413-
.apply { setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
428+
c.startActivity(
429+
Intent(c, MainActivity::class.java)
430+
.apply { setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
414431
}
415432
}
416433
}

app/src/main/java/uk/co/sentinelweb/cuer/app/ui/main/MainContract.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,11 @@ interface MainContract {
3939

4040
interface Presenter {
4141
fun initialise()
42-
43-
//fun startServer()
4442
fun onStart()
4543
fun onStop()
4644
fun onPlayServicesOk()
4745
fun onDestroy()
48-
//fun restartYtCastContext()
46+
suspend fun checkClipboardUrl(primaryClip: String): String?
4947
}
5048

5149
interface View {
@@ -83,7 +81,9 @@ interface MainContract {
8381
floatingPlayerCastListener = get(),
8482
autoBackupFileExporter = get(),
8583
notificationPermissionCheckDialog = get(),
86-
castController = get()
84+
castController = get(),
85+
linkScanner = get(),
86+
mediaOrchestrator = get(),
8787
)
8888
}
8989
scoped {

app/src/main/java/uk/co/sentinelweb/cuer/app/ui/main/MainPresenter.kt

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package uk.co.sentinelweb.cuer.app.ui.main
22

33
import uk.co.sentinelweb.cuer.app.backup.AutoBackupFileExporter
4+
import uk.co.sentinelweb.cuer.app.orchestrator.MediaOrchestrator
5+
import uk.co.sentinelweb.cuer.app.orchestrator.OrchestratorContract.Filter.PlatformIdListFilter
6+
import uk.co.sentinelweb.cuer.app.orchestrator.OrchestratorContract.Options
7+
import uk.co.sentinelweb.cuer.app.orchestrator.OrchestratorContract.Source.LOCAL
48
import uk.co.sentinelweb.cuer.app.ui.cast.CastController
59
import uk.co.sentinelweb.cuer.app.ui.ytplayer.floating.FloatingPlayerContract
610
import uk.co.sentinelweb.cuer.app.util.chromecast.listener.ChromecastContract
711
import uk.co.sentinelweb.cuer.app.util.permission.NotificationPermissionCheckDialog
12+
import uk.co.sentinelweb.cuer.app.util.share.scan.LinkScanner
813
import uk.co.sentinelweb.cuer.core.wrapper.LogWrapper
14+
import uk.co.sentinelweb.cuer.domain.MediaDomain
15+
import uk.co.sentinelweb.cuer.domain.ObjectTypeDomain
16+
import uk.co.sentinelweb.cuer.domain.PlatformDomain
917

1018
class MainPresenter(
1119
private val view: MainContract.View,
@@ -17,6 +25,8 @@ class MainPresenter(
1725
private val autoBackupFileExporter: AutoBackupFileExporter,
1826
private val notificationPermissionCheckDialog: NotificationPermissionCheckDialog,
1927
private val castController: CastController,
28+
private val linkScanner: LinkScanner,
29+
private val mediaOrchestrator: MediaOrchestrator,
2030
) : MainContract.Presenter {
2131

2232
init {
@@ -40,7 +50,6 @@ class MainPresenter(
4050
}
4151

4252
override fun onDestroy() {
43-
4453
}
4554

4655
// private fun initialiseCastContext() {
@@ -72,9 +81,15 @@ class MainPresenter(
7281
}
7382
}
7483

75-
// override fun restartYtCastContext() {
76-
// ytContextHolder.destroy()
77-
// ytContextHolder.create()
78-
// }
79-
84+
override suspend fun checkClipboardUrl(primaryClip: String): String? =
85+
linkScanner
86+
.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
93+
}
94+
?.url
8095
}

0 commit comments

Comments
 (0)