archive-97f2350/app/src/main/java/uk/orllewin/sianel/MainActivity.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package uk.orllewin.sianel
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
import uk.orllewin.sianel.ui.SianelRootScreen
import uk.orllewin.sianel.ui.SianelTheme
class MainActivity : ComponentActivity() {
// Compose-observable so onNewIntent can re-trigger the import effect even
// when the activity is already running (singleTop).
private var incomingUri by mutableStateOf<Uri?>(null)
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
incomingUri = extractVideoUri(intent)
setContent {
SianelTheme{
Surface {
SianelRootScreen(
externalUri = incomingUri,
onExternalUriConsumed = { incomingUri = null },
)
}
}
}
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
extractVideoUri(intent)?.let { incomingUri = it }
}
private fun extractVideoUri(intent: Intent?): Uri? {
if (intent == null) return null
return when (intent.action) {
Intent.ACTION_SEND -> {
if (Build.VERSION.SDK_INT >= 33) {
intent.getParcelableExtra(Intent.EXTRA_STREAM, Uri::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableExtra(Intent.EXTRA_STREAM)
}
}
Intent.ACTION_VIEW -> intent.data
else -> null
}
}
}