Skip to content

Commit d294d0e

Browse files
update events listeners
1 parent 2ab8ccb commit d294d0e

1 file changed

Lines changed: 222 additions & 7 deletions

File tree

WebApp/src/jsMain/kotlin/main.kt

Lines changed: 222 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ import androidx.compose.runtime.*
22
import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions
33
import dev.inmo.tgbotapi.types.webAppQueryIdField
44
import dev.inmo.tgbotapi.webapps.*
5+
import dev.inmo.tgbotapi.webapps.accelerometer.AccelerometerStartParams
56
import dev.inmo.tgbotapi.webapps.cloud.*
67
import dev.inmo.tgbotapi.webapps.events.*
8+
import dev.inmo.tgbotapi.webapps.gyroscope.GyroscopeStartParams
79
import dev.inmo.tgbotapi.webapps.haptic.HapticFeedbackStyle
810
import dev.inmo.tgbotapi.webapps.haptic.HapticFeedbackType
11+
import dev.inmo.tgbotapi.webapps.orientation.DeviceOrientationStartParams
912
import dev.inmo.tgbotapi.webapps.popup.*
1013
import io.ktor.client.HttpClient
1114
import io.ktor.client.request.*
@@ -18,11 +21,11 @@ import kotlinx.dom.appendElement
1821
import kotlinx.dom.appendText
1922
import kotlinx.serialization.json.Json
2023
import org.jetbrains.compose.web.attributes.InputType
24+
import org.jetbrains.compose.web.css.DisplayStyle
2125
import org.jetbrains.compose.web.css.Color as ComposeColor
2226
import org.jetbrains.compose.web.css.backgroundColor
23-
import org.jetbrains.compose.web.dom.Button
24-
import org.jetbrains.compose.web.dom.Input
25-
import org.jetbrains.compose.web.dom.P
27+
import org.jetbrains.compose.web.css.display
28+
import org.jetbrains.compose.web.dom.*
2629
import org.jetbrains.compose.web.dom.Text
2730
import org.jetbrains.compose.web.renderComposable
2831
import org.w3c.dom.*
@@ -43,10 +46,10 @@ fun main() {
4346
renderComposable("root") {
4447
val scope = rememberCoroutineScope()
4548
val isSafeState = remember { mutableStateOf<Boolean?>(null) }
46-
val logsState = remember { mutableStateListOf<String>() }
49+
val logsState = remember { mutableStateListOf<Any?>() }
4750

48-
Text(window.location.href)
49-
P()
51+
// Text(window.location.href)
52+
// P()
5053

5154
LaunchedEffect(baseUrl) {
5255
val response = client.post("$baseUrl/check") {
@@ -386,9 +389,221 @@ fun main() {
386389
}
387390
}
388391
}
392+
P()
393+
394+
let { // Accelerometer
395+
val enabledState = remember { mutableStateOf(webApp.accelerometer.isStarted) }
396+
webApp.onAccelerometerStarted { enabledState.value = true }
397+
webApp.onAccelerometerStopped { enabledState.value = false }
398+
Button({
399+
onClick {
400+
if (enabledState.value) {
401+
webApp.accelerometer.stop { }
402+
} else {
403+
webApp.accelerometer.start(AccelerometerStartParams(200))
404+
}
405+
}
406+
}) {
407+
Text("${if (enabledState.value) "Stop" else "Start"} accelerometer")
408+
}
409+
val xState = remember { mutableStateOf(webApp.accelerometer.x) }
410+
val yState = remember { mutableStateOf(webApp.accelerometer.y) }
411+
val zState = remember { mutableStateOf(webApp.accelerometer.z) }
412+
fun updateValues() {
413+
xState.value = webApp.accelerometer.x
414+
yState.value = webApp.accelerometer.y
415+
zState.value = webApp.accelerometer.z
416+
}
417+
remember {
418+
updateValues()
419+
}
420+
421+
webApp.onAccelerometerChanged {
422+
updateValues()
423+
}
424+
if (enabledState.value) {
425+
P()
426+
Text("x: ${xState.value}")
427+
P()
428+
Text("y: ${yState.value}")
429+
P()
430+
Text("z: ${zState.value}")
431+
}
432+
}
433+
P()
434+
435+
let { // Gyroscope
436+
val enabledState = remember { mutableStateOf(webApp.gyroscope.isStarted) }
437+
webApp.onGyroscopeStarted { enabledState.value = true }
438+
webApp.onGyroscopeStopped { enabledState.value = false }
439+
Button({
440+
onClick {
441+
if (enabledState.value) {
442+
webApp.gyroscope.stop { }
443+
} else {
444+
webApp.gyroscope.start(GyroscopeStartParams(200))
445+
}
446+
}
447+
}) {
448+
Text("${if (enabledState.value) "Stop" else "Start"} gyroscope")
449+
}
450+
val xState = remember { mutableStateOf(webApp.gyroscope.x) }
451+
val yState = remember { mutableStateOf(webApp.gyroscope.y) }
452+
val zState = remember { mutableStateOf(webApp.gyroscope.z) }
453+
fun updateValues() {
454+
xState.value = webApp.gyroscope.x
455+
yState.value = webApp.gyroscope.y
456+
zState.value = webApp.gyroscope.z
457+
}
458+
remember {
459+
updateValues()
460+
}
461+
462+
webApp.onGyroscopeChanged {
463+
updateValues()
464+
}
465+
if (enabledState.value) {
466+
P()
467+
Text("x: ${xState.value}")
468+
P()
469+
Text("y: ${yState.value}")
470+
P()
471+
Text("z: ${zState.value}")
472+
}
473+
}
474+
P()
475+
476+
let { // DeviceOrientation
477+
val enabledState = remember { mutableStateOf(webApp.deviceOrientation.isStarted) }
478+
webApp.onDeviceOrientationStarted { enabledState.value = true }
479+
webApp.onDeviceOrientationStopped { enabledState.value = false }
480+
Button({
481+
onClick {
482+
if (enabledState.value) {
483+
webApp.deviceOrientation.stop { }
484+
} else {
485+
webApp.deviceOrientation.start(DeviceOrientationStartParams(200))
486+
}
487+
}
488+
}) {
489+
Text("${if (enabledState.value) "Stop" else "Start"} deviceOrientation")
490+
}
491+
val alphaState = remember { mutableStateOf(webApp.deviceOrientation.alpha) }
492+
val betaState = remember { mutableStateOf(webApp.deviceOrientation.beta) }
493+
val gammaState = remember { mutableStateOf(webApp.deviceOrientation.gamma) }
494+
fun updateValues() {
495+
alphaState.value = webApp.deviceOrientation.alpha
496+
betaState.value = webApp.deviceOrientation.beta
497+
gammaState.value = webApp.deviceOrientation.gamma
498+
}
499+
remember {
500+
updateValues()
501+
}
502+
503+
webApp.onDeviceOrientationChanged {
504+
updateValues()
505+
}
506+
if (enabledState.value) {
507+
P()
508+
Text("alpha: ${alphaState.value}")
509+
P()
510+
Text("beta: ${betaState.value}")
511+
P()
512+
Text("gamma: ${gammaState.value}")
513+
}
514+
}
515+
P()
516+
517+
EventType.values().forEach { eventType ->
518+
when (eventType) {
519+
EventType.AccelerometerChanged -> webApp.onAccelerometerChanged { /*logsState.add("AccelerometerChanged") /* see accelerometer block */ */ }
520+
EventType.AccelerometerFailed -> webApp.onAccelerometerFailed {
521+
logsState.add(it.error)
522+
}
523+
EventType.AccelerometerStarted -> webApp.onAccelerometerStarted { logsState.add("AccelerometerStarted") }
524+
EventType.AccelerometerStopped -> webApp.onAccelerometerStopped { logsState.add("AccelerometerStopped") }
525+
EventType.Activated -> webApp.onActivated { logsState.add("Activated") }
526+
EventType.BackButtonClicked -> webApp.onBackButtonClicked { logsState.add("BackButtonClicked") }
527+
EventType.BiometricAuthRequested -> webApp.onBiometricAuthRequested {
528+
logsState.add(it.isAuthenticated)
529+
}
530+
EventType.BiometricManagerUpdated -> webApp.onBiometricManagerUpdated { logsState.add("BiometricManagerUpdated") }
531+
EventType.BiometricTokenUpdated -> webApp.onBiometricTokenUpdated {
532+
logsState.add(it.isUpdated)
533+
}
534+
EventType.ClipboardTextReceived -> webApp.onClipboardTextReceived {
535+
logsState.add(it.data)
536+
}
537+
EventType.ContactRequested -> webApp.onContactRequested {
538+
logsState.add(it.status)
539+
}
540+
EventType.ContentSafeAreaChanged -> webApp.onContentSafeAreaChanged { logsState.add("ContentSafeAreaChanged") }
541+
EventType.Deactivated -> webApp.onDeactivated { logsState.add("Deactivated") }
542+
EventType.DeviceOrientationChanged -> webApp.onDeviceOrientationChanged { /*logsState.add("DeviceOrientationChanged")*//* see accelerometer block */ }
543+
EventType.DeviceOrientationFailed -> webApp.onDeviceOrientationFailed {
544+
logsState.add(it.error)
545+
}
546+
EventType.DeviceOrientationStarted -> webApp.onDeviceOrientationStarted { logsState.add("DeviceOrientationStarted") }
547+
EventType.DeviceOrientationStopped -> webApp.onDeviceOrientationStopped { logsState.add("DeviceOrientationStopped") }
548+
EventType.EmojiStatusAccessRequested -> webApp.onEmojiStatusAccessRequested {
549+
logsState.add(it.status)
550+
}
551+
EventType.EmojiStatusFailed -> webApp.onEmojiStatusFailed {
552+
logsState.add(it.error)
553+
}
554+
EventType.EmojiStatusSet -> webApp.onEmojiStatusSet { logsState.add("EmojiStatusSet") }
555+
EventType.FileDownloadRequested -> webApp.onFileDownloadRequested {
556+
logsState.add(it.status)
557+
}
558+
EventType.FullscreenChanged -> webApp.onFullscreenChanged { logsState.add("FullscreenChanged") }
559+
EventType.FullscreenFailed -> webApp.onFullscreenFailed {
560+
logsState.add(it.error)
561+
}
562+
EventType.GyroscopeChanged -> webApp.onGyroscopeChanged { /*logsState.add("GyroscopeChanged")*//* see gyroscope block */ }
563+
EventType.GyroscopeFailed -> webApp.onGyroscopeFailed {
564+
logsState.add(it.error)
565+
}
566+
EventType.GyroscopeStarted -> webApp.onGyroscopeStarted { logsState.add("GyroscopeStarted")/* see accelerometer block */ }
567+
EventType.GyroscopeStopped -> webApp.onGyroscopeStopped { logsState.add("GyroscopeStopped") }
568+
EventType.HomeScreenAdded -> webApp.onHomeScreenAdded { logsState.add("HomeScreenAdded") }
569+
EventType.HomeScreenChecked -> webApp.onHomeScreenChecked {
570+
logsState.add(it.status)
571+
}
572+
EventType.InvoiceClosed -> webApp.onInvoiceClosed { url, status ->
573+
logsState.add(url)
574+
logsState.add(status)
575+
}
576+
EventType.LocationManagerUpdated -> webApp.onLocationManagerUpdated { logsState.add("LocationManagerUpdated") }
577+
EventType.LocationRequested -> webApp.onLocationRequested {
578+
logsState.add(it.locationData)
579+
}
580+
EventType.MainButtonClicked -> webApp.onMainButtonClicked { logsState.add("MainButtonClicked") }
581+
EventType.PopupClosed -> webApp.onPopupClosed {
582+
logsState.add(it.buttonId)
583+
}
584+
EventType.QrTextReceived -> webApp.onQrTextReceived {
585+
logsState.add(it.data)
586+
}
587+
EventType.SafeAreaChanged -> webApp.onSafeAreaChanged { logsState.add("SafeAreaChanged") }
588+
EventType.ScanQrPopupClosed -> webApp.onScanQrPopupClosed { logsState.add("ScanQrPopupClosed") }
589+
EventType.SecondaryButtonClicked -> webApp.onSecondaryButtonClicked { logsState.add("SecondaryButtonClicked") }
590+
EventType.SettingsButtonClicked -> webApp.onSettingsButtonClicked { logsState.add("SettingsButtonClicked") }
591+
EventType.ShareMessageFailed -> webApp.onShareMessageFailed {
592+
logsState.add(it.error)
593+
}
594+
EventType.ShareMessageSent -> webApp.onShareMessageSent { logsState.add("ShareMessageSent") }
595+
EventType.ThemeChanged -> webApp.onThemeChanged { logsState.add("ThemeChanged") }
596+
EventType.ViewportChanged -> webApp.onViewportChanged {
597+
logsState.add(it)
598+
}
599+
EventType.WriteAccessRequested -> webApp.onWriteAccessRequested {
600+
logsState.add(it.status)
601+
}
602+
}
603+
}
389604

390605
logsState.forEach {
391-
P { Text(it) }
606+
P { Text(it.toString()) }
392607
}
393608
}
394609
}

0 commit comments

Comments
 (0)