commit 8f06688f55ef2aef6178d08c7a21722fbfef7db8
parent b378bdde871f28fb7408c2c99e01cf195f876937
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Thu, 28 Dec 2023 16:55:30 +0100
fea(scripting/messaging): snapchatter info
Diffstat:
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/impl/CoreMessaging.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/impl/CoreMessaging.kt
@@ -8,6 +8,7 @@ import me.rhunk.snapenhance.core.ModContext
import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
import me.rhunk.snapenhance.core.wrapper.impl.Message
import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
+import me.rhunk.snapenhance.core.wrapper.impl.Snapchatter
import org.mozilla.javascript.Scriptable
import org.mozilla.javascript.annotations.JSFunction
@@ -15,7 +16,8 @@ import org.mozilla.javascript.annotations.JSFunction
class CoreMessaging(
private val modContext: ModContext
) : AbstractBinding("messaging", BindingSide.CORE) {
- private val conversationManager get() = modContext.feature(Messaging::class).conversationManager
+ private val messaging by lazy { modContext.feature(Messaging::class) }
+ private val conversationManager get() = messaging.conversationManager
@JSFunction
fun isPresent() = conversationManager != null
@@ -144,5 +146,12 @@ class CoreMessaging(
modContext.messageSender.sendChatMessage(listOf(SnapUUID.fromString(conversationId)), message, onSuccess = { result(null) }, onError = { result(it.toString()) })
}
+ @JSFunction
+ fun fetchSnapchatterInfos(
+ userIds: List<String>
+ ): List<Snapchatter> {
+ return messaging.fetchSnapchatterInfos(userIds = userIds)
+ }
+
override fun getObject() = this
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/Snapchatter.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/Snapchatter.kt
@@ -1,19 +1,28 @@
package me.rhunk.snapenhance.core.wrapper.impl
import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
-
+import org.mozilla.javascript.annotations.JSGetter
+import org.mozilla.javascript.annotations.JSSetter
class BitmojiInfo(obj: Any?) : AbstractWrapper(obj) {
+ @get:JSGetter @set:JSSetter
var avatarId by field<String?>("mAvatarId")
+ @get:JSGetter @set:JSSetter
var backgroundId by field<String?>("mBackgroundId")
+ @get:JSGetter @set:JSSetter
var sceneId by field<String?>("mSceneId")
+ @get:JSGetter @set:JSSetter
var selfieId by field<String?>("mSelfieId")
}
class Snapchatter(obj: Any?) : AbstractWrapper(obj) {
+ @get:JSGetter
val bitmojiInfo by field<BitmojiInfo?>("mBitmojiInfo")
+ @get:JSGetter @set:JSSetter
var displayName by field<String?>("mDisplayName")
+ @get:JSGetter @set:JSSetter
var userId by field("mUserId") { SnapUUID(it) }
+ @get:JSGetter @set:JSSetter
var username by field<String>("mUsername")
}
\ No newline at end of file