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")