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:
Mapp/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeService.kt | 4+++-
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MappingsWrapper.kt | 1-
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/data/SnapEnums.kt | 60------------------------------------------------------------
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageSender.kt | 65++++-------------------------------------------------------------
Dmapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/PlatformAnalyticsCreatorMapper.kt | 27---------------------------
Mmapper/src/test/kotlin/me/rhunk/snapenhance/mapper/tests/TestMappings.kt | 1-
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,