diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 499348b3..446c2300 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -127,6 +127,7 @@ dependencies {
}
implementation(project(":core"))
+ implementation(project(":common"))
implementation(libs.androidx.documentfile)
implementation(libs.gson)
implementation(libs.ffmpeg.kit)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d934f858..f5cdc94a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -28,7 +28,7 @@
android:value="93" />
+ android:value="com.snapchat.android" />
translation[if (downloadStage.isFinalStage) {
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/download/DownloadTaskManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/download/DownloadTaskManager.kt
index 032bd391..f05ca1c6 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/download/DownloadTaskManager.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/download/DownloadTaskManager.kt
@@ -3,12 +3,12 @@ package me.rhunk.snapenhance.download
import android.annotation.SuppressLint
import android.content.Context
import android.database.sqlite.SQLiteDatabase
-import me.rhunk.snapenhance.core.download.data.DownloadMetadata
-import me.rhunk.snapenhance.core.download.data.DownloadStage
-import me.rhunk.snapenhance.core.download.data.MediaDownloadSource
-import me.rhunk.snapenhance.core.util.SQLiteDatabaseHelper
-import me.rhunk.snapenhance.core.util.ktx.getIntOrNull
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
+import me.rhunk.snapenhance.common.data.download.DownloadMetadata
+import me.rhunk.snapenhance.common.data.download.DownloadStage
+import me.rhunk.snapenhance.common.data.download.MediaDownloadSource
+import me.rhunk.snapenhance.common.util.SQLiteDatabaseHelper
+import me.rhunk.snapenhance.common.util.ktx.getIntOrNull
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
import java.util.concurrent.Executors
class DownloadTaskManager {
@@ -162,7 +162,8 @@ class DownloadTaskManager {
metadata = DownloadMetadata(
outputPath = cursor.getStringOrNull("outputPath")!!,
mediaIdentifier = cursor.getStringOrNull("hash"),
- downloadSource = cursor.getStringOrNull("downloadSource") ?: MediaDownloadSource.NONE.key,
+ downloadSource = cursor.getStringOrNull("downloadSource")
+ ?: MediaDownloadSource.NONE.key,
mediaAuthor = cursor.getStringOrNull("mediaAuthor"),
iconUrl = cursor.getStringOrNull("iconUrl")
)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt b/app/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt
index ccc75d82..4b2e7412 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt
@@ -5,9 +5,8 @@ import com.arthenica.ffmpegkit.FFmpegSession
import com.arthenica.ffmpegkit.Level
import kotlinx.coroutines.suspendCancellableCoroutine
import me.rhunk.snapenhance.LogManager
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.config.impl.DownloaderConfig
-import me.rhunk.snapenhance.core.logger.LogLevel
+import me.rhunk.snapenhance.common.config.impl.DownloaderConfig
+import me.rhunk.snapenhance.common.logger.LogLevel
import java.io.File
import java.util.concurrent.Executors
@@ -71,7 +70,7 @@ class FFMpegProcessor(
}
}
- Logger.directDebug("arguments: $stringBuilder", "FFMpegProcessor")
+ logManager.debug("arguments: $stringBuilder", "FFMpegProcessor")
FFmpegKit.executeAsync(stringBuilder.toString(),
{ session ->
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/messaging/ModDatabase.kt b/app/src/main/kotlin/me/rhunk/snapenhance/messaging/ModDatabase.kt
index a1cca036..66784342 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/messaging/ModDatabase.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/messaging/ModDatabase.kt
@@ -2,16 +2,16 @@ package me.rhunk.snapenhance.messaging
import android.database.sqlite.SQLiteDatabase
import me.rhunk.snapenhance.RemoteSideContext
-import me.rhunk.snapenhance.core.database.objects.FriendInfo
-import me.rhunk.snapenhance.core.messaging.FriendStreaks
-import me.rhunk.snapenhance.core.messaging.MessagingFriendInfo
-import me.rhunk.snapenhance.core.messaging.MessagingGroupInfo
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.util.SQLiteDatabaseHelper
-import me.rhunk.snapenhance.core.util.ktx.getInteger
-import me.rhunk.snapenhance.core.util.ktx.getLongOrNull
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.data.FriendStreaks
+import me.rhunk.snapenhance.common.data.MessagingFriendInfo
+import me.rhunk.snapenhance.common.data.MessagingGroupInfo
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.database.impl.FriendInfo
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.util.SQLiteDatabaseHelper
+import me.rhunk.snapenhance.common.util.ktx.getInteger
+import me.rhunk.snapenhance.common.util.ktx.getLongOrNull
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
import java.util.concurrent.Executors
@@ -75,11 +75,13 @@ class ModDatabase(
return database.rawQuery("SELECT * FROM groups", null).use { cursor ->
val groups = mutableListOf()
while (cursor.moveToNext()) {
- groups.add(MessagingGroupInfo(
+ groups.add(
+ MessagingGroupInfo(
conversationId = cursor.getStringOrNull("conversationId")!!,
name = cursor.getStringOrNull("name")!!,
participantsCount = cursor.getInteger("participantsCount")
- ))
+ )
+ )
}
groups
}
@@ -90,13 +92,15 @@ class ModDatabase(
val friends = mutableListOf()
while (cursor.moveToNext()) {
runCatching {
- friends.add(MessagingFriendInfo(
+ friends.add(
+ MessagingFriendInfo(
userId = cursor.getStringOrNull("userId")!!,
displayName = cursor.getStringOrNull("displayName"),
mutableUsername = cursor.getStringOrNull("mutableUsername")!!,
bitmojiId = cursor.getStringOrNull("bitmojiId"),
selfieId = cursor.getStringOrNull("selfieId")
- ))
+ )
+ )
}.onFailure {
context.log.error("Failed to parse friend", it)
}
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt b/app/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt
index 9f42c326..b82447db 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/messaging/StreaksReminder.kt
@@ -14,7 +14,7 @@ import me.rhunk.snapenhance.R
import me.rhunk.snapenhance.RemoteSideContext
import me.rhunk.snapenhance.SharedContextHolder
import me.rhunk.snapenhance.bridge.ForceStartActivity
-import me.rhunk.snapenhance.core.util.snap.BitmojiSelfie
+import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie
import me.rhunk.snapenhance.ui.util.ImageRequestHelper
class StreaksReminder(
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt
index 5ad0961b..d938d687 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt
@@ -5,11 +5,12 @@ import androidx.documentfile.provider.DocumentFile
import me.rhunk.snapenhance.RemoteSideContext
import me.rhunk.snapenhance.bridge.scripting.IPCListener
import me.rhunk.snapenhance.bridge.scripting.IScripting
+import me.rhunk.snapenhance.common.scripting.ScriptRuntime
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
import me.rhunk.snapenhance.scripting.impl.IPCListeners
+import me.rhunk.snapenhance.scripting.impl.RemoteManagerIPC
import me.rhunk.snapenhance.scripting.impl.ui.InterfaceBuilder
import me.rhunk.snapenhance.scripting.impl.ui.InterfaceManager
-import me.rhunk.snapenhance.scripting.impl.RemoteManagerIPC
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
import java.io.InputStream
class RemoteScriptManager(
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/RemoteManagerIPC.kt b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/RemoteManagerIPC.kt
index 8664d16e..d88fe941 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/RemoteManagerIPC.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/RemoteManagerIPC.kt
@@ -2,10 +2,10 @@ package me.rhunk.snapenhance.scripting.impl
import android.os.DeadObjectException
import me.rhunk.snapenhance.bridge.scripting.IPCListener
-import me.rhunk.snapenhance.core.logger.AbstractLogger
-import me.rhunk.snapenhance.scripting.IPCInterface
-import me.rhunk.snapenhance.scripting.Listener
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.logger.AbstractLogger
+import me.rhunk.snapenhance.common.scripting.IPCInterface
+import me.rhunk.snapenhance.common.scripting.Listener
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
import java.util.concurrent.ConcurrentHashMap
typealias IPCListeners = ConcurrentHashMap>> // channel, eventName -> listeners
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/ui/InterfaceManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/ui/InterfaceManager.kt
index 47542e32..2c023d88 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/ui/InterfaceManager.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/impl/ui/InterfaceManager.kt
@@ -1,10 +1,10 @@
package me.rhunk.snapenhance.scripting.impl.ui
-import me.rhunk.snapenhance.core.logger.AbstractLogger
+import me.rhunk.snapenhance.common.logger.AbstractLogger
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
import me.rhunk.snapenhance.scripting.impl.ui.components.Node
import me.rhunk.snapenhance.scripting.impl.ui.components.NodeType
import me.rhunk.snapenhance.scripting.impl.ui.components.impl.RowColumnNode
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
import org.mozilla.javascript.Context
import org.mozilla.javascript.Function
import org.mozilla.javascript.annotations.JSFunction
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/MapActivity.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/MapActivity.kt
index fb93f395..a2a5f87f 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/MapActivity.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/MapActivity.kt
@@ -8,7 +8,7 @@ import android.os.Bundle
import android.view.MotionEvent
import android.widget.Button
import android.widget.EditText
-import me.rhunk.snapenhance.core.R
+import me.rhunk.snapenhance.R
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.util.GeoPoint
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/data/Updater.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/data/Updater.kt
index f68f9bc1..2b4c1317 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/data/Updater.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/data/Updater.kt
@@ -1,7 +1,7 @@
package me.rhunk.snapenhance.ui.manager.data
import com.google.gson.JsonParser
-import me.rhunk.snapenhance.core.BuildConfig
+import me.rhunk.snapenhance.common.BuildConfig
import okhttp3.OkHttpClient
import okhttp3.Request
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/downloads/DownloadsSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/downloads/DownloadsSection.kt
index d18a1255..2a6062b0 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/downloads/DownloadsSection.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/downloads/DownloadsSection.kt
@@ -28,8 +28,8 @@ import coil.compose.rememberAsyncImagePainter
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.future.asCompletableFuture
import kotlinx.coroutines.launch
-import me.rhunk.snapenhance.core.download.data.MediaDownloadSource
-import me.rhunk.snapenhance.data.FileType
+import me.rhunk.snapenhance.common.data.FileType
+import me.rhunk.snapenhance.common.data.download.MediaDownloadSource
import me.rhunk.snapenhance.download.DownloadObject
import me.rhunk.snapenhance.ui.manager.Section
import me.rhunk.snapenhance.ui.util.BitmojiImage
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt
index a96b824c..f1631408 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/features/FeaturesSection.kt
@@ -37,7 +37,7 @@ import androidx.navigation.navigation
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
-import me.rhunk.snapenhance.core.config.*
+import me.rhunk.snapenhance.common.config.*
import me.rhunk.snapenhance.ui.manager.MainActivity
import me.rhunk.snapenhance.ui.manager.Section
import me.rhunk.snapenhance.ui.util.*
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/HomeSubSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/HomeSubSection.kt
index 1fcf7cb7..d376f1dc 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/HomeSubSection.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/HomeSubSection.kt
@@ -33,8 +33,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import me.rhunk.snapenhance.LogReader
import me.rhunk.snapenhance.RemoteSideContext
-import me.rhunk.snapenhance.core.logger.LogChannel
-import me.rhunk.snapenhance.core.logger.LogLevel
+import me.rhunk.snapenhance.common.logger.LogChannel
+import me.rhunk.snapenhance.common.logger.LogLevel
class HomeSubSection(
private val context: RemoteSideContext
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/SettingsSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/SettingsSection.kt
index 1be796a9..e5df1223 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/SettingsSection.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/home/SettingsSection.kt
@@ -20,10 +20,9 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.action.EnumAction
-import me.rhunk.snapenhance.core.bridge.types.BridgeFileType
-import me.rhunk.snapenhance.manager.impl.ActionManager
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.action.EnumAction
+import me.rhunk.snapenhance.common.bridge.types.BridgeFileType
import me.rhunk.snapenhance.ui.manager.Section
import me.rhunk.snapenhance.ui.util.AlertDialogs
@@ -83,7 +82,7 @@ class SettingsSection : Section() {
private fun launchActionIntent(action: EnumAction) {
val intent = context.androidContext.packageManager.getLaunchIntentForPackage(Constants.SNAPCHAT_PACKAGE_NAME)
- intent?.putExtra(ActionManager.ACTION_PARAMETER, action.key)
+ intent?.putExtra(EnumAction.ACTION_PARAMETER, action.key)
context.androidContext.startActivity(intent)
}
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptInterface.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptInterface.kt
index 42936340..3dd84a09 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptInterface.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptInterface.kt
@@ -12,7 +12,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import kotlinx.coroutines.launch
-import me.rhunk.snapenhance.core.Logger
+import me.rhunk.snapenhance.common.logger.AbstractLogger
import me.rhunk.snapenhance.scripting.impl.ui.InterfaceBuilder
import me.rhunk.snapenhance.scripting.impl.ui.components.Node
import me.rhunk.snapenhance.scripting.impl.ui.components.NodeType
@@ -54,7 +54,7 @@ private fun DrawNode(node: Node) {
runCatching {
callback()
}.onFailure {
- Logger.directError("Error running callback", it)
+ AbstractLogger.directError("Error running callback", it)
}
}
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt
index 4158f7d9..4a3adfc5 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt
@@ -13,7 +13,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
import me.rhunk.snapenhance.ui.manager.Section
import me.rhunk.snapenhance.ui.util.pullrefresh.PullRefreshIndicator
import me.rhunk.snapenhance.ui.util.pullrefresh.pullRefresh
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/AddFriendDialog.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/AddFriendDialog.kt
index 102314a0..4f7c67e4 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/AddFriendDialog.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/AddFriendDialog.kt
@@ -24,11 +24,11 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import me.rhunk.snapenhance.RemoteSideContext
-import me.rhunk.snapenhance.core.bridge.BridgeClient
-import me.rhunk.snapenhance.core.messaging.MessagingFriendInfo
-import me.rhunk.snapenhance.core.messaging.MessagingGroupInfo
-import me.rhunk.snapenhance.core.messaging.SocialScope
-import me.rhunk.snapenhance.core.util.snap.SnapWidgetBroadcastReceiverHelper
+import me.rhunk.snapenhance.common.ReceiversConfig
+import me.rhunk.snapenhance.common.data.MessagingFriendInfo
+import me.rhunk.snapenhance.common.data.MessagingGroupInfo
+import me.rhunk.snapenhance.common.data.SocialScope
+import me.rhunk.snapenhance.common.util.snap.SnapWidgetBroadcastReceiverHelper
class AddFriendDialog(
private val context: RemoteSideContext,
@@ -128,7 +128,7 @@ class AddFriendDialog(
timeoutJob?.cancel()
hasFetchError = false
}
- SnapWidgetBroadcastReceiverHelper.create(BridgeClient.BRIDGE_SYNC_ACTION) {}.also {
+ SnapWidgetBroadcastReceiverHelper.create(ReceiversConfig.BRIDGE_SYNC_ACTION) {}.also {
runCatching {
context.androidContext.sendBroadcast(it)
}.onFailure {
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/ScopeContent.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/ScopeContent.kt
index 6bc6f53f..2e0e4b90 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/ScopeContent.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/ScopeContent.kt
@@ -22,9 +22,9 @@ import androidx.navigation.NavController
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import me.rhunk.snapenhance.RemoteSideContext
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.messaging.SocialScope
-import me.rhunk.snapenhance.core.util.snap.BitmojiSelfie
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.SocialScope
+import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie
import me.rhunk.snapenhance.ui.util.AlertDialogs
import me.rhunk.snapenhance.ui.util.BitmojiImage
import me.rhunk.snapenhance.ui.util.Dialog
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/SocialSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/SocialSection.kt
index 633f9895..e5293b86 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/SocialSection.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/social/SocialSection.kt
@@ -27,10 +27,10 @@ import androidx.navigation.compose.composable
import androidx.navigation.navigation
import kotlinx.coroutines.launch
import me.rhunk.snapenhance.R
-import me.rhunk.snapenhance.core.messaging.MessagingFriendInfo
-import me.rhunk.snapenhance.core.messaging.MessagingGroupInfo
-import me.rhunk.snapenhance.core.messaging.SocialScope
-import me.rhunk.snapenhance.core.util.snap.BitmojiSelfie
+import me.rhunk.snapenhance.common.data.MessagingFriendInfo
+import me.rhunk.snapenhance.common.data.MessagingGroupInfo
+import me.rhunk.snapenhance.common.data.SocialScope
+import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie
import me.rhunk.snapenhance.ui.manager.Section
import me.rhunk.snapenhance.ui.util.AlertDialogs
import me.rhunk.snapenhance.ui.util.BitmojiImage
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/setup/screens/impl/PickLanguageScreen.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/setup/screens/impl/PickLanguageScreen.kt
index e3da9e93..f477de72 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/setup/screens/impl/PickLanguageScreen.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/setup/screens/impl/PickLanguageScreen.kt
@@ -14,14 +14,18 @@ import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
-import androidx.compose.runtime.*
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog
-import me.rhunk.snapenhance.core.bridge.wrapper.LocaleWrapper
+import me.rhunk.snapenhance.common.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.util.ObservableMutableState
import java.util.Locale
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/ActivityLauncherHelper.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/ActivityLauncherHelper.kt
index e0282d8b..266a411a 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/ActivityLauncherHelper.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/ActivityLauncherHelper.kt
@@ -4,7 +4,7 @@ import android.content.Intent
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
-import me.rhunk.snapenhance.core.Logger
+import me.rhunk.snapenhance.common.logger.AbstractLogger
typealias ActivityLauncherCallback = (resultCode: Int, intent: Intent?) -> Unit
@@ -17,7 +17,7 @@ class ActivityLauncherHelper(
runCatching {
callback?.let { it(if (result) ComponentActivity.RESULT_OK else ComponentActivity.RESULT_CANCELED, null) }
}.onFailure {
- Logger.directError("Failed to process activity result", it)
+ AbstractLogger.directError("Failed to process activity result", it)
}
callback = null
}
@@ -27,7 +27,7 @@ class ActivityLauncherHelper(
runCatching {
callback?.let { it(result.resultCode, result.data) }
}.onFailure {
- Logger.directError("Failed to process activity result", it)
+ AbstractLogger.directError("Failed to process activity result", it)
}
callback = null
}
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/AlertDialogs.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/AlertDialogs.kt
index 6e3bb4af..11cb692e 100644
--- a/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/AlertDialogs.kt
+++ b/app/src/main/kotlin/me/rhunk/snapenhance/ui/util/AlertDialogs.kt
@@ -22,9 +22,9 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
-import me.rhunk.snapenhance.core.bridge.wrapper.LocaleWrapper
-import me.rhunk.snapenhance.core.config.DataProcessors
-import me.rhunk.snapenhance.core.config.PropertyPair
+import me.rhunk.snapenhance.common.bridge.wrapper.LocaleWrapper
+import me.rhunk.snapenhance.common.config.DataProcessors
+import me.rhunk.snapenhance.common.config.PropertyPair
class AlertDialogs(
diff --git a/core/src/main/res/font/avenir_next_medium.ttf b/app/src/main/res/font/avenir_next_medium.ttf
similarity index 100%
rename from core/src/main/res/font/avenir_next_medium.ttf
rename to app/src/main/res/font/avenir_next_medium.ttf
diff --git a/core/src/main/res/layout/map.xml b/app/src/main/res/layout/map.xml
similarity index 100%
rename from core/src/main/res/layout/map.xml
rename to app/src/main/res/layout/map.xml
diff --git a/core/src/main/res/layout/precise_location_dialog.xml b/app/src/main/res/layout/precise_location_dialog.xml
similarity index 100%
rename from core/src/main/res/layout/precise_location_dialog.xml
rename to app/src/main/res/layout/precise_location_dialog.xml
diff --git a/core/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
similarity index 100%
rename from core/src/main/res/values/colors.xml
rename to app/src/main/res/values/colors.xml
diff --git a/core/src/main/res/values/launcher_icon_background.xml b/app/src/main/res/values/launcher_icon_background.xml
similarity index 100%
rename from core/src/main/res/values/launcher_icon_background.xml
rename to app/src/main/res/values/launcher_icon_background.xml
diff --git a/core/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
similarity index 100%
rename from core/src/main/res/values/strings.xml
rename to app/src/main/res/values/strings.xml
diff --git a/core/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
similarity index 100%
rename from core/src/main/res/values/themes.xml
rename to app/src/main/res/values/themes.xml
diff --git a/build.gradle.kts b/build.gradle.kts
index 0e2acbd6..a1b4d3b4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -12,3 +12,10 @@ rootProject.ext.set("appVersionName", versionName)
rootProject.ext.set("appVersionCode", versionCode)
rootProject.ext.set("applicationId", "me.rhunk.snapenhance")
rootProject.ext.set("nativeName", properties["custom_native_name"] ?: java.security.SecureRandom().nextLong(1000000000, 99999999999).toString(16))
+
+tasks.register("getVersion") {
+ doLast {
+ val versionFile = File("app/build/version.txt")
+ versionFile.writeText(versionName)
+ }
+}
diff --git a/common/.gitignore b/common/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/common/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/common/build.gradle.kts b/common/build.gradle.kts
new file mode 100644
index 00000000..fd0831d2
--- /dev/null
+++ b/common/build.gradle.kts
@@ -0,0 +1,37 @@
+plugins {
+ alias(libs.plugins.androidLibrary)
+ alias(libs.plugins.kotlinAndroid)
+}
+
+android {
+ namespace = rootProject.ext["applicationId"].toString() + ".common"
+ compileSdk = 34
+
+ buildFeatures {
+ aidl = true
+ buildConfig = true
+ }
+
+ defaultConfig {
+ minSdk = 28
+ buildConfigField("String", "VERSION_NAME", "\"${rootProject.ext["appVersionName"]}\"")
+ buildConfigField("int", "VERSION_CODE", "${rootProject.ext["appVersionCode"]}")
+ buildConfigField("String", "APPLICATION_ID", "\"${rootProject.ext["applicationId"]}\"")
+ buildConfigField("int", "BUILD_DATE", "${System.currentTimeMillis() / 1000}")
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+}
+
+dependencies {
+ implementation(libs.coroutines)
+ implementation(libs.gson)
+ implementation(libs.okhttp)
+ implementation(libs.androidx.documentfile)
+ implementation(libs.rhino)
+
+ implementation(project(":stub"))
+ implementation(project(":mapper"))
+}
\ No newline at end of file
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/BridgeInterface.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/BridgeInterface.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/BridgeInterface.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/BridgeInterface.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/ConfigStateListener.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/ConfigStateListener.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/ConfigStateListener.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/ConfigStateListener.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/DownloadCallback.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/DownloadCallback.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/DownloadCallback.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/DownloadCallback.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/MessageLoggerInterface.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/MessageLoggerInterface.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/MessageLoggerInterface.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/MessageLoggerInterface.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/SyncCallback.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/SyncCallback.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/SyncCallback.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/SyncCallback.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/E2eeInterface.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/E2eeInterface.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/E2eeInterface.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/E2eeInterface.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/EncryptionResult.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/EncryptionResult.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/EncryptionResult.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/e2ee/EncryptionResult.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IPCListener.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IPCListener.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IPCListener.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IPCListener.aidl
diff --git a/core/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IScripting.aidl b/common/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IScripting.aidl
similarity index 100%
rename from core/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IScripting.aidl
rename to common/src/main/aidl/me/rhunk/snapenhance/bridge/scripting/IScripting.aidl
diff --git a/core/src/main/assets/lang/ar_SA.json b/common/src/main/assets/lang/ar_SA.json
similarity index 100%
rename from core/src/main/assets/lang/ar_SA.json
rename to common/src/main/assets/lang/ar_SA.json
diff --git a/core/src/main/assets/lang/de_DE.json b/common/src/main/assets/lang/de_DE.json
similarity index 100%
rename from core/src/main/assets/lang/de_DE.json
rename to common/src/main/assets/lang/de_DE.json
diff --git a/core/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json
similarity index 100%
rename from core/src/main/assets/lang/en_US.json
rename to common/src/main/assets/lang/en_US.json
diff --git a/core/src/main/assets/lang/fr_FR.json b/common/src/main/assets/lang/fr_FR.json
similarity index 100%
rename from core/src/main/assets/lang/fr_FR.json
rename to common/src/main/assets/lang/fr_FR.json
diff --git a/core/src/main/assets/lang/hi_IN.json b/common/src/main/assets/lang/hi_IN.json
similarity index 100%
rename from core/src/main/assets/lang/hi_IN.json
rename to common/src/main/assets/lang/hi_IN.json
diff --git a/core/src/main/assets/lang/hu_HU.json b/common/src/main/assets/lang/hu_HU.json
similarity index 100%
rename from core/src/main/assets/lang/hu_HU.json
rename to common/src/main/assets/lang/hu_HU.json
diff --git a/core/src/main/assets/lang/it_IT.json b/common/src/main/assets/lang/it_IT.json
similarity index 100%
rename from core/src/main/assets/lang/it_IT.json
rename to common/src/main/assets/lang/it_IT.json
diff --git a/core/src/main/assets/lang/tr_TR.json b/common/src/main/assets/lang/tr_TR.json
similarity index 100%
rename from core/src/main/assets/lang/tr_TR.json
rename to common/src/main/assets/lang/tr_TR.json
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/Constants.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/Constants.kt
similarity index 88%
rename from core/src/main/kotlin/me/rhunk/snapenhance/Constants.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/Constants.kt
index ec860269..2613f274 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/Constants.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/Constants.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance
+package me.rhunk.snapenhance.common
object Constants {
const val SNAPCHAT_PACKAGE_NAME = "com.snapchat.android"
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/ReceiversConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/ReceiversConfig.kt
new file mode 100644
index 00000000..a3665943
--- /dev/null
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/ReceiversConfig.kt
@@ -0,0 +1,7 @@
+package me.rhunk.snapenhance.common
+
+object ReceiversConfig {
+ const val BRIDGE_SYNC_ACTION = BuildConfig.APPLICATION_ID + ".core.bridge.SYNC"
+ const val DOWNLOAD_REQUEST_EXTRA = "request"
+ const val DOWNLOAD_METADATA_EXTRA = "metadata"
+}
\ No newline at end of file
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/action/EnumAction.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/action/EnumAction.kt
new file mode 100644
index 00000000..70917f45
--- /dev/null
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/action/EnumAction.kt
@@ -0,0 +1,17 @@
+package me.rhunk.snapenhance.common.action
+
+
+
+enum class EnumAction(
+ val key: String,
+ val exitOnFinish: Boolean = false,
+ val isCritical: Boolean = false,
+) {
+ CLEAN_CACHE("clean_snapchat_cache", exitOnFinish = true),
+ EXPORT_CHAT_MESSAGES("export_chat_messages"),
+ OPEN_MAP("open_map");
+
+ companion object {
+ const val ACTION_PARAMETER = "se_action"
+ }
+}
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/FileLoaderWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/FileLoaderWrapper.kt
similarity index 56%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/FileLoaderWrapper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/FileLoaderWrapper.kt
index acf0c7a7..3f2b5c71 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/FileLoaderWrapper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/FileLoaderWrapper.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.core.bridge
+package me.rhunk.snapenhance.common.bridge
import android.content.Context
-import me.rhunk.snapenhance.core.bridge.types.BridgeFileType
+import me.rhunk.snapenhance.common.bridge.types.BridgeFileType
open class FileLoaderWrapper(
- private val fileType: BridgeFileType,
- private val defaultContent: ByteArray
+ val fileType: BridgeFileType,
+ val defaultContent: ByteArray
) {
lateinit var isFileExists: () -> Boolean
lateinit var write: (ByteArray) -> Unit
@@ -26,10 +26,4 @@ open class FileLoaderWrapper(
delete = { file.delete() }
}
- fun loadFromBridge(bridgeClient: BridgeClient) {
- isFileExists = { bridgeClient.isFileExists(fileType) }
- read = { bridgeClient.createAndReadFile(fileType, defaultContent) }
- write = { bridgeClient.writeFile(fileType, it) }
- delete = { bridgeClient.deleteFile(fileType) }
- }
}
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/types/BridgeFileType.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/BridgeFileType.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/types/BridgeFileType.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/BridgeFileType.kt
index 307c80f8..d0ba4d67 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/types/BridgeFileType.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/BridgeFileType.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.bridge.types
+package me.rhunk.snapenhance.common.bridge.types
import android.content.Context
import java.io.File
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/types/FileActionType.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/FileActionType.kt
similarity index 61%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/types/FileActionType.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/FileActionType.kt
index 49f00fe3..c9c8b12d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/types/FileActionType.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/FileActionType.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.bridge.types
+package me.rhunk.snapenhance.common.bridge.types
enum class FileActionType {
CREATE_AND_READ, READ, WRITE, DELETE, EXISTS
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/LocalePair.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/LocalePair.kt
new file mode 100644
index 00000000..096f2d53
--- /dev/null
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/types/LocalePair.kt
@@ -0,0 +1,6 @@
+package me.rhunk.snapenhance.common.bridge.types
+
+data class LocalePair(
+ val locale: String,
+ val content: String
+)
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/LocaleWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/LocaleWrapper.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/LocaleWrapper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/LocaleWrapper.kt
index 751a8b09..9b498b18 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/LocaleWrapper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/LocaleWrapper.kt
@@ -1,11 +1,10 @@
-package me.rhunk.snapenhance.core.bridge.wrapper
+package me.rhunk.snapenhance.common.bridge.wrapper
import android.content.Context
import com.google.gson.JsonObject
import com.google.gson.JsonParser
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.bridge.BridgeClient
-import me.rhunk.snapenhance.data.LocalePair
+import me.rhunk.snapenhance.common.bridge.types.LocalePair
+import me.rhunk.snapenhance.common.logger.AbstractLogger
import java.util.Locale
@@ -62,8 +61,8 @@ class LocaleWrapper {
scanObject(translations)
}
- fun loadFromBridge(bridgeClient: BridgeClient) {
- bridgeClient.fetchLocales(userLocale).forEach {
+ fun loadFromCallback(callback: (String) -> List) {
+ callback(userLocale).forEach {
load(it)
}
}
@@ -80,7 +79,7 @@ class LocaleWrapper {
loadFromContext(context)
}
- operator fun get(key: String) = translationMap[key] ?: key.also { Logger.directDebug("Missing translation for $key") }
+ operator fun get(key: String) = translationMap[key] ?: key.also { AbstractLogger.directDebug("Missing translation for $key") }
fun format(key: String, vararg args: Pair): String {
return args.fold(get(key)) { acc, pair ->
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/MappingsWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MappingsWrapper.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/MappingsWrapper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MappingsWrapper.kt
index e2cdc8e7..b70c0d33 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/MappingsWrapper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MappingsWrapper.kt
@@ -1,13 +1,12 @@
-package me.rhunk.snapenhance.core.bridge.wrapper
+package me.rhunk.snapenhance.common.bridge.wrapper
import android.content.Context
import com.google.gson.GsonBuilder
import com.google.gson.JsonElement
import com.google.gson.JsonParser
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.bridge.FileLoaderWrapper
-import me.rhunk.snapenhance.core.bridge.types.BridgeFileType
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.bridge.FileLoaderWrapper
+import me.rhunk.snapenhance.common.bridge.types.BridgeFileType
import me.rhunk.snapenhance.mapper.Mapper
import me.rhunk.snapenhance.mapper.impl.*
import java.util.concurrent.ConcurrentHashMap
@@ -107,8 +106,6 @@ class MappingsWrapper : FileLoaderWrapper(BridgeFileType.MAPPINGS, "{}".toByteAr
addProperty("snap_build_number", snapBuildNumber)
}
write(result.toString().toByteArray())
- }.also {
- Logger.directDebug("Generated mappings in $it ms")
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/MessageLoggerWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt
similarity index 96%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/MessageLoggerWrapper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt
index 0a770d6a..ba885c8d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/wrapper/MessageLoggerWrapper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/MessageLoggerWrapper.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.core.bridge.wrapper
+package me.rhunk.snapenhance.common.bridge.wrapper
import android.content.ContentValues
import android.database.sqlite.SQLiteDatabase
import me.rhunk.snapenhance.bridge.MessageLoggerInterface
-import me.rhunk.snapenhance.core.util.SQLiteDatabaseHelper
+import me.rhunk.snapenhance.common.util.SQLiteDatabaseHelper
import java.io.File
import java.util.UUID
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/ConfigContainer.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt
similarity index 98%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/ConfigContainer.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt
index d08b66eb..4ee566af 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/ConfigContainer.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.config
+package me.rhunk.snapenhance.common.config
import com.google.gson.JsonObject
import kotlin.reflect.KProperty
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/ConfigObjects.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigObjects.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/ConfigObjects.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigObjects.kt
index 50614bb8..22e8aa98 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/ConfigObjects.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigObjects.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.core.config
+package me.rhunk.snapenhance.common.config
-import me.rhunk.snapenhance.core.bridge.wrapper.LocaleWrapper
+import me.rhunk.snapenhance.common.bridge.wrapper.LocaleWrapper
import kotlin.reflect.KProperty
data class PropertyPair(
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/DataProcessors.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/DataProcessors.kt
similarity index 98%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/DataProcessors.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/DataProcessors.kt
index 8c852cb6..2bdd288c 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/DataProcessors.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/DataProcessors.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.config
+package me.rhunk.snapenhance.common.config
import com.google.gson.JsonArray
import com.google.gson.JsonElement
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/ModConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ModConfig.kt
similarity index 88%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/ModConfig.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/ModConfig.kt
index 015ed682..bee82be2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/ModConfig.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ModConfig.kt
@@ -1,16 +1,15 @@
-package me.rhunk.snapenhance.core.config
+package me.rhunk.snapenhance.common.config
import android.content.Context
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.JsonObject
import me.rhunk.snapenhance.bridge.ConfigStateListener
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.bridge.BridgeClient
-import me.rhunk.snapenhance.core.bridge.FileLoaderWrapper
-import me.rhunk.snapenhance.core.bridge.types.BridgeFileType
-import me.rhunk.snapenhance.core.bridge.wrapper.LocaleWrapper
-import me.rhunk.snapenhance.core.config.impl.RootConfig
+import me.rhunk.snapenhance.common.bridge.FileLoaderWrapper
+import me.rhunk.snapenhance.common.bridge.types.BridgeFileType
+import me.rhunk.snapenhance.common.bridge.wrapper.LocaleWrapper
+import me.rhunk.snapenhance.common.config.impl.RootConfig
+import me.rhunk.snapenhance.common.logger.AbstractLogger
import kotlin.properties.Delegates
class ModConfig {
@@ -106,7 +105,7 @@ class ModConfig {
else if (shouldRestart) it.onRestartRequired()
}
}.onFailure {
- Logger.directError("Error while calling config state listener", it, "ConfigStateListener")
+ AbstractLogger.directError("Error while calling config state listener", it, "ConfigStateListener")
}
}
@@ -125,8 +124,8 @@ class ModConfig {
load()
}
- fun loadFromBridge(bridgeClient: BridgeClient) {
- file.loadFromBridge(bridgeClient)
+ fun loadFromCallback(callback: (FileLoaderWrapper) -> Unit) {
+ callback(file)
load()
}
}
\ No newline at end of file
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt
new file mode 100644
index 00000000..15739c22
--- /dev/null
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt
@@ -0,0 +1,22 @@
+package me.rhunk.snapenhance.common.config.impl
+
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.ConfigFlag
+import me.rhunk.snapenhance.common.config.FeatureNotice
+
+class Camera : ConfigContainer() {
+ companion object {
+ val resolutions = listOf("3264x2448", "3264x1840", "3264x1504", "2688x1512", "2560x1920", "2448x2448", "2340x1080", "2160x1080", "1920x1440", "1920x1080", "1600x1200", "1600x960", "1600x900", "1600x736", "1600x720", "1560x720", "1520x720", "1440x1080", "1440x720", "1280x720", "1080x1080", "1080x720", "960x720", "720x720", "720x480", "640x480", "352x288", "320x240", "176x144").toTypedArray()
+ }
+
+ val disable = boolean("disable_camera")
+ val immersiveCameraPreview = boolean("immersive_camera_preview") { addNotices(FeatureNotice.UNSTABLE) }
+ val overridePreviewResolution = unique("override_preview_resolution", *resolutions)
+ { addFlags(ConfigFlag.NO_TRANSLATE) }
+ val overridePictureResolution = unique("override_picture_resolution", *resolutions)
+ { addFlags(ConfigFlag.NO_TRANSLATE) }
+ val customFrameRate = unique("custom_frame_rate",
+ "5", "10", "20", "25", "30", "48", "60", "90", "120"
+ ) { addNotices(FeatureNotice.UNSTABLE); addFlags(ConfigFlag.NO_TRANSLATE) }
+ val forceCameraSourceEncoding = boolean("force_camera_source_encoding")
+}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/DownloaderConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/DownloaderConfig.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/DownloaderConfig.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/DownloaderConfig.kt
index d101d6a0..6f9403f7 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/DownloaderConfig.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/DownloaderConfig.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.ConfigFlag
-import me.rhunk.snapenhance.core.config.FeatureNotice
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.ConfigFlag
+import me.rhunk.snapenhance.common.config.FeatureNotice
class DownloaderConfig : ConfigContainer() {
inner class FFMpegOptions : ConfigContainer() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/E2EEConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/E2EEConfig.kt
similarity index 66%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/E2EEConfig.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/E2EEConfig.kt
index f3ba0561..2feeb67e 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/E2EEConfig.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/E2EEConfig.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.ConfigContainer
class E2EEConfig : ConfigContainer(hasGlobalState = true) {
val encryptedMessageIndicator = boolean("encrypted_message_indicator")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Experimental.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Experimental.kt
similarity index 87%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Experimental.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Experimental.kt
index e144119e..e9969f3c 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Experimental.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Experimental.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.FeatureNotice
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.FeatureNotice
class Experimental : ConfigContainer() {
val nativeHooks = container("native_hooks", NativeHooks()) { icon = "Memory"; requireRestart() }
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Global.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt
similarity index 68%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Global.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt
index b5f5e185..ee115e86 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Global.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt
@@ -1,13 +1,14 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.FeatureNotice
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.FeatureNotice
class Global : ConfigContainer() {
val snapchatPlus = boolean("snapchat_plus") { addNotices(FeatureNotice.BAN_RISK); requireRestart() }
val disableMetrics = boolean("disable_metrics")
val blockAds = boolean("block_ads")
- val bypassVideoLengthRestriction = unique("bypass_video_length_restriction", "split", "single") { addNotices(FeatureNotice.BAN_RISK); requireRestart() }
+ val bypassVideoLengthRestriction = unique("bypass_video_length_restriction", "split", "single") { addNotices(
+ FeatureNotice.BAN_RISK); requireRestart() }
val disableGooglePlayDialogs = boolean("disable_google_play_dialogs") { requireRestart() }
val forceMediaSourceQuality = boolean("force_media_source_quality")
val disableSnapSplitting = boolean("disable_snap_splitting") { addNotices(FeatureNotice.INTERNAL_BEHAVIOR) }
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/MessagingTweaks.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/MessagingTweaks.kt
similarity index 87%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/MessagingTweaks.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/MessagingTweaks.kt
index c3ca045a..19d5f5ae 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/MessagingTweaks.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/MessagingTweaks.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.FeatureNotice
-import me.rhunk.snapenhance.data.NotificationType
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.FeatureNotice
+import me.rhunk.snapenhance.common.data.NotificationType
class MessagingTweaks : ConfigContainer() {
val anonymousStoryViewing = boolean("anonymous_story_viewing")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/NativeHooks.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/NativeHooks.kt
similarity index 63%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/NativeHooks.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/NativeHooks.kt
index bcee812d..032eca4b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/NativeHooks.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/NativeHooks.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.ConfigContainer
class NativeHooks: ConfigContainer(hasGlobalState = true) {
val disableBitmoji = boolean("disable_bitmoji")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/RootConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/RootConfig.kt
similarity index 84%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/RootConfig.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/RootConfig.kt
index 6456ef11..8273643a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/RootConfig.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/RootConfig.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.FeatureNotice
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.FeatureNotice
class RootConfig : ConfigContainer() {
val downloader = container("downloader", DownloaderConfig()) { icon = "Download"}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Rules.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Rules.kt
similarity index 70%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Rules.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Rules.kt
index 808d699f..9d96e915 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Rules.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Rules.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.PropertyValue
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.messaging.RuleState
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.PropertyValue
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.RuleState
class Rules : ConfigContainer() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Scripting.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Scripting.kt
similarity index 63%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Scripting.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Scripting.kt
index e3f14c17..0f2d2afa 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Scripting.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Scripting.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.ConfigFlag
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.ConfigFlag
class Scripting : ConfigContainer() {
val developerMode = boolean("developer_mode", false) { requireRestart() }
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Spoof.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Spoof.kt
similarity index 84%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Spoof.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Spoof.kt
index d8c2acd5..d71b185f 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Spoof.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Spoof.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.FeatureNotice
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.FeatureNotice
class Spoof : ConfigContainer() {
inner class Location : ConfigContainer(hasGlobalState = true) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/StreaksReminderConfig.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/StreaksReminderConfig.kt
similarity index 69%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/StreaksReminderConfig.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/StreaksReminderConfig.kt
index d9d0fb11..569c72a9 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/StreaksReminderConfig.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/StreaksReminderConfig.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.ConfigContainer
class StreaksReminderConfig : ConfigContainer(hasGlobalState = true) {
val interval = integer("interval", 2)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/UserInterfaceTweaks.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt
similarity index 80%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/UserInterfaceTweaks.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt
index 2e68c9fd..624fd2f6 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/UserInterfaceTweaks.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt
@@ -1,14 +1,17 @@
-package me.rhunk.snapenhance.core.config.impl
+package me.rhunk.snapenhance.common.config.impl
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.FeatureNotice
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.features.impl.ui.ClientBootstrapOverride
+import me.rhunk.snapenhance.common.config.ConfigContainer
+import me.rhunk.snapenhance.common.config.FeatureNotice
+import me.rhunk.snapenhance.common.data.MessagingRuleType
class UserInterfaceTweaks : ConfigContainer() {
- inner class BootstrapOverride : ConfigContainer() {
+ class BootstrapOverride : ConfigContainer() {
+ companion object {
+ val tabs = arrayOf("map", "chat", "camera", "discover", "spotlight")
+ }
+
val appAppearance = unique("app_appearance", "always_light", "always_dark")
- val homeTab = unique("home_tab", *ClientBootstrapOverride.tabs) { addNotices(FeatureNotice.UNSTABLE) }
+ val homeTab = unique("home_tab", *tabs) { addNotices(FeatureNotice.UNSTABLE) }
}
inner class FriendFeedMessagePreview : ConfigContainer(hasGlobalState = true) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/FileType.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/FileType.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/FileType.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/FileType.kt
index aea99d59..dcad88b2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/FileType.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/FileType.kt
@@ -1,6 +1,5 @@
-package me.rhunk.snapenhance.data
+package me.rhunk.snapenhance.common.data
-import me.rhunk.snapenhance.core.Logger
import java.io.File
import java.io.InputStream
@@ -61,9 +60,7 @@ enum class FileType(
val headerBytes = ByteArray(16)
System.arraycopy(array, 0, headerBytes, 0, 16)
val hex = bytesToHex(headerBytes)
- return fileSignatures.entries.firstOrNull { hex.startsWith(it.key) }?.value ?: UNKNOWN.also {
- Logger.directDebug("unknown file type, header: $hex", "FileType")
- }
+ return fileSignatures.entries.firstOrNull { hex.startsWith(it.key) }?.value ?: UNKNOWN
}
fun fromInputStream(inputStream: InputStream): FileType {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessagingCoreObjects.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/MessagingCoreObjects.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessagingCoreObjects.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/MessagingCoreObjects.kt
index cc883cd2..cd48536a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessagingCoreObjects.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/MessagingCoreObjects.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.core.messaging
+package me.rhunk.snapenhance.common.data
-import me.rhunk.snapenhance.core.util.SerializableDataObject
+import me.rhunk.snapenhance.common.util.SerializableDataObject
enum class RuleState(
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/SnapEnums.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/SnapEnums.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/SnapEnums.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/SnapEnums.kt
index 29f307b7..15ad6634 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/SnapEnums.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/SnapEnums.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.data
+package me.rhunk.snapenhance.common.data
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
enum class MessageState {
PREPARING, SENDING, COMMITTED, FAILED, CANCELING
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadMediaType.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadMediaType.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadMediaType.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadMediaType.kt
index 5cb8f9e8..ede7c0e8 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadMediaType.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadMediaType.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
import android.net.Uri
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadMetadata.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadMetadata.kt
similarity index 78%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadMetadata.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadMetadata.kt
index f18d77ad..6c13dc62 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadMetadata.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadMetadata.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
data class DownloadMetadata(
val mediaIdentifier: String?,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadRequest.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadRequest.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadRequest.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadRequest.kt
index fc0facad..d3ad0f82 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadRequest.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadRequest.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
data class DashOptions(val offsetTime: Long, val duration: Long?)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadStage.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadStage.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadStage.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadStage.kt
index fa0e2073..674e7a37 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/DownloadStage.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/DownloadStage.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
enum class DownloadStage(
val isFinalStage: Boolean = false,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/MediaDownloadSource.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/MediaDownloadSource.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/MediaDownloadSource.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/MediaDownloadSource.kt
index c01b687b..4cd0840f 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/MediaDownloadSource.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/MediaDownloadSource.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
enum class MediaDownloadSource(
val key: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/MediaEncryptionKeyPair.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/MediaEncryptionKeyPair.kt
similarity index 77%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/MediaEncryptionKeyPair.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/MediaEncryptionKeyPair.kt
index 961a10e6..508b04fc 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/MediaEncryptionKeyPair.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/MediaEncryptionKeyPair.kt
@@ -1,8 +1,7 @@
@file:OptIn(ExperimentalEncodingApi::class)
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
-import me.rhunk.snapenhance.data.wrapper.impl.media.EncryptionWrapper
import java.io.InputStream
import javax.crypto.Cipher
import javax.crypto.CipherInputStream
@@ -25,6 +24,3 @@ data class MediaEncryptionKeyPair(
fun Pair.toKeyPair()
= MediaEncryptionKeyPair(Base64.UrlSafe.encode(this.first), Base64.UrlSafe.encode(this.second))
-
-fun EncryptionWrapper.toKeyPair()
- = MediaEncryptionKeyPair(Base64.UrlSafe.encode(this.keySpec), Base64.UrlSafe.encode(this.ivKeyParameterSpec))
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/SplitMediaAssetType.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/SplitMediaAssetType.kt
similarity index 53%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/SplitMediaAssetType.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/SplitMediaAssetType.kt
index c5fae162..8c6d33e3 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/data/SplitMediaAssetType.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/data/download/SplitMediaAssetType.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.download.data
+package me.rhunk.snapenhance.common.data.download
enum class SplitMediaAssetType {
ORIGINAL, OVERLAY
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseObject.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/DatabaseObject.kt
similarity index 67%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseObject.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/database/DatabaseObject.kt
index def56fd5..dcd70f9b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseObject.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/DatabaseObject.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.database
+package me.rhunk.snapenhance.common.database
import android.database.Cursor
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/ConversationMessage.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/ConversationMessage.kt
similarity index 72%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/ConversationMessage.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/ConversationMessage.kt
index 907e4b07..d0f0282a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/ConversationMessage.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/ConversationMessage.kt
@@ -1,15 +1,12 @@
-package me.rhunk.snapenhance.core.database.objects
+package me.rhunk.snapenhance.common.database.impl
import android.annotation.SuppressLint
import android.database.Cursor
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.core.database.DatabaseObject
-import me.rhunk.snapenhance.core.util.ktx.getBlobOrNull
-import me.rhunk.snapenhance.core.util.ktx.getInteger
-import me.rhunk.snapenhance.core.util.ktx.getLong
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.ContentType
+import me.rhunk.snapenhance.common.database.DatabaseObject
+import me.rhunk.snapenhance.common.util.ktx.getBlobOrNull
+import me.rhunk.snapenhance.common.util.ktx.getInteger
+import me.rhunk.snapenhance.common.util.ktx.getLong
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
@Suppress("ArrayInDataClass")
data class ConversationMessage(
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/FriendFeedEntry.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/FriendFeedEntry.kt
similarity index 83%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/FriendFeedEntry.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/FriendFeedEntry.kt
index dc28e7d1..d8d22dbf 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/FriendFeedEntry.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/FriendFeedEntry.kt
@@ -1,12 +1,12 @@
-package me.rhunk.snapenhance.core.database.objects
+package me.rhunk.snapenhance.common.database.impl
import android.annotation.SuppressLint
import android.database.Cursor
-import me.rhunk.snapenhance.core.database.DatabaseObject
-import me.rhunk.snapenhance.core.util.ktx.getIntOrNull
-import me.rhunk.snapenhance.core.util.ktx.getInteger
-import me.rhunk.snapenhance.core.util.ktx.getLong
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
+import me.rhunk.snapenhance.common.database.DatabaseObject
+import me.rhunk.snapenhance.common.util.ktx.getIntOrNull
+import me.rhunk.snapenhance.common.util.ktx.getInteger
+import me.rhunk.snapenhance.common.util.ktx.getLong
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
data class FriendFeedEntry(
var id: Int = 0,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/FriendInfo.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/FriendInfo.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/FriendInfo.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/FriendInfo.kt
index 9da58bf2..9c9599e1 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/FriendInfo.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/FriendInfo.kt
@@ -1,12 +1,12 @@
-package me.rhunk.snapenhance.core.database.objects
+package me.rhunk.snapenhance.common.database.impl
import android.annotation.SuppressLint
import android.database.Cursor
-import me.rhunk.snapenhance.core.database.DatabaseObject
-import me.rhunk.snapenhance.core.util.SerializableDataObject
-import me.rhunk.snapenhance.core.util.ktx.getInteger
-import me.rhunk.snapenhance.core.util.ktx.getLong
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
+import me.rhunk.snapenhance.common.database.DatabaseObject
+import me.rhunk.snapenhance.common.util.SerializableDataObject
+import me.rhunk.snapenhance.common.util.ktx.getInteger
+import me.rhunk.snapenhance.common.util.ktx.getLong
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
data class FriendInfo(
var id: Int = 0,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/StoryEntry.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/StoryEntry.kt
similarity index 73%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/StoryEntry.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/StoryEntry.kt
index a6f83d8f..7f90fca2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/StoryEntry.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/StoryEntry.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.core.database.objects
+package me.rhunk.snapenhance.common.database.impl
import android.annotation.SuppressLint
import android.database.Cursor
-import me.rhunk.snapenhance.core.database.DatabaseObject
-import me.rhunk.snapenhance.core.util.ktx.getInteger
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
+import me.rhunk.snapenhance.common.database.DatabaseObject
+import me.rhunk.snapenhance.common.util.ktx.getInteger
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
data class StoryEntry(
var id: Int = 0,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/UserConversationLink.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/UserConversationLink.kt
similarity index 70%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/UserConversationLink.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/UserConversationLink.kt
index c036618a..9865c657 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/objects/UserConversationLink.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/database/impl/UserConversationLink.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.core.database.objects
+package me.rhunk.snapenhance.common.database.impl
import android.annotation.SuppressLint
import android.database.Cursor
-import me.rhunk.snapenhance.core.database.DatabaseObject
-import me.rhunk.snapenhance.core.util.ktx.getInteger
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
+import me.rhunk.snapenhance.common.database.DatabaseObject
+import me.rhunk.snapenhance.common.util.ktx.getInteger
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
class UserConversationLink(
var userId: String? = null,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/AbstractLogger.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/AbstractLogger.kt
similarity index 51%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/logger/AbstractLogger.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/logger/AbstractLogger.kt
index dac46f2b..a77e2aa4 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/AbstractLogger.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/AbstractLogger.kt
@@ -1,10 +1,26 @@
-package me.rhunk.snapenhance.core.logger
+package me.rhunk.snapenhance.common.logger
+
+import android.util.Log
abstract class AbstractLogger(
logChannel: LogChannel,
) {
private val TAG = logChannel.shortName
+ companion object {
+
+ private const val TAG = "SnapEnhanceCommon"
+
+ fun directDebug(message: Any?, tag: String = TAG) {
+ Log.println(Log.DEBUG, tag, message.toString())
+ }
+
+ fun directError(message: Any?, throwable: Throwable, tag: String = TAG) {
+ Log.println(Log.ERROR, tag, message.toString())
+ Log.println(Log.ERROR, tag, throwable.toString())
+ }
+
+ }
open fun debug(message: Any?, tag: String = TAG) {}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/LogChannel.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/LogChannel.kt
similarity index 90%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/logger/LogChannel.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/logger/LogChannel.kt
index d74516cd..1d3024bd 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/LogChannel.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/LogChannel.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.logger
+package me.rhunk.snapenhance.common.logger
enum class LogChannel(
val channel: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/LogLevel.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/LogLevel.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/logger/LogLevel.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/logger/LogLevel.kt
index 8478872d..b20c78a2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/LogLevel.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/LogLevel.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.logger
+package me.rhunk.snapenhance.common.logger
import android.util.Log
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/IPCInterface.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/IPCInterface.kt
similarity index 92%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/IPCInterface.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/IPCInterface.kt
index ae42bba3..98b4f5c3 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/IPCInterface.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/IPCInterface.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.scripting
+package me.rhunk.snapenhance.common.scripting
typealias Listener = (Array) -> Unit
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/JSModule.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/JSModule.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/JSModule.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/JSModule.kt
index ecdf19b6..693dfc69 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/JSModule.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/JSModule.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.scripting
+package me.rhunk.snapenhance.common.scripting
import android.os.Handler
import android.widget.Toast
-import me.rhunk.snapenhance.scripting.ktx.contextScope
-import me.rhunk.snapenhance.scripting.ktx.putFunction
-import me.rhunk.snapenhance.scripting.ktx.scriptableObject
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.scripting.ktx.contextScope
+import me.rhunk.snapenhance.common.scripting.ktx.putFunction
+import me.rhunk.snapenhance.common.scripting.ktx.scriptableObject
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
import org.mozilla.javascript.Function
import org.mozilla.javascript.NativeJavaObject
import org.mozilla.javascript.ScriptableObject
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/PrimitiveUtil.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/PrimitiveUtil.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/PrimitiveUtil.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/PrimitiveUtil.kt
index ab092c83..48518afa 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/PrimitiveUtil.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/PrimitiveUtil.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.scripting
+package me.rhunk.snapenhance.common.scripting
fun Any?.toPrimitiveValue(type: Lazy) = when (this) {
is Number -> when (type.value) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/ScriptRuntime.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/ScriptRuntime.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/ScriptRuntime.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/ScriptRuntime.kt
index 4070a6d7..87eaaaa3 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/ScriptRuntime.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/ScriptRuntime.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.scripting
+package me.rhunk.snapenhance.common.scripting
import android.content.Context
-import me.rhunk.snapenhance.core.logger.AbstractLogger
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.logger.AbstractLogger
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
import org.mozilla.javascript.ScriptableObject
import java.io.BufferedReader
import java.io.ByteArrayInputStream
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/ktx/RhinoKtx.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/ktx/RhinoKtx.kt
similarity index 95%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/ktx/RhinoKtx.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/ktx/RhinoKtx.kt
index c22f19db..b59e4b67 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/ktx/RhinoKtx.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/ktx/RhinoKtx.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.scripting.ktx
+package me.rhunk.snapenhance.common.scripting.ktx
import org.mozilla.javascript.Context
import org.mozilla.javascript.Function
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/type/ModuleInfo.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/type/ModuleInfo.kt
similarity index 83%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/type/ModuleInfo.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/type/ModuleInfo.kt
index 4891ebf4..1bdeb2ea 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/type/ModuleInfo.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/type/ModuleInfo.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.scripting.type
+package me.rhunk.snapenhance.common.scripting.type
data class ModuleInfo(
val name: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/SQLiteDatabaseHelper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/SQLiteDatabaseHelper.kt
similarity index 86%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/SQLiteDatabaseHelper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/SQLiteDatabaseHelper.kt
index 0e84ccd0..e7e552c2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/SQLiteDatabaseHelper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/SQLiteDatabaseHelper.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.core.util
+package me.rhunk.snapenhance.common.util
import android.annotation.SuppressLint
import android.database.sqlite.SQLiteDatabase
-import me.rhunk.snapenhance.core.Logger
+import me.rhunk.snapenhance.common.logger.AbstractLogger
object SQLiteDatabaseHelper {
@SuppressLint("Range")
@@ -23,7 +23,7 @@ object SQLiteDatabaseHelper {
if (newColumns.isEmpty()) return@forEach
- Logger.directDebug("Schema for table $tableName has changed")
+ AbstractLogger.directDebug("Schema for table $tableName has changed")
sqLiteDatabase.execSQL("DROP TABLE $tableName")
sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS $tableName (${columns.joinToString(", ")})")
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/SerializableDataObject.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/SerializableDataObject.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/SerializableDataObject.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/SerializableDataObject.kt
index cf64babd..98501844 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/SerializableDataObject.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/SerializableDataObject.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util
+package me.rhunk.snapenhance.common.util
import com.google.gson.Gson
import com.google.gson.GsonBuilder
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/ktx/AndroidCompatExtensions.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/ktx/AndroidCompatExtensions.kt
similarity index 90%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/ktx/AndroidCompatExtensions.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/ktx/AndroidCompatExtensions.kt
index 7a6a4783..9aeec810 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/ktx/AndroidCompatExtensions.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/ktx/AndroidCompatExtensions.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.ktx
+package me.rhunk.snapenhance.common.util.ktx
import android.content.pm.PackageManager
import android.content.pm.PackageManager.ApplicationInfoFlags
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/ktx/DbCursorExt.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/ktx/DbCursorExt.kt
similarity index 96%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/ktx/DbCursorExt.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/ktx/DbCursorExt.kt
index e377aae1..8a671592 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/ktx/DbCursorExt.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/ktx/DbCursorExt.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.ktx
+package me.rhunk.snapenhance.common.util.ktx
import android.database.Cursor
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoEditor.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoEditor.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoEditor.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoEditor.kt
index 9f5e04c2..a70a57b3 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoEditor.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoEditor.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.protobuf
+package me.rhunk.snapenhance.common.util.protobuf
typealias WireCallback = EditorContext.() -> Unit
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoReader.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoReader.kt
similarity index 99%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoReader.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoReader.kt
index d7d6605a..5d84550c 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoReader.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoReader.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.protobuf
+package me.rhunk.snapenhance.common.util.protobuf
import java.util.UUID
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoWriter.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoWriter.kt
similarity index 98%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoWriter.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoWriter.kt
index 06f835ee..c294efa8 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/ProtoWriter.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/ProtoWriter.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.protobuf
+package me.rhunk.snapenhance.common.util.protobuf
import java.io.ByteArrayOutputStream
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/WireType.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/WireType.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/WireType.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/WireType.kt
index d372ce0d..09f39dce 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/protobuf/WireType.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/protobuf/WireType.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.protobuf;
+package me.rhunk.snapenhance.common.util.protobuf;
enum class WireType(val value: Int) {
VARINT(0),
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/BitmojiSelfie.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/BitmojiSelfie.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/BitmojiSelfie.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/BitmojiSelfie.kt
index eda374ff..b2396cf8 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/BitmojiSelfie.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/BitmojiSelfie.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.snap
+package me.rhunk.snapenhance.common.util.snap
object BitmojiSelfie {
enum class BitmojiSelfieType(
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/MediaDownloaderHelper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/MediaDownloaderHelper.kt
similarity index 88%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/MediaDownloaderHelper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/MediaDownloaderHelper.kt
index deae44c6..7538450a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/MediaDownloaderHelper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/MediaDownloaderHelper.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.util.snap
+package me.rhunk.snapenhance.common.util.snap
-import me.rhunk.snapenhance.core.download.data.SplitMediaAssetType
-import me.rhunk.snapenhance.data.FileType
+import me.rhunk.snapenhance.common.data.FileType
+import me.rhunk.snapenhance.common.data.download.SplitMediaAssetType
import java.io.BufferedInputStream
import java.io.InputStream
import java.util.zip.ZipEntry
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/download/RemoteMediaResolver.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/RemoteMediaResolver.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/download/RemoteMediaResolver.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/RemoteMediaResolver.kt
index dfa06b0f..c7e6664e 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/download/RemoteMediaResolver.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/RemoteMediaResolver.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.util.download
+package me.rhunk.snapenhance.common.util.snap
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.core.Logger
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.logger.AbstractLogger
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.InputStream
@@ -46,7 +46,7 @@ object RemoteMediaResolver {
fun downloadBoltMedia(protoKey: ByteArray, decryptionCallback: (InputStream) -> InputStream = { it }): ByteArray? {
okHttpClient.newCall(newResolveRequest(protoKey)).execute().use { response ->
if (!response.isSuccessful) {
- Logger.directDebug("Unexpected code $response")
+ AbstractLogger.directDebug("Unexpected code $response")
return null
}
return decryptionCallback(response.body.byteStream()).readBytes()
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/SnapWidgetBroadcastReceiverHelper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/SnapWidgetBroadcastReceiverHelper.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/SnapWidgetBroadcastReceiverHelper.kt
rename to common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/SnapWidgetBroadcastReceiverHelper.kt
index 24fd9461..f0b5a65b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/SnapWidgetBroadcastReceiverHelper.kt
+++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/SnapWidgetBroadcastReceiverHelper.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.core.util.snap
+package me.rhunk.snapenhance.common.util.snap
import android.content.Intent
-import me.rhunk.snapenhance.Constants
+import me.rhunk.snapenhance.common.Constants
object SnapWidgetBroadcastReceiverHelper {
private const val ACTION_WIDGET_UPDATE = "com.snap.android.WIDGET_APP_START_UPDATE_ACTION"
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index 7c7c00c5..7720db32 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -7,17 +7,8 @@ android {
namespace = rootProject.ext["applicationId"].toString() + ".core"
compileSdk = 34
- buildFeatures {
- aidl = true
- buildConfig = true
- }
-
defaultConfig {
minSdk = 28
- buildConfigField("String", "VERSION_NAME", "\"${rootProject.ext["appVersionName"]}\"")
- buildConfigField("int", "VERSION_CODE", "${rootProject.ext["appVersionCode"]}")
- buildConfigField("String", "APPLICATION_ID", "\"${rootProject.ext["applicationId"]}\"")
- buildConfigField("int", "BUILD_DATE", "${System.currentTimeMillis() / 1000}")
}
kotlinOptions {
@@ -25,13 +16,6 @@ android {
}
}
-tasks.register("getVersion") {
- doLast {
- val versionFile = File("app/build/version.txt")
- versionFile.writeText(rootProject.ext["appVersionName"].toString())
- }
-}
-
dependencies {
compileOnly(files("libs/LSPosed-api-1.0-SNAPSHOT.jar"))
implementation(libs.coroutines)
@@ -41,6 +25,7 @@ dependencies {
implementation(libs.androidx.documentfile)
implementation(libs.rhino)
+ implementation(project(":common"))
implementation(project(":stub"))
implementation(project(":mapper"))
implementation(project(":native"))
diff --git a/core/src/main/assets/xposed_init b/core/src/main/assets/xposed_init
index 6f814117..46ffe14b 100644
--- a/core/src/main/assets/xposed_init
+++ b/core/src/main/assets/xposed_init
@@ -1 +1 @@
-me.rhunk.snapenhance.XposedLoader
\ No newline at end of file
+me.rhunk.snapenhance.core.XposedLoader
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/action/EnumAction.kt b/core/src/main/kotlin/me/rhunk/snapenhance/action/EnumAction.kt
deleted file mode 100644
index 376786da..00000000
--- a/core/src/main/kotlin/me/rhunk/snapenhance/action/EnumAction.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package me.rhunk.snapenhance.action
-
-import me.rhunk.snapenhance.action.impl.CleanCache
-import me.rhunk.snapenhance.action.impl.ExportChatMessages
-import me.rhunk.snapenhance.action.impl.OpenMap
-import kotlin.reflect.KClass
-
-enum class EnumAction(
- val key: String,
- val clazz: KClass,
- val exitOnFinish: Boolean = false,
- val isCritical: Boolean = false,
-) {
- CLEAN_CACHE("clean_snapchat_cache", CleanCache::class, exitOnFinish = true),
- EXPORT_CHAT_MESSAGES("export_chat_messages", ExportChatMessages::class),
- OPEN_MAP("open_map", OpenMap::class);
-}
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/DownloadManagerClient.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/DownloadManagerClient.kt
similarity index 69%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/download/DownloadManagerClient.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/DownloadManagerClient.kt
index 45ab6762..42fec8ca 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/download/DownloadManagerClient.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/DownloadManagerClient.kt
@@ -1,32 +1,22 @@
-package me.rhunk.snapenhance.core.download
+package me.rhunk.snapenhance.core
import android.content.Intent
import android.os.Bundle
-import me.rhunk.snapenhance.ModContext
import me.rhunk.snapenhance.bridge.DownloadCallback
-import me.rhunk.snapenhance.core.download.data.DashOptions
-import me.rhunk.snapenhance.core.download.data.DownloadMediaType
-import me.rhunk.snapenhance.core.download.data.DownloadMetadata
-import me.rhunk.snapenhance.core.download.data.DownloadRequest
-import me.rhunk.snapenhance.core.download.data.InputMedia
-import me.rhunk.snapenhance.core.download.data.MediaEncryptionKeyPair
-import me.rhunk.snapenhance.features.impl.downloader.decoder.AttachmentType
+import me.rhunk.snapenhance.common.ReceiversConfig
+import me.rhunk.snapenhance.common.data.download.*
+import me.rhunk.snapenhance.core.features.impl.downloader.decoder.AttachmentType
class DownloadManagerClient (
private val context: ModContext,
private val metadata: DownloadMetadata,
private val callback: DownloadCallback
) {
- companion object {
- const val DOWNLOAD_REQUEST_EXTRA = "request"
- const val DOWNLOAD_METADATA_EXTRA = "metadata"
- }
-
private fun enqueueDownloadRequest(request: DownloadRequest) {
context.bridgeClient.enqueueDownload(Intent().apply {
putExtras(Bundle().apply {
- putString(DOWNLOAD_REQUEST_EXTRA, context.gson.toJson(request))
- putString(DOWNLOAD_METADATA_EXTRA, context.gson.toJson(metadata))
+ putString(ReceiversConfig.DOWNLOAD_REQUEST_EXTRA, context.gson.toJson(request))
+ putString(ReceiversConfig.DOWNLOAD_METADATA_EXTRA, context.gson.toJson(metadata))
})
}, callback)
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ModContext.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ModContext.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ModContext.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ModContext.kt
index edecc275..32c76213 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ModContext.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ModContext.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance
+package me.rhunk.snapenhance.core
import android.app.Activity
import android.content.ClipData
@@ -14,22 +14,24 @@ import com.google.gson.GsonBuilder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
-import me.rhunk.snapenhance.core.Logger
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.bridge.wrapper.LocaleWrapper
+import me.rhunk.snapenhance.common.bridge.wrapper.MappingsWrapper
+import me.rhunk.snapenhance.common.config.ModConfig
import me.rhunk.snapenhance.core.bridge.BridgeClient
-import me.rhunk.snapenhance.core.bridge.wrapper.LocaleWrapper
-import me.rhunk.snapenhance.core.bridge.wrapper.MappingsWrapper
-import me.rhunk.snapenhance.core.config.ModConfig
+import me.rhunk.snapenhance.core.bridge.loadFromBridge
import me.rhunk.snapenhance.core.database.DatabaseAccess
import me.rhunk.snapenhance.core.event.EventBus
import me.rhunk.snapenhance.core.event.EventDispatcher
-import me.rhunk.snapenhance.core.util.download.HttpServer
-import me.rhunk.snapenhance.data.MessageSender
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.manager.impl.ActionManager
-import me.rhunk.snapenhance.manager.impl.FeatureManager
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.logger.CoreLogger
+import me.rhunk.snapenhance.core.manager.impl.ActionManager
+import me.rhunk.snapenhance.core.manager.impl.FeatureManager
+import me.rhunk.snapenhance.core.messaging.MessageSender
+import me.rhunk.snapenhance.core.scripting.CoreScriptRuntime
+import me.rhunk.snapenhance.core.util.media.HttpServer
import me.rhunk.snapenhance.nativelib.NativeConfig
import me.rhunk.snapenhance.nativelib.NativeLib
-import me.rhunk.snapenhance.scripting.core.CoreScriptRuntime
import kotlin.reflect.KClass
import kotlin.system.exitProcess
@@ -46,7 +48,7 @@ class ModContext {
private val _config = ModConfig()
val config by _config::root
- val log by lazy { Logger(this.bridgeClient) }
+ val log by lazy { CoreLogger(this.bridgeClient) }
val translation = LocaleWrapper()
val httpServer = HttpServer()
val messageSender = MessageSender(this)
@@ -73,7 +75,7 @@ class ModContext {
}
Handler(Looper.getMainLooper()).post {
runCatching(runnable).onFailure {
- Logger.xposedLog("UI thread runnable failed", it)
+ CoreLogger.xposedLog("UI thread runnable failed", it)
}
}
}
@@ -136,7 +138,9 @@ class ModContext {
fun reloadConfig() {
log.verbose("reloading config")
- _config.loadFromBridge(bridgeClient)
+ _config.loadFromCallback { file ->
+ file.loadFromBridge(bridgeClient)
+ }
native.loadNativeConfig(
NativeConfig(
disableBitmoji = config.experimental.nativeHooks.disableBitmoji.get(),
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/SnapEnhance.kt
similarity index 92%
rename from core/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/SnapEnhance.kt
index 9fe91f44..377fd902 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/SnapEnhance.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance
+package me.rhunk.snapenhance.core
import android.app.Activity
import android.app.Application
@@ -7,17 +7,20 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
-import me.rhunk.snapenhance.action.EnumAction
import me.rhunk.snapenhance.bridge.ConfigStateListener
import me.rhunk.snapenhance.bridge.SyncCallback
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.ReceiversConfig
+import me.rhunk.snapenhance.common.action.EnumAction
+import me.rhunk.snapenhance.common.data.MessagingFriendInfo
+import me.rhunk.snapenhance.common.data.MessagingGroupInfo
import me.rhunk.snapenhance.core.bridge.BridgeClient
+import me.rhunk.snapenhance.core.bridge.loadFromBridge
+import me.rhunk.snapenhance.core.data.SnapClassCache
import me.rhunk.snapenhance.core.event.events.impl.SnapWidgetBroadcastReceiveEvent
import me.rhunk.snapenhance.core.event.events.impl.UnaryCallEvent
-import me.rhunk.snapenhance.core.messaging.MessagingFriendInfo
-import me.rhunk.snapenhance.core.messaging.MessagingGroupInfo
-import me.rhunk.snapenhance.data.SnapClassCache
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
import kotlin.system.measureTimeMillis
@@ -120,7 +123,9 @@ class SnapEnhance {
scope.launch(Dispatchers.IO) {
initNative()
translation.userLocale = getConfigLocale()
- translation.loadFromBridge(bridgeClient)
+ translation.loadFromCallback { locale ->
+ bridgeClient.fetchLocales(locale)
+ }
}
mappings.loadFromBridge(bridgeClient)
@@ -221,7 +226,7 @@ class SnapEnhance {
})
event.subscribe(SnapWidgetBroadcastReceiveEvent::class) { event ->
- if (event.action != BridgeClient.BRIDGE_SYNC_ACTION) return@subscribe
+ if (event.action != ReceiversConfig.BRIDGE_SYNC_ACTION) return@subscribe
event.canceled = true
val feedEntries = appContext.database.getFeedEntries(Int.MAX_VALUE)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/XposedLoader.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/XposedLoader.kt
similarity index 80%
rename from core/src/main/kotlin/me/rhunk/snapenhance/XposedLoader.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/XposedLoader.kt
index e2058e8d..fc500ede 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/XposedLoader.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/XposedLoader.kt
@@ -1,7 +1,8 @@
-package me.rhunk.snapenhance
+package me.rhunk.snapenhance.core
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
+import me.rhunk.snapenhance.common.Constants
class XposedLoader : IXposedHookLoadPackage {
override fun handleLoadPackage(p0: XC_LoadPackage.LoadPackageParam) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/action/AbstractAction.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/AbstractAction.kt
similarity index 85%
rename from core/src/main/kotlin/me/rhunk/snapenhance/action/AbstractAction.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/action/AbstractAction.kt
index c81908ba..315ca146 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/action/AbstractAction.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/AbstractAction.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.action
+package me.rhunk.snapenhance.core.action
-import me.rhunk.snapenhance.ModContext
+import me.rhunk.snapenhance.core.ModContext
import java.io.File
abstract class AbstractAction{
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/action/impl/CleanCache.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/CleanCache.kt
similarity index 92%
rename from core/src/main/kotlin/me/rhunk/snapenhance/action/impl/CleanCache.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/CleanCache.kt
index f8b0b449..19bd4b15 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/action/impl/CleanCache.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/CleanCache.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.action.impl
+package me.rhunk.snapenhance.core.action.impl
-import me.rhunk.snapenhance.action.AbstractAction
+import me.rhunk.snapenhance.core.action.AbstractAction
import java.io.File
class CleanCache : AbstractAction() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/action/impl/ExportChatMessages.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/ExportChatMessages.kt
similarity index 95%
rename from core/src/main/kotlin/me/rhunk/snapenhance/action/impl/ExportChatMessages.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/ExportChatMessages.kt
index 64dbe1ca..e66e5056 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/action/impl/ExportChatMessages.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/ExportChatMessages.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.action.impl
+package me.rhunk.snapenhance.core.action.impl
import android.app.AlertDialog
import android.content.DialogInterface
@@ -10,17 +10,17 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.joinAll
import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine
-import me.rhunk.snapenhance.action.AbstractAction
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.database.objects.FriendFeedEntry
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.database.impl.FriendFeedEntry
+import me.rhunk.snapenhance.core.action.AbstractAction
+import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
+import me.rhunk.snapenhance.core.logger.CoreLogger
+import me.rhunk.snapenhance.core.messaging.ExportFormat
+import me.rhunk.snapenhance.core.messaging.MessageExporter
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
import me.rhunk.snapenhance.core.util.CallbackBuilder
-import me.rhunk.snapenhance.core.util.export.ExportFormat
-import me.rhunk.snapenhance.core.util.export.MessageExporter
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.wrapper.impl.Message
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.wrapper.impl.Message
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
import java.io.File
import kotlin.math.absoluteValue
@@ -294,7 +294,7 @@ class ExportChatMessages : AbstractAction() {
}.onFailure {
logDialog(context.translation.format("chat_export.export_fail", "conversation" to conversation.key.toString()))
logDialog(it.stackTraceToString())
- Logger.xposedLog(it)
+ CoreLogger.xposedLog(it)
}
}.also { jobs.add(it) }
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/action/impl/OpenMap.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/OpenMap.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/action/impl/OpenMap.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/OpenMap.kt
index 70d2dc32..3c12b14c 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/action/impl/OpenMap.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/impl/OpenMap.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.action.impl
+package me.rhunk.snapenhance.core.action.impl
import android.content.Intent
import android.os.Bundle
-import me.rhunk.snapenhance.action.AbstractAction
-import me.rhunk.snapenhance.core.BuildConfig
+import me.rhunk.snapenhance.common.BuildConfig
+import me.rhunk.snapenhance.core.action.AbstractAction
class OpenMap: AbstractAction() {
override fun run() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/BridgeClient.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/BridgeClient.kt
index 2297adfa..b1b2ac21 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/BridgeClient.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/bridge/BridgeClient.kt
@@ -10,24 +10,32 @@ import android.os.Handler
import android.os.HandlerThread
import android.os.IBinder
import de.robv.android.xposed.XposedHelpers
-import me.rhunk.snapenhance.ModContext
import me.rhunk.snapenhance.bridge.BridgeInterface
import me.rhunk.snapenhance.bridge.ConfigStateListener
import me.rhunk.snapenhance.bridge.DownloadCallback
import me.rhunk.snapenhance.bridge.SyncCallback
import me.rhunk.snapenhance.bridge.e2ee.E2eeInterface
import me.rhunk.snapenhance.bridge.scripting.IScripting
-import me.rhunk.snapenhance.core.BuildConfig
-import me.rhunk.snapenhance.core.bridge.types.BridgeFileType
-import me.rhunk.snapenhance.core.bridge.types.FileActionType
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.messaging.SocialScope
-import me.rhunk.snapenhance.data.LocalePair
+import me.rhunk.snapenhance.common.BuildConfig
+import me.rhunk.snapenhance.common.bridge.FileLoaderWrapper
+import me.rhunk.snapenhance.common.bridge.types.BridgeFileType
+import me.rhunk.snapenhance.common.bridge.types.FileActionType
+import me.rhunk.snapenhance.common.bridge.types.LocalePair
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.SocialScope
+import me.rhunk.snapenhance.core.ModContext
import java.util.concurrent.CompletableFuture
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlin.system.exitProcess
+fun FileLoaderWrapper.loadFromBridge(bridgeClient: BridgeClient) {
+ isFileExists = { bridgeClient.isFileExists(fileType) }
+ read = { bridgeClient.createAndReadFile(fileType, defaultContent) }
+ write = { bridgeClient.writeFile(fileType, it) }
+ delete = { bridgeClient.deleteFile(fileType) }
+}
+
class BridgeClient(
private val context: ModContext
@@ -35,10 +43,6 @@ class BridgeClient(
private lateinit var future: CompletableFuture
private lateinit var service: BridgeInterface
- companion object {
- const val BRIDGE_SYNC_ACTION = BuildConfig.APPLICATION_ID + ".core.bridge.SYNC"
- }
-
fun connect(timeout: (Throwable) -> Unit, onResult: (Boolean) -> Unit) {
this.future = CompletableFuture()
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Camera.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Camera.kt
deleted file mode 100644
index 51dc15e2..00000000
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/Camera.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package me.rhunk.snapenhance.core.config.impl
-
-import me.rhunk.snapenhance.core.config.ConfigContainer
-import me.rhunk.snapenhance.core.config.ConfigFlag
-import me.rhunk.snapenhance.core.config.FeatureNotice
-import me.rhunk.snapenhance.features.impl.tweaks.CameraTweaks
-
-class Camera : ConfigContainer() {
- val disable = boolean("disable_camera")
- val immersiveCameraPreview = boolean("immersive_camera_preview") { addNotices(FeatureNotice.UNSTABLE) }
- val overridePreviewResolution = unique("override_preview_resolution", *CameraTweaks.resolutions.toTypedArray())
- { addFlags(ConfigFlag.NO_TRANSLATE) }
- val overridePictureResolution = unique("override_picture_resolution", *CameraTweaks.resolutions.toTypedArray())
- { addFlags(ConfigFlag.NO_TRANSLATE) }
- val customFrameRate = unique("custom_frame_rate",
- "5", "10", "20", "25", "30", "48", "60", "90", "120"
- ) { addNotices(FeatureNotice.UNSTABLE); addFlags(ConfigFlag.NO_TRANSLATE) }
- val forceCameraSourceEncoding = boolean("force_camera_source_encoding")
-}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/SnapClassCache.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/data/SnapClassCache.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/SnapClassCache.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/data/SnapClassCache.kt
index 64eb5378..0175eded 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/SnapClassCache.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/data/SnapClassCache.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.data
+package me.rhunk.snapenhance.core.data
class SnapClassCache (
private val classLoader: ClassLoader
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt
index 928c0457..2cad9a94 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt
@@ -2,15 +2,16 @@ package me.rhunk.snapenhance.core.database
import android.annotation.SuppressLint
import android.database.sqlite.SQLiteDatabase
-import me.rhunk.snapenhance.ModContext
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.database.objects.ConversationMessage
-import me.rhunk.snapenhance.core.database.objects.FriendFeedEntry
-import me.rhunk.snapenhance.core.database.objects.FriendInfo
-import me.rhunk.snapenhance.core.database.objects.StoryEntry
-import me.rhunk.snapenhance.core.database.objects.UserConversationLink
-import me.rhunk.snapenhance.core.util.ktx.getStringOrNull
-import me.rhunk.snapenhance.manager.Manager
+import me.rhunk.snapenhance.common.database.DatabaseObject
+import me.rhunk.snapenhance.common.database.impl.ConversationMessage
+import me.rhunk.snapenhance.common.database.impl.FriendFeedEntry
+import me.rhunk.snapenhance.common.database.impl.FriendInfo
+import me.rhunk.snapenhance.common.database.impl.StoryEntry
+import me.rhunk.snapenhance.common.database.impl.UserConversationLink
+import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
+import me.rhunk.snapenhance.core.ModContext
+import me.rhunk.snapenhance.core.logger.CoreLogger
+import me.rhunk.snapenhance.core.manager.Manager
import java.io.File
@SuppressLint("Range")
@@ -56,7 +57,7 @@ class DatabaseAccess(private val context: ModContext) : Manager {
return runCatching {
query(database)
}.onFailure {
- Logger.xposedLog("Database operation failed", it)
+ CoreLogger.xposedLog("Database operation failed", it)
}.getOrNull()
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventBus.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventBus.kt
index b818ab15..9c08f40d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventBus.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventBus.kt
@@ -1,6 +1,6 @@
package me.rhunk.snapenhance.core.event
-import me.rhunk.snapenhance.ModContext
+import me.rhunk.snapenhance.core.ModContext
import kotlin.reflect.KClass
abstract class Event {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventDispatcher.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventDispatcher.kt
index b452a501..a1a33993 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventDispatcher.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/EventDispatcher.kt
@@ -4,19 +4,19 @@ import android.content.Intent
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams
-import me.rhunk.snapenhance.ModContext
+import me.rhunk.snapenhance.common.util.snap.SnapWidgetBroadcastReceiverHelper
+import me.rhunk.snapenhance.core.ModContext
import me.rhunk.snapenhance.core.event.events.impl.*
+import me.rhunk.snapenhance.core.manager.Manager
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.getObjectField
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.core.util.snap.SnapWidgetBroadcastReceiverHelper
-import me.rhunk.snapenhance.data.wrapper.impl.Message
-import me.rhunk.snapenhance.data.wrapper.impl.MessageContent
-import me.rhunk.snapenhance.data.wrapper.impl.MessageDestinations
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
-import me.rhunk.snapenhance.hook.hookConstructor
-import me.rhunk.snapenhance.manager.Manager
+import me.rhunk.snapenhance.core.wrapper.impl.Message
+import me.rhunk.snapenhance.core.wrapper.impl.MessageContent
+import me.rhunk.snapenhance.core.wrapper.impl.MessageDestinations
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class EventDispatcher(
private val context: ModContext
@@ -96,7 +96,9 @@ class EventDispatcher(
androidContext = context.androidContext,
intent = intent,
action = action
- )
+ ).apply {
+ adapter = param
+ }
) {
postHookEvent()
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/AbstractHookEvent.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/AbstractHookEvent.kt
index 3b8e2903..04ee553a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/AbstractHookEvent.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/AbstractHookEvent.kt
@@ -1,7 +1,7 @@
package me.rhunk.snapenhance.core.event.events
import me.rhunk.snapenhance.core.event.Event
-import me.rhunk.snapenhance.hook.HookAdapter
+import me.rhunk.snapenhance.core.util.hook.HookAdapter
abstract class AbstractHookEvent : Event() {
lateinit var adapter: HookAdapter
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/BuildMessageEvent.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/BuildMessageEvent.kt
index e8bb34b5..7133be16 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/BuildMessageEvent.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/BuildMessageEvent.kt
@@ -1,7 +1,7 @@
package me.rhunk.snapenhance.core.event.events.impl
import me.rhunk.snapenhance.core.event.Event
-import me.rhunk.snapenhance.data.wrapper.impl.Message
+import me.rhunk.snapenhance.core.wrapper.impl.Message
class BuildMessageEvent(
val message: Message
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/OnSnapInteractionEvent.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/OnSnapInteractionEvent.kt
index 32eecc41..9ef0784c 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/OnSnapInteractionEvent.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/OnSnapInteractionEvent.kt
@@ -1,7 +1,7 @@
package me.rhunk.snapenhance.core.event.events.impl
import me.rhunk.snapenhance.core.event.events.AbstractHookEvent
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class OnSnapInteractionEvent(
val interactionType: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/SendMessageWithContentEvent.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/SendMessageWithContentEvent.kt
index 3d087551..2b7f8e00 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/SendMessageWithContentEvent.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/event/events/impl/SendMessageWithContentEvent.kt
@@ -1,10 +1,10 @@
package me.rhunk.snapenhance.core.event.events.impl
import me.rhunk.snapenhance.core.event.events.AbstractHookEvent
-import me.rhunk.snapenhance.data.wrapper.impl.MessageContent
-import me.rhunk.snapenhance.data.wrapper.impl.MessageDestinations
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.wrapper.impl.MessageContent
+import me.rhunk.snapenhance.core.wrapper.impl.MessageDestinations
class SendMessageWithContentEvent(
val destinations: MessageDestinations,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/BridgeFileFeature.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/BridgeFileFeature.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/BridgeFileFeature.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/BridgeFileFeature.kt
index 91f49116..95343624 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/BridgeFileFeature.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/BridgeFileFeature.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.features
+package me.rhunk.snapenhance.core.features
-import me.rhunk.snapenhance.core.bridge.types.BridgeFileType
+import me.rhunk.snapenhance.common.bridge.types.BridgeFileType
import java.io.BufferedReader
import java.io.ByteArrayInputStream
import java.io.InputStreamReader
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/Feature.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/Feature.kt
similarity index 90%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/Feature.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/Feature.kt
index 42ae19dd..7d7dcca9 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/Feature.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/Feature.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.features
+package me.rhunk.snapenhance.core.features
-import me.rhunk.snapenhance.ModContext
+import me.rhunk.snapenhance.core.ModContext
abstract class Feature(
val featureKey: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/FeatureLoadParams.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/FeatureLoadParams.kt
similarity index 83%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/FeatureLoadParams.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/FeatureLoadParams.kt
index 46e201e6..e951de83 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/FeatureLoadParams.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/FeatureLoadParams.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features
+package me.rhunk.snapenhance.core.features
object FeatureLoadParams {
const val NO_INIT = 0
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/MessagingRuleFeature.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/MessagingRuleFeature.kt
similarity index 85%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/MessagingRuleFeature.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/MessagingRuleFeature.kt
index 86d66c5d..7dea5de6 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/MessagingRuleFeature.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/MessagingRuleFeature.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.features
+package me.rhunk.snapenhance.core.features
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.messaging.RuleState
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.RuleState
abstract class MessagingRuleFeature(name: String, val ruleType: MessagingRuleType, loadParams: Int = 0) : Feature(name, loadParams) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ConfigurationOverride.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ConfigurationOverride.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ConfigurationOverride.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ConfigurationOverride.kt
index 78e6fb9b..32cbb74d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ConfigurationOverride.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ConfigurationOverride.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.features.impl
+package me.rhunk.snapenhance.core.features.impl
import de.robv.android.xposed.XposedHelpers
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
class ConfigurationOverride : Feature("Configuration Override", loadParams = FeatureLoadParams.INIT_SYNC) {
override fun init() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ScopeSync.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ScopeSync.kt
similarity index 84%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ScopeSync.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ScopeSync.kt
index 901b6bb6..d4e67b1c 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ScopeSync.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ScopeSync.kt
@@ -1,13 +1,13 @@
-package me.rhunk.snapenhance.features.impl
+package me.rhunk.snapenhance.core.features.impl
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.SocialScope
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
-import me.rhunk.snapenhance.core.messaging.SocialScope
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
class ScopeSync : Feature("Scope Sync", loadParams = FeatureLoadParams.INIT_SYNC) {
companion object {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/MediaDownloader.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/MediaDownloader.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt
index 94499b2d..994fab6a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/MediaDownloader.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.downloader
+package me.rhunk.snapenhance.core.features.impl.downloader
import android.annotation.SuppressLint
import android.graphics.Bitmap
@@ -15,36 +15,41 @@ import android.widget.TextView
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking
-import me.rhunk.snapenhance.SnapEnhance
import me.rhunk.snapenhance.bridge.DownloadCallback
-import me.rhunk.snapenhance.core.database.objects.ConversationMessage
-import me.rhunk.snapenhance.core.database.objects.FriendInfo
-import me.rhunk.snapenhance.core.download.DownloadManagerClient
-import me.rhunk.snapenhance.core.download.data.*
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.util.download.RemoteMediaResolver
+import me.rhunk.snapenhance.common.data.FileType
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.download.DownloadMediaType
+import me.rhunk.snapenhance.common.data.download.DownloadMetadata
+import me.rhunk.snapenhance.common.data.download.InputMedia
+import me.rhunk.snapenhance.common.data.download.MediaDownloadSource
+import me.rhunk.snapenhance.common.data.download.SplitMediaAssetType
+import me.rhunk.snapenhance.common.database.impl.ConversationMessage
+import me.rhunk.snapenhance.common.database.impl.FriendInfo
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie
+import me.rhunk.snapenhance.common.util.snap.MediaDownloaderHelper
+import me.rhunk.snapenhance.common.util.snap.RemoteMediaResolver
+import me.rhunk.snapenhance.core.DownloadManagerClient
+import me.rhunk.snapenhance.core.SnapEnhance
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.MessagingRuleFeature
+import me.rhunk.snapenhance.core.features.impl.downloader.decoder.DecodedAttachment
+import me.rhunk.snapenhance.core.features.impl.downloader.decoder.MessageDecoder
+import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
+import me.rhunk.snapenhance.core.features.impl.spying.MessageLogger
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.util.hook.HookAdapter
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.core.util.snap.BitmojiSelfie
-import me.rhunk.snapenhance.core.util.snap.MediaDownloaderHelper
-import me.rhunk.snapenhance.core.util.snap.PreviewUtils
-import me.rhunk.snapenhance.data.FileType
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.data.wrapper.impl.media.MediaInfo
-import me.rhunk.snapenhance.data.wrapper.impl.media.dash.LongformVideoPlaylistItem
-import me.rhunk.snapenhance.data.wrapper.impl.media.dash.SnapPlaylistItem
-import me.rhunk.snapenhance.data.wrapper.impl.media.opera.Layer
-import me.rhunk.snapenhance.data.wrapper.impl.media.opera.ParamMap
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.MessagingRuleFeature
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.features.impl.downloader.decoder.DecodedAttachment
-import me.rhunk.snapenhance.features.impl.downloader.decoder.MessageDecoder
-import me.rhunk.snapenhance.features.impl.spying.MessageLogger
-import me.rhunk.snapenhance.hook.HookAdapter
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.util.media.PreviewUtils
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
+import me.rhunk.snapenhance.core.wrapper.impl.media.MediaInfo
+import me.rhunk.snapenhance.core.wrapper.impl.media.dash.LongformVideoPlaylistItem
+import me.rhunk.snapenhance.core.wrapper.impl.media.dash.SnapPlaylistItem
+import me.rhunk.snapenhance.core.wrapper.impl.media.opera.Layer
+import me.rhunk.snapenhance.core.wrapper.impl.media.opera.ParamMap
+import me.rhunk.snapenhance.core.wrapper.impl.media.toKeyPair
import java.io.ByteArrayInputStream
import java.nio.file.Paths
import java.text.SimpleDateFormat
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/ProfilePictureDownloader.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/ProfilePictureDownloader.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/ProfilePictureDownloader.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/ProfilePictureDownloader.kt
index 5ec7f03b..1a60ee95 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/ProfilePictureDownloader.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/ProfilePictureDownloader.kt
@@ -1,16 +1,16 @@
-package me.rhunk.snapenhance.features.impl.downloader
+package me.rhunk.snapenhance.core.features.impl.downloader
import android.annotation.SuppressLint
import android.widget.Button
import android.widget.RelativeLayout
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
import me.rhunk.snapenhance.core.event.events.impl.AddViewEvent
import me.rhunk.snapenhance.core.event.events.impl.NetworkApiRequestEvent
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
import java.nio.ByteBuffer
class ProfilePictureDownloader : Feature("ProfilePictureDownloader", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/AttachmentInfo.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/AttachmentInfo.kt
similarity index 71%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/AttachmentInfo.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/AttachmentInfo.kt
index 3d04f0f3..96b30c5b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/AttachmentInfo.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/AttachmentInfo.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.features.impl.downloader.decoder
+package me.rhunk.snapenhance.core.features.impl.downloader.decoder
-import me.rhunk.snapenhance.core.download.data.MediaEncryptionKeyPair
+import me.rhunk.snapenhance.common.data.download.MediaEncryptionKeyPair
data class BitmojiSticker(
val reference: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/AttachmentType.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/AttachmentType.kt
similarity index 73%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/AttachmentType.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/AttachmentType.kt
index 15a947f9..25d591c5 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/AttachmentType.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/AttachmentType.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.downloader.decoder
+package me.rhunk.snapenhance.core.features.impl.downloader.decoder
enum class AttachmentType(
val key: String,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/MessageDecoder.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/MessageDecoder.kt
similarity index 96%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/MessageDecoder.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/MessageDecoder.kt
index acce1786..e0278844 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/decoder/MessageDecoder.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/MessageDecoder.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.features.impl.downloader.decoder
+package me.rhunk.snapenhance.core.features.impl.downloader.decoder
import com.google.gson.GsonBuilder
import com.google.gson.JsonElement
import com.google.gson.JsonObject
-import me.rhunk.snapenhance.core.download.data.toKeyPair
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.wrapper.impl.MessageContent
+import me.rhunk.snapenhance.common.data.download.toKeyPair
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.core.wrapper.impl.MessageContent
import kotlin.io.encoding.Base64
import kotlin.io.encoding.ExperimentalEncodingApi
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AddFriendSourceSpoof.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AddFriendSourceSpoof.kt
similarity index 88%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AddFriendSourceSpoof.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AddFriendSourceSpoof.kt
index 6e739732..6774eb9f 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AddFriendSourceSpoof.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AddFriendSourceSpoof.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
class AddFriendSourceSpoof : Feature("AddFriendSourceSpoof", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AmoledDarkMode.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AmoledDarkMode.kt
similarity index 79%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AmoledDarkMode.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AmoledDarkMode.kt
index e86c5796..f28fa98a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AmoledDarkMode.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AmoledDarkMode.kt
@@ -1,14 +1,14 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
import android.annotation.SuppressLint
import android.content.res.TypedArray
import android.graphics.drawable.ColorDrawable
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
class AmoledDarkMode : Feature("Amoled Dark Mode", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
@SuppressLint("DiscouragedApi")
@@ -21,7 +21,8 @@ class AmoledDarkMode : Feature("Amoled Dark Mode", loadParams = FeatureLoadParam
return context.resources.getIdentifier(name, "attr", Constants.SNAPCHAT_PACKAGE_NAME).also { attributeCache[name] = it }
}
- context.androidContext.theme.javaClass.getMethod("obtainStyledAttributes", IntArray::class.java).hook(HookStage.AFTER) { param ->
+ context.androidContext.theme.javaClass.getMethod("obtainStyledAttributes", IntArray::class.java).hook(
+ HookStage.AFTER) { param ->
val array = param.arg(0)
val result = param.getResult() as TypedArray
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AppPasscode.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AppPasscode.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AppPasscode.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AppPasscode.kt
index 4c752a9c..3fbb6685 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/AppPasscode.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/AppPasscode.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
import android.annotation.SuppressLint
import android.content.Context
@@ -8,9 +8,9 @@ import android.text.InputType
import android.text.TextWatcher
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
//TODO: fingerprint unlock
class AppPasscode : Feature("App Passcode", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/DeviceSpooferHook.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/DeviceSpooferHook.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/DeviceSpooferHook.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/DeviceSpooferHook.kt
index 68d4a7f8..11ef7536 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/DeviceSpooferHook.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/DeviceSpooferHook.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
class DeviceSpooferHook: Feature("device_spoofer", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
@@ -82,7 +82,7 @@ class DeviceSpooferHook: Feature("device_spoofer", loadParams = FeatureLoadParam
//GETDATADIRECTORY
if(getDataDirectory.isNotEmpty()) {
- Hooker.hook(context.classCache.chromiumPathUtils, "getDataDirectory", HookStage.BEFORE) {hookAdapter ->
+ Hooker.hook(context.classCache.chromiumPathUtils, "getDataDirectory", HookStage.BEFORE) { hookAdapter ->
hookAdapter.setResult(getDataDirectory)
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/EndToEndEncryption.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/EndToEndEncryption.kt
similarity index 95%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/EndToEndEncryption.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/EndToEndEncryption.kt
index 766224ee..2fee77d5 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/EndToEndEncryption.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/EndToEndEncryption.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
import android.annotation.SuppressLint
import android.graphics.Canvas
@@ -11,27 +11,27 @@ import android.view.ViewGroup.LayoutParams
import android.view.ViewGroup.MarginLayoutParams
import android.widget.Button
import android.widget.TextView
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.RuleState
+import me.rhunk.snapenhance.common.util.protobuf.ProtoEditor
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.protobuf.ProtoWriter
import me.rhunk.snapenhance.core.event.events.impl.AddViewEvent
import me.rhunk.snapenhance.core.event.events.impl.BindViewEvent
import me.rhunk.snapenhance.core.event.events.impl.BuildMessageEvent
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
import me.rhunk.snapenhance.core.event.events.impl.UnaryCallEvent
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.messaging.RuleState
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.MessagingRuleFeature
+import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.ui.addForegroundDrawable
+import me.rhunk.snapenhance.core.ui.removeForegroundDrawable
import me.rhunk.snapenhance.core.util.EvictingMap
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.core.util.protobuf.ProtoEditor
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.core.util.protobuf.ProtoWriter
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.wrapper.impl.MessageContent
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.MessagingRuleFeature
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
-import me.rhunk.snapenhance.ui.addForegroundDrawable
-import me.rhunk.snapenhance.ui.removeForegroundDrawable
+import me.rhunk.snapenhance.core.wrapper.impl.MessageContent
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
import java.security.MessageDigest
import kotlin.random.Random
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/InfiniteStoryBoost.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/InfiniteStoryBoost.kt
similarity index 70%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/InfiniteStoryBoost.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/InfiniteStoryBoost.kt
index 4d0de897..edc27c54 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/InfiniteStoryBoost.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/InfiniteStoryBoost.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hookConstructor
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
class InfiniteStoryBoost : Feature("InfiniteStoryBoost", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/MeoPasscodeBypass.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/MeoPasscodeBypass.kt
similarity index 68%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/MeoPasscodeBypass.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/MeoPasscodeBypass.kt
index 1a02e1d3..400ada48 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/MeoPasscodeBypass.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/MeoPasscodeBypass.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
class MeoPasscodeBypass : Feature("Meo Passcode Bypass", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/NoFriendScoreDelay.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/NoFriendScoreDelay.kt
similarity index 70%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/NoFriendScoreDelay.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/NoFriendScoreDelay.kt
index 333e7cb0..67b1d9d8 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/NoFriendScoreDelay.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/NoFriendScoreDelay.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hookConstructor
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import java.lang.reflect.Constructor
class NoFriendScoreDelay : Feature("NoFriendScoreDelay", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/UnlimitedMultiSnap.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/UnlimitedMultiSnap.kt
similarity index 70%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/UnlimitedMultiSnap.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/UnlimitedMultiSnap.kt
index 2c81e11c..6e00ae01 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/UnlimitedMultiSnap.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/UnlimitedMultiSnap.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.features.impl.experiments
+package me.rhunk.snapenhance.core.features.impl.experiments
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hookConstructor
class UnlimitedMultiSnap : Feature("UnlimitedMultiSnap", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/BypassVideoLengthRestriction.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/BypassVideoLengthRestriction.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/BypassVideoLengthRestriction.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/BypassVideoLengthRestriction.kt
index 51a46d95..b8803686 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/BypassVideoLengthRestriction.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/BypassVideoLengthRestriction.kt
@@ -1,14 +1,14 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.global
import android.os.Build
import android.os.FileObserver
import com.google.gson.JsonParser
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hookConstructor
import java.io.File
class BypassVideoLengthRestriction :
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/privacy/DisableMetrics.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/DisableMetrics.kt
similarity index 77%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/privacy/DisableMetrics.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/DisableMetrics.kt
index 54339637..04300701 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/privacy/DisableMetrics.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/DisableMetrics.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.features.impl.privacy
+package me.rhunk.snapenhance.core.features.impl.global
import me.rhunk.snapenhance.core.event.events.impl.NetworkApiRequestEvent
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
class DisableMetrics : Feature("DisableMetrics", loadParams = FeatureLoadParams.INIT_SYNC) {
override fun init() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/GooglePlayServicesDialogs.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/GooglePlayServicesDialogs.kt
similarity index 73%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/GooglePlayServicesDialogs.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/GooglePlayServicesDialogs.kt
index 519cadef..ab1ca2f4 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/GooglePlayServicesDialogs.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/GooglePlayServicesDialogs.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.global
import android.app.AlertDialog
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
import java.lang.reflect.Modifier
class GooglePlayServicesDialogs : Feature("Disable GMS Dialogs", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/LocationSpoofer.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/LocationSpoofer.kt
similarity index 84%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/LocationSpoofer.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/LocationSpoofer.kt
index 6af9b6d8..35f0f696 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/LocationSpoofer.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/LocationSpoofer.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.global
import android.content.Intent
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
class LocationSpoofer: Feature("LocationSpoof", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/MediaQualityLevelOverride.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/MediaQualityLevelOverride.kt
similarity index 74%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/MediaQualityLevelOverride.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/MediaQualityLevelOverride.kt
index d76c7f43..5272c5f2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/MediaQualityLevelOverride.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/MediaQualityLevelOverride.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.global
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
class MediaQualityLevelOverride : Feature("MediaQualityLevelOverride", loadParams = FeatureLoadParams.INIT_SYNC) {
override fun init() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/SnapchatPlus.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/SnapchatPlus.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt
index a19db903..f4f8e87d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/SnapchatPlus.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.global
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
class SnapchatPlus: Feature("SnapchatPlus", loadParams = FeatureLoadParams.INIT_SYNC) {
private val originalSubscriptionTime = (System.currentTimeMillis() - 7776000000L)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/AnonymousStoryViewing.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/AnonymousStoryViewing.kt
similarity index 81%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/AnonymousStoryViewing.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/AnonymousStoryViewing.kt
index 7f718a53..f972f922 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/AnonymousStoryViewing.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/AnonymousStoryViewing.kt
@@ -1,10 +1,10 @@
-package me.rhunk.snapenhance.features.impl.spying
+package me.rhunk.snapenhance.core.features.impl.messaging
import kotlinx.coroutines.runBlocking
import me.rhunk.snapenhance.core.event.events.impl.NetworkApiRequestEvent
-import me.rhunk.snapenhance.core.util.download.HttpServer
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.media.HttpServer
import kotlin.coroutines.suspendCoroutine
class AnonymousStoryViewing : Feature("Anonymous Story Viewing", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/AutoSave.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/AutoSave.kt
similarity index 86%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/AutoSave.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/AutoSave.kt
index 93bc5c0c..4c61f5bd 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/AutoSave.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/AutoSave.kt
@@ -1,19 +1,18 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.messaging
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
+import me.rhunk.snapenhance.common.data.MessageState
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.MessagingRuleFeature
+import me.rhunk.snapenhance.core.features.impl.spying.MessageLogger
+import me.rhunk.snapenhance.core.features.impl.spying.StealthMode
+import me.rhunk.snapenhance.core.logger.CoreLogger
import me.rhunk.snapenhance.core.util.CallbackBuilder
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.MessageState
-import me.rhunk.snapenhance.data.wrapper.impl.Message
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.MessagingRuleFeature
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.features.impl.spying.MessageLogger
-import me.rhunk.snapenhance.features.impl.spying.StealthMode
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.wrapper.impl.Message
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
import java.util.concurrent.Executors
class AutoSave : MessagingRuleFeature("Auto Save", MessagingRuleType.AUTO_SAVE, loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
@@ -53,7 +52,7 @@ class AutoSave : MessagingRuleFeature("Auto Save", MessagingRuleType.AUTO_SAVE,
callback
)
}.onFailure {
- Logger.xposedLog("Error saving message $messageId", it)
+ CoreLogger.xposedLog("Error saving message $messageId", it)
}
//delay between saves
@@ -132,7 +131,7 @@ class AutoSave : MessagingRuleFeature("Auto Save", MessagingRuleType.AUTO_SAVE,
callback
)
}.onFailure {
- Logger.xposedLog("failed to save message", it)
+ CoreLogger.xposedLog("failed to save message", it)
}
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/DisableReplayInFF.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/DisableReplayInFF.kt
similarity index 72%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/DisableReplayInFF.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/DisableReplayInFF.kt
index a64e51e1..e82d448e 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/DisableReplayInFF.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/DisableReplayInFF.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.messaging
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.getObjectField
import me.rhunk.snapenhance.core.util.ktx.setEnumField
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hookConstructor
class DisableReplayInFF : Feature("DisableReplayInFF", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/Messaging.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/Messaging.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/Messaging.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/Messaging.kt
index ea582ac3..50299747 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/Messaging.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/Messaging.kt
@@ -1,14 +1,14 @@
-package me.rhunk.snapenhance.features.impl
+package me.rhunk.snapenhance.core.features.impl.messaging
import me.rhunk.snapenhance.core.event.events.impl.OnSnapInteractionEvent
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.impl.spying.StealthMode
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.impl.spying.StealthMode
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class Messaging : Feature("Messaging", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC or FeatureLoadParams.INIT_ASYNC or FeatureLoadParams.INIT_SYNC) {
lateinit var conversationManager: Any
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/Notifications.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/Notifications.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/Notifications.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/Notifications.kt
index 19a6f661..c4913129 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/Notifications.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/Notifications.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.messaging
import android.app.Notification
import android.app.NotificationManager
@@ -12,29 +12,27 @@ import android.os.Bundle
import android.os.UserHandle
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.XposedHelpers
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.core.download.data.SplitMediaAssetType
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.MediaReferenceType
+import me.rhunk.snapenhance.common.data.download.SplitMediaAssetType
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.snap.MediaDownloaderHelper
+import me.rhunk.snapenhance.common.util.snap.RemoteMediaResolver
+import me.rhunk.snapenhance.common.util.snap.SnapWidgetBroadcastReceiverHelper
import me.rhunk.snapenhance.core.event.events.impl.SnapWidgetBroadcastReceiveEvent
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.impl.downloader.MediaDownloader
+import me.rhunk.snapenhance.core.features.impl.downloader.decoder.MessageDecoder
+import me.rhunk.snapenhance.core.logger.CoreLogger
import me.rhunk.snapenhance.core.util.CallbackBuilder
-import me.rhunk.snapenhance.core.util.download.RemoteMediaResolver
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.core.util.snap.MediaDownloaderHelper
-import me.rhunk.snapenhance.core.util.snap.PreviewUtils
-import me.rhunk.snapenhance.core.util.snap.SnapWidgetBroadcastReceiverHelper
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.MediaReferenceType
-import me.rhunk.snapenhance.data.wrapper.impl.Message
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.features.impl.downloader.MediaDownloader
-import me.rhunk.snapenhance.features.impl.downloader.decoder.MessageDecoder
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
-import kotlin.io.encoding.ExperimentalEncodingApi
+import me.rhunk.snapenhance.core.util.media.PreviewUtils
+import me.rhunk.snapenhance.core.wrapper.impl.Message
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class Notifications : Feature("Notifications", loadParams = FeatureLoadParams.INIT_SYNC) {
companion object{
@@ -283,7 +281,7 @@ class Notifications : Feature("Notifications", loadParams = FeatureLoadParams.IN
sendNotificationData(notificationData.copy(notification = notificationBuilder.build()), true)
return@onEach
}.onFailure {
- Logger.xposedLog("Failed to send preview notification", it)
+ CoreLogger.xposedLog("Failed to send preview notification", it)
}
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/privacy/PreventMessageSending.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/PreventMessageSending.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/privacy/PreventMessageSending.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/PreventMessageSending.kt
index 060172ca..e16286ca 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/privacy/PreventMessageSending.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/PreventMessageSending.kt
@@ -1,13 +1,13 @@
-package me.rhunk.snapenhance.features.impl.privacy
+package me.rhunk.snapenhance.core.features.impl.messaging
+import me.rhunk.snapenhance.common.data.NotificationType
+import me.rhunk.snapenhance.common.util.protobuf.ProtoEditor
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
import me.rhunk.snapenhance.core.event.events.impl.UnaryCallEvent
-import me.rhunk.snapenhance.core.util.protobuf.ProtoEditor
-import me.rhunk.snapenhance.data.NotificationType
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
class PreventMessageSending : Feature("Prevent message sending", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) {
override fun asyncOnActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/PreventReadReceipts.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/PreventReadReceipts.kt
similarity index 61%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/PreventReadReceipts.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/PreventReadReceipts.kt
index d2dfa218..7c98adc9 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/PreventReadReceipts.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/PreventReadReceipts.kt
@@ -1,11 +1,12 @@
-package me.rhunk.snapenhance.features.impl.spying
+package me.rhunk.snapenhance.core.features.impl.messaging
import me.rhunk.snapenhance.core.event.events.impl.OnSnapInteractionEvent
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.impl.spying.StealthMode
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class PreventReadReceipts : Feature("PreventReadReceipts", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
override fun onActivityCreate() {
@@ -14,7 +15,9 @@ class PreventReadReceipts : Feature("PreventReadReceipts", loadParams = FeatureL
}
arrayOf("mediaMessagesDisplayed", "displayedMessages").forEach { methodName: String ->
- Hooker.hook(context.classCache.conversationManager, methodName, HookStage.BEFORE, { isConversationInStealthMode(SnapUUID(it.arg(0))) }) {
+ Hooker.hook(context.classCache.conversationManager, methodName, HookStage.BEFORE, { isConversationInStealthMode(
+ SnapUUID(it.arg(0))
+ ) }) {
it.setResult(null)
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/SendOverride.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/SendOverride.kt
similarity index 90%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/SendOverride.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/SendOverride.kt
index 05fb7604..d2e0a565 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/SendOverride.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/SendOverride.kt
@@ -1,15 +1,15 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.messaging
-import me.rhunk.snapenhance.Constants
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.util.protobuf.ProtoEditor
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
import me.rhunk.snapenhance.core.event.events.impl.UnaryCallEvent
-import me.rhunk.snapenhance.core.util.protobuf.ProtoEditor
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.MessageSender
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.messaging.MessageSender
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
class SendOverride : Feature("Send Override", loadParams = FeatureLoadParams.INIT_SYNC) {
private var isLastSnapSavable = false
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/UnlimitedSnapViewTime.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/UnlimitedSnapViewTime.kt
similarity index 73%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/UnlimitedSnapViewTime.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/UnlimitedSnapViewTime.kt
index 7791c3c6..6016a97a 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/UnlimitedSnapViewTime.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/UnlimitedSnapViewTime.kt
@@ -1,12 +1,12 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.messaging
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.MessageState
+import me.rhunk.snapenhance.common.util.protobuf.ProtoEditor
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
import me.rhunk.snapenhance.core.event.events.impl.BuildMessageEvent
-import me.rhunk.snapenhance.core.util.protobuf.ProtoEditor
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.MessageState
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
class UnlimitedSnapViewTime :
Feature("UnlimitedSnapViewTime", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/MessageLogger.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/MessageLogger.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/MessageLogger.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/MessageLogger.kt
index e362a8d3..176e5848 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/MessageLogger.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/MessageLogger.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.spying
+package me.rhunk.snapenhance.core.features.impl.spying
import android.graphics.Canvas
import android.graphics.Paint
@@ -7,16 +7,16 @@ import android.graphics.drawable.shapes.Shape
import android.os.DeadObjectException
import com.google.gson.JsonObject
import com.google.gson.JsonParser
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.MessageState
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
import me.rhunk.snapenhance.core.event.events.impl.BindViewEvent
import me.rhunk.snapenhance.core.event.events.impl.BuildMessageEvent
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.ui.addForegroundDrawable
+import me.rhunk.snapenhance.core.ui.removeForegroundDrawable
import me.rhunk.snapenhance.core.util.EvictingMap
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.MessageState
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.ui.addForegroundDrawable
-import me.rhunk.snapenhance.ui.removeForegroundDrawable
import java.util.concurrent.Executors
import kotlin.system.measureTimeMillis
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/SnapToChatMedia.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/SnapToChatMedia.kt
similarity index 70%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/SnapToChatMedia.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/SnapToChatMedia.kt
index 5db8be03..21183cd5 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/SnapToChatMedia.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/SnapToChatMedia.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.features.impl.spying
+package me.rhunk.snapenhance.core.features.impl.spying
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.protobuf.ProtoWriter
import me.rhunk.snapenhance.core.event.events.impl.BuildMessageEvent
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.core.util.protobuf.ProtoWriter
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
class SnapToChatMedia : Feature("SnapToChatMedia", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
override fun onActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/StealthMode.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/StealthMode.kt
new file mode 100644
index 00000000..5f23784b
--- /dev/null
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/spying/StealthMode.kt
@@ -0,0 +1,6 @@
+package me.rhunk.snapenhance.core.features.impl.spying
+
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.core.features.MessagingRuleFeature
+
+class StealthMode : MessagingRuleFeature("StealthMode", MessagingRuleType.STEALTH)
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/CameraTweaks.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt
similarity index 79%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/CameraTweaks.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt
index 56411172..0c0de5b5 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/CameraTweaks.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.tweaks
import android.Manifest
import android.annotation.SuppressLint
@@ -8,18 +8,15 @@ import android.hardware.camera2.CameraCharacteristics
import android.hardware.camera2.CameraCharacteristics.Key
import android.hardware.camera2.CameraManager
import android.util.Range
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.data.wrapper.impl.ScSize
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
-import me.rhunk.snapenhance.hook.hookConstructor
+import me.rhunk.snapenhance.core.wrapper.impl.ScSize
class CameraTweaks : Feature("Camera Tweaks", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
- companion object {
- val resolutions = listOf("3264x2448", "3264x1840", "3264x1504", "2688x1512", "2560x1920", "2448x2448", "2340x1080", "2160x1080", "1920x1440", "1920x1080", "1600x1200", "1600x960", "1600x900", "1600x736", "1600x720", "1560x720", "1520x720", "1440x1080", "1440x720", "1280x720", "1080x1080", "1080x720", "960x720", "720x720", "720x480", "640x480", "352x288", "320x240", "176x144")
- }
private fun parseResolution(resolution: String): IntArray {
return resolution.split("x").map { it.toInt() }.toIntArray()
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/ClientBootstrapOverride.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/ClientBootstrapOverride.kt
similarity index 73%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/ClientBootstrapOverride.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/ClientBootstrapOverride.kt
index 876ecc0b..645539de 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/ClientBootstrapOverride.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/ClientBootstrapOverride.kt
@@ -1,14 +1,12 @@
-package me.rhunk.snapenhance.features.impl.ui
+package me.rhunk.snapenhance.core.features.impl.ui
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
+import me.rhunk.snapenhance.common.config.impl.UserInterfaceTweaks
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
import java.io.File
class ClientBootstrapOverride : Feature("ClientBootstrapOverride", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
- companion object {
- val tabs = arrayOf("map", "chat", "camera", "discover", "spotlight")
- }
private val clientBootstrapFolder by lazy { File(context.androidContext.filesDir, "client-bootstrap") }
@@ -28,7 +26,7 @@ class ClientBootstrapOverride : Feature("ClientBootstrapOverride", loadParams =
}
bootstrapOverrideConfig.homeTab.getNullable()?.also { currentTab ->
- plusFile.writeBytes(byteArrayOf(8, (tabs.indexOf(currentTab) + 1).toByte()))
+ plusFile.writeBytes(byteArrayOf(8, (UserInterfaceTweaks.BootstrapOverride.tabs.indexOf(currentTab) + 1).toByte()))
}
}
}
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/FriendFeedMessagePreview.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/FriendFeedMessagePreview.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/FriendFeedMessagePreview.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/FriendFeedMessagePreview.kt
index 1db5b458..1397366b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/FriendFeedMessagePreview.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/FriendFeedMessagePreview.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.features.impl.ui
+package me.rhunk.snapenhance.core.features.impl.ui
import android.annotation.SuppressLint
import android.graphics.Canvas
@@ -9,14 +9,14 @@ import android.graphics.drawable.shapes.Shape
import android.text.TextPaint
import android.view.View
import android.view.ViewGroup
-import me.rhunk.snapenhance.Constants
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
import me.rhunk.snapenhance.core.event.events.impl.BindViewEvent
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.ui.addForegroundDrawable
-import me.rhunk.snapenhance.ui.removeForegroundDrawable
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.ui.addForegroundDrawable
+import me.rhunk.snapenhance.core.ui.removeForegroundDrawable
import kotlin.math.absoluteValue
@SuppressLint("DiscouragedApi")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/HideStreakRestore.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/HideStreakRestore.kt
similarity index 69%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/HideStreakRestore.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/HideStreakRestore.kt
index f2555b87..4f3a835d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/HideStreakRestore.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/HideStreakRestore.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.features.impl.ui
+package me.rhunk.snapenhance.core.features.impl.ui
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.getObjectField
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hookConstructor
class HideStreakRestore : Feature("HideStreakRestore", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
override fun onActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/OldBitmojiSelfie.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/OldBitmojiSelfie.kt
similarity index 79%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/OldBitmojiSelfie.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/OldBitmojiSelfie.kt
index 6dea84fe..4e9f0e5f 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/OldBitmojiSelfie.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/OldBitmojiSelfie.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.features.impl.tweaks
+package me.rhunk.snapenhance.core.features.impl.ui
+import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie
import me.rhunk.snapenhance.core.event.events.impl.NetworkApiRequestEvent
-import me.rhunk.snapenhance.core.util.snap.BitmojiSelfie
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
class OldBitmojiSelfie : Feature("OldBitmojiSelfie", loadParams = FeatureLoadParams.INIT_SYNC) {
override fun init() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/PinConversations.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/PinConversations.kt
similarity index 74%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/PinConversations.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/PinConversations.kt
index 32e298ea..1a5af61b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/PinConversations.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/PinConversations.kt
@@ -1,15 +1,15 @@
-package me.rhunk.snapenhance.features.impl.ui
+package me.rhunk.snapenhance.core.features.impl.ui
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.core.messaging.RuleState
+import me.rhunk.snapenhance.common.data.MessagingRuleType
+import me.rhunk.snapenhance.common.data.RuleState
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.MessagingRuleFeature
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import me.rhunk.snapenhance.core.util.ktx.getObjectField
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.MessagingRuleFeature
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
-import me.rhunk.snapenhance.hook.hookConstructor
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class PinConversations : MessagingRuleFeature("PinConversations", MessagingRuleType.PIN_CONVERSATION, loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
override fun onActivityCreate() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/UITweaks.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/UITweaks.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/UITweaks.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/UITweaks.kt
index 1abe7764..48ffe7bc 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/UITweaks.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/UITweaks.kt
@@ -1,20 +1,19 @@
-package me.rhunk.snapenhance.features.impl.ui
+package me.rhunk.snapenhance.core.features.impl.ui
import android.annotation.SuppressLint
import android.content.Context
import android.content.res.Resources
-import android.graphics.Rect
import android.text.SpannableString
import android.view.View
import android.view.ViewGroup.MarginLayoutParams
import android.widget.FrameLayout
-import me.rhunk.snapenhance.Constants
+import me.rhunk.snapenhance.common.Constants
import me.rhunk.snapenhance.core.event.events.impl.AddViewEvent
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
class UITweaks : Feature("UITweaks", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
private val identifierCache = mutableMapOf()
@@ -60,7 +59,8 @@ class UITweaks : Feature("UITweaks", loadParams = FeatureLoadParams.ACTIVITY_CRE
}
}
- Resources::class.java.methods.first { it.name == "getDimensionPixelSize"}.hook(HookStage.AFTER,
+ Resources::class.java.methods.first { it.name == "getDimensionPixelSize"}.hook(
+ HookStage.AFTER,
{ isImmersiveCamera }
) { param ->
val id = param.arg(0)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/Logger.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/CoreLogger.kt
similarity index 80%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/Logger.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/logger/CoreLogger.kt
index 6929213d..7fa51edc 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/Logger.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/logger/CoreLogger.kt
@@ -1,32 +1,23 @@
-package me.rhunk.snapenhance.core
+package me.rhunk.snapenhance.core.logger
import android.annotation.SuppressLint
import android.util.Log
import de.robv.android.xposed.XposedBridge
+import me.rhunk.snapenhance.common.logger.AbstractLogger
+import me.rhunk.snapenhance.common.logger.LogChannel
+import me.rhunk.snapenhance.common.logger.LogLevel
import me.rhunk.snapenhance.core.bridge.BridgeClient
-import me.rhunk.snapenhance.core.logger.AbstractLogger
-import me.rhunk.snapenhance.core.logger.LogChannel
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.hook
-import me.rhunk.snapenhance.core.logger.LogLevel
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.hook
@SuppressLint("PrivateApi")
-class Logger(
+class CoreLogger(
private val bridgeClient: BridgeClient
): AbstractLogger(LogChannel.CORE) {
companion object {
private const val TAG = "SnapEnhanceCore"
- fun directDebug(message: Any?, tag: String = TAG) {
- Log.println(Log.DEBUG, tag, message.toString())
- }
-
- fun directError(message: Any?, throwable: Throwable, tag: String = TAG) {
- Log.println(Log.ERROR, tag, message.toString())
- Log.println(Log.ERROR, tag, throwable.toString())
- }
-
fun xposedLog(message: Any?, tag: String = TAG) {
Log.println(Log.INFO, tag, message.toString())
XposedBridge.log("$tag: $message")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/manager/Manager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/Manager.kt
similarity index 62%
rename from core/src/main/kotlin/me/rhunk/snapenhance/manager/Manager.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/manager/Manager.kt
index ba244213..cc11e083 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/manager/Manager.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/Manager.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.manager
+package me.rhunk.snapenhance.core.manager
interface Manager {
fun init() {}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/ActionManager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/ActionManager.kt
new file mode 100644
index 00000000..7b87c702
--- /dev/null
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/ActionManager.kt
@@ -0,0 +1,43 @@
+package me.rhunk.snapenhance.core.manager.impl
+
+import android.content.Intent
+import me.rhunk.snapenhance.common.action.EnumAction
+import me.rhunk.snapenhance.core.ModContext
+import me.rhunk.snapenhance.core.action.impl.CleanCache
+import me.rhunk.snapenhance.core.action.impl.ExportChatMessages
+import me.rhunk.snapenhance.core.action.impl.OpenMap
+import me.rhunk.snapenhance.core.manager.Manager
+
+class ActionManager(
+ private val modContext: ModContext,
+) : Manager {
+
+ private val actions by lazy {
+ mapOf(
+ EnumAction.CLEAN_CACHE to CleanCache::class,
+ EnumAction.EXPORT_CHAT_MESSAGES to ExportChatMessages::class,
+ EnumAction.OPEN_MAP to OpenMap::class,
+ ).map {
+ it.key to it.value.java.getConstructor().newInstance().apply {
+ this.context = modContext
+ }
+ }.toMap().toMutableMap()
+ }
+
+ override fun init() {
+ }
+
+ fun onNewIntent(intent: Intent?) {
+ val action = intent?.getStringExtra(EnumAction.ACTION_PARAMETER) ?: return
+ execute(EnumAction.entries.find { it.key == action } ?: return)
+ intent.removeExtra(EnumAction.ACTION_PARAMETER)
+ }
+
+ fun execute(enumAction: EnumAction) {
+ val action = actions[enumAction] ?: return
+ action.run()
+ if (enumAction.exitOnFinish) {
+ modContext.forceCloseApp()
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/FeatureManager.kt
similarity index 73%
rename from core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/FeatureManager.kt
index 04ff1667..d7ce2279 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/FeatureManager.kt
@@ -1,34 +1,27 @@
-package me.rhunk.snapenhance.manager.impl
+package me.rhunk.snapenhance.core.manager.impl
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
-import me.rhunk.snapenhance.ModContext
-import me.rhunk.snapenhance.core.Logger
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.MessagingRuleFeature
-import me.rhunk.snapenhance.features.impl.ConfigurationOverride
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.features.impl.ScopeSync
-import me.rhunk.snapenhance.features.impl.downloader.MediaDownloader
-import me.rhunk.snapenhance.features.impl.downloader.ProfilePictureDownloader
-import me.rhunk.snapenhance.features.impl.experiments.*
-import me.rhunk.snapenhance.features.impl.privacy.DisableMetrics
-import me.rhunk.snapenhance.features.impl.privacy.PreventMessageSending
-import me.rhunk.snapenhance.features.impl.spying.AnonymousStoryViewing
-import me.rhunk.snapenhance.features.impl.spying.MessageLogger
-import me.rhunk.snapenhance.features.impl.spying.PreventReadReceipts
-import me.rhunk.snapenhance.features.impl.spying.SnapToChatMedia
-import me.rhunk.snapenhance.features.impl.spying.StealthMode
-import me.rhunk.snapenhance.features.impl.tweaks.*
-import me.rhunk.snapenhance.features.impl.ui.ClientBootstrapOverride
-import me.rhunk.snapenhance.features.impl.ui.FriendFeedMessagePreview
-import me.rhunk.snapenhance.features.impl.ui.HideStreakRestore
-import me.rhunk.snapenhance.features.impl.ui.PinConversations
-import me.rhunk.snapenhance.features.impl.ui.UITweaks
-import me.rhunk.snapenhance.manager.Manager
-import me.rhunk.snapenhance.ui.menu.impl.MenuViewInjector
+import me.rhunk.snapenhance.core.ModContext
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.MessagingRuleFeature
+import me.rhunk.snapenhance.core.features.impl.ConfigurationOverride
+import me.rhunk.snapenhance.core.features.impl.ScopeSync
+import me.rhunk.snapenhance.core.features.impl.downloader.MediaDownloader
+import me.rhunk.snapenhance.core.features.impl.downloader.ProfilePictureDownloader
+import me.rhunk.snapenhance.core.features.impl.experiments.*
+import me.rhunk.snapenhance.core.features.impl.global.*
+import me.rhunk.snapenhance.core.features.impl.messaging.*
+import me.rhunk.snapenhance.core.features.impl.spying.MessageLogger
+import me.rhunk.snapenhance.core.features.impl.spying.SnapToChatMedia
+import me.rhunk.snapenhance.core.features.impl.spying.StealthMode
+import me.rhunk.snapenhance.core.features.impl.tweaks.CameraTweaks
+import me.rhunk.snapenhance.core.features.impl.ui.*
+import me.rhunk.snapenhance.core.logger.CoreLogger
+import me.rhunk.snapenhance.core.manager.Manager
+import me.rhunk.snapenhance.core.ui.menu.impl.MenuViewInjector
import kotlin.reflect.KClass
import kotlin.system.measureTimeMillis
@@ -51,7 +44,7 @@ class FeatureManager(
}
}
}.onFailure {
- Logger.xposedLog("Failed to register feature ${clazz.simpleName}", it)
+ CoreLogger.xposedLog("Failed to register feature ${clazz.simpleName}", it)
}
}
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/export/MessageExporter.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageExporter.kt
similarity index 94%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/export/MessageExporter.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageExporter.kt
index 290ddcc4..313848d5 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/export/MessageExporter.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageExporter.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.export
+package me.rhunk.snapenhance.core.messaging
import android.os.Environment
import android.util.Base64InputStream
@@ -8,19 +8,19 @@ import com.google.gson.JsonObject
import de.robv.android.xposed.XposedHelpers
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
-import me.rhunk.snapenhance.ModContext
-import me.rhunk.snapenhance.core.BuildConfig
-import me.rhunk.snapenhance.core.database.objects.FriendFeedEntry
-import me.rhunk.snapenhance.core.database.objects.FriendInfo
-import me.rhunk.snapenhance.core.util.download.RemoteMediaResolver
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.core.util.snap.MediaDownloaderHelper
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.FileType
-import me.rhunk.snapenhance.data.wrapper.impl.Message
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.impl.downloader.decoder.AttachmentType
-import me.rhunk.snapenhance.features.impl.downloader.decoder.MessageDecoder
+import me.rhunk.snapenhance.common.BuildConfig
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.FileType
+import me.rhunk.snapenhance.common.database.impl.FriendFeedEntry
+import me.rhunk.snapenhance.common.database.impl.FriendInfo
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.snap.MediaDownloaderHelper
+import me.rhunk.snapenhance.common.util.snap.RemoteMediaResolver
+import me.rhunk.snapenhance.core.ModContext
+import me.rhunk.snapenhance.core.features.impl.downloader.decoder.AttachmentType
+import me.rhunk.snapenhance.core.features.impl.downloader.decoder.MessageDecoder
+import me.rhunk.snapenhance.core.wrapper.impl.Message
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
import java.io.BufferedInputStream
import java.io.File
import java.io.FileOutputStream
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/MessageSender.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageSender.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/MessageSender.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageSender.kt
index 958f70e3..3d78257d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/MessageSender.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/messaging/MessageSender.kt
@@ -1,12 +1,15 @@
-package me.rhunk.snapenhance.data
+package me.rhunk.snapenhance.core.messaging
-import me.rhunk.snapenhance.ModContext
+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
import me.rhunk.snapenhance.core.util.CallbackBuilder
-import me.rhunk.snapenhance.core.util.protobuf.ProtoWriter
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
-import me.rhunk.snapenhance.data.wrapper.impl.MessageDestinations
-import me.rhunk.snapenhance.data.wrapper.impl.SnapUUID
-import me.rhunk.snapenhance.features.impl.Messaging
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.impl.MessageDestinations
+import me.rhunk.snapenhance.core.wrapper.impl.SnapUUID
class MessageSender(
private val context: ModContext,
@@ -167,7 +170,7 @@ class MessageSender(
.build())
}
- fun sendCustomChatMessage(conversations: List, contentType: ContentType, message: ProtoWriter.() -> Unit, onError: (Any) -> Unit = {}, onSuccess: () -> Unit = {}) {
+ fun sendCustomChatMessage(conversations: List, contentType: ContentType, message: ProtoWriter.() -> Unit, onError: (Any) -> Unit = {}, onSuccess: () -> Unit = {}) {
internalSendMessage(conversations, createLocalMessageContentTemplate(contentType, ProtoWriter().apply {
message()
}.toByteArray(), savePolicy = "LIFETIME"), CallbackBuilder(sendMessageCallback)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/core/CoreScriptRuntime.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/CoreScriptRuntime.kt
similarity index 85%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/core/CoreScriptRuntime.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/CoreScriptRuntime.kt
index 36f8af4b..7f67e22f 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/core/CoreScriptRuntime.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/CoreScriptRuntime.kt
@@ -1,13 +1,13 @@
-package me.rhunk.snapenhance.scripting.core
+package me.rhunk.snapenhance.core.scripting
import android.content.Context
import me.rhunk.snapenhance.bridge.scripting.IPCListener
import me.rhunk.snapenhance.bridge.scripting.IScripting
-import me.rhunk.snapenhance.core.logger.AbstractLogger
-import me.rhunk.snapenhance.scripting.IPCInterface
-import me.rhunk.snapenhance.scripting.Listener
-import me.rhunk.snapenhance.scripting.ScriptRuntime
-import me.rhunk.snapenhance.scripting.core.impl.ScriptHooker
+import me.rhunk.snapenhance.common.logger.AbstractLogger
+import me.rhunk.snapenhance.common.scripting.IPCInterface
+import me.rhunk.snapenhance.common.scripting.Listener
+import me.rhunk.snapenhance.common.scripting.ScriptRuntime
+import me.rhunk.snapenhance.core.scripting.impl.ScriptHooker
class CoreScriptRuntime(
androidContext: Context,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/core/impl/ScriptHooker.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/impl/ScriptHooker.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/scripting/core/impl/ScriptHooker.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/impl/ScriptHooker.kt
index 201d930f..91f4416b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/scripting/core/impl/ScriptHooker.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/scripting/impl/ScriptHooker.kt
@@ -1,13 +1,13 @@
-package me.rhunk.snapenhance.scripting.core.impl
+package me.rhunk.snapenhance.core.scripting.impl
-import me.rhunk.snapenhance.core.logger.AbstractLogger
-import me.rhunk.snapenhance.hook.HookAdapter
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
-import me.rhunk.snapenhance.hook.hook
-import me.rhunk.snapenhance.hook.hookConstructor
-import me.rhunk.snapenhance.scripting.toPrimitiveValue
-import me.rhunk.snapenhance.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.common.logger.AbstractLogger
+import me.rhunk.snapenhance.common.scripting.toPrimitiveValue
+import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
+import me.rhunk.snapenhance.core.util.hook.HookAdapter
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.hook
+import me.rhunk.snapenhance.core.util.hook.hookConstructor
import org.mozilla.javascript.annotations.JSGetter
import org.mozilla.javascript.annotations.JSSetter
import java.lang.reflect.Constructor
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/ViewAppearanceHelper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt
similarity index 98%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/ViewAppearanceHelper.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt
index f0ac2f37..c394877b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/ViewAppearanceHelper.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.ui
+package me.rhunk.snapenhance.core.ui
import android.annotation.SuppressLint
import android.app.AlertDialog
@@ -16,7 +16,7 @@ import android.view.Gravity
import android.view.View
import android.widget.Switch
import android.widget.TextView
-import me.rhunk.snapenhance.Constants
+import me.rhunk.snapenhance.common.Constants
import kotlin.random.Random
fun View.applyTheme(componentWidth: Int? = null, hasRadius: Boolean = false, isAmoled: Boolean = true) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/ViewTagState.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewTagState.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/ViewTagState.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewTagState.kt
index 3d8c0d17..d449a8bd 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/ViewTagState.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewTagState.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.ui
+package me.rhunk.snapenhance.core.ui
import android.view.View
import kotlin.random.Random
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/AbstractMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/AbstractMenu.kt
similarity index 52%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/AbstractMenu.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/AbstractMenu.kt
index 9d16958c..fce99ca7 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/AbstractMenu.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/AbstractMenu.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.ui.menu
+package me.rhunk.snapenhance.core.ui.menu
-import me.rhunk.snapenhance.ModContext
+import me.rhunk.snapenhance.core.ModContext
abstract class AbstractMenu {
lateinit var context: ModContext
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/ChatActionMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/ChatActionMenu.kt
similarity index 92%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/ChatActionMenu.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/ChatActionMenu.kt
index 85b8b03e..4bfc5a55 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/ChatActionMenu.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/ChatActionMenu.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.ui.menu.impl
+package me.rhunk.snapenhance.core.ui.menu.impl
import android.annotation.SuppressLint
import android.content.Context
@@ -10,16 +10,16 @@ import android.view.ViewGroup.MarginLayoutParams
import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.features.impl.downloader.MediaDownloader
-import me.rhunk.snapenhance.features.impl.spying.MessageLogger
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
-import me.rhunk.snapenhance.ui.ViewTagState
-import me.rhunk.snapenhance.ui.applyTheme
-import me.rhunk.snapenhance.ui.menu.AbstractMenu
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.core.features.impl.downloader.MediaDownloader
+import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
+import me.rhunk.snapenhance.core.features.impl.spying.MessageLogger
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.ui.ViewTagState
+import me.rhunk.snapenhance.core.ui.applyTheme
+import me.rhunk.snapenhance.core.ui.menu.AbstractMenu
import java.time.Instant
@@ -187,7 +187,8 @@ class ChatActionMenu : AbstractMenu() {
append("client_id: ${arroyoMessage.clientMessageId}, server_id: ${arroyoMessage.serverMessageId}\n")
append("conversation_id: ${arroyoMessage.clientConversationId}\n")
append("arroyo_content_type: ${ContentType.fromId(arroyoMessage.contentType)} (${arroyoMessage.contentType})\n")
- append("parsed_content_type: ${ContentType.fromMessageContainer(
+ append("parsed_content_type: ${
+ ContentType.fromMessageContainer(
ProtoReader(arroyoMessage.messageContent!!).followPath(4, 4)
).let { "$it (${it?.id})" }}\n")
append("creation_timestamp: ${arroyoMessage.creationTimestamp} (${Instant.ofEpochMilli(arroyoMessage.creationTimestamp)})\n")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/FriendFeedInfoMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/FriendFeedInfoMenu.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/FriendFeedInfoMenu.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/FriendFeedInfoMenu.kt
index c7c8f3d0..5cbc7d46 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/FriendFeedInfoMenu.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/FriendFeedInfoMenu.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.ui.menu.impl
+package me.rhunk.snapenhance.core.ui.menu.impl
import android.content.DialogInterface
import android.content.res.Resources
@@ -9,18 +9,18 @@ import android.view.View
import android.widget.Button
import android.widget.CompoundButton
import android.widget.Switch
-import me.rhunk.snapenhance.core.database.objects.ConversationMessage
-import me.rhunk.snapenhance.core.database.objects.FriendInfo
-import me.rhunk.snapenhance.core.database.objects.UserConversationLink
-import me.rhunk.snapenhance.core.util.protobuf.ProtoReader
-import me.rhunk.snapenhance.core.util.snap.BitmojiSelfie
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.FriendLinkType
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.features.impl.spying.MessageLogger
-import me.rhunk.snapenhance.ui.ViewAppearanceHelper
-import me.rhunk.snapenhance.ui.applyTheme
-import me.rhunk.snapenhance.ui.menu.AbstractMenu
+import me.rhunk.snapenhance.common.data.ContentType
+import me.rhunk.snapenhance.common.data.FriendLinkType
+import me.rhunk.snapenhance.common.database.impl.ConversationMessage
+import me.rhunk.snapenhance.common.database.impl.FriendInfo
+import me.rhunk.snapenhance.common.database.impl.UserConversationLink
+import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.snap.BitmojiSelfie
+import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
+import me.rhunk.snapenhance.core.features.impl.spying.MessageLogger
+import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper
+import me.rhunk.snapenhance.core.ui.applyTheme
+import me.rhunk.snapenhance.core.ui.menu.AbstractMenu
import java.net.HttpURLConnection
import java.net.URL
import java.text.DateFormat
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/MenuViewInjector.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/MenuViewInjector.kt
similarity index 95%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/MenuViewInjector.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/MenuViewInjector.kt
index 181adf37..012005c2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/MenuViewInjector.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/MenuViewInjector.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.ui.menu.impl
+package me.rhunk.snapenhance.core.ui.menu.impl
import android.annotation.SuppressLint
import android.view.Gravity
@@ -6,12 +6,12 @@ import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
-import me.rhunk.snapenhance.Constants
+import me.rhunk.snapenhance.common.Constants
import me.rhunk.snapenhance.core.event.events.impl.AddViewEvent
-import me.rhunk.snapenhance.features.Feature
-import me.rhunk.snapenhance.features.FeatureLoadParams
-import me.rhunk.snapenhance.features.impl.Messaging
-import me.rhunk.snapenhance.ui.ViewTagState
+import me.rhunk.snapenhance.core.features.Feature
+import me.rhunk.snapenhance.core.features.FeatureLoadParams
+import me.rhunk.snapenhance.core.features.impl.messaging.Messaging
+import me.rhunk.snapenhance.core.ui.ViewTagState
import java.lang.reflect.Modifier
@SuppressLint("DiscouragedApi")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/OperaContextActionMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/OperaContextActionMenu.kt
similarity index 92%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/OperaContextActionMenu.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/OperaContextActionMenu.kt
index 2e0217da..ded3a0f4 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/OperaContextActionMenu.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/OperaContextActionMenu.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.ui.menu.impl
+package me.rhunk.snapenhance.core.ui.menu.impl
import android.annotation.SuppressLint
import android.view.Gravity
@@ -7,10 +7,10 @@ import android.view.ViewGroup
import android.widget.Button
import android.widget.LinearLayout
import android.widget.ScrollView
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.features.impl.downloader.MediaDownloader
-import me.rhunk.snapenhance.ui.applyTheme
-import me.rhunk.snapenhance.ui.menu.AbstractMenu
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.core.features.impl.downloader.MediaDownloader
+import me.rhunk.snapenhance.core.ui.applyTheme
+import me.rhunk.snapenhance.core.ui.menu.AbstractMenu
@SuppressLint("DiscouragedApi")
class OperaContextActionMenu : AbstractMenu() {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/SettingsGearInjector.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/SettingsGearInjector.kt
similarity index 93%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/SettingsGearInjector.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/SettingsGearInjector.kt
index 00e87d5a..75957ddb 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/SettingsGearInjector.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/SettingsGearInjector.kt
@@ -1,14 +1,12 @@
-package me.rhunk.snapenhance.ui.menu.impl
+package me.rhunk.snapenhance.core.ui.menu.impl
import android.annotation.SuppressLint
-import android.content.Intent
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
-import me.rhunk.snapenhance.Constants
-import me.rhunk.snapenhance.core.BuildConfig
-import me.rhunk.snapenhance.ui.menu.AbstractMenu
+import me.rhunk.snapenhance.common.Constants
+import me.rhunk.snapenhance.core.ui.menu.AbstractMenu
@SuppressLint("DiscouragedApi")
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/SettingsMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/SettingsMenu.kt
similarity index 88%
rename from core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/SettingsMenu.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/SettingsMenu.kt
index 13b05f56..5bafc624 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/ui/menu/impl/SettingsMenu.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/SettingsMenu.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.ui.menu.impl
+package me.rhunk.snapenhance.core.ui.menu.impl
import android.annotation.SuppressLint
import android.view.View
-import me.rhunk.snapenhance.ui.menu.AbstractMenu
+import me.rhunk.snapenhance.core.ui.menu.AbstractMenu
class SettingsMenu : AbstractMenu() {
//TODO: quick settings
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/CallbackBuilder.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/CallbackBuilder.kt
index 7bd93fce..e4f15c48 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/CallbackBuilder.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/CallbackBuilder.kt
@@ -1,9 +1,9 @@
package me.rhunk.snapenhance.core.util
import de.robv.android.xposed.XC_MethodHook
-import me.rhunk.snapenhance.hook.HookAdapter
-import me.rhunk.snapenhance.hook.HookStage
-import me.rhunk.snapenhance.hook.Hooker
+import me.rhunk.snapenhance.core.util.hook.HookAdapter
+import me.rhunk.snapenhance.core.util.hook.HookStage
+import me.rhunk.snapenhance.core.util.hook.Hooker
import java.lang.reflect.Constructor
import java.lang.reflect.Field
import java.lang.reflect.Modifier
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/hook/HookAdapter.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/HookAdapter.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/hook/HookAdapter.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/HookAdapter.kt
index c75851a7..a9966959 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/hook/HookAdapter.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/HookAdapter.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.hook
+package me.rhunk.snapenhance.core.util.hook
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/hook/HookStage.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/HookStage.kt
similarity index 51%
rename from core/src/main/kotlin/me/rhunk/snapenhance/hook/HookStage.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/HookStage.kt
index dddf1342..f991eb01 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/hook/HookStage.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/HookStage.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.hook
+package me.rhunk.snapenhance.core.util.hook
enum class HookStage {
BEFORE,
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/hook/Hooker.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/Hooker.kt
similarity index 99%
rename from core/src/main/kotlin/me/rhunk/snapenhance/hook/Hooker.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/Hooker.kt
index b2801a0b..83cdecdb 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/hook/Hooker.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/hook/Hooker.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.hook
+package me.rhunk.snapenhance.core.util.hook
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedBridge
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/download/HttpServer.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/media/HttpServer.kt
similarity index 86%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/download/HttpServer.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/util/media/HttpServer.kt
index 47479774..be947f3b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/download/HttpServer.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/media/HttpServer.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.core.util.download
+package me.rhunk.snapenhance.core.util.media
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
-import me.rhunk.snapenhance.core.Logger
+import me.rhunk.snapenhance.common.logger.AbstractLogger
import java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
@@ -37,7 +37,7 @@ class HttpServer(
}
coroutineScope.launch(Dispatchers.IO) {
- Logger.directDebug("starting http server on port $port")
+ AbstractLogger.directDebug("starting http server on port $port")
serverSocket = ServerSocket(port)
callback(this@HttpServer)
while (!serverSocket!!.isClosed) {
@@ -48,21 +48,21 @@ class HttpServer(
handleRequest(socket)
timeoutJob = launch {
delay(timeout.toLong())
- Logger.directDebug("http server closed due to timeout")
+ AbstractLogger.directDebug("http server closed due to timeout")
runCatching {
socketJob?.cancel()
socket.close()
serverSocket?.close()
}.onFailure {
- Logger.directError("failed to close socket", it)
+ AbstractLogger.directError("failed to close socket", it)
}
}
}
} catch (e: SocketException) {
- Logger.directDebug("http server timed out")
+ AbstractLogger.directDebug("http server timed out")
break;
} catch (e: Throwable) {
- Logger.directError("failed to handle request", e)
+ AbstractLogger.directError("failed to handle request", e)
}
}
}.also { socketJob = it }
@@ -90,13 +90,13 @@ class HttpServer(
outputStream.close()
socket.close()
}.onFailure {
- Logger.directError("failed to close socket", it)
+ AbstractLogger.directError("failed to close socket", it)
}
}
val parse = StringTokenizer(line)
val method = parse.nextToken().uppercase(Locale.getDefault())
var fileRequested = parse.nextToken().lowercase(Locale.getDefault())
- Logger.directDebug("[http-server:${port}] $method $fileRequested")
+ AbstractLogger.directDebug("[http-server:${port}] $method $fileRequested")
if (method != "GET") {
with(writer) {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/PreviewUtils.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/media/PreviewUtils.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/PreviewUtils.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/util/media/PreviewUtils.kt
index 2c822818..2d384c85 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/core/util/snap/PreviewUtils.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/util/media/PreviewUtils.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.core.util.snap
+package me.rhunk.snapenhance.core.util.media
import android.graphics.Bitmap
import android.graphics.BitmapFactory
@@ -6,7 +6,7 @@ import android.graphics.Canvas
import android.graphics.Matrix
import android.media.MediaDataSource
import android.media.MediaMetadataRetriever
-import me.rhunk.snapenhance.data.FileType
+import me.rhunk.snapenhance.common.data.FileType
import java.io.File
object PreviewUtils {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/AbstractWrapper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/AbstractWrapper.kt
similarity index 97%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/AbstractWrapper.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/AbstractWrapper.kt
index b59b3957..1adbcdfb 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/AbstractWrapper.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/AbstractWrapper.kt
@@ -1,4 +1,4 @@
-package me.rhunk.snapenhance.data.wrapper
+package me.rhunk.snapenhance.core.wrapper
import de.robv.android.xposed.XposedHelpers
import me.rhunk.snapenhance.core.util.CallbackBuilder
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/FriendActionButton.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/FriendActionButton.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/FriendActionButton.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/FriendActionButton.kt
index e9d6ac87..1ac8d353 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/FriendActionButton.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/FriendActionButton.kt
@@ -1,11 +1,11 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
import android.content.Context
import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.View
-import me.rhunk.snapenhance.SnapEnhance
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.SnapEnhance
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class FriendActionButton(
obj: View
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/Message.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/Message.kt
similarity index 80%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/Message.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/Message.kt
index 9ad75553..b3a03a41 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/Message.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/Message.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
+import me.rhunk.snapenhance.common.data.MessageState
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.MessageState
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class Message(obj: Any?) : AbstractWrapper(obj) {
val orderKey get() = instanceNonNull().getObjectField("mOrderKey") as Long
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageContent.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageContent.kt
similarity index 72%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageContent.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageContent.kt
index 69ec5266..9cfe5e5d 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageContent.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageContent.kt
@@ -1,9 +1,9 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
+import me.rhunk.snapenhance.common.data.ContentType
import me.rhunk.snapenhance.core.util.ktx.getObjectField
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.data.ContentType
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class MessageContent(obj: Any?) : AbstractWrapper(obj) {
var content
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageDescriptor.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageDescriptor.kt
similarity index 75%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageDescriptor.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageDescriptor.kt
index ce1bce99..e6b5b6ee 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageDescriptor.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageDescriptor.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class MessageDescriptor(obj: Any?) : AbstractWrapper(obj) {
val messageId: Long get() = instanceNonNull().getObjectField("mMessageId") as Long
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageDestinations.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageDestinations.kt
similarity index 88%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageDestinations.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageDestinations.kt
index bb41d8c0..e3041531 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageDestinations.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageDestinations.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
import me.rhunk.snapenhance.core.util.ktx.getObjectField
import me.rhunk.snapenhance.core.util.ktx.setObjectField
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
@Suppress("UNCHECKED_CAST")
class MessageDestinations(obj: Any) : AbstractWrapper(obj){
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageMetadata.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageMetadata.kt
similarity index 85%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageMetadata.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageMetadata.kt
index bd4e12be..39b43529 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/MessageMetadata.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/MessageMetadata.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
+import me.rhunk.snapenhance.common.data.PlayableSnapState
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.PlayableSnapState
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class MessageMetadata(obj: Any?) : AbstractWrapper(obj){
val createdAt: Long get() = instanceNonNull().getObjectField("mCreatedAt") as Long
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/ScSize.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/ScSize.kt
similarity index 87%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/ScSize.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/ScSize.kt
index 3cba467f..86d45a42 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/ScSize.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/ScSize.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class ScSize(
obj: Any?
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/SnapUUID.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/SnapUUID.kt
similarity index 89%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/SnapUUID.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/SnapUUID.kt
index eba43c32..8af2e98e 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/SnapUUID.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/SnapUUID.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
-import me.rhunk.snapenhance.SnapEnhance
+import me.rhunk.snapenhance.core.SnapEnhance
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
import java.nio.ByteBuffer
import java.util.UUID
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/UserIdToReaction.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/UserIdToReaction.kt
similarity index 77%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/UserIdToReaction.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/UserIdToReaction.kt
index 809c299f..6869a41b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/UserIdToReaction.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/UserIdToReaction.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.data.wrapper.impl
+package me.rhunk.snapenhance.core.wrapper.impl
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class UserIdToReaction(obj: Any?) : AbstractWrapper(obj) {
val userId = SnapUUID(instanceNonNull().getObjectField("mUserId"))
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/EncryptionWrapper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/EncryptionWrapper.kt
similarity index 82%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/EncryptionWrapper.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/EncryptionWrapper.kt
index 981d2226..f4e08da7 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/EncryptionWrapper.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/EncryptionWrapper.kt
@@ -1,6 +1,7 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media
+package me.rhunk.snapenhance.core.wrapper.impl.media
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.common.data.download.MediaEncryptionKeyPair
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
import java.io.InputStream
import java.io.OutputStream
import java.lang.reflect.Field
@@ -9,6 +10,8 @@ import javax.crypto.CipherInputStream
import javax.crypto.CipherOutputStream
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec
+import kotlin.io.encoding.Base64
+import kotlin.io.encoding.ExperimentalEncodingApi
class EncryptionWrapper(instance: Any?) : AbstractWrapper(instance) {
fun decrypt(data: ByteArray?): ByteArray {
@@ -71,3 +74,8 @@ class EncryptionWrapper(instance: Any?) : AbstractWrapper(instance) {
searchByteArrayField(16)[instance] as ByteArray
}
}
+
+
+@OptIn(ExperimentalEncodingApi::class)
+fun EncryptionWrapper.toKeyPair()
+ = MediaEncryptionKeyPair(Base64.UrlSafe.encode(this.keySpec), Base64.UrlSafe.encode(this.ivKeyParameterSpec))
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/MediaInfo.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/MediaInfo.kt
similarity index 90%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/MediaInfo.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/MediaInfo.kt
index ae21b773..2179ac55 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/MediaInfo.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/MediaInfo.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media
+package me.rhunk.snapenhance.core.wrapper.impl.media
import android.os.Parcelable
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
import java.lang.reflect.Field
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/LongformVideoPlaylistItem.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/LongformVideoPlaylistItem.kt
similarity index 74%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/LongformVideoPlaylistItem.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/LongformVideoPlaylistItem.kt
index 8610af39..1456c935 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/LongformVideoPlaylistItem.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/LongformVideoPlaylistItem.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media.dash
+package me.rhunk.snapenhance.core.wrapper.impl.media.dash
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class LongformVideoPlaylistItem(obj: Any?) : AbstractWrapper(obj) {
private val chapterList by lazy {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/SnapChapter.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/SnapChapter.kt
similarity index 77%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/SnapChapter.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/SnapChapter.kt
index 54b5e23a..acef3238 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/SnapChapter.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/SnapChapter.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media.dash
+package me.rhunk.snapenhance.core.wrapper.impl.media.dash
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class SnapChapter (obj: Any?) : AbstractWrapper(obj) {
val snapId by lazy {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/SnapPlaylistItem.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/SnapPlaylistItem.kt
similarity index 66%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/SnapPlaylistItem.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/SnapPlaylistItem.kt
index d490818d..5fa736a0 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/dash/SnapPlaylistItem.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/dash/SnapPlaylistItem.kt
@@ -1,6 +1,6 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media.dash
+package me.rhunk.snapenhance.core.wrapper.impl.media.dash
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class SnapPlaylistItem (obj: Any?) : AbstractWrapper(obj) {
val snapId by lazy {
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/Layer.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/Layer.kt
similarity index 85%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/Layer.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/Layer.kt
index efe88e5c..747a1801 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/Layer.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/Layer.kt
@@ -1,7 +1,7 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media.opera
+package me.rhunk.snapenhance.core.wrapper.impl.media.opera
import me.rhunk.snapenhance.core.util.ReflectionHelper
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
class Layer(obj: Any?) : AbstractWrapper(obj) {
val paramMap: ParamMap
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/LayerController.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/LayerController.kt
similarity index 84%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/LayerController.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/LayerController.kt
index 5d17be80..b5b1b6f2 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/LayerController.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/LayerController.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media.opera
+package me.rhunk.snapenhance.core.wrapper.impl.media.opera
import de.robv.android.xposed.XposedHelpers
import me.rhunk.snapenhance.core.util.ReflectionHelper
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
import java.lang.reflect.Field
import java.util.concurrent.ConcurrentHashMap
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/ParamMap.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/ParamMap.kt
similarity index 91%
rename from core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/ParamMap.kt
rename to core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/ParamMap.kt
index f28b7cc9..6b0be41b 100644
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/wrapper/impl/media/opera/ParamMap.kt
+++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/media/opera/ParamMap.kt
@@ -1,8 +1,8 @@
-package me.rhunk.snapenhance.data.wrapper.impl.media.opera
+package me.rhunk.snapenhance.core.wrapper.impl.media.opera
import me.rhunk.snapenhance.core.util.ReflectionHelper
import me.rhunk.snapenhance.core.util.ktx.getObjectField
-import me.rhunk.snapenhance.data.wrapper.AbstractWrapper
+import me.rhunk.snapenhance.core.wrapper.AbstractWrapper
import java.lang.reflect.Field
import java.util.concurrent.ConcurrentHashMap
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/data/LocalePair.kt b/core/src/main/kotlin/me/rhunk/snapenhance/data/LocalePair.kt
deleted file mode 100644
index 05a8b8b1..00000000
--- a/core/src/main/kotlin/me/rhunk/snapenhance/data/LocalePair.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package me.rhunk.snapenhance.data
-
-data class LocalePair(val locale: String, val content: String)
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/StealthMode.kt b/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/StealthMode.kt
deleted file mode 100644
index d1910546..00000000
--- a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/spying/StealthMode.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package me.rhunk.snapenhance.features.impl.spying
-
-import me.rhunk.snapenhance.core.messaging.MessagingRuleType
-import me.rhunk.snapenhance.features.MessagingRuleFeature
-
-class StealthMode : MessagingRuleFeature("StealthMode", MessagingRuleType.STEALTH)
\ No newline at end of file
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/ActionManager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/ActionManager.kt
deleted file mode 100644
index 1679fc1a..00000000
--- a/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/ActionManager.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package me.rhunk.snapenhance.manager.impl
-
-import android.content.Intent
-import me.rhunk.snapenhance.ModContext
-import me.rhunk.snapenhance.action.AbstractAction
-import me.rhunk.snapenhance.action.EnumAction
-import me.rhunk.snapenhance.manager.Manager
-
-class ActionManager(
- private val modContext: ModContext,
-) : Manager {
- companion object {
- const val ACTION_PARAMETER = "se_action"
- }
- private val actions = mutableMapOf()
-
- override fun init() {
- EnumAction.entries.forEach { enumAction ->
- actions[enumAction.key] = enumAction.clazz.java.getConstructor().newInstance().apply {
- this.context = modContext
- }
- }
- }
-
- fun onNewIntent(intent: Intent?) {
- val action = intent?.getStringExtra(ACTION_PARAMETER) ?: return
- execute(EnumAction.entries.find { it.key == action } ?: return)
- intent.removeExtra(ACTION_PARAMETER)
- }
-
- fun execute(action: EnumAction) {
- actions[action.key]?.run()
- if (action.exitOnFinish) {
- modContext.forceCloseApp()
- }
- }
-}
\ No newline at end of file
diff --git a/core/src/main/res/drawable/back_arrow.xml b/core/src/main/res/drawable/back_arrow.xml
deleted file mode 100644
index 1e002227..00000000
--- a/core/src/main/res/drawable/back_arrow.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
diff --git a/core/src/main/res/font/avenir_next_bold.ttf b/core/src/main/res/font/avenir_next_bold.ttf
deleted file mode 100644
index 570c9edc..00000000
Binary files a/core/src/main/res/font/avenir_next_bold.ttf and /dev/null differ
diff --git a/core/src/main/res/layout/activity_default_header.xml b/core/src/main/res/layout/activity_default_header.xml
deleted file mode 100644
index 1667935e..00000000
--- a/core/src/main/res/layout/activity_default_header.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/core/src/main/res/layout/debug_setting_item.xml b/core/src/main/res/layout/debug_setting_item.xml
deleted file mode 100644
index 0d07c392..00000000
--- a/core/src/main/res/layout/debug_setting_item.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/core/src/main/res/layout/debug_settings_page.xml b/core/src/main/res/layout/debug_settings_page.xml
deleted file mode 100644
index 9512b0fd..00000000
--- a/core/src/main/res/layout/debug_settings_page.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/core/src/main/res/layout/device_spoofer_activity.xml b/core/src/main/res/layout/device_spoofer_activity.xml
deleted file mode 100644
index d2d37271..00000000
--- a/core/src/main/res/layout/device_spoofer_activity.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
deleted file mode 100644
index 81aed8d7..00000000
--- a/core/src/main/res/values/arrays.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- - com.snapchat.android
-
-
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 23cfaf9b..ad843857 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -17,6 +17,7 @@ dependencyResolutionManagement {
rootProject.name = "SnapEnhance"
+include(":common")
include(":core")
include(":app")
include(":mapper")