Rename Wintry -> Shiggy across codebase (classes, files, resources)
This commit is contained in:
parent
b7fcedc96a
commit
e925c83dac
117 changed files with 359 additions and 431 deletions
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -51,7 +51,7 @@ jobs:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
tag="${{ github.ref_name }}"
|
tag="${{ github.ref_name }}"
|
||||||
apk_file="wintry-manager-$tag.apk"
|
apk_file="shiggy-manager-$tag.apk"
|
||||||
mv -T ./app/build/outputs/apk/release/app-release.apk "./$apk_file"
|
mv -T ./app/build/outputs/apk/release/app-release.apk "./$apk_file"
|
||||||
|
|
||||||
gh release create "$tag" \
|
gh release create "$tag" \
|
||||||
|
|
|
||||||
9
INFO.md
9
INFO.md
|
|
@ -1,9 +0,0 @@
|
||||||
## Backing up Aliucord
|
|
||||||
|
|
||||||
Note: This section is about the app installation itself, not the installed plugins, themes, and settings.
|
|
||||||
|
|
||||||
The patched Aliucord APK is tailored to the current device's Android version and CPU architecture.
|
|
||||||
Reusing a patched Aliucord APK from one device on another will likely break. Backing up and
|
|
||||||
restoring on another device will likely break.
|
|
||||||
|
|
||||||
Install Aliucord **directly via Manager** on the device you wish to use it on.
|
|
||||||
69
README.md
69
README.md
|
|
@ -1,69 +0,0 @@
|
||||||
<div align="center">
|
|
||||||
<img src=".github/assets/wt-manager-preview.png" alt="Wintry Manager preview" />
|
|
||||||
<h1>Wintry Manager</h1>
|
|
||||||
<p>Install <a href="https://github.com/amsyarasyiq/wintry">Wintry</a> on your Android device! Based on Aliucord Manager.</p>
|
|
||||||
|
|
||||||
[](https://discord.gg/ybPB5tgD)
|
|
||||||
[](https://github.com/wtcord/wt-manager/stargazers)
|
|
||||||
[](https://nightly.link/wtcord/wt-manager/workflows/build/main/app.zip)
|
|
||||||

|
|
||||||

|
|
||||||
[](https://github.com/wtcord/wt-manager/blob/main/LICENSE)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
Supported Android versions:
|
|
||||||
|
|
||||||
- Android 9 (SDK 28) - Android 16 QPR1 (SDK 36)
|
|
||||||
- Architectures: arm64, armeabi-v7, x86_64, x86
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
1. Download the [latest release APK](https://github.com/wtcord/wt-manager/releases/latest)
|
|
||||||
1. Open and install Wintry Manager
|
|
||||||
- If you have not enabled "Install from unknown sources" for your browser via system settings, do so now.
|
|
||||||
1. Open Wintry Manager
|
|
||||||
1. Grant the permission requests
|
|
||||||
1. Click "New Install" or "Update" if you have previously installed Wintry.
|
|
||||||
- You may change how the Wintry app icon will look once installed.
|
|
||||||
1. Click "Install" and wait. Do not exit the app while it is running.
|
|
||||||
- If a failure occurs, it may be due to a variety of reasons:
|
|
||||||
- Poor internet connection
|
|
||||||
- Internet censorship / blocks (use a VPN or a different DNS server)
|
|
||||||
- Insufficient free storage (at least 500MB is recommended)
|
|
||||||
- If you are stuck, please ask for help in the `#support` channel of our [Discord](https://discord.gg/ybPB5tgD).
|
|
||||||
1. Click "Launch" or directly launch the newly installed Wintry app
|
|
||||||
1. Sign in to Discord
|
|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
1. Install the prerequisites:
|
|
||||||
- Git
|
|
||||||
- [JDK 21+](https://adoptium.net/temurin/releases/?os=any&arch=any&version=21)
|
|
||||||
2. Clone the repo:
|
|
||||||
```shell
|
|
||||||
git clone https://github.com/wtcord/wt-manager && cd wt-manager
|
|
||||||
```
|
|
||||||
3. Build the project:
|
|
||||||
#### Linux/macOS
|
|
||||||
```shell
|
|
||||||
chmod +x gradlew && ./gradlew :app:packageStaging --stacktrace
|
|
||||||
```
|
|
||||||
#### Windows
|
|
||||||
```shell
|
|
||||||
.\gradlew.bat :app:packageStaging --stacktrace
|
|
||||||
```
|
|
||||||
4. Built APK will be located at `./app/build/outputs/apk/staging/app-staging.apk`
|
|
||||||
|
|
||||||
<!--
|
|
||||||
## Translations
|
|
||||||
|
|
||||||
This project handles crowd-sourced translations through Crowdin! If you happen to be fluent in one of the languages listed below,
|
|
||||||
then please feel free to contribute your translations!
|
|
||||||
|
|
||||||
[](https://crowdin.com/project/aliucord-manager)
|
|
||||||
<br/><br/>
|
|
||||||
[](https://crowdin.com/project/aliucord-manager)
|
|
||||||
-->
|
|
||||||
9
TODO.md
9
TODO.md
|
|
@ -1,9 +0,0 @@
|
||||||
- Android API 21 support
|
|
||||||
- Unified permissions screen like in Aurora Store
|
|
||||||
- zip-android 64KiB alignment
|
|
||||||
- zip-android faster file deletion
|
|
||||||
- Better UI for conflicting package names
|
|
||||||
- Auto-rename package names when adding new installs...?
|
|
||||||
- `IconOptionsScreen`
|
|
||||||
- https://discord.com/channels/811255666990907402/1373756392892272691/1380726498725593220
|
|
||||||
- Reset button on PatchOptionsScreen?
|
|
||||||
|
|
@ -18,24 +18,24 @@ val gitHasLocalCommits = gitCurrentBranch?.let { providers.execIgnoreCode("git",
|
||||||
val gitHasHasLocalChanges = providers.execIgnoreCode("git", "status", "-s").isNotEmpty()
|
val gitHasHasLocalChanges = providers.execIgnoreCode("git", "status", "-s").isNotEmpty()
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.wintry.manager"
|
namespace = "dev.shiggy.manager"
|
||||||
compileSdk = 36
|
compileSdk = 36
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdk = 28
|
minSdk = 28
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 10_00_01
|
versionCode = 10_00_00
|
||||||
versionName = "1.0.1"
|
versionName = "1.0.0"
|
||||||
|
|
||||||
vectorDrawables {
|
vectorDrawables {
|
||||||
useSupportLibrary = true
|
useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
|
||||||
buildConfigField("String", "APPLICATION_NAME", "\"Wintry Manager\"")
|
buildConfigField("String", "APPLICATION_NAME", "\"Shiggy Manager\"")
|
||||||
buildConfigField("String", "TAG", "\"WintryManager\"")
|
buildConfigField("String", "TAG", "\"ShiggyManager\"")
|
||||||
|
|
||||||
buildConfigField("String", "GITHUB_ORG", "\"wtcord\"")
|
buildConfigField("String", "GITHUB_ORG", "\"ShiggyCord\"")
|
||||||
buildConfigField("String", "SUPPORT_SERVER", "\"ybPB5tgD\"")
|
buildConfigField("String", "SUPPORT_SERVER", "\"\"")
|
||||||
|
|
||||||
buildConfigField("String", "BACKEND_URL", "\"https://aliucord.com/\"")
|
buildConfigField("String", "BACKEND_URL", "\"https://aliucord.com/\"")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ import com.aliucord.manager.ui.screens.home.HomeScreen
|
||||||
import com.aliucord.manager.ui.theme.ManagerTheme
|
import com.aliucord.manager.ui.theme.ManagerTheme
|
||||||
import com.aliucord.manager.ui.widgets.updater.UpdaterDialog
|
import com.aliucord.manager.ui.widgets.updater.UpdaterDialog
|
||||||
import com.aliucord.manager.util.back
|
import com.aliucord.manager.util.back
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class ManagerApplication : Application() {
|
||||||
singleOf(::AliucordGithubService)
|
singleOf(::AliucordGithubService)
|
||||||
singleOf(::AliucordMavenService)
|
singleOf(::AliucordMavenService)
|
||||||
singleOf(::RNATrackerService)
|
singleOf(::RNATrackerService)
|
||||||
singleOf(::WintryGithubService)
|
singleOf(::ShiggyGithubService)
|
||||||
})
|
})
|
||||||
|
|
||||||
// UI Models
|
// UI Models
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.aliucord.manager.di
|
package com.aliucord.manager.di
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.call.HttpClientCall
|
import io.ktor.client.call.HttpClientCall
|
||||||
import io.ktor.client.engine.okhttp.OkHttp
|
import io.ktor.client.engine.okhttp.OkHttp
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.aliucord.manager.installers
|
package com.aliucord.manager.installers
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import android.util.Log
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import com.aliucord.manager.installers.Installer
|
import com.aliucord.manager.installers.Installer
|
||||||
import com.aliucord.manager.util.isMiui
|
import com.aliucord.manager.util.isMiui
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import android.content.Context
|
||||||
import android.content.pm.PackageInstaller
|
import android.content.pm.PackageInstaller
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import com.aliucord.manager.installers.InstallerResult
|
import com.aliucord.manager.installers.InstallerResult
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import android.util.Log
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import com.aliucord.manager.installers.InstallerResult
|
import com.aliucord.manager.installers.InstallerResult
|
||||||
import com.aliucord.manager.installers.UnknownInstallerError
|
import com.aliucord.manager.installers.UnknownInstallerError
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used as a callback receiver for [PackageInstaller] events,
|
* This class is used as a callback receiver for [PackageInstaller] events,
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import android.content.pm.PackageInstaller
|
||||||
import com.aliucord.manager.installers.InstallerResult
|
import com.aliucord.manager.installers.InstallerResult
|
||||||
import com.aliucord.manager.installers.UnknownInstallerError
|
import com.aliucord.manager.installers.UnknownInstallerError
|
||||||
import com.aliucord.manager.util.showToast
|
import com.aliucord.manager.util.showToast
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This receiver is meant to be registered dynamically in combination with [PMIntentReceiver] in order to
|
* This receiver is meant to be registered dynamically in combination with [PMIntentReceiver] in order to
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import androidx.core.content.getSystemService
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.aliucord.manager.util.IS_PROBABLY_EMULATOR
|
import com.aliucord.manager.util.IS_PROBABLY_EMULATOR
|
||||||
import com.aliucord.manager.util.isPlayProtectEnabled
|
import com.aliucord.manager.util.isPlayProtectEnabled
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import kotlinx.serialization.json.decodeFromStream
|
import kotlinx.serialization.json.decodeFromStream
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,10 @@ class PathManager(
|
||||||
val aliucordDir = Environment.getExternalStorageDirectory().resolve("Aliucord")
|
val aliucordDir = Environment.getExternalStorageDirectory().resolve("Aliucord")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Wintry folder where shared Wintry files are stored.
|
* The Shiggy folder where shared Shiggy files are stored.
|
||||||
* Standard path: `~/Wintry`
|
* Standard path: `~/Shiggy`
|
||||||
*/
|
*/
|
||||||
val wintryDir = Environment.getExternalStorageDirectory().resolve("Wintry")
|
val shiggyDir = Environment.getExternalStorageDirectory().resolve("Shiggy")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The directory in external storage in which plugins are stored by Aliucord.
|
* The directory in external storage in which plugins are stored by Aliucord.
|
||||||
|
|
@ -36,7 +36,7 @@ class PathManager(
|
||||||
/**
|
/**
|
||||||
* Global keystore used for signing APKs.
|
* Global keystore used for signing APKs.
|
||||||
*/
|
*/
|
||||||
val keystoreFile = wintryDir.resolve("ks.keystore")
|
val keystoreFile = shiggyDir.resolve("ks.keystore")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The internal directory used for downloading components related to patching, and
|
* The internal directory used for downloading components related to patching, and
|
||||||
|
|
@ -122,7 +122,7 @@ class PathManager(
|
||||||
fun cachedKotlinDex() = patchingDownloadDir
|
fun cachedKotlinDex() = patchingDownloadDir
|
||||||
.resolve("kotlin.dex")
|
.resolve("kotlin.dex")
|
||||||
|
|
||||||
fun cachedWintryXposed(version: SemVer) = patchingDownloadDir
|
fun cachedShiggyXposed(version: SemVer) = patchingDownloadDir
|
||||||
.resolve("wt-xposed")
|
.resolve("wt-xposed")
|
||||||
.resolve("$version.apk")
|
.resolve("$version.apk")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import androidx.core.content.getSystemService
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import com.aliucord.manager.manager.download.IDownloadManager.ProgressListener
|
import com.aliucord.manager.manager.download.IDownloadManager.ProgressListener
|
||||||
import com.aliucord.manager.manager.download.IDownloadManager.Result
|
import com.aliucord.manager.manager.download.IDownloadManager.Result
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import androidx.core.content.getSystemService
|
||||||
import com.aliucord.manager.manager.download.IDownloadManager.Result
|
import com.aliucord.manager.manager.download.IDownloadManager.Result
|
||||||
import com.aliucord.manager.patcher.util.InsufficientStorageException
|
import com.aliucord.manager.patcher.util.InsufficientStorageException
|
||||||
import com.aliucord.manager.util.IS_PROBABLY_EMULATOR
|
import com.aliucord.manager.util.IS_PROBABLY_EMULATOR
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.request.header
|
import io.ktor.client.request.header
|
||||||
import io.ktor.client.request.prepareGet
|
import io.ktor.client.request.prepareGet
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.aliucord.manager.network.services
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.aliucord.manager.network.utils.*
|
import com.aliucord.manager.network.utils.*
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.request.HttpRequestBuilder
|
import io.ktor.client.request.HttpRequestBuilder
|
||||||
import io.ktor.client.request.request
|
import io.ktor.client.request.request
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,10 @@ import io.ktor.client.request.header
|
||||||
import io.ktor.client.request.url
|
import io.ktor.client.request.url
|
||||||
import io.ktor.http.HttpHeaders
|
import io.ktor.http.HttpHeaders
|
||||||
|
|
||||||
class WintryGithubService(
|
class ShiggyGithubService(
|
||||||
private val http: HttpService,
|
private val http: HttpService,
|
||||||
) {
|
) {
|
||||||
/**
|
/** Fetches all the Manager releases with a 60s local cache. */
|
||||||
* Fetches all the Manager releases with a 60s local cache.
|
|
||||||
*/
|
|
||||||
suspend fun getManagerReleases(): ApiResponse<List<GithubRelease>> {
|
suspend fun getManagerReleases(): ApiResponse<List<GithubRelease>> {
|
||||||
return http.request {
|
return http.request {
|
||||||
url("https://api.github.com/repos/$ORG/$MANAGER_REPO/releases")
|
url("https://api.github.com/repos/$ORG/$MANAGER_REPO/releases")
|
||||||
|
|
@ -19,9 +17,7 @@ class WintryGithubService(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Fetches the latest Xposed release with a 60s local cache. */
|
||||||
* Fetches the latest Xposed release with a 60s local cache.
|
|
||||||
*/
|
|
||||||
suspend fun getLatestXposedRelease(): ApiResponse<GithubRelease> {
|
suspend fun getLatestXposedRelease(): ApiResponse<GithubRelease> {
|
||||||
return http.request {
|
return http.request {
|
||||||
url("https://api.github.com/repos/$ORG/$XPOSED_REPO/releases/latest")
|
url("https://api.github.com/repos/$ORG/$XPOSED_REPO/releases/latest")
|
||||||
|
|
@ -30,8 +26,8 @@ class WintryGithubService(
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val ORG = "wtcord"
|
const val ORG = "kmmiio99o"
|
||||||
const val MANAGER_REPO = "wt-manager"
|
const val MANAGER_REPO = "ShiggyManager"
|
||||||
const val XPOSED_REPO = "wt-xposed"
|
const val XPOSED_REPO = "ShiggyXposed"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data stored inside patched APKs as ~~"aliucord.json"~~ "wintry.json" in order to preserve install-time information about Aliucord and the Manager.
|
* Data stored inside patched APKs as ~~"aliucord.json"~~ "shiggy.json" in order to preserve install-time information about Aliucord and the Manager.
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
data class InstallMetadata(
|
data class InstallMetadata(
|
||||||
|
|
@ -45,7 +45,7 @@ data class InstallMetadata(
|
||||||
val lspatchVersion: Int?,
|
val lspatchVersion: Int?,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Version of WintryXposed embedded into the APK.
|
* Version of ShiggyXposed embedded into the APK.
|
||||||
*/
|
*/
|
||||||
val wintryXposedVersion: SemVer?,
|
val shiggyXposedVersion: SemVer?,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.aliucord.manager.patcher
|
||||||
|
|
||||||
|
import com.aliucord.manager.patcher.steps.download.*
|
||||||
|
import com.aliucord.manager.patcher.steps.install.*
|
||||||
|
import com.aliucord.manager.patcher.steps.patch.*
|
||||||
|
import com.aliucord.manager.patcher.steps.prepare.*
|
||||||
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
||||||
|
class ShiggyPatchRunner(options: PatchOptions) : StepRunner() {
|
||||||
|
override val steps =
|
||||||
|
persistentListOf(
|
||||||
|
FetchDiscordRNAStep(options),
|
||||||
|
DowngradeCheckStep(options),
|
||||||
|
RestoreDownloadsStep(),
|
||||||
|
DownloadDiscordRNABaseStep(),
|
||||||
|
DownloadDiscordRNALangStep(),
|
||||||
|
DownloadDiscordRNAResourcesStep(),
|
||||||
|
DownloadDiscordRNALibStep(),
|
||||||
|
DownloadShiggyXposedStep(),
|
||||||
|
CopyDependenciesStep(),
|
||||||
|
PatchIconsStep(options),
|
||||||
|
PatchShiggyManifestStep(options),
|
||||||
|
SaveMetadataStep(options),
|
||||||
|
AlignmentStep(),
|
||||||
|
SigningStep(),
|
||||||
|
InjectShiggyXposedStep(),
|
||||||
|
InstallStep(options),
|
||||||
|
CleanupStep(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -9,8 +9,8 @@ import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.ui.util.InstallNotifications
|
import com.aliucord.manager.ui.util.InstallNotifications
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
|
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
package com.aliucord.manager.patcher
|
|
||||||
|
|
||||||
import com.aliucord.manager.patcher.steps.download.*
|
|
||||||
import com.aliucord.manager.patcher.steps.install.*
|
|
||||||
import com.aliucord.manager.patcher.steps.patch.*
|
|
||||||
import com.aliucord.manager.patcher.steps.prepare.*
|
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
|
||||||
|
|
||||||
class WintryPatchRunner(options: PatchOptions) : StepRunner() {
|
|
||||||
override val steps = persistentListOf(
|
|
||||||
FetchDiscordRNAStep(options),
|
|
||||||
DowngradeCheckStep(options),
|
|
||||||
RestoreDownloadsStep(),
|
|
||||||
|
|
||||||
DownloadDiscordRNABaseStep(),
|
|
||||||
DownloadDiscordRNALangStep(),
|
|
||||||
DownloadDiscordRNAResourcesStep(),
|
|
||||||
DownloadDiscordRNALibStep(),
|
|
||||||
DownloadWintryXposedStep(),
|
|
||||||
CopyDependenciesStep(),
|
|
||||||
|
|
||||||
PatchIconsStep(options),
|
|
||||||
PatchWintryManifestStep(options),
|
|
||||||
SaveMetadataStep(options),
|
|
||||||
|
|
||||||
AlignmentStep(),
|
|
||||||
SigningStep(),
|
|
||||||
InjectWintryXposedStep(),
|
|
||||||
|
|
||||||
InstallStep(options),
|
|
||||||
CleanupStep(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import com.aliucord.manager.manager.download.KtorDownloadManager
|
||||||
import com.aliucord.manager.patcher.StepRunner
|
import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.util.InsufficientStorageException
|
import com.aliucord.manager.patcher.util.InsufficientStorageException
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import com.aliucord.manager.patcher.steps.base.DownloadStep
|
||||||
import com.aliucord.manager.patcher.steps.base.IDexProvider
|
import com.aliucord.manager.patcher.steps.base.IDexProvider
|
||||||
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
|
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
|
||||||
import com.github.diamondminer88.zip.ZipReader
|
import com.github.diamondminer88.zip.ZipReader
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.download
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
class DownloadDiscordRNABaseStep : DownloadDiscordRNAStep() {
|
class DownloadDiscordRNABaseStep : DownloadDiscordRNAStep() {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.download
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
class DownloadDiscordRNALangStep : DownloadDiscordRNAStep() {
|
class DownloadDiscordRNALangStep : DownloadDiscordRNAStep() {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import android.os.Build
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
class DownloadDiscordRNALibStep : DownloadDiscordRNAStep() {
|
class DownloadDiscordRNALibStep : DownloadDiscordRNAStep() {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.download
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
import com.aliucord.manager.network.services.RNATrackerService.Companion.BASE_URL
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
import com.aliucord.manager.patcher.steps.base.DownloadDiscordRNAStep
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
class DownloadDiscordRNAResourcesStep : DownloadDiscordRNAStep() {
|
class DownloadDiscordRNAResourcesStep : DownloadDiscordRNAStep() {
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ package com.aliucord.manager.patcher.steps.download
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ import com.aliucord.manager.patcher.steps.base.*
|
||||||
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
|
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
|
||||||
import com.aliucord.manager.patcher.steps.prepare.FetchInfoStep
|
import com.aliucord.manager.patcher.steps.prepare.FetchInfoStep
|
||||||
import com.aliucord.manager.ui.components.dialogs.CustomComponentVersionPicker
|
import com.aliucord.manager.ui.components.dialogs.CustomComponentVersionPicker
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
||||||
import com.aliucord.manager.patcher.steps.base.IDexProvider
|
import com.aliucord.manager.patcher.steps.base.IDexProvider
|
||||||
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
|
import com.aliucord.manager.patcher.steps.patch.ReorganizeDexStep
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ import com.aliucord.manager.patcher.steps.base.DownloadStep
|
||||||
import com.aliucord.manager.patcher.steps.base.StepState
|
import com.aliucord.manager.patcher.steps.base.StepState
|
||||||
import com.aliucord.manager.patcher.steps.prepare.FetchInfoStep
|
import com.aliucord.manager.patcher.steps.prepare.FetchInfoStep
|
||||||
import com.aliucord.manager.ui.components.dialogs.CustomComponentVersionPicker
|
import com.aliucord.manager.ui.components.dialogs.CustomComponentVersionPicker
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,28 @@
|
||||||
package com.aliucord.manager.patcher.steps.download
|
package com.aliucord.manager.patcher.steps.download
|
||||||
|
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.aliucord.manager.network.services.WintryGithubService
|
import com.aliucord.manager.network.services.ShiggyGithubService
|
||||||
import com.aliucord.manager.network.utils.SemVer
|
import com.aliucord.manager.network.utils.SemVer
|
||||||
import com.aliucord.manager.network.utils.getOrThrow
|
import com.aliucord.manager.network.utils.getOrThrow
|
||||||
import com.aliucord.manager.patcher.StepRunner
|
import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
import com.aliucord.manager.patcher.steps.base.DownloadStep
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
class DownloadWintryXposedStep : DownloadStep() {
|
class DownloadShiggyXposedStep : DownloadStep() {
|
||||||
private val paths: PathManager by inject()
|
private val paths: PathManager by inject()
|
||||||
private val wintryGithubService: WintryGithubService by inject()
|
private val shiggyGithubService: ShiggyGithubService by inject()
|
||||||
|
|
||||||
override val localizedName = R.string.patch_step_dl_wtxposed
|
override val localizedName = R.string.patch_step_dl_wtxposed
|
||||||
override val targetFile get() = paths.cachedWintryXposed(targetVersion)
|
override val targetFile get() = paths.cachedShiggyXposed(targetVersion)
|
||||||
override lateinit var targetUrl: String
|
override lateinit var targetUrl: String
|
||||||
|
|
||||||
lateinit var targetVersion: SemVer
|
lateinit var targetVersion: SemVer
|
||||||
private set
|
private set
|
||||||
|
|
||||||
override suspend fun execute(container: StepRunner) {
|
override suspend fun execute(container: StepRunner) {
|
||||||
val latestRelease = wintryGithubService.getLatestXposedRelease().getOrThrow()
|
val latestRelease = shiggyGithubService.getLatestXposedRelease().getOrThrow()
|
||||||
container.log("Latest WintryXposed release is ${latestRelease.name}")
|
container.log("Latest ShiggyXposed release is ${latestRelease.name}")
|
||||||
|
|
||||||
targetVersion = SemVer.parse(latestRelease.name)
|
targetVersion = SemVer.parse(latestRelease.name)
|
||||||
targetUrl = latestRelease.assets.first { it.name == "app-release.apk" }.browserDownloadUrl
|
targetUrl = latestRelease.assets.first { it.name == "app-release.apk" }.browserDownloadUrl
|
||||||
|
|
@ -7,7 +7,7 @@ import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
||||||
import com.github.diamondminer88.zip.*
|
import com.github.diamondminer88.zip.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import com.aliucord.manager.manager.PreferencesManager
|
||||||
import com.aliucord.manager.patcher.StepRunner
|
import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
||||||
import com.aliucord.manager.patcher.steps.download.DownloadWintryXposedStep
|
import com.aliucord.manager.patcher.steps.download.DownloadShiggyXposedStep
|
||||||
import com.aliucord.manager.patcher.util.Signer
|
import com.aliucord.manager.patcher.util.Signer
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.lsposed.lspatch.share.LSPConfig
|
import org.lsposed.lspatch.share.LSPConfig
|
||||||
|
|
@ -14,9 +14,9 @@ import org.lsposed.patch.LSPatch
|
||||||
import org.lsposed.patch.util.Logger
|
import org.lsposed.patch.util.Logger
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class InjectWintryXposedStep : Step() {
|
class InjectShiggyXposedStep : Step() {
|
||||||
override val group: StepGroup = StepGroup.Install
|
override val group: StepGroup = StepGroup.Install
|
||||||
override val localizedName: Int = R.string.patch_step_inject_wintry
|
override val localizedName: Int = R.string.patch_step_inject_shiggy
|
||||||
|
|
||||||
suspend fun patch(
|
suspend fun patch(
|
||||||
container: StepRunner,
|
container: StepRunner,
|
||||||
|
|
@ -58,10 +58,10 @@ class InjectWintryXposedStep : Step() {
|
||||||
|
|
||||||
override suspend fun execute(container: StepRunner) {
|
override suspend fun execute(container: StepRunner) {
|
||||||
val apks = container.getStep<CopyDependenciesStep>().patchedApks
|
val apks = container.getStep<CopyDependenciesStep>().patchedApks
|
||||||
val xposed = container.getStep<DownloadWintryXposedStep>().targetFile
|
val xposed = container.getStep<DownloadShiggyXposedStep>().targetFile
|
||||||
|
|
||||||
container.log("Adding WintryXposed module with LSPatch")
|
container.log("Adding ShiggyXposed module with LSPatch")
|
||||||
container.log("WintryXposed path = ${xposed.absolutePath}")
|
container.log("ShiggyXposed path = ${xposed.absolutePath}")
|
||||||
|
|
||||||
// Create temporary folder in working directory
|
// Create temporary folder in working directory
|
||||||
val tempDir = apks.first().parentFile!!.resolve("lspatched")
|
val tempDir = apks.first().parentFile!!.resolve("lspatched")
|
||||||
|
|
@ -14,7 +14,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.aliucord.manager.ui.util.InstallNotifications
|
import com.aliucord.manager.ui.util.InstallNotifications
|
||||||
import com.aliucord.manager.util.isPackageInstalled
|
import com.aliucord.manager.util.isPackageInstalled
|
||||||
import com.aliucord.manager.util.isPlayProtectEnabled
|
import com.aliucord.manager.util.isPlayProtectEnabled
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
||||||
import com.aliucord.manager.patcher.util.Signer
|
import com.aliucord.manager.patcher.util.Signer
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
||||||
import com.aliucord.manager.patcher.steps.download.DownloadAliuhookStep
|
import com.aliucord.manager.patcher.steps.download.DownloadAliuhookStep
|
||||||
import com.github.diamondminer88.zip.*
|
import com.github.diamondminer88.zip.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
||||||
import com.aliucord.manager.util.getResBytes
|
import com.aliucord.manager.util.getResBytes
|
||||||
import com.github.diamondminer88.zip.ZipWriter
|
import com.github.diamondminer88.zip.ZipWriter
|
||||||
import com.google.devrel.gmscore.tools.apk.arsc.*
|
import com.google.devrel.gmscore.tools.apk.arsc.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import com.aliucord.manager.patcher.util.ManifestPatcher
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.github.diamondminer88.zip.ZipReader
|
import com.github.diamondminer88.zip.ZipReader
|
||||||
import com.github.diamondminer88.zip.ZipWriter
|
import com.github.diamondminer88.zip.ZipWriter
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Patch the APK's AndroidManifest.xml
|
* Patch the APK's AndroidManifest.xml
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.aliucord.manager.patcher.steps.patch
|
||||||
import com.aliucord.manager.patcher.util.ManifestPatcher
|
import com.aliucord.manager.patcher.util.ManifestPatcher
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
|
|
||||||
class PatchWintryManifestStep(val options: PatchOptions) : PatchManifestStep(options) {
|
class PatchShiggyManifestStep(val options: PatchOptions) : PatchManifestStep(options) {
|
||||||
override fun patchManifest(manifestBytes: ByteArray, isBase: Boolean) = ManifestPatcher.patchManifest(
|
override fun patchManifest(manifestBytes: ByteArray, isBase: Boolean) = ManifestPatcher.patchManifest(
|
||||||
manifestBytes = manifestBytes,
|
manifestBytes = manifestBytes,
|
||||||
packageName = options.packageName,
|
packageName = options.packageName,
|
||||||
|
|
@ -7,7 +7,7 @@ import com.aliucord.manager.patcher.steps.base.IDexProvider
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
import com.aliucord.manager.patcher.steps.download.CopyDependenciesStep
|
||||||
import com.github.diamondminer88.zip.*
|
import com.github.diamondminer88.zip.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.download.*
|
import com.aliucord.manager.patcher.steps.download.*
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.github.diamondminer88.zip.ZipWriter
|
import com.github.diamondminer88.zip.ZipWriter
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
@ -31,7 +31,7 @@ class SaveMetadataStep(private val options: PatchOptions) : Step(), KoinComponen
|
||||||
val aliuhook = container.getStepOrNull<DownloadAliuhookStep>()
|
val aliuhook = container.getStepOrNull<DownloadAliuhookStep>()
|
||||||
val injector = container.getStepOrNull<DownloadInjectorStep>()
|
val injector = container.getStepOrNull<DownloadInjectorStep>()
|
||||||
val patches = container.getStepOrNull<DownloadPatchesStep>()
|
val patches = container.getStepOrNull<DownloadPatchesStep>()
|
||||||
val wintryXposed = container.getStepOrNull<DownloadWintryXposedStep>()
|
val shiggyXposed = container.getStepOrNull<DownloadShiggyXposedStep>()
|
||||||
|
|
||||||
val metadata = InstallMetadata(
|
val metadata = InstallMetadata(
|
||||||
options = options,
|
options = options,
|
||||||
|
|
@ -41,12 +41,12 @@ class SaveMetadataStep(private val options: PatchOptions) : Step(), KoinComponen
|
||||||
injectorVersion = injector?.targetVersion,
|
injectorVersion = injector?.targetVersion,
|
||||||
patchesVersion = patches?.targetVersion,
|
patchesVersion = patches?.targetVersion,
|
||||||
lspatchVersion = LSPConfig.instance.VERSION_CODE,
|
lspatchVersion = LSPConfig.instance.VERSION_CODE,
|
||||||
wintryXposedVersion = wintryXposed?.targetVersion,
|
shiggyXposedVersion = shiggyXposed?.targetVersion,
|
||||||
)
|
)
|
||||||
|
|
||||||
container.log("Writing serialized install metadata to APK")
|
container.log("Writing serialized install metadata to APK")
|
||||||
ZipWriter(apk, /* append = */ true).use {
|
ZipWriter(apk, /* append = */ true).use {
|
||||||
it.writeEntry("wintry.json", json.encodeToString<InstallMetadata>(metadata))
|
it.writeEntry("shiggy.json", json.encodeToString<InstallMetadata>(metadata))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import com.github.diamondminer88.zip.ZipReader
|
||||||
import com.github.difflib.DiffUtils
|
import com.github.difflib.DiffUtils
|
||||||
import com.github.difflib.UnifiedDiffUtils
|
import com.github.difflib.UnifiedDiffUtils
|
||||||
import com.github.difflib.patch.Patch
|
import com.github.difflib.patch.Patch
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.base.StepState
|
import com.aliucord.manager.patcher.steps.base.StepState
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.aliucord.manager.ui.screens.patchopts.VersionPreference
|
import com.aliucord.manager.ui.screens.patchopts.VersionPreference
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import com.aliucord.manager.network.utils.getOrThrow
|
||||||
import com.aliucord.manager.patcher.StepRunner
|
import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.base.StepState
|
import com.aliucord.manager.patcher.steps.base.StepState
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import org.koin.core.component.KoinComponent
|
import org.koin.core.component.KoinComponent
|
||||||
import org.koin.core.component.inject
|
import org.koin.core.component.inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ object ManifestPatcher {
|
||||||
"name",
|
"name",
|
||||||
android.R.attr.name,
|
android.R.attr.name,
|
||||||
TYPE_STRING,
|
TYPE_STRING,
|
||||||
"isWintry" /* originally "isAliucord" */
|
"isShiggy" /* originally "isAliucord" */
|
||||||
)
|
)
|
||||||
attr(ANDROID_NAMESPACE, "value", android.R.attr.value, TYPE_INT_BOOLEAN, 1)
|
attr(ANDROID_NAMESPACE, "value", android.R.attr.value, TYPE_INT_BOOLEAN, 1)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ package com.aliucord.manager.patcher.util
|
||||||
|
|
||||||
import com.aliucord.manager.manager.PathManager
|
import com.aliucord.manager.manager.PathManager
|
||||||
import com.android.apksig.ApkSigner
|
import com.android.apksig.ApkSigner
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import org.bouncycastle.asn1.x500.X500Name
|
import org.bouncycastle.asn1.x500.X500Name
|
||||||
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
|
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
|
||||||
import org.bouncycastle.cert.X509v3CertificateBuilder
|
import org.bouncycastle.cert.X509v3CertificateBuilder
|
||||||
|
|
@ -32,7 +32,7 @@ object Signer : KoinComponent {
|
||||||
|
|
||||||
// Create new keystore if it doesn't exist
|
// Create new keystore if it doesn't exist
|
||||||
if (!paths.keystoreFile.exists()) {
|
if (!paths.keystoreFile.exists()) {
|
||||||
paths.wintryDir.mkdirs()
|
paths.shiggyDir.mkdirs()
|
||||||
newKeystore(paths.keystoreFile)
|
newKeystore(paths.keystoreFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import com.aliucord.manager.util.back
|
import com.aliucord.manager.util.back
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standalone back button for interacting with the current navigator.
|
* Standalone back button for interacting with the current navigator.
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import coil3.compose.SubcomposeAsyncImage
|
import coil3.compose.SubcomposeAsyncImage
|
||||||
import com.aliucord.manager.network.models.Contributor
|
import com.aliucord.manager.network.models.Contributor
|
||||||
import com.valentinilk.shimmer.shimmer
|
import com.valentinilk.shimmer.shimmer
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ContributorCommitsItem(
|
fun ContributorCommitsItem(
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import androidx.core.graphics.applyCanvas
|
||||||
import androidx.core.graphics.createBitmap
|
import androidx.core.graphics.createBitmap
|
||||||
import androidx.core.graphics.drawable.toDrawable
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
// Sizing information is obtained from here: https://medium.com/google-design/designing-adaptive-icons-515af294c783
|
// Sizing information is obtained from here: https://medium.com/google-design/designing-adaptive-icons-515af294c783
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LoadFailure(modifier: Modifier = Modifier) {
|
fun LoadFailure(modifier: Modifier = Modifier) {
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ProjectHeader(
|
fun ProjectHeader(
|
||||||
|
|
@ -28,7 +28,7 @@ fun ProjectHeader(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(if (aliucord) R.drawable.ic_aliucord_logo else R.drawable.ic_rounded_wintry),
|
painter = painterResource(if (aliucord) R.drawable.ic_aliucord_logo else R.drawable.ic_rounded_shiggy),
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(bottom = 6.dp)
|
.padding(bottom = 6.dp)
|
||||||
|
|
@ -36,7 +36,7 @@ fun ProjectHeader(
|
||||||
)
|
)
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(if (aliucord) R.string.aliucord else R.string.wintry),
|
text = stringResource(if (aliucord) R.string.aliucord else R.string.shiggy),
|
||||||
style = MaterialTheme.typography.titleMedium.copy(fontSize = 26.sp)
|
style = MaterialTheme.typography.titleMedium.copy(fontSize = 26.sp)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.aliucord.manager.ui.util.mirrorVertically
|
import com.aliucord.manager.ui.util.mirrorVertically
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ResetToDefaultButton(
|
fun ResetToDefaultButton(
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import com.aliucord.manager.network.utils.SemVer
|
import com.aliucord.manager.network.utils.SemVer
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun CustomComponentVersionPicker(
|
fun CustomComponentVersionPicker(
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun InstallerAbortDialog(
|
fun InstallerAbortDialog(
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun NetworkWarningDialog(
|
fun NetworkWarningDialog(
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import com.aliucord.manager.ui.theme.customColors
|
import com.aliucord.manager.ui.theme.customColors
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PlayProtectDialog(
|
fun PlayProtectDialog(
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import com.google.accompanist.permissions.*
|
import com.google.accompanist.permissions.*
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@OptIn(ExperimentalPermissionsApi::class)
|
@OptIn(ExperimentalPermissionsApi::class)
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun UnknownSourcesPermissionDialog() {
|
fun UnknownSourcesPermissionDialog() {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import androidx.compose.ui.tooling.preview.*
|
||||||
import com.aliucord.manager.ui.screens.patching.components.TextBanner
|
import com.aliucord.manager.ui.screens.patching.components.TextBanner
|
||||||
import com.aliucord.manager.ui.theme.ManagerTheme
|
import com.aliucord.manager.ui.theme.ManagerTheme
|
||||||
import com.aliucord.manager.ui.theme.customColors
|
import com.aliucord.manager.ui.theme.customColors
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
|
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import com.aliucord.manager.ui.screens.iconopts.IconOptionsMode
|
||||||
import com.aliucord.manager.ui.screens.iconopts.IconOptionsScreenContent
|
import com.aliucord.manager.ui.screens.iconopts.IconOptionsScreenContent
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
||||||
import com.aliucord.manager.ui.theme.ManagerTheme
|
import com.aliucord.manager.ui.theme.ManagerTheme
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import dev.zt64.compose.pipette.HsvColor
|
import dev.zt64.compose.pipette.HsvColor
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -23,14 +23,13 @@ import cafe.adriel.voyager.koin.koinScreenModel
|
||||||
import com.aliucord.manager.ui.components.*
|
import com.aliucord.manager.ui.components.*
|
||||||
import com.aliucord.manager.ui.screens.about.components.LeadContributor
|
import com.aliucord.manager.ui.screens.about.components.LeadContributor
|
||||||
import com.aliucord.manager.ui.util.paddings.*
|
import com.aliucord.manager.ui.util.paddings.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
class AboutScreen : Screen, Parcelable {
|
class AboutScreen : Screen, Parcelable {
|
||||||
@IgnoredOnParcel
|
@IgnoredOnParcel override val key = "About"
|
||||||
override val key = "About"
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content() {
|
override fun Content() {
|
||||||
|
|
@ -43,99 +42,94 @@ class AboutScreen : Screen, Parcelable {
|
||||||
@Composable
|
@Composable
|
||||||
fun AboutScreenContent(state: State<AboutScreenState>) {
|
fun AboutScreenContent(state: State<AboutScreenState>) {
|
||||||
Scaffold(
|
Scaffold(
|
||||||
topBar = {
|
topBar = {
|
||||||
TopAppBar(
|
TopAppBar(
|
||||||
title = { Text(stringResource(R.string.navigation_about_manager)) },
|
title = { Text(stringResource(R.string.navigation_about_manager)) },
|
||||||
navigationIcon = { BackButton() },
|
navigationIcon = { BackButton() },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
) { paddingValues ->
|
) { paddingValues ->
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
verticalArrangement = Arrangement.spacedBy(2.dp),
|
verticalArrangement = Arrangement.spacedBy(2.dp),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
contentPadding = paddingValues
|
contentPadding =
|
||||||
.exclude(PaddingValuesSides.Horizontal + PaddingValuesSides.Top)
|
paddingValues
|
||||||
.add(PaddingValues(vertical = 16.dp)),
|
.exclude(PaddingValuesSides.Horizontal + PaddingValuesSides.Top)
|
||||||
modifier = Modifier
|
.add(PaddingValues(vertical = 16.dp)),
|
||||||
.padding(paddingValues.exclude(PaddingValuesSides.Bottom))
|
modifier =
|
||||||
.padding(horizontal = 14.dp),
|
Modifier.padding(paddingValues.exclude(PaddingValuesSides.Bottom))
|
||||||
|
.padding(horizontal = 14.dp),
|
||||||
) {
|
) {
|
||||||
item(key = "MANAGER_CREDIT_DISCLAIMER_BANNER") {
|
item(key = "MANAGER_CREDIT_DISCLAIMER_BANNER") {
|
||||||
Box(
|
Box(
|
||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
modifier = Modifier
|
modifier =
|
||||||
.padding(bottom = 24.dp)
|
Modifier.padding(bottom = 24.dp)
|
||||||
.border(
|
.border(
|
||||||
width = 2.dp,
|
width = 2.dp,
|
||||||
color = MaterialTheme.colorScheme.surfaceVariant,
|
color = MaterialTheme.colorScheme.surfaceVariant,
|
||||||
shape = MaterialTheme.shapes.medium
|
shape = MaterialTheme.shapes.medium
|
||||||
)
|
)
|
||||||
.clip(MaterialTheme.shapes.medium)
|
.clip(MaterialTheme.shapes.medium)
|
||||||
.background(MaterialTheme.colorScheme.surfaceContainerHigh)
|
.background(MaterialTheme.colorScheme.surfaceContainerHigh)
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
modifier = Modifier
|
modifier = Modifier.padding(horizontal = 20.dp, vertical = 14.dp)
|
||||||
.padding(horizontal = 20.dp, vertical = 14.dp)
|
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.about_manager_credit_disclaimer_notice),
|
text =
|
||||||
style = MaterialTheme.typography.labelMedium,
|
stringResource(
|
||||||
|
R.string.about_manager_credit_disclaimer_notice
|
||||||
|
),
|
||||||
|
style = MaterialTheme.typography.labelMedium,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item(key = "PROJECT_HEADER") {
|
item(key = "PROJECT_HEADER") { ProjectHeader(aliucord = true) }
|
||||||
ProjectHeader(aliucord = true)
|
|
||||||
}
|
|
||||||
|
|
||||||
item(key = "HEADER_DIVIDER") {
|
item(key = "HEADER_DIVIDER") {
|
||||||
TextDivider(
|
TextDivider(
|
||||||
text = stringResource(R.string.contributors_lead),
|
text = stringResource(R.string.contributors_lead),
|
||||||
modifier = Modifier.padding(top = 18.dp, bottom = 20.dp),
|
modifier = Modifier.padding(top = 18.dp, bottom = 20.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
item(key = "MAIN_CONTRIBUTORS") {
|
item(key = "MAIN_CONTRIBUTORS") {
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.SpaceEvenly,
|
horizontalArrangement = Arrangement.SpaceEvenly,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
) {
|
) {
|
||||||
LeadContributor("Vendicated", "the ven")
|
LeadContributor("C0C0B01", "Creator of Kettu")
|
||||||
LeadContributor("Juby210", "Fox")
|
LeadContributor("kmmiio99o", "Creator of ShiggyCord")
|
||||||
LeadContributor("rushii", "explod", "rushiiMachine")
|
LeadContributor("pylixonly", "Creator of Bunny")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item(key = "CONTRIBUTORS_DIVIDER") {
|
item(key = "CONTRIBUTORS_DIVIDER") {
|
||||||
TextDivider(
|
TextDivider(
|
||||||
text = stringResource(R.string.contributors),
|
text = stringResource(R.string.contributors),
|
||||||
modifier = Modifier.padding(top = 16.dp, bottom = 6.dp)
|
modifier = Modifier.padding(top = 16.dp, bottom = 6.dp)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
when (val state = state.value) {
|
when (val state = state.value) {
|
||||||
AboutScreenState.Loading -> item(key = "CONTRIBUTIONS_LOADING") {
|
AboutScreenState.Loading ->
|
||||||
Box(
|
item(key = "CONTRIBUTIONS_LOADING") {
|
||||||
contentAlignment = Alignment.Center,
|
Box(
|
||||||
content = { CircularProgressIndicator() },
|
contentAlignment = Alignment.Center,
|
||||||
modifier = Modifier
|
content = { CircularProgressIndicator() },
|
||||||
.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth().padding(vertical = 38.dp),
|
||||||
.padding(vertical = 38.dp),
|
)
|
||||||
)
|
}
|
||||||
}
|
AboutScreenState.Failure ->
|
||||||
|
item(key = "LOAD_FAILURE") {
|
||||||
AboutScreenState.Failure -> item(key = "LOAD_FAILURE") {
|
LoadFailure(modifier = Modifier.fillMaxSize().padding(vertical = 38.dp))
|
||||||
LoadFailure(
|
}
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxSize()
|
|
||||||
.padding(vertical = 38.dp)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
is AboutScreenState.Loaded -> {
|
is AboutScreenState.Loaded -> {
|
||||||
items(state.contributors, key = { it.username }) { user ->
|
items(state.contributors, key = { it.username }) { user ->
|
||||||
ContributorCommitsItem(user)
|
ContributorCommitsItem(user)
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ import com.aliucord.manager.ui.util.DiscordVersion
|
||||||
import com.aliucord.manager.ui.util.toUnsafeImmutable
|
import com.aliucord.manager.ui.util.toUnsafeImmutable
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import com.github.diamondminer88.zip.ZipReader
|
import com.github.diamondminer88.zip.ZipReader
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
|
|
@ -37,7 +37,7 @@ class HomeModel(
|
||||||
private val application: Application,
|
private val application: Application,
|
||||||
private val github: AliucordGithubService,
|
private val github: AliucordGithubService,
|
||||||
private val maven: AliucordMavenService,
|
private val maven: AliucordMavenService,
|
||||||
private val wtGithub: WintryGithubService,
|
private val wtGithub: ShiggyGithubService,
|
||||||
private val rnaTracker: RNATrackerService,
|
private val rnaTracker: RNATrackerService,
|
||||||
private val json: Json,
|
private val json: Json,
|
||||||
) : ScreenModel {
|
) : ScreenModel {
|
||||||
|
|
@ -47,7 +47,7 @@ class HomeModel(
|
||||||
private val refreshingLock = Mutex()
|
private val refreshingLock = Mutex()
|
||||||
private var remoteDataJson: BuildInfo? = null
|
private var remoteDataJson: BuildInfo? = null
|
||||||
private var trackerIndexJson: RNATrackerIndex? = null
|
private var trackerIndexJson: RNATrackerIndex? = null
|
||||||
private var latestWintryXposedVersion: SemVer? = null
|
private var latestShiggyXposedVersion: SemVer? = null
|
||||||
private var latestAliuhookVersion: SemVer? = null
|
private var latestAliuhookVersion: SemVer? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
@ -109,7 +109,7 @@ class HomeModel(
|
||||||
val metadata = try {
|
val metadata = try {
|
||||||
val applicationInfo = application.packageManager.getApplicationInfo(packageName, 0)
|
val applicationInfo = application.packageManager.getApplicationInfo(packageName, 0)
|
||||||
val metadataFile = ZipReader(applicationInfo.publicSourceDir)
|
val metadataFile = ZipReader(applicationInfo.publicSourceDir)
|
||||||
.use { it.openEntry("wintry.json")?.read() }
|
.use { it.openEntry("shiggy.json")?.read() }
|
||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class)
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
metadataFile?.let { json.decodeFromStream<InstallMetadata>(it.inputStream()) }
|
metadataFile?.let { json.decodeFromStream<InstallMetadata>(it.inputStream()) }
|
||||||
|
|
@ -190,7 +190,7 @@ class HomeModel(
|
||||||
|
|
||||||
private suspend fun fetchRemoteData() {
|
private suspend fun fetchRemoteData() {
|
||||||
listOf(
|
listOf(
|
||||||
// // These aren't needed by Wintry
|
// // These aren't needed by Shiggy
|
||||||
// screenModelScope.launch(Dispatchers.IO) {
|
// screenModelScope.launch(Dispatchers.IO) {
|
||||||
// github.getBuildData().fold(
|
// github.getBuildData().fold(
|
||||||
// success = { remoteDataJson = it },
|
// success = { remoteDataJson = it },
|
||||||
|
|
@ -211,14 +211,14 @@ class HomeModel(
|
||||||
},
|
},
|
||||||
screenModelScope.launch(Dispatchers.IO) {
|
screenModelScope.launch(Dispatchers.IO) {
|
||||||
wtGithub.getLatestXposedRelease().fold(
|
wtGithub.getLatestXposedRelease().fold(
|
||||||
success = { latestWintryXposedVersion = SemVer.parse(it.name) },
|
success = { latestShiggyXposedVersion = SemVer.parse(it.name) },
|
||||||
fail = { Log.w(BuildConfig.TAG, "Failed to fetch latest WintryXposed version", it) },
|
fail = { Log.w(BuildConfig.TAG, "Failed to fetch latest ShiggyXposed version", it) },
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
||||||
).joinAll()
|
).joinAll()
|
||||||
|
|
||||||
if (trackerIndexJson == null /* remoteDataJson == null || latestAliuhookVersion == null */ || latestWintryXposedVersion == null) {
|
if (trackerIndexJson == null /* remoteDataJson == null || latestAliuhookVersion == null */ || latestShiggyXposedVersion == null) {
|
||||||
mainThread { application.showToast(R.string.home_network_fail) }
|
mainThread { application.showToast(R.string.home_network_fail) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -230,8 +230,8 @@ class HomeModel(
|
||||||
return application.packageManager
|
return application.packageManager
|
||||||
.getInstalledPackages(PackageManager.GET_META_DATA)
|
.getInstalledPackages(PackageManager.GET_META_DATA)
|
||||||
.filter {
|
.filter {
|
||||||
// Wintry doesn't have "legacy installer" whatsoever
|
// Shiggy doesn't have "legacy installer" whatsoever
|
||||||
return@filter it.applicationInfo?.metaData?.containsKey("isWintry") == true
|
return@filter it.applicationInfo?.metaData?.containsKey("isShiggy") == true
|
||||||
|
|
||||||
// // Packages installed via the legacy Installer do not have the metadata marker
|
// // Packages installed via the legacy Installer do not have the metadata marker
|
||||||
// val isAliucordPkg = it.packageName == "com.aliucord"
|
// val isAliucordPkg = it.packageName == "com.aliucord"
|
||||||
|
|
@ -241,11 +241,11 @@ class HomeModel(
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether the current Wintry installation is up-to-date.
|
* Checks whether the current Shiggy installation is up-to-date.
|
||||||
*
|
*
|
||||||
* Currently mirrors the behavior of Bunny Manager by directly comparing against
|
* Currently mirrors the behavior of Bunny Manager by directly comparing against
|
||||||
* the latest available Discord and WintryXposed release. This is a temporary approach and will remain
|
* the latest available Discord and ShiggyXposed release. This is a temporary approach and will remain
|
||||||
* in place until Wintry adds support for version pinning.
|
* in place until Shiggy adds support for version pinning.
|
||||||
*/
|
*/
|
||||||
private fun isInstallationUpToDate(pkg: PackageInfo): Boolean? {
|
private fun isInstallationUpToDate(pkg: PackageInfo): Boolean? {
|
||||||
val trackerData = trackerIndexJson ?: return null
|
val trackerData = trackerIndexJson ?: return null
|
||||||
|
|
@ -257,7 +257,7 @@ class HomeModel(
|
||||||
// Try to parse install metadata. If none present, install was made via legacy installer.
|
// Try to parse install metadata. If none present, install was made via legacy installer.
|
||||||
val apkPath = pkg.applicationInfo?.publicSourceDir ?: return false
|
val apkPath = pkg.applicationInfo?.publicSourceDir ?: return false
|
||||||
val installMetadata = try {
|
val installMetadata = try {
|
||||||
val metadataFile = ZipReader(apkPath).use { it.openEntry("wintry.json")?.read() }
|
val metadataFile = ZipReader(apkPath).use { it.openEntry("shiggy.json")?.read() }
|
||||||
?: return false
|
?: return false
|
||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class)
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
|
|
@ -274,6 +274,6 @@ class HomeModel(
|
||||||
VersionPreference.Custom -> return true
|
VersionPreference.Custom -> return true
|
||||||
}
|
}
|
||||||
|
|
||||||
return latestByPref == versionCode && installMetadata.wintryXposedVersion == latestWintryXposedVersion
|
return latestByPref == versionCode && installMetadata.shiggyXposedVersion == latestShiggyXposedVersion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ import com.aliucord.manager.ui.screens.plugins.PluginsScreen
|
||||||
import com.aliucord.manager.ui.util.paddings.PaddingValuesSides
|
import com.aliucord.manager.ui.util.paddings.PaddingValuesSides
|
||||||
import com.aliucord.manager.ui.util.paddings.exclude
|
import com.aliucord.manager.ui.util.paddings.exclude
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import com.aliucord.manager.ui.screens.about.AboutScreen
|
import com.aliucord.manager.ui.screens.about.AboutScreen
|
||||||
import com.aliucord.manager.ui.screens.logs.LogsListScreen
|
import com.aliucord.manager.ui.screens.logs.LogsListScreen
|
||||||
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun HomeAppBar() {
|
fun HomeAppBar() {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.aliucord.manager.ui.util.thenIf
|
import com.aliucord.manager.ui.util.thenIf
|
||||||
import com.valentinilk.shimmer.*
|
import com.valentinilk.shimmer.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
private val shimmerTheme = defaultShimmerTheme.copy(
|
private val shimmerTheme = defaultShimmerTheme.copy(
|
||||||
shimmerWidth = 150.dp,
|
shimmerWidth = 150.dp,
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import com.aliucord.manager.ui.components.SegmentedButton
|
import com.aliucord.manager.ui.components.SegmentedButton
|
||||||
import com.aliucord.manager.ui.components.VersionDisplay
|
import com.aliucord.manager.ui.components.VersionDisplay
|
||||||
import com.aliucord.manager.ui.screens.home.InstallData
|
import com.aliucord.manager.ui.screens.home.InstallData
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun InstalledItemCard(
|
fun InstalledItemCard(
|
||||||
|
|
@ -88,7 +88,7 @@ fun InstalledItemCard(
|
||||||
horizontalArrangement = Arrangement.spacedBy(2.dp),
|
horizontalArrangement = Arrangement.spacedBy(2.dp),
|
||||||
modifier = Modifier.clip(MaterialTheme.shapes.large),
|
modifier = Modifier.clip(MaterialTheme.shapes.large),
|
||||||
) {
|
) {
|
||||||
// // Plugins cannot be managed externally yet in Wintry
|
// // Plugins cannot be managed externally yet in Shiggy
|
||||||
// SegmentedButton(
|
// SegmentedButton(
|
||||||
// icon = painterResource(R.drawable.ic_extension),
|
// icon = painterResource(R.drawable.ic_extension),
|
||||||
// text = stringResource(R.string.plugins_title),
|
// text = stringResource(R.string.plugins_title),
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import androidx.compose.runtime.Immutable
|
||||||
enum class IconOptionsMode {
|
enum class IconOptionsMode {
|
||||||
Original,
|
Original,
|
||||||
OldDiscord,
|
OldDiscord,
|
||||||
Wintry,
|
Shiggy,
|
||||||
Aliucord,
|
Aliucord,
|
||||||
CustomColor,
|
CustomColor,
|
||||||
CustomImage,
|
CustomImage,
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ import cafe.adriel.voyager.core.model.ScreenModel
|
||||||
import cafe.adriel.voyager.core.model.screenModelScope
|
import cafe.adriel.voyager.core.model.screenModelScope
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import dev.zt64.compose.pipette.HsvColor
|
import dev.zt64.compose.pipette.HsvColor
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
|
@ -74,9 +74,9 @@ class IconOptionsModel(
|
||||||
// ---------- Other ---------- //
|
// ---------- Other ---------- //
|
||||||
init {
|
init {
|
||||||
when (prefilledOptions) {
|
when (prefilledOptions) {
|
||||||
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.WintryColor -> {
|
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.ShiggyColor -> {
|
||||||
changeMode(IconOptionsMode.Wintry)
|
changeMode(IconOptionsMode.Shiggy)
|
||||||
initSelectedColor(IconReplacement.WintryColor)
|
initSelectedColor(IconReplacement.ShiggyColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.AliucordColor -> {
|
is IconReplacement.CustomColor if prefilledOptions.color == IconReplacement.AliucordColor -> {
|
||||||
|
|
@ -104,7 +104,7 @@ class IconOptionsModel(
|
||||||
return when (mode) {
|
return when (mode) {
|
||||||
IconOptionsMode.Original -> IconReplacement.Original
|
IconOptionsMode.Original -> IconReplacement.Original
|
||||||
IconOptionsMode.OldDiscord -> IconReplacement.OldDiscord
|
IconOptionsMode.OldDiscord -> IconReplacement.OldDiscord
|
||||||
IconOptionsMode.Wintry -> IconReplacement.CustomColor(IconReplacement.WintryColor)
|
IconOptionsMode.Shiggy -> IconReplacement.CustomColor(IconReplacement.ShiggyColor)
|
||||||
IconOptionsMode.Aliucord -> IconReplacement.CustomColor(IconReplacement.AliucordColor)
|
IconOptionsMode.Aliucord -> IconReplacement.CustomColor(IconReplacement.AliucordColor)
|
||||||
IconOptionsMode.CustomColor -> IconReplacement.CustomColor(color = selectedColor.toColor())
|
IconOptionsMode.CustomColor -> IconReplacement.CustomColor(color = selectedColor.toColor())
|
||||||
IconOptionsMode.CustomImage -> IconReplacement.CustomImage(
|
IconOptionsMode.CustomImage -> IconReplacement.CustomImage(
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ import com.aliucord.manager.ui.screens.patchopts.PatchOptionsScreen
|
||||||
import com.aliucord.manager.ui.util.ColorSaver
|
import com.aliucord.manager.ui.util.ColorSaver
|
||||||
import com.aliucord.manager.ui.util.throttledState
|
import com.aliucord.manager.ui.util.throttledState
|
||||||
import com.aliucord.manager.util.back
|
import com.aliucord.manager.util.back
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import dev.zt64.compose.pipette.CircularColorPicker
|
import dev.zt64.compose.pipette.CircularColorPicker
|
||||||
import dev.zt64.compose.pipette.HsvColor
|
import dev.zt64.compose.pipette.HsvColor
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
|
|
@ -120,10 +120,10 @@ fun IconOptionsScreenContent(
|
||||||
onClick = remember { { setMode(IconOptionsMode.OldDiscord) } },
|
onClick = remember { { setMode(IconOptionsMode.OldDiscord) } },
|
||||||
)
|
)
|
||||||
RadioSelectorItem(
|
RadioSelectorItem(
|
||||||
name = stringResource(R.string.wintry),
|
name = stringResource(R.string.shiggy),
|
||||||
description = stringResource(R.string.iconopts_variant_desc_wintry),
|
description = stringResource(R.string.iconopts_variant_desc_shiggy),
|
||||||
selected = mode == IconOptionsMode.Wintry,
|
selected = mode == IconOptionsMode.Shiggy,
|
||||||
onClick = remember { { setMode(IconOptionsMode.Wintry) } },
|
onClick = remember { { setMode(IconOptionsMode.Shiggy) } },
|
||||||
)
|
)
|
||||||
RadioSelectorItem(
|
RadioSelectorItem(
|
||||||
name = stringResource(R.string.aliucord),
|
name = stringResource(R.string.aliucord),
|
||||||
|
|
@ -220,7 +220,7 @@ private fun IconPreview(
|
||||||
IconOptionsMode.Original -> PatchOptions.IconReplacement.BlurpleColor
|
IconOptionsMode.Original -> PatchOptions.IconReplacement.BlurpleColor
|
||||||
IconOptionsMode.OldDiscord -> PatchOptions.IconReplacement.OldBlurpleColor
|
IconOptionsMode.OldDiscord -> PatchOptions.IconReplacement.OldBlurpleColor
|
||||||
IconOptionsMode.Aliucord -> PatchOptions.IconReplacement.AliucordColor
|
IconOptionsMode.Aliucord -> PatchOptions.IconReplacement.AliucordColor
|
||||||
IconOptionsMode.Wintry -> PatchOptions.IconReplacement.WintryColor
|
IconOptionsMode.Shiggy -> PatchOptions.IconReplacement.ShiggyColor
|
||||||
IconOptionsMode.CustomColor -> selectedColor.toColor()
|
IconOptionsMode.CustomColor -> selectedColor.toColor()
|
||||||
IconOptionsMode.CustomImage -> error("unreachable")
|
IconOptionsMode.CustomImage -> error("unreachable")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import com.aliucord.manager.ui.components.BackButton
|
import com.aliucord.manager.ui.components.BackButton
|
||||||
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun IconOptionsAppBar() {
|
fun IconOptionsAppBar() {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalFocusManager
|
import androidx.compose.ui.platform.LocalFocusManager
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import com.aliucord.manager.ui.components.Label
|
||||||
import com.aliucord.manager.ui.screens.log.components.LogAppBar
|
import com.aliucord.manager.ui.screens.log.components.LogAppBar
|
||||||
import com.aliucord.manager.ui.screens.log.components.LogTextArea
|
import com.aliucord.manager.ui.screens.log.components.LogTextArea
|
||||||
import com.aliucord.manager.util.back
|
import com.aliucord.manager.util.back
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import org.koin.core.parameter.parametersOf
|
import org.koin.core.parameter.parametersOf
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ import cafe.adriel.voyager.core.model.screenModelScope
|
||||||
import com.aliucord.manager.manager.InstallLogData
|
import com.aliucord.manager.manager.InstallLogData
|
||||||
import com.aliucord.manager.manager.InstallLogManager
|
import com.aliucord.manager.manager.InstallLogManager
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
class LogScreenModel(
|
class LogScreenModel(
|
||||||
private val installId: String,
|
private val installId: String,
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.aliucord.manager.ui.components.BackButton
|
import com.aliucord.manager.ui.components.BackButton
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LogAppBar(
|
fun LogAppBar(
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import cafe.adriel.voyager.core.model.ScreenModel
|
||||||
import cafe.adriel.voyager.core.model.screenModelScope
|
import cafe.adriel.voyager.core.model.screenModelScope
|
||||||
import com.aliucord.manager.manager.InstallLogManager
|
import com.aliucord.manager.manager.InstallLogManager
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import com.aliucord.manager.patcher.steps.base.StepState
|
||||||
import com.aliucord.manager.ui.screens.logs.LogEntry
|
import com.aliucord.manager.ui.screens.logs.LogEntry
|
||||||
import com.aliucord.manager.ui.screens.patching.components.StepStateIcon
|
import com.aliucord.manager.ui.screens.patching.components.StepStateIcon
|
||||||
import com.aliucord.manager.ui.screens.patching.components.TimeElapsed
|
import com.aliucord.manager.ui.screens.patching.components.TimeElapsed
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LogEntryCard(
|
fun LogEntryCard(
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import com.aliucord.manager.ui.components.BackButton
|
import com.aliucord.manager.ui.components.BackButton
|
||||||
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LogsListAppBar(
|
fun LogsListAppBar(
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import androidx.compose.ui.draw.alpha
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LogsNone(modifier: Modifier = Modifier) {
|
fun LogsNone(modifier: Modifier = Modifier) {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DeleteLogsDialog(
|
fun DeleteLogsDialog(
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,8 @@ import com.aliucord.manager.ui.util.spacedByLastAtBottom
|
||||||
import com.aliucord.manager.ui.util.thenIf
|
import com.aliucord.manager.ui.util.thenIf
|
||||||
import com.aliucord.manager.util.back
|
import com.aliucord.manager.util.back
|
||||||
import com.aliucord.manager.util.isIgnoringBatteryOptimizations
|
import com.aliucord.manager.util.isIgnoringBatteryOptimizations
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import cafe.adriel.voyager.core.model.StateScreenModel
|
||||||
import cafe.adriel.voyager.core.model.screenModelScope
|
import cafe.adriel.voyager.core.model.screenModelScope
|
||||||
import com.aliucord.manager.manager.*
|
import com.aliucord.manager.manager.*
|
||||||
import com.aliucord.manager.patcher.StepRunner
|
import com.aliucord.manager.patcher.StepRunner
|
||||||
import com.aliucord.manager.patcher.WintryPatchRunner
|
import com.aliucord.manager.patcher.ShiggyPatchRunner
|
||||||
import com.aliucord.manager.patcher.steps.StepGroup
|
import com.aliucord.manager.patcher.steps.StepGroup
|
||||||
import com.aliucord.manager.patcher.steps.base.*
|
import com.aliucord.manager.patcher.steps.base.*
|
||||||
import com.aliucord.manager.patcher.steps.install.InstallStep
|
import com.aliucord.manager.patcher.steps.install.InstallStep
|
||||||
|
|
@ -17,8 +17,8 @@ import com.aliucord.manager.patcher.util.InsufficientStorageException
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
import com.aliucord.manager.ui.screens.patchopts.PatchOptions
|
||||||
import com.aliucord.manager.ui.util.toUnsafeImmutable
|
import com.aliucord.manager.ui.util.toUnsafeImmutable
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.ImmutableMap
|
import kotlinx.collections.immutable.ImmutableMap
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
|
|
@ -125,7 +125,7 @@ class PatchingScreenModel(
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun startPatchRunner() {
|
private suspend fun startPatchRunner() {
|
||||||
val runner = WintryPatchRunner(options)
|
val runner = ShiggyPatchRunner(options)
|
||||||
.also { stepRunner = it }
|
.also { stepRunner = it }
|
||||||
|
|
||||||
val newSteps = runner.steps.groupBy { it.group }
|
val newSteps = runner.steps.groupBy { it.group }
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.aliucord.manager.ui.screens.patching.PatchingScreenState
|
import com.aliucord.manager.ui.screens.patching.PatchingScreenState
|
||||||
import com.aliucord.manager.ui.screens.patching.VERTICAL_PADDING
|
import com.aliucord.manager.ui.screens.patching.VERTICAL_PADDING
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun FunFact(
|
fun FunFact(
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import androidx.compose.material3.*
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PatchingAppBar(
|
fun PatchingAppBar(
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.aliucord.manager.patcher.steps.base.Step
|
import com.aliucord.manager.patcher.steps.base.Step
|
||||||
import com.aliucord.manager.patcher.steps.base.StepState
|
import com.aliucord.manager.patcher.steps.base.StepState
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import androidx.compose.ui.semantics.contentDescription
|
||||||
import androidx.compose.ui.semantics.semantics
|
import androidx.compose.ui.semantics.semantics
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import com.aliucord.manager.patcher.steps.base.StepState
|
import com.aliucord.manager.patcher.steps.base.StepState
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlin.math.floor
|
import kotlin.math.floor
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -109,9 +109,9 @@ data class PatchOptions(
|
||||||
val AliucordColor = Color(0xFF00C853)
|
val AliucordColor = Color(0xFF00C853)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default Wintry background color.
|
* The default Shiggy background color.
|
||||||
*/
|
*/
|
||||||
val WintryColor = Color(0xFF133E87)
|
val ShiggyColor = Color(0xFF133E87)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The new Discord blurple used in icons.
|
* The new Discord blurple used in icons.
|
||||||
|
|
@ -127,10 +127,10 @@ data class PatchOptions(
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val Default = PatchOptions(
|
val Default = PatchOptions(
|
||||||
appName = "Wintry",
|
appName = "Shiggy",
|
||||||
packageName = "dev.wintry.app",
|
packageName = "dev.shiggy.app",
|
||||||
debuggable = false,
|
debuggable = false,
|
||||||
iconReplacement = IconReplacement.CustomColor(IconReplacement.WintryColor),
|
iconReplacement = IconReplacement.CustomColor(IconReplacement.ShiggyColor),
|
||||||
versionPreference = VersionPreference.Stable,
|
versionPreference = VersionPreference.Stable,
|
||||||
customVersionCode = "",
|
customVersionCode = "",
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ import com.aliucord.manager.ui.screens.patchopts.components.PatchOptionsAppBar
|
||||||
import com.aliucord.manager.ui.screens.patchopts.components.options.*
|
import com.aliucord.manager.ui.screens.patchopts.components.options.*
|
||||||
import com.aliucord.manager.ui.util.*
|
import com.aliucord.manager.ui.util.*
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
@ -85,7 +85,7 @@ class PatchOptionsScreen(
|
||||||
selectedColor = when (iconModel.mode) {
|
selectedColor = when (iconModel.mode) {
|
||||||
IconOptionsMode.Original -> PatchOptions.IconReplacement.BlurpleColor
|
IconOptionsMode.Original -> PatchOptions.IconReplacement.BlurpleColor
|
||||||
IconOptionsMode.OldDiscord -> PatchOptions.IconReplacement.OldBlurpleColor
|
IconOptionsMode.OldDiscord -> PatchOptions.IconReplacement.OldBlurpleColor
|
||||||
IconOptionsMode.Wintry -> PatchOptions.IconReplacement.WintryColor
|
IconOptionsMode.Shiggy -> PatchOptions.IconReplacement.ShiggyColor
|
||||||
IconOptionsMode.Aliucord -> PatchOptions.IconReplacement.AliucordColor
|
IconOptionsMode.Aliucord -> PatchOptions.IconReplacement.AliucordColor
|
||||||
IconOptionsMode.CustomColor -> iconModel.selectedColor.toColor()
|
IconOptionsMode.CustomColor -> iconModel.selectedColor.toColor()
|
||||||
IconOptionsMode.CustomImage -> null
|
IconOptionsMode.CustomImage -> null
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.aliucord.manager.ui.screens.patchopts.PackageNameState
|
import com.aliucord.manager.ui.screens.patchopts.PackageNameState
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PackageNameStateLabel(
|
fun PackageNameStateLabel(
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import com.aliucord.manager.ui.components.BackButton
|
import com.aliucord.manager.ui.components.BackButton
|
||||||
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
import com.aliucord.manager.ui.screens.settings.SettingsScreen
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PatchOptionsAppBar(
|
fun PatchOptionsAppBar(
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import com.aliucord.manager.ui.util.emptyImmutableList
|
||||||
import com.aliucord.manager.ui.util.toUnsafeImmutable
|
import com.aliucord.manager.ui.util.toUnsafeImmutable
|
||||||
import com.aliucord.manager.util.*
|
import com.aliucord.manager.util.*
|
||||||
import com.github.diamondminer88.zip.ZipReader
|
import com.github.diamondminer88.zip.ZipReader
|
||||||
import dev.wintry.manager.BuildConfig
|
import dev.shiggy.manager.BuildConfig
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import com.aliucord.manager.ui.screens.plugins.components.*
|
||||||
import com.aliucord.manager.ui.screens.plugins.components.dialogs.UninstallPluginDialog
|
import com.aliucord.manager.ui.screens.plugins.components.dialogs.UninstallPluginDialog
|
||||||
import com.aliucord.manager.ui.screens.plugins.model.PluginItem
|
import com.aliucord.manager.ui.screens.plugins.model.PluginItem
|
||||||
import com.aliucord.manager.ui.util.paddings.*
|
import com.aliucord.manager.ui.util.paddings.*
|
||||||
import dev.wintry.manager.R
|
import dev.shiggy.manager.R
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue