mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-12-22 08:37:12 +00:00
support of accelerometer, gyroscope, location and orientation data
This commit is contained in:
parent
652765bf46
commit
41a142addb
@ -0,0 +1,3 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps
|
||||||
|
|
||||||
|
external interface ContentSafeAreaInset : SafeAreaInset {}
|
@ -0,0 +1,9 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps
|
||||||
|
|
||||||
|
external interface SafeAreaInset {
|
||||||
|
val top: Int
|
||||||
|
val bottom: Int
|
||||||
|
val left: Int
|
||||||
|
val right: Int
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,15 @@
|
|||||||
package dev.inmo.tgbotapi.webapps
|
package dev.inmo.tgbotapi.webapps
|
||||||
|
|
||||||
import dev.inmo.tgbotapi.types.MessageId
|
|
||||||
import dev.inmo.tgbotapi.types.PreparedMessageId
|
import dev.inmo.tgbotapi.types.PreparedMessageId
|
||||||
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
||||||
|
import dev.inmo.tgbotapi.webapps.accelerometer.Accelerometer
|
||||||
import dev.inmo.tgbotapi.webapps.biometric.BiometricManager
|
import dev.inmo.tgbotapi.webapps.biometric.BiometricManager
|
||||||
import dev.inmo.tgbotapi.webapps.cloud.CloudStorage
|
import dev.inmo.tgbotapi.webapps.cloud.CloudStorage
|
||||||
|
import dev.inmo.tgbotapi.webapps.gyroscope.Gyroscope
|
||||||
import dev.inmo.tgbotapi.webapps.haptic.HapticFeedback
|
import dev.inmo.tgbotapi.webapps.haptic.HapticFeedback
|
||||||
import dev.inmo.tgbotapi.webapps.invoice.InvoiceClosedInfo
|
import dev.inmo.tgbotapi.webapps.invoice.InvoiceClosedInfo
|
||||||
|
import dev.inmo.tgbotapi.webapps.location.LocationManager
|
||||||
|
import dev.inmo.tgbotapi.webapps.orientation.DeviceOrientation
|
||||||
import dev.inmo.tgbotapi.webapps.popup.*
|
import dev.inmo.tgbotapi.webapps.popup.*
|
||||||
import dev.inmo.tgbotapi.webapps.stories.StoryShareParams
|
import dev.inmo.tgbotapi.webapps.stories.StoryShareParams
|
||||||
|
|
||||||
@ -56,6 +59,8 @@ external class WebApp {
|
|||||||
|
|
||||||
val isActive: Boolean
|
val isActive: Boolean
|
||||||
val isFullscreen: Boolean
|
val isFullscreen: Boolean
|
||||||
|
val safeAreaInset: SafeAreaInset
|
||||||
|
val contentSafeAreaInset: ContentSafeAreaInset
|
||||||
fun requestFullscreen()
|
fun requestFullscreen()
|
||||||
fun exitFullscreen()
|
fun exitFullscreen()
|
||||||
|
|
||||||
@ -85,6 +90,18 @@ external class WebApp {
|
|||||||
@JsName("BiometricManager")
|
@JsName("BiometricManager")
|
||||||
val biometricManager: BiometricManager
|
val biometricManager: BiometricManager
|
||||||
|
|
||||||
|
@JsName("Accelerometer")
|
||||||
|
val accelerometer: Accelerometer
|
||||||
|
|
||||||
|
@JsName("DeviceOrientation")
|
||||||
|
val deviceOrientation: DeviceOrientation
|
||||||
|
|
||||||
|
@JsName("Gyroscope")
|
||||||
|
val gyroscope: Gyroscope
|
||||||
|
|
||||||
|
@JsName("LocationManager")
|
||||||
|
val locationManager: LocationManager
|
||||||
|
|
||||||
@JsName("SettingsButton")
|
@JsName("SettingsButton")
|
||||||
val settingsButton: SettingsButton
|
val settingsButton: SettingsButton
|
||||||
|
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.accelerometer
|
||||||
|
|
||||||
|
external interface Accelerometer {
|
||||||
|
val isStarted: Boolean
|
||||||
|
val x: Double
|
||||||
|
val y: Double
|
||||||
|
val z: Double
|
||||||
|
|
||||||
|
fun start(params: AccelerometerStartParams, callback: (Boolean) -> Unit = definedExternally)
|
||||||
|
fun stop(callback: (Boolean) -> Unit)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.accelerometer
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.MilliSeconds
|
||||||
|
import kotlin.js.json
|
||||||
|
|
||||||
|
external interface AccelerometerStartParams {
|
||||||
|
@JsName("refresh_rate")
|
||||||
|
val refreshRate: MilliSeconds
|
||||||
|
}
|
||||||
|
|
||||||
|
fun AccelerometerStartParams(refreshRate: MilliSeconds = 1000): AccelerometerStartParams = json(
|
||||||
|
"refresh_rate" to refreshRate
|
||||||
|
).unsafeCast<AccelerometerStartParams>()
|
@ -0,0 +1,12 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.gyroscope
|
||||||
|
|
||||||
|
external interface Gyroscope {
|
||||||
|
val isStarted: Boolean
|
||||||
|
val x: Double
|
||||||
|
val y: Double
|
||||||
|
val z: Double
|
||||||
|
|
||||||
|
fun start(params: GyroscopeStartParams, callback: (Boolean) -> Unit = definedExternally)
|
||||||
|
fun stop(callback: (Boolean) -> Unit)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.gyroscope
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.MilliSeconds
|
||||||
|
import kotlin.js.json
|
||||||
|
|
||||||
|
external interface GyroscopeStartParams {
|
||||||
|
@JsName("refresh_rate")
|
||||||
|
val refreshRate: MilliSeconds
|
||||||
|
}
|
||||||
|
|
||||||
|
fun GyroscopeStartParams(refreshRate: MilliSeconds = 1000): GyroscopeStartParams = json(
|
||||||
|
"refresh_rate" to refreshRate
|
||||||
|
).unsafeCast<GyroscopeStartParams>()
|
@ -0,0 +1,17 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.location
|
||||||
|
|
||||||
|
external interface LocationData {
|
||||||
|
val latitude: Double
|
||||||
|
val longitude: Double
|
||||||
|
val altitude: Double?
|
||||||
|
val course: Double?
|
||||||
|
val speed: Double?
|
||||||
|
@JsName("horizontal_accuracy")
|
||||||
|
val horizontalAccuracy: Double?
|
||||||
|
@JsName("vertical_accuracy")
|
||||||
|
val verticalAccuracy: Double?
|
||||||
|
@JsName("course_accuracy")
|
||||||
|
val courseAccuracy: Double?
|
||||||
|
@JsName("speed_accuracy")
|
||||||
|
val speedAccuracy: Double?
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.location
|
||||||
|
|
||||||
|
external interface LocationManager {
|
||||||
|
val isInited: Boolean
|
||||||
|
|
||||||
|
val isLocationAvailable: Boolean
|
||||||
|
val isAccessRequested: Boolean
|
||||||
|
val isAccessGranted: Boolean
|
||||||
|
|
||||||
|
fun init(callback: () -> Unit = definedExternally)
|
||||||
|
|
||||||
|
fun getLocation(callback: (location: LocationData) -> Unit)
|
||||||
|
|
||||||
|
fun openSettings()
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.orientation
|
||||||
|
|
||||||
|
external interface DeviceOrientation {
|
||||||
|
val isStarted: Boolean
|
||||||
|
val absolute: Boolean
|
||||||
|
val alpha: Double
|
||||||
|
val beta: Double
|
||||||
|
val gamma: Double
|
||||||
|
|
||||||
|
fun start(params: DeviceOrientationStartParams, callback: (Boolean) -> Unit)
|
||||||
|
fun stop(callback: (Boolean) -> Unit)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
|||||||
|
package dev.inmo.tgbotapi.webapps.orientation
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.MilliSeconds
|
||||||
|
import kotlin.js.json
|
||||||
|
|
||||||
|
external interface DeviceOrientationStartParams {
|
||||||
|
@JsName("refresh_rate")
|
||||||
|
val refreshRate: MilliSeconds
|
||||||
|
@JsName("need_absolute")
|
||||||
|
val needAbsolute: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
fun DeviceOrientationStartParams(
|
||||||
|
refreshRate: MilliSeconds = 1000,
|
||||||
|
needAbsolute: Boolean = false
|
||||||
|
): DeviceOrientationStartParams = json(
|
||||||
|
"refresh_rate" to refreshRate,
|
||||||
|
"need_absolute" to needAbsolute
|
||||||
|
).unsafeCast<DeviceOrientationStartParams>()
|
Loading…
Reference in New Issue
Block a user