@@ -2,10 +2,13 @@ import androidx.compose.runtime.*
22import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions
33import dev.inmo.tgbotapi.types.webAppQueryIdField
44import dev.inmo.tgbotapi.webapps.*
5+ import dev.inmo.tgbotapi.webapps.accelerometer.AccelerometerStartParams
56import dev.inmo.tgbotapi.webapps.cloud.*
67import dev.inmo.tgbotapi.webapps.events.*
8+ import dev.inmo.tgbotapi.webapps.gyroscope.GyroscopeStartParams
79import dev.inmo.tgbotapi.webapps.haptic.HapticFeedbackStyle
810import dev.inmo.tgbotapi.webapps.haptic.HapticFeedbackType
11+ import dev.inmo.tgbotapi.webapps.orientation.DeviceOrientationStartParams
912import dev.inmo.tgbotapi.webapps.popup.*
1013import io.ktor.client.HttpClient
1114import io.ktor.client.request.*
@@ -18,11 +21,11 @@ import kotlinx.dom.appendElement
1821import kotlinx.dom.appendText
1922import kotlinx.serialization.json.Json
2023import org.jetbrains.compose.web.attributes.InputType
24+ import org.jetbrains.compose.web.css.DisplayStyle
2125import org.jetbrains.compose.web.css.Color as ComposeColor
2226import 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.*
2629import org.jetbrains.compose.web.dom.Text
2730import org.jetbrains.compose.web.renderComposable
2831import 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