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

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: TeamVanced/VancedManager
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.6.1
Choose a base ref
...
head repository: TeamVanced/VancedManager
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: dev
Choose a head ref

Commits on Oct 11, 2021

  1. root installer improvements

    X1nto committed Oct 11, 2021
    Copy the full SHA
    f887ba5 View commit details
  2. disable busybox

    X1nto committed Oct 11, 2021
    Copy the full SHA
    9a31f2b View commit details
  3. Copy the full SHA
    7c1392d View commit details
  4. small optimization

    X1nto committed Oct 11, 2021
    Copy the full SHA
    7c1dbb6 View commit details
  5. bumped up version

    X1nto committed Oct 11, 2021
    Copy the full SHA
    851727a View commit details
  6. update templates

    X1nto committed Oct 11, 2021
    Copy the full SHA
    25f8f80 View commit details

Commits on Oct 24, 2021

  1. Copy the full SHA
    9a14d0f View commit details
  2. Copy the full SHA
    4af47e8 View commit details

Commits on Oct 25, 2021

  1. Remove viewmodel memory leak

    NotWoods committed Oct 25, 2021
    Copy the full SHA
    368808d View commit details
  2. Merge pull request #724 from NotWoods/viewmodel-no-leak

    Remove HomeViewModel memory leak
    X1nto authored Oct 25, 2021
    Copy the full SHA
    eb28c61 View commit details

Commits on Oct 27, 2021

  1. Updated installSplitApks

    NotWoods committed Oct 27, 2021
    Copy the full SHA
    9ca0fb7 View commit details
  2. Merge pull request #721 from NotWoods/autoupdate

    Add background updates on Android 12
    X1nto authored Oct 27, 2021
    Copy the full SHA
    a170835 View commit details

Commits on Jan 30, 2022

  1. Copy the full SHA
    a2d6c1b View commit details

Commits on Jan 31, 2022

  1. Merge pull request #781 from zamansoum/dev

    Vanced FAQ not available on the playstore anymore
    X1nto authored Jan 31, 2022
    Copy the full SHA
    a2720c0 View commit details

Commits on Feb 1, 2022

  1. Update README.md

    AlphaVS-76 authored Feb 1, 2022
    Copy the full SHA
    dd9ffec View commit details
  2. Merge pull request #782 from AlphaVS-76/patch-3

    Update README.md
    X1nto authored Feb 1, 2022
    Copy the full SHA
    fc9da62 View commit details

Commits on Feb 2, 2022

  1. Copy the full SHA
    0db7ddd View commit details
  2. Fix Typos

    zamansoum authored Feb 2, 2022
    Copy the full SHA
    42bb94b View commit details

Commits on Feb 4, 2022

  1. Merge pull request #783 from zamansoum/dev

    Added Google Advanced Protection Program instructions
    X1nto authored Feb 4, 2022
    Copy the full SHA
    dcc3ad9 View commit details

Commits on Feb 17, 2022

  1. Fix typo

    user-freindly -> user-friendly
    BioGeek authored Feb 17, 2022
    Copy the full SHA
    2ded1e8 View commit details

Commits on Feb 26, 2022

  1. Merge pull request #797 from BioGeek/dev

    Fix typo
    X1nto authored Feb 26, 2022
    Copy the full SHA
    7421ed9 View commit details

Commits on Mar 14, 2022

  1. New Crowdin updates (#700)

    * New translations strings.xml (Indonesian)
    
    * New translations strings.xml (Croatian)
    
    * New translations strings.xml (Croatian)
    
    * New translations strings.xml (Indonesian)
    
    * New translations strings.xml (Ukrainian)
    
    * New translations strings.xml (Croatian)
    
    * New translations strings.xml (Persian)
    
    * New translations strings.xml (Persian)
    
    * New translations strings.xml (Catalan)
    
    * New translations strings.xml (Catalan)
    
    * New translations strings.xml (Russian)
    
    * New translations strings.xml (Russian)
    
    * New translations strings.xml (Indonesian)
    
    * New translations strings.xml (Norwegian)
    
    * New translations strings.xml (Russian)
    
    * New translations strings.xml (Russian)
    
    * New translations strings.xml (Hungarian)
    
    * New translations strings.xml (Bengali)
    
    * New translations strings.xml (German)
    
    * New translations strings.xml (Azerbaijani)
    
    * New translations strings.xml (Filipino)
    
    * New translations strings.xml (Portuguese, Brazilian)
    
    * New translations strings.xml (Azerbaijani)
    
    * New translations strings.xml (German)
    
    * New translations strings.xml (Russian)
    
    * New translations strings.xml (Belarusian)
    
    * New translations strings.xml (Belarusian)
    
    * New translations strings.xml (Belarusian)
    
    * New translations strings.xml (Odia)
    
    * New translations strings.xml (Odia)
    
    * New translations strings.xml (German)
    
    * New translations strings.xml (Finnish)
    KevinX8 authored Mar 14, 2022
    Copy the full SHA
    8b3f2c5 View commit details
Showing with 615 additions and 358 deletions.
  1. +2 −0 .github/ISSUE_TEMPLATE/bug-issue-template.yml
  2. +2 −0 .github/ISSUE_TEMPLATE/feature-issue-template.yml
  3. +29 −14 README.md
  4. +3 −3 app/build.gradle.kts
  5. +1 −0 app/src/main/AndroidManifest.xml
  6. +2 −5 app/src/main/java/com/vanced/manager/adapter/ExpandableAppListAdapter.kt
  7. +1 −1 app/src/main/java/com/vanced/manager/adapter/LinkAdapter.kt
  8. +1 −1 app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt
  9. +1 −2 app/src/main/java/com/vanced/manager/core/App.kt
  10. +37 −0 app/src/main/java/com/vanced/manager/core/CombinedLiveData.kt
  11. +7 −2 app/src/main/java/com/vanced/manager/model/ButtonTag.kt
  12. +23 −52 app/src/main/java/com/vanced/manager/model/DataModel.kt
  13. +1 −2 app/src/main/java/com/vanced/manager/model/RootDataModel.kt
  14. +10 −6 app/src/main/java/com/vanced/manager/ui/SplashScreenActivity.kt
  15. +1 −4 app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt
  16. +42 −48 app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModel.kt
  17. +0 −14 app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModelFactory.kt
  18. +5 −2 app/src/main/java/com/vanced/manager/utils/AppUtils.kt
  19. +7 −2 app/src/main/java/com/vanced/manager/utils/Extensions.kt
  20. +63 −67 app/src/main/java/com/vanced/manager/utils/PackageHelper.kt
  21. +4 −4 app/src/main/res/values-az-rAZ/strings.xml
  22. +122 −0 app/src/main/res/values-be-rBY/strings.xml
  23. +3 −3 app/src/main/res/values-bn-rBD/strings.xml
  24. +9 −9 app/src/main/res/values-ca-rES/strings.xml
  25. +5 −5 app/src/main/res/values-de-rDE/strings.xml
  26. +122 −0 app/src/main/res/values-fa-rIR/strings.xml
  27. +50 −50 app/src/main/res/values-fi-rFI/strings.xml
  28. +1 −1 app/src/main/res/values-fil-rPH/strings.xml
  29. +7 −7 app/src/main/res/values-hr-rHR/strings.xml
  30. +1 −1 app/src/main/res/values-hu-rHU/strings.xml
  31. +11 −11 app/src/main/res/values-in-rID/strings.xml
  32. +12 −12 app/src/main/res/values-no-rNO/strings.xml
  33. +13 −13 app/src/main/res/values-or-rIN/strings.xml
  34. +12 −12 app/src/main/res/values-pt-rBR/strings.xml
  35. +4 −4 app/src/main/res/values-ru-rRU/strings.xml
  36. +1 −1 app/src/main/res/values-uk-rUA/strings.xml
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-issue-template.yml
Original file line number Diff line number Diff line change
@@ -35,5 +35,7 @@ body:
attributes:
label: Additional checks
options:
- label: I have checked other bug reports and this is not a duplicate.
required: true
- label: This is a bug in Vanced Manager and NOT YouTube Vanced/YouTube Vanced Music/Vanced microG.
required: true
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-issue-template.yml
Original file line number Diff line number Diff line change
@@ -23,5 +23,7 @@ body:
attributes:
label: Additional checks
options:
- label: I have checked other feature requests and this is not a duplicate.
required: true
- label: This is a suggestion for Vanced Manager and NOT YouTube Vanced/YouTube Vanced Music/Vanced microG.
required: true
43 changes: 29 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -5,34 +5,53 @@

</div>

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.
## Introduction

Hi, when we released Vanced 15.05.54, people were upset because it used the .apks format, which was burdensome 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 user-friendly UI and be less than 10mb?" and that's how Vanced Manager was born.

After 3 months of development, we are finally ready to introduce Vanced Manager to the masses. Vanced manager can easily install and uninstall vanced and microg, has various settings for customisation and better experience. The Manager comes with an easy-to-use interface
After 3 months of development, we are finally ready to Introduce [Vanced Manager](https://github.com/YTVanced/VancedManager) to the masses!!

## Features

##### Background download/installation feature is no longer supported due to problems with some ROMs, please do NOT report issues regarding background activity.
- Vanced manager can easily install and uninstall Vanced and MicroG.
- It has various settings for customization and better experience.
- The Manager comes with an easy-to-use Interface.

</br>

<div class="note">
<p><strong>NOTE: </strong>Background download/installation feature is no longer supported due to problems with some ROMs, please <b>DO NOT</b> report issues regarding background activity.</p>
</div>

<!-- ##### Background download/installation feature is no longer supported due to problems with some ROMs, please do NOT report issues regarding background activity. -->

## Contributions
Pull requests should be made to the Dev branch as that is the working branch, master is for release code.
Pull Requests should be made to the [Dev](https://github.com/YTVanced/VancedManager) Branch as that is the working branch, master is for Release code only.

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.
For anyone who wants to provide translations please submit them to this [link](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

## Building
## Building

<div>

[![Build](https://github.com/YTVanced/VancedManager/actions/workflows/debug.yml/badge.svg?branch=dev)](https://github.com/YTVanced/VancedManager/actions/workflows/debug.yml)

</div>

### Using Android Studio
Clone the repo, open it in Android Studio and build the app.
## Using Android Studio
Clone the Repository, open it in Android Studio and build the application.

### Using command line
## Google Advanced Protection Program
If you are using this feature on your Google account, you must either disable it or log out from your Google account before installing Youtube Vanced via Vanced Manager.
The Google Advanced Protection Program does not allow the installation of apps from unknown sources. These security measures are tied to the protected account and not the device. After the installation, you will be able to log back in or enroll again into the program.

## Using Command Line
#### On Windows:
```powershell
.\gradlew.bat assembleDebug
@@ -43,7 +62,3 @@ 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>
6 changes: 3 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -16,8 +16,8 @@ android {
applicationId = "com.vanced.manager"
minSdk = 21
targetSdk = 31
versionCode = 261
versionName = "2.6.1 (Crimson)"
versionCode = 262
versionName = "2.6.2 (Crimson)"

vectorDrawables {
useSupportLibrary = true
@@ -126,7 +126,7 @@ dependencies {
val libsuVersion = "3.1.2"
implementation("com.github.topjohnwu.libsu:core:$libsuVersion")
implementation("com.github.topjohnwu.libsu:io:$libsuVersion")
implementation("com.github.topjohnwu.libsu:busybox:$libsuVersion")
//implementation("com.github.topjohnwu.libsu:busybox:$libsuVersion")

// Layout
implementation("com.google.android.flexbox:flexbox:3.0.0")
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />

Original file line number Diff line number Diff line change
@@ -84,10 +84,12 @@ class ExpandableAppListAdapter(
appDownload.apply {
setOnClickListener {
viewModel.openInstallDialog(
activity.supportFragmentManager,
buttonTag,
apps[position]
)
}
appDownload.setIconResource(buttonTag.image)
contentDescription = activity.getString(
when (buttonTag) {
ButtonTag.UPDATE -> R.string.accessibility_update
@@ -108,11 +110,6 @@ class ExpandableAppListAdapter(
dataModel?.installedVersionName?.observe(activity) {
appVersionInstalled.text = it
}
dataModel?.buttonImage?.observe(activity) {
if (it != null) {
appDownload.icon = it
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -64,7 +64,7 @@ class LinkAdapter(

fun bind(position: Int) {
binding.linkBg.setOnClickListener {
viewModel.openUrl(links[position].linkUrl)
viewModel.openUrl(context, links[position].linkUrl)
}
}
}
Original file line number Diff line number Diff line change
@@ -42,7 +42,7 @@ class SponsorAdapter(
with(binding) {
sponsorName.text = sponsors[position].name
cardSponsor.setOnClickListener {
viewModel.openUrl(sponsors[position].url)
viewModel.openUrl(context, sponsors[position].url)
}
}
}
3 changes: 1 addition & 2 deletions app/src/main/java/com/vanced/manager/core/App.kt
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@ package com.vanced.manager.core

import android.app.Application
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.BusyBoxInstaller
import com.topjohnwu.superuser.Shell
import com.vanced.manager.BuildConfig
import com.vanced.manager.utils.loadJson
@@ -27,7 +26,7 @@ class App : Application() {
Shell.Builder
.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
.setInitializers(BusyBoxInstaller::class.java)
//.setInitializers(BusyBoxInstaller::class.java) //TODO fix busybox
.setTimeout(10)
)
}
37 changes: 37 additions & 0 deletions app/src/main/java/com/vanced/manager/core/CombinedLiveData.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.vanced.manager.core

import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData

/**
* CombinedLiveData is a helper class to combine results from two LiveData sources.
* @param combine Function reference that will be used to combine all LiveData data.
* @param R The type of data returned after combining all LiveData data.
* Usage:
* CombinedLiveData(
* getLiveData1(),
* getLiveData2()
* ) { data1, data2 ->
* // Use datas[0], datas[1], ..., datas[N] to return a value
* }
*/
class CombinedLiveData<R, A, B>(
liveDataA: LiveData<A>,
liveDataB: LiveData<B>,
private val combine: (a: A?, b: B?) -> R
) : MediatorLiveData<R>() {

private var a: A? = null
private var b: B? = null

init {
addSource(liveDataA) {
a = it
value = combine(a, b)
}
addSource(liveDataB) {
b = it
value = combine(a, b)
}
}
}
9 changes: 7 additions & 2 deletions app/src/main/java/com/vanced/manager/model/ButtonTag.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.vanced.manager.model

enum class ButtonTag {
INSTALL, UPDATE, REINSTALL
import androidx.annotation.DrawableRes
import com.vanced.manager.R

enum class ButtonTag(@DrawableRes val image: Int) {
INSTALL(R.drawable.ic_app_download),
UPDATE(R.drawable.ic_app_update),
REINSTALL(R.drawable.ic_app_reinstall)
}
75 changes: 23 additions & 52 deletions app/src/main/java/com/vanced/manager/model/DataModel.kt
Original file line number Diff line number Diff line change
@@ -5,63 +5,46 @@ import android.graphics.drawable.Drawable
import android.os.Build
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.*
import com.beust.klaxon.JsonObject
import com.vanced.manager.R
import com.vanced.manager.core.CombinedLiveData
import com.vanced.manager.utils.PackageHelper.isPackageInstalled

open class DataModel(
private val jsonObject: LiveData<JsonObject?>,
private val context: Context,
lifecycleOwner: LifecycleOwner,
jsonObject: LiveData<JsonObject?>,
context: Context,
val appPkg: String,
val appName: String,
val appDescription: String,
@DrawableRes val appIcon: Int
) {

private val versionCode = MutableLiveData<Int>()
private val installedVersionCode = MutableLiveData<Int>()
val isAppInstalled = Transformations.map(jsonObject) { isAppInstalled(appPkg) }

private val versionCode = Transformations.map(jsonObject) { jobj ->
jobj?.int("versionCode") ?: 0
}
private val installedVersionCode = Transformations.map(isAppInstalled) {
getPkgVersionCode(appPkg, it)
}
private val unavailable = context.getString(R.string.unavailable)
private val pm = context.packageManager

val isAppInstalled = MutableLiveData<Boolean>()
val versionName = MutableLiveData<String>()
val installedVersionName = MutableLiveData<String>()
val buttonTag = MutableLiveData<ButtonTag>()
val buttonImage = MutableLiveData<Drawable>()
val changelog = MutableLiveData<String>()

private fun fetch() {
val jobj = jsonObject.value
isAppInstalled.value = isAppInstalled(appPkg)
versionCode.value = jobj?.int("versionCode") ?: 0
versionName.value = jobj?.string("version") ?: unavailable
changelog.value = jobj?.string("changelog") ?: unavailable
val versionName = Transformations.map(jsonObject) { jobj ->
jobj?.string("version") ?: unavailable
}

init {
fetch()
with(lifecycleOwner) {
jsonObject.observe(this) {
fetch()
}
isAppInstalled.observe(this) {
installedVersionCode.value = getPkgVersionCode(appPkg, it)
installedVersionName.value = getPkgVersionName(appPkg, it)
}
versionCode.observe(this) { versionCode ->
installedVersionCode.observe(this) { installedVersionCode ->
buttonTag.value = compareInt(installedVersionCode, versionCode)
buttonImage.value = compareIntDrawable(installedVersionCode, versionCode)
}
}
}
val changelog = Transformations.map(jsonObject) { jobj ->
jobj?.string("changelog") ?: unavailable
}
val installedVersionName = Transformations.map(isAppInstalled) {
getPkgVersionName(appPkg, it)
}
val buttonTag = CombinedLiveData(versionCode, installedVersionCode) { versionCode, installedVersionCode ->
compareInt(installedVersionCode, versionCode)
}

open fun isAppInstalled(pkg: String): Boolean = isPackageInstalled(pkg, context.packageManager)
open fun isAppInstalled(pkg: String): Boolean = isPackageInstalled(pkg, pm)

private fun getPkgVersionName(pkg: String, isAppInstalled: Boolean): String {
return if (isAppInstalled) {
@@ -95,16 +78,4 @@ open class DataModel(
}
return ButtonTag.INSTALL
}

private fun compareIntDrawable(int1: Int?, int2: Int?): Drawable {
if (int2 != null && int1 != null) {
return when {
int1 == 0 -> ContextCompat.getDrawable(context, R.drawable.ic_app_download)!!
int2 > int1 -> ContextCompat.getDrawable(context, R.drawable.ic_app_update)!!
int1 >= int2 -> ContextCompat.getDrawable(context, R.drawable.ic_app_reinstall)!!
else -> ContextCompat.getDrawable(context, R.drawable.ic_app_download)!!
}
}
return ContextCompat.getDrawable(context, R.drawable.ic_app_download)!!
}
}
3 changes: 1 addition & 2 deletions app/src/main/java/com/vanced/manager/model/RootDataModel.kt
Original file line number Diff line number Diff line change
@@ -10,7 +10,6 @@ import com.vanced.manager.utils.PackageHelper
class RootDataModel(
jsonObject: LiveData<JsonObject?>,
context: Context,
lifecycleOwner: LifecycleOwner,
appPkg: String,
appName: String,
appDescription: String,
@@ -22,7 +21,7 @@ class RootDataModel(
//Ironic, isn't it?
private val scriptName: String?
) : DataModel(
jsonObject, context, lifecycleOwner, appPkg, appName, appDescription, appIcon
jsonObject, context, appPkg, appName, appDescription, appIcon
) {

override fun isAppInstalled(pkg: String): Boolean {
16 changes: 10 additions & 6 deletions app/src/main/java/com/vanced/manager/ui/SplashScreenActivity.kt
Original file line number Diff line number Diff line change
@@ -4,18 +4,22 @@ import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.Shell

class SplashScreenActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

if (getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) {
startActivity(Intent(this, WelcomeActivity::class.java))
finish()
} else {
startActivity(Intent(this, MainActivity::class.java))
finish()
//Preheat the shell
Shell.getShell {
if (getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) {
startActivity(Intent(this, WelcomeActivity::class.java))
finish()
} else {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}

}
Original file line number Diff line number Diff line change
@@ -26,7 +26,6 @@ import com.vanced.manager.databinding.FragmentHomeBinding
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
import com.vanced.manager.ui.viewmodels.HomeViewModel
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
import com.vanced.manager.utils.isFetching
import com.vanced.manager.utils.manager

@@ -37,9 +36,7 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>() {
const val REFRESH_HOME = "REFRESH_HOME"
}

private val viewModel: HomeViewModel by viewModels {
HomeViewModelFactory(requireActivity())
}
private val viewModel: HomeViewModel by viewModels()

private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }

Loading