Skip to content
This repository has been archived by the owner on Mar 15, 2022. It is now read-only.

Jetpack Compose Migration #565

Draft
wants to merge 120 commits into
base: dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
092548e
initial compose commit
X1nto May 30, 2021
6f86200
switched to LiveData for viewmodel
X1nto May 31, 2021
d9ed253
updated links
X1nto May 31, 2021
c6017fe
organized strings
X1nto Jun 1, 2021
e6214a1
refactor
X1nto Jun 26, 2021
8909443
Text adjustments
X1nto Jun 27, 2021
20cf7f1
cleanup
X1nto Jun 27, 2021
cc2a308
adjusted dialog preferences
X1nto Jun 27, 2021
19b93fe
updated theme
X1nto Jun 27, 2021
bb237d7
switched back to AndroidX preferences
X1nto Jun 27, 2021
ebfab7f
adjusted colors
X1nto Jun 27, 2021
68c0959
more accent color adjustments
X1nto Jun 27, 2021
c882e44
fixed splash screen
X1nto Jun 27, 2021
735a916
updated proguard rules
X1nto Jun 27, 2021
a9cfa22
more refactor
X1nto Jun 27, 2021
30f45b9
fixed sponsor links
X1nto Jun 27, 2021
896a32a
Fixed installation options
X1nto Jun 28, 2021
822778f
installation option layout adjustments
X1nto Jun 28, 2021
bc69bd4
more refactor
X1nto Jun 28, 2021
3a0cbc6
dialog adjustments
X1nto Jun 28, 2021
3b179f6
fixed installation options
X1nto Jun 28, 2021
6b44778
migrated to custom checkbox and radiobutton
X1nto Jun 28, 2021
b76b674
text improvements
X1nto Jun 28, 2021
aa3234a
progressbar adjustments
X1nto Jun 28, 2021
493b6d3
T H I C C progressbar
X1nto Jun 28, 2021
0a50882
installer adjustments
X1nto Jul 12, 2021
0468882
updated deps
X1nto Jul 12, 2021
95cc22d
small refactor
X1nto Jul 12, 2021
c443d0f
installer fixes
X1nto Jul 12, 2021
e54ecb4
dep updates
X1nto Jul 15, 2021
83167e4
cleanup
X1nto Jul 15, 2021
41bb2db
adjusted about screen
X1nto Jul 15, 2021
5726e4e
fixed live accent color
X1nto Jul 15, 2021
1351bc9
implemented own navigator
X1nto Jul 20, 2021
ba2b5a9
removed navigation library
X1nto Jul 20, 2021
b97fb17
fixed splash activity
X1nto Jul 20, 2021
65c99cc
updated to rc1
X1nto Jul 20, 2021
f3c1328
added music and microg downloaders
X1nto Jul 25, 2021
9a3e02f
improved radiobutton and checkbox preference dialogs
X1nto Jul 27, 2021
7dfc3cb
Added a reset button widget
X1nto Jul 27, 2021
f277e26
Added a reset button to accent color picker
X1nto Jul 27, 2021
0e7f2ce
Added a modifier builder for better syntax
X1nto Jul 27, 2021
dac2ec5
updated buildscript
X1nto Aug 20, 2021
b7ab53c
target android 12
X1nto Aug 20, 2021
146e864
updated accompanist
X1nto Aug 20, 2021
4077733
updated kotlin
X1nto Aug 20, 2021
c289a70
use saveable state holder
X1nto Aug 20, 2021
54f947c
switched to accompanist navigation
X1nto Aug 20, 2021
c7bc496
switched livedata to stateflow
X1nto Aug 20, 2021
35121cc
renamed HomeViewModel
X1nto Aug 20, 2021
459677a
removed context parameter from MainViewModel
X1nto Aug 20, 2021
02a3bd8
adjusted dropdown manu item text style
X1nto Aug 20, 2021
f4f8911
improved version selector
X1nto Aug 24, 2021
6ca18c4
separated animations from checkbox and radiobutton
X1nto Aug 24, 2021
9067811
improved UI of link cards
X1nto Aug 24, 2021
a2a4057
moved checkbox and radiobutton list items to widget namespace
X1nto Aug 24, 2021
c84807d
UI adjustments
X1nto Aug 24, 2021
6170da7
changed home page title to Vanced Manager
X1nto Aug 24, 2021
656f7e5
update deps
X1nto Sep 24, 2021
e26bb60
fancy adjustments
X1nto Sep 25, 2021
93fde6b
scrimming
X1nto Sep 25, 2021
b800bf5
updated deps
X1nto Oct 17, 2021
4075bd1
remove blur and scrimming
X1nto Oct 17, 2021
9d3529e
refactor
X1nto Oct 31, 2021
f7d0afc
implement proper installation
X1nto Nov 2, 2021
760c963
add Qodana linter
X1nto Nov 3, 2021
eb4751f
implement Material You
X1nto Nov 7, 2021
8b8232b
remove progress indicator from installation preferences screen
X1nto Nov 7, 2021
25baeb0
update strings
X1nto Nov 7, 2021
a162a71
update compose
X1nto Nov 9, 2021
afd5bfe
fixed app redownloading on configuration change
X1nto Nov 9, 2021
f391347
adjust link icon size
X1nto Nov 10, 2021
86e1a30
update icons
X1nto Nov 10, 2021
4cb90b6
update settings UI
X1nto Nov 10, 2021
f3ebe85
update dialog UI
X1nto Nov 10, 2021
f93210b
refactor preferences
X1nto Nov 10, 2021
7e13297
refactor ManagerPreference
X1nto Nov 17, 2021
5369121
update libraries
X1nto Nov 22, 2021
c7e54ba
fix installation screen not receiving input after installation completes
X1nto Nov 22, 2021
c83ee3d
cleanup
X1nto Nov 22, 2021
b3e3674
update viewmodel to use state instead of flow
X1nto Nov 22, 2021
19f8219
bind launch action to app card
X1nto Nov 22, 2021
7141df8
implement nonroot uninstallation
X1nto Nov 23, 2021
7702212
clean up viewmodel
X1nto Nov 23, 2021
1c11980
adjust version name in about layout
X1nto Nov 27, 2021
4717c8d
improve edge-to-edge layout
X1nto Nov 27, 2021
ea8b359
improve installation preferences UI
X1nto Nov 27, 2021
b6533e3
implement callback for finish button click
X1nto Nov 27, 2021
ff510d7
implement new remote data type
X1nto Nov 29, 2021
2755976
clear logs after clicking the finish button
X1nto Nov 29, 2021
918031b
fix app download paths
X1nto Nov 29, 2021
ce3977c
fix more downloader issues
X1nto Nov 30, 2021
a076155
update APIs
X1nto Dec 2, 2021
e9e4222
update clickable list items
X1nto Dec 2, 2021
22ac84e
update installation option getter
X1nto Dec 4, 2021
cbd48dc
added root package manager and patcher classes
X1nto Dec 12, 2021
3ba238c
update AGP
X1nto Dec 12, 2021
528f097
update ManagerSuFile
X1nto Dec 13, 2021
be21c30
update cleanPatchFiles method
X1nto Dec 13, 2021
909f509
update libsu
X1nto Dec 13, 2021
20e67bb
update SUIOException
X1nto Dec 13, 2021
f2107b1
further implement root installer
X1nto Dec 28, 2021
4477180
update deps
X1nto Feb 9, 2022
db0f2b4
update configurations screen
X1nto Feb 9, 2022
e03d039
update configuration transitions
X1nto Feb 9, 2022
5cf2cd1
update deps
X1nto Feb 10, 2022
1902d2b
Added support for themed icon (Android 13 only)
milindgoel15 Feb 15, 2022
ee17a00
Merge pull request #791 from milindgoel15/compose
X1nto Feb 15, 2022
9d73cae
refactor ui components
X1nto Feb 22, 2022
d8f9a0d
Merge branch 'compose' of https://github.com/YTVanced/VancedManager i…
X1nto Feb 22, 2022
2f9690e
update dependencies
X1nto Feb 24, 2022
11ac0d0
update settings
X1nto Feb 27, 2022
73ee8d4
component cleanup
X1nto Feb 27, 2022
6960cb6
switch to github as backend
X1nto Mar 1, 2022
0b590fd
organize di modules
X1nto Mar 1, 2022
d192c96
convert installation option to sealed interface
X1nto Mar 1, 2022
e010ed0
package refactor
X1nto Mar 2, 2022
a1662ba
start migrating packagemanager to di
X1nto Mar 5, 2022
9b21751
packagemanager code cleanup
X1nto Mar 11, 2022
1c219ea
last readme edit
KevinX8 Mar 14, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
1 change: 1 addition & 0 deletions .github/workflows/debug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1

- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Code Linter

on:
push:
branches:
- dev

jobs:
qodana:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions/cache@v2
with:
path: ~/work/_temp/_github_home/cache
key: ${{ runner.os }}-qodana-${{ github.ref }}
restore-keys: |
${{ runner.os }}-qodana-${{ github.ref }}
${{ runner.os }}-qodana-
- uses: docker://jetbrains/qodana-jvm-android
with:
args: --cache-dir=/github/home/cache --results-dir=/github/workspace/qodana --save-report --report-dir=/github/workspace/qodana/report
- uses: actions/upload-artifact@v2
with:
path: qodana
6 changes: 0 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
.gradle/
.idea/
build/
out/
app/src/main/java/com/vanced/manager/core/base/DummyJava.java
app/build/
app/release
local.properties
/.github/
*.iml
15 changes: 2 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Vanced Manager
<div>

[![Github All Releases](https://img.shields.io/github/downloads/YTVanced/VancedManager/total.svg?style=for-the-badge)](https://github.com/YTVanced/VancedManager/releases/latest) [![Github All Releases](https://img.shields.io/github/release/YTVanced/VancedManager.svg?style=for-the-badge)](https://github.com/YTVanced/VancedManager/releases/latest)

</div>
# **Now discontinued https://twitter.com/YTVanced/status/1503052250268286980**

Hi, when we released Vanced 15.05.54, people were upset because it used the .apks format, which was way harder to install than a traditional .apk file. Even though we wrote clear instructions on how to install the new Vanced build, people still couldn't figure it out.
Then we thought, "why don't we make a manager for vanced, which will download, update and uninstall Vanced and MicroG, have an easy and understandable UI and be less than 10mb?" and that's how Vanced Manager was born.
Expand All @@ -15,11 +13,7 @@ After 3 months of development, we are finally ready to introduce Vanced Manager
## Contributions
Pull requests should be made to the Dev branch as that is the working branch, master is for release code.

For anyone who wants to provide translations please submit them to https://crowdin.com/project/vanced-manager as we also use it for YouTube Vanced. Any issues with translations should be posted there too.

## TODO
- [ ] Clean up the ViewModel and DataModel code
- [ ] Migrate to Jetpack Compose when it's officially released
For anyone who wants to provide translations please submit them to https://crowdin.com/project/vanced-manager as we also use it for Vanced. Any issues with translations should be posted there too.

## Building

Expand All @@ -42,8 +36,3 @@ Clone the repo, open it in Android Studio and build the app.
chmod +x gradlew
./gradlew assembleDebug
```

## Vanced FAQ
Vanced FAQ (from the faq branch) now available on the playstore!

<a href='https://play.google.com/store/apps/details?id=com.vanced.faq&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="85" src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png'/></a>
2 changes: 2 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/build
/release
191 changes: 96 additions & 95 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,39 +1,35 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions

plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("com.google.firebase.firebase-perf")
id("androidx.navigation.safeargs.kotlin")
id("kotlin-android")
id("kotlin-parcelize")
kotlin("plugin.serialization")
}

val composeVersion = "1.1.1"

android {
compileSdkVersion(30)
compileSdk = 31

defaultConfig {
minSdk = 21
targetSdk = 31

applicationId = "com.vanced.manager"
minSdkVersion(21)
targetSdkVersion(30)
versionCode = 260
versionName = "2.6.0 (Crimson)"

versionCode = 3000
versionName = "3.0.0 (Re@Composed)"

vectorDrawables.useSupportLibrary = true

buildConfigField("String[]", "MANAGER_LANGUAGES", "{$languages}")
buildConfigField("Boolean", "ENABLE_CROWDIN_AUTH", "false")
buildConfigField("String", "CROWDIN_HASH", "\"${System.getenv("CROWDIN_HASH")}\"")
buildConfigField("String", "CROWDIN_CLIENT_ID", "\"${System.getenv("CROWDIN_CLIENT_ID")}\"")
buildConfigField("String", "CROWDIN_CLIENT_SECRET", "\"${System.getenv("CROWDIN_CLIENT_SECRET")}\"")
}

lintOptions {
disable("MissingTranslation", "ExtraTranslation")
}

applicationVariants.all {
resValue("string", "versionName", versionName)
lint {
disable += "MissingTranslation"
disable += "ExtraTranslation"
}

buildTypes {
Expand All @@ -44,39 +40,49 @@ android {
}

buildFeatures {
viewBinding = true
//compose = true
compose = true
}

packagingOptions {
exclude("META-INF/DEPENDENCIES")
exclude("META-INF/*.kotlin_module")
resources.excludes.add("META-INF/DEPENDENCIES")
resources.excludes.add("META-INF/*.kotlin_module")
}

// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)

// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
//useIR = true
}
composeOptions {
kotlinCompilerExtensionVersion = composeVersion
}

}


tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "11"
optIn("androidx.compose.material3.ExperimentalMaterial3Api")
optIn("androidx.compose.animation.ExperimentalAnimationApi")
optIn("androidx.compose.foundation.ExperimentalFoundationApi")
}
}

fun KotlinJvmOptions.optIn(library: String) {
freeCompilerArgs = freeCompilerArgs +
"-opt-in=$library"
}

val languages: String get() {
val langs = arrayListOf("en", "bn_BD", "bn_IN", "pa_IN", "pa_PK", "pt_BR", "pt_PT", "zh_CN", "zh_TW")
val exceptions = arrayOf("bn", "pa", "pt", "zh")

File("$projectDir/src/main/res").listFiles()?.filter {
val name = it.name
name.startsWith("values-") && !name.contains("v23")
name.startsWith("values") && !name.contains("v23") && !name.contains("night")
}?.forEach { dir ->
val dirname = dir.name.substringAfter("-").substringBefore("-")
if (!exceptions.contains(dirname)) {
Expand All @@ -87,69 +93,64 @@ val languages: String get() {
}

dependencies {

//val composeVersion = "1.0.0-alpha12"
implementation(project(":core-presentation"))
implementation(project(":core-ui"))

implementation(project(":library-network"))

// Kotlin
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2")

// AndroidX
implementation("androidx.appcompat:appcompat:1.2.0")
implementation("androidx.browser:browser:1.3.0")
implementation("androidx.constraintlayout:constraintlayout:2.0.4")
implementation("androidx.core:core-ktx:1.3.2")
implementation("androidx.fragment:fragment-ktx:1.3.3")
implementation("androidx.lifecycle:lifecycle-livedata-core-ktx:2.3.1")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1")
implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.0.0")
implementation("androidx.navigation:navigation-fragment-ktx:2.3.5")
implementation("androidx.navigation:navigation-ui-ktx:2.3.5")
implementation("androidx.preference:preference-ktx:1.1.1")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation("androidx.core:core-ktx:1.7.0")
implementation("androidx.appcompat:appcompat:1.4.1")
implementation("androidx.browser:browser:1.4.0")
implementation("androidx.preference:preference-ktx:1.2.0")
implementation("androidx.activity:activity-compose:1.4.0")

val lifecycleVersion = "2.4.1"
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycleVersion")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion")

// Compose
// implementation("androidx.compose.ui:ui:$composeVersion")
// implementation("androidx.compose.ui:ui-tooling:$composeVersion")
// implementation("androidx.compose.foundation:foundation:$composeVersion")
// implementation("androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha02")
// implementation("androidx.compose.material:material:$composeVersion")
// implementation("androidx.compose.material:material-icons-core:$composeVersion")
// implementation("androidx.compose.material:material-icons-extended:$composeVersion")
// implementation("androidx.compose.runtime:runtime-livedata:$composeVersion")

// Appearance
implementation("com.github.madrapps:pikolo:2.0.1")
implementation("com.google.android.material:material:1.3.0")

// JSON parser
implementation("com.beust:klaxon:5.5")

// Crowdin
implementation("com.github.crowdin.mobile-sdk-android:sdk:1.4.0")

// HTTP networking
implementation("com.github.kittinunf.fuel:fuel:2.3.1")
implementation("com.github.kittinunf.fuel:fuel-coroutines:2.3.1")
implementation("com.github.kittinunf.fuel:fuel-json:2.3.1")
implementation("com.squareup.okhttp3:logging-interceptor:4.9.1")
implementation("com.squareup.retrofit2:retrofit:2.9.0")

// Root permissions
implementation("com.github.topjohnwu.libsu:core:3.1.2")
implementation("com.github.topjohnwu.libsu:io:3.1.2")

// Layout
implementation("com.google.android:flexbox:2.0.1")

// Firebase
implementation("com.google.firebase:firebase-analytics-ktx:18.0.3")
implementation("com.google.firebase:firebase-crashlytics:17.4.1")
implementation("com.google.firebase:firebase-messaging:21.1.0")
implementation("com.google.firebase:firebase-perf:19.1.1")
implementation("androidx.compose.compiler:compiler:$composeVersion")
implementation("androidx.compose.foundation:foundation:$composeVersion")
implementation("androidx.compose.material:material-icons-core:$composeVersion")
implementation("androidx.compose.material:material-icons-extended:$composeVersion")
implementation("androidx.compose.material:material:$composeVersion")
implementation("androidx.compose.material3:material3:1.0.0-alpha06")
implementation("androidx.compose.runtime:runtime-livedata:$composeVersion")
implementation("androidx.compose.ui:ui-tooling:$composeVersion")
implementation("androidx.compose.ui:ui-util:$composeVersion")
implementation("androidx.compose.ui:ui:$composeVersion")

// Google
implementation("com.google.android.material:material:1.5.0")

val accompanistVersion = "0.22.1-rc"
implementation("com.google.accompanist:accompanist-navigation-animation:$accompanistVersion")
implementation("com.google.accompanist:accompanist-placeholder-material:$accompanistVersion")
implementation("com.google.accompanist:accompanist-swiperefresh:$accompanistVersion")
implementation("com.google.accompanist:accompanist-systemuicontroller:$accompanistVersion")

// Other
implementation("com.github.zsoltk:compose-router:0.28.0")

implementation("io.coil-kt:coil-compose:1.4.0")

implementation("com.github.skydoves:orchestra-colorpicker:1.1.0")

val libsuVersion = "3.2.1"
implementation("com.github.topjohnwu.libsu:core:$libsuVersion")
implementation("com.github.topjohnwu.libsu:io:$libsuVersion")
implementation("com.github.topjohnwu.libsu:busybox:$libsuVersion")

val koinVersion = "3.1.3"
implementation("io.insert-koin:koin-android:$koinVersion")
implementation("io.insert-koin:koin-androidx-compose:$koinVersion")

val retrofitVersion = "2.9.0"
implementation("com.squareup.retrofit2:retrofit:$retrofitVersion")
implementation("com.squareup.retrofit2:converter-gson:$retrofitVersion")

implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0")

testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.3")
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
}
9 changes: 7 additions & 2 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,13 @@
# public *;
#}

-keep class com.vanced.manager.core.App
-keep class com.crowdin.platform.* { *; }
-keep class com.vanced.manager.network.dto.GithubReleaseDto {
*;
}

-keep class com.vanced.manager.network.dto.GithubReleaseAssetDto {
*;
}

# Uncomment this to preserve the line number information for
# debugging stack traces.
Expand Down
Loading