commit a38e96906dfdedaa334f2e0e0a0278a454797e64
parent 3e9c97c18c3140daed0c08748d76c20f2dc92d08
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Sat, 14 Oct 2023 21:43:48 +0200
fix(core/notifications): reply
Diffstat:
6 files changed, 7 insertions(+), 151 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeService.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeService.kt
@@ -26,7 +26,9 @@ class BridgeService : Service() {
var messagingBridge: MessagingBridge? = null
override fun onDestroy() {
- remoteSideContext.bridgeService = null
+ if (::remoteSideContext.isInitialized) {
+ remoteSideContext.bridgeService = null
+ }
}
override fun onBind(intent: Intent): IBinder? {
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MappingsWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MappingsWrapper.kt
@@ -21,7 +21,6 @@ class MappingsWrapper : FileLoaderWrapper(BridgeFileType.MAPPINGS, "{}".toByteAr
DefaultMediaItemMapper::class,
MediaQualityLevelProviderMapper::class,
OperaPageViewControllerMapper::class,
- PlatformAnalyticsCreatorMapper::class,
PlusSubscriptionMapper::class,
ScCameraSettingsMapper::class,
StoryBoostStateMapper::class,
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/data/SnapEnums.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/SnapEnums.kt
@@ -90,66 +90,6 @@ enum class PlayableSnapState {
NOTDOWNLOADED, DOWNLOADING, DOWNLOADFAILED, PLAYABLE, VIEWEDREPLAYABLE, PLAYING, VIEWEDNOTREPLAYABLE
}
-enum class MetricsMessageMediaType {
- NO_MEDIA,
- IMAGE,
- VIDEO,
- VIDEO_NO_SOUND,
- GIF,
- DERIVED_FROM_MESSAGE_TYPE,
- REACTION
-}
-
-enum class MetricsMessageType {
- TEXT,
- STICKER,
- CUSTOM_STICKER,
- SNAP,
- AUDIO_NOTE,
- MEDIA,
- BATCHED_MEDIA,
- MISSED_AUDIO_CALL,
- MISSED_VIDEO_CALL,
- JOINED_CALL,
- LEFT_CALL,
- SNAPCHATTER,
- LOCATION_SHARE,
- LOCATION_REQUEST,
- SCREENSHOT,
- SCREEN_RECORDING,
- GAME_CLOSED,
- STORY_SHARE,
- MAP_DROP_SHARE,
- MAP_STORY_SHARE,
- MAP_STORY_SNAP_SHARE,
- MAP_HEAT_SNAP_SHARE,
- MAP_SCREENSHOT_SHARE,
- MEMORIES_STORY,
- SEARCH_STORY_SHARE,
- SEARCH_STORY_SNAP_SHARE,
- DISCOVER_SHARE,
- SHAZAM_SHARE,
- SAVE_TO_CAMERA_ROLL,
- GAME_SCORE_SHARE,
- SNAP_PRO_PROFILE_SHARE,
- SNAP_PRO_SNAP_SHARE,
- CANVAS_APP_SHARE,
- AD_SHARE,
- STORY_REPLY,
- SPOTLIGHT_STORY_SHARE,
- CAMEO,
- MEMOJI,
- BITMOJI_OUTFIT_SHARE,
- LIVE_LOCATION_SHARE,
- CREATIVE_TOOL_ITEM,
- SNAP_KIT_INVITE_SHARE,
- QUOTE_REPLY_SHARE,
- BLOOPS_STORY_SHARE,
- SNAP_PRO_SAVED_STORY_SHARE,
- PLACE_PROFILE_SHARE,
- PLACE_STORY_SHARE,
- SAVED_STORY_SHARE
-}
enum class MediaReferenceType {
UNASSIGNED, OVERLAY, IMAGE, VIDEO, ASSET_BUNDLE, AUDIO, ANIMATED_IMAGE, FONT, WEB_VIEW_CONTENT, VIDEO_NO_AUDIO
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageSender.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageSender.kt
@@ -1,8 +1,6 @@
package me.rhunk.snapenhance.core.messaging
import me.rhunk.snapenhance.common.data.ContentType
-import me.rhunk.snapenhance.common.data.MetricsMessageMediaType
-import me.rhunk.snapenhance.common.data.MetricsMessageType
import me.rhunk.snapenhance.common.util.protobuf.ProtoWriter
import me.rhunk.snapenhance.core.ModContext
import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
@@ -59,34 +57,10 @@ class MessageSender(
private val sendMessageCallback by lazy { context.mappings.getMappedClass("callbacks", "SendMessageCallback") }
- private val platformAnalyticsCreatorClass by lazy {
- context.mappings.getMappedClass("PlatformAnalyticsCreator")
- }
-
- private fun defaultPlatformAnalytics(): ByteArray {
- val analyticsSource = platformAnalyticsCreatorClass.constructors[0].parameterTypes[0]
- val chatAnalyticsSource = analyticsSource.enumConstants.first { it.toString() == "CHAT" }
-
- val platformAnalyticsDefaultArgs = arrayOf(chatAnalyticsSource, null, null, null, null, null, null, null, null, null, 0L, 0L,
- null, null, false, null, null, 0L, null, null, false, null, null,
- null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, false, null, null, false, 0L, -2, 8191)
-
- val platformAnalyticsInstance = platformAnalyticsCreatorClass.constructors[0].newInstance(
- *platformAnalyticsDefaultArgs
- ) ?: throw Exception("Failed to create platform analytics instance")
-
- return platformAnalyticsInstance.javaClass.declaredMethods.first { it.returnType == ByteArray::class.java }
- .invoke(platformAnalyticsInstance) as ByteArray?
- ?: throw Exception("Failed to get platform analytics content")
- }
-
private fun createLocalMessageContentTemplate(
contentType: ContentType,
messageContent: ByteArray,
localMediaReference: ByteArray? = null,
- metricMessageMediaType: MetricsMessageMediaType = MetricsMessageMediaType.DERIVED_FROM_MESSAGE_TYPE,
- metricsMediaType: MetricsMessageType = MetricsMessageType.TEXT,
savePolicy: String = "PROHIBITED",
): String {
return """
@@ -104,12 +78,10 @@ class MessageSender(
}
}],
"mPlatformAnalytics": {
- "mAttemptId": {
- "mId": [${(1..16).map { (-127 ..127).random() }.joinToString(",")}]
- },
- "mContent": [${defaultPlatformAnalytics().joinToString(",")}],
- "mMetricsMessageMediaType": "${metricMessageMediaType.name}",
- "mMetricsMessageType": "${metricsMediaType.name}",
+ "mAttemptId": null,
+ "mContent": [],
+ "mMetricsMessageMediaType": "NO_MEDIA",
+ "mMetricsMessageType": "TEXT",
"mReactionSource": "NONE"
},
"mSavePolicy": "$savePolicy"
@@ -130,35 +102,6 @@ class MessageSender(
sendMessageWithContentMethod.invoke(context.feature(Messaging::class).conversationManager, messageDestinations.instanceNonNull(), localMessageContent, callback)
}
- //TODO: implement sendSnapMessage
- /*
- fun sendSnapMessage(conversations: List<SnapUUID>, chatMediaType: ChatMediaType, uri: Uri, onError: (Any) -> Unit = {}, onSuccess: () -> Unit = {}) {
- val mediaReferenceBuffer = FlatBufferBuilder(0).apply {
- val uriOffset = createString(uri.toString())
- forceDefaults(true)
- startTable(2)
- addOffset(1, uriOffset, 0)
- addInt(0, chatMediaType.value, 0)
- finish(endTable())
- finished()
- }.sizedByteArray()
-
- internalSendMessage(conversations, createLocalMessageContentTemplate(
- contentType = ContentType.SNAP,
- messageContent = redSnapProto(chatMediaType == ChatMediaType.AUDIO || chatMediaType == ChatMediaType.VIDEO),
- localMediaReference = mediaReferenceBuffer,
- metricMessageMediaType = MetricsMessageMediaType.IMAGE,
- metricsMediaType = MetricsMessageType.SNAP
- ), CallbackBuilder(sendMessageCallback)
- .override("onSuccess") {
- onSuccess()
- }
- .override("onError") {
- onError(it.arg(0))
- }
- .build())
- }*/
-
fun sendChatMessage(conversations: List<SnapUUID>, message: String, onError: (Any) -> Unit = {}, onSuccess: () -> Unit = {}) {
internalSendMessage(conversations, createLocalMessageContentTemplate(ContentType.CHAT, ProtoWriter().apply {
from(2) {
diff --git a/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/PlatformAnalyticsCreatorMapper.kt b/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/PlatformAnalyticsCreatorMapper.kt
@@ -1,26 +0,0 @@
-package me.rhunk.snapenhance.mapper.impl
-
-import me.rhunk.snapenhance.mapper.AbstractClassMapper
-import me.rhunk.snapenhance.mapper.ext.findConstString
-import me.rhunk.snapenhance.mapper.ext.getClassName
-import me.rhunk.snapenhance.mapper.ext.getStaticConstructor
-import me.rhunk.snapenhance.mapper.ext.isEnum
-
-class PlatformAnalyticsCreatorMapper : AbstractClassMapper() {
- init {
- mapper {
- for (clazz in classes) {
- val firstConstructor = clazz.directMethods.firstOrNull { it.name == "<init>" } ?: continue
- // 47 is the number of parameters of the constructor
- // it may change in future versions
- if (firstConstructor.parameters.size != 47) continue
- val firstParameterClass = getClass(firstConstructor.parameterTypes[0]) ?: continue
- if (!firstParameterClass.isEnum()) continue
- if (firstParameterClass.getStaticConstructor()?.implementation?.findConstString("IN_APP_NOTIFICATION") != true) continue
-
- addMapping("PlatformAnalyticsCreator", clazz.getClassName())
- return@mapper
- }
- }
- }
-}-
\ No newline at end of file
diff --git a/mapper/src/test/kotlin/me/rhunk/snapenhance/mapper/tests/TestMappings.kt b/mapper/src/test/kotlin/me/rhunk/snapenhance/mapper/tests/TestMappings.kt
@@ -16,7 +16,6 @@ class TestMappings {
DefaultMediaItemMapper::class,
MediaQualityLevelProviderMapper::class,
OperaPageViewControllerMapper::class,
- PlatformAnalyticsCreatorMapper::class,
PlusSubscriptionMapper::class,
ScCameraSettingsMapper::class,
StoryBoostStateMapper::class,