Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
bd935b05
Commit
bd935b05
authored
Mar 16, 2021
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup fragment navigations
parent
a9b3b7a3
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
35 additions
and
56 deletions
+35
-56
BaseUIActivity.kt
...src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt
+2
-21
BaseViewModel.kt
app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt
+1
-2
DownloadService.kt
...ava/com/topjohnwu/magisk/core/download/DownloadService.kt
+7
-1
MainActivity.kt
app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt
+4
-4
FlashFragment.kt
.../main/java/com/topjohnwu/magisk/ui/flash/FlashFragment.kt
+9
-10
HomeViewModel.kt
...c/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt
+2
-2
InstallViewModel.kt
.../java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
+3
-3
SettingsViewModel.kt
...ava/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt
+1
-1
SuperuserViewModel.kt
...a/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt
+1
-1
main.xml
app/src/main/res/navigation/main.xml
+5
-11
No files found.
app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt
View file @
bd935b05
...
...
@@ -10,7 +10,6 @@ import androidx.appcompat.app.AppCompatDelegate
import
androidx.core.content.res.use
import
androidx.databinding.DataBindingUtil
import
androidx.databinding.ViewDataBinding
import
androidx.lifecycle.MutableLiveData
import
androidx.navigation.NavController
import
androidx.navigation.NavDirections
import
androidx.navigation.fragment.NavHostFragment
...
...
@@ -28,7 +27,7 @@ abstract class BaseUIActivity<VM : BaseViewModel, Binding : ViewDataBinding> :
protected
open
val
themeRes
:
Int
=
Theme
.
selected
.
themeRes
private
val
navHostFragment
by
lazy
{
supportFragmentManager
.
findFragmentById
(
navHost
)
as
?
NavHostFragment
supportFragmentManager
.
findFragmentById
(
navHost
Id
)
as
?
NavHostFragment
}
private
val
topFragment
get
()
=
navHostFragment
?.
childFragmentManager
?.
fragments
?.
getOrNull
(
0
)
protected
val
currentFragment
get
()
=
topFragment
as
?
BaseUIFragment
<*,
*>
...
...
@@ -36,7 +35,7 @@ abstract class BaseUIActivity<VM : BaseViewModel, Binding : ViewDataBinding> :
override
val
viewRoot
:
View
get
()
=
binding
.
root
open
val
navigation
:
NavController
?
get
()
=
navHostFragment
?.
navController
open
val
navHost
:
Int
=
0
open
val
navHost
Id
:
Int
=
0
open
val
snackbarView
get
()
=
binding
.
root
init
{
...
...
@@ -58,14 +57,6 @@ abstract class BaseUIActivity<VM : BaseViewModel, Binding : ViewDataBinding> :
.
use
{
it
.
getDrawable
(
0
)
}
.
also
{
window
.
setBackgroundDrawable
(
it
)
}
directionsDispatcher
.
observe
(
this
)
{
it
?.
navigate
()
// we don't want the directions to be re-dispatched, so we preemptively set them to null
if
(
it
!=
null
)
{
directionsDispatcher
.
value
=
null
}
}
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
window
?.
decorView
?.
let
{
it
.
systemUiVisibility
=
(
it
.
systemUiVisibility
...
...
@@ -127,14 +118,4 @@ abstract class BaseUIActivity<VM : BaseViewModel, Binding : ViewDataBinding> :
fun
NavDirections
.
navigate
()
{
navigation
?.
navigate
(
this
)
}
companion
object
{
private
val
directionsDispatcher
=
MutableLiveData
<
NavDirections
?>()
fun
postDirections
(
navDirections
:
NavDirections
)
=
directionsDispatcher
.
postValue
(
navDirections
)
}
}
app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt
View file @
bd935b05
package
com.topjohnwu.magisk.arch
import
android.Manifest
import
android.os.Build
import
androidx.annotation.CallSuper
import
androidx.core.graphics.Insets
import
androidx.databinding.Bindable
...
...
@@ -107,7 +106,7 @@ abstract class BaseViewModel(
_viewEvents
.
postValue
(
this
)
}
fun
NavDirections
.
publish
()
{
fun
NavDirections
.
navigate
()
{
_viewEvents
.
postValue
(
NavigationEvent
(
this
))
}
...
...
app/src/main/java/com/topjohnwu/magisk/core/download/DownloadService.kt
View file @
bd935b05
...
...
@@ -7,6 +7,8 @@ import android.content.Context
import
android.content.Intent
import
android.os.Build
import
androidx.core.net.toFile
import
com.topjohnwu.magisk.arch.BaseUIActivity
import
com.topjohnwu.magisk.core.ForegroundTracker
import
com.topjohnwu.magisk.core.download.Action.Flash
import
com.topjohnwu.magisk.core.download.Subject.Manager
import
com.topjohnwu.magisk.core.download.Subject.Module
...
...
@@ -26,7 +28,11 @@ open class DownloadService : BaseDownloader() {
}
private
fun
Module
.
onFinish
(
id
:
Int
)
=
when
(
action
)
{
Flash
->
FlashFragment
.
install
(
file
,
id
)
Flash
->
{
(
ForegroundTracker
.
foreground
as
?
BaseUIActivity
<*,
*>)
?.
navigation
?.
navigate
(
FlashFragment
.
install
(
file
,
id
))
Unit
}
else
->
Unit
}
...
...
app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt
View file @
bd935b05
...
...
@@ -34,7 +34,7 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
override
val
layoutRes
=
R
.
layout
.
activity_main_md2
override
val
viewModel
by
viewModel
<
MainViewModel
>()
override
val
navHost
:
Int
=
R
.
id
.
main_nav_host
override
val
navHost
Id
:
Int
=
R
.
id
.
main_nav_host
private
var
isRootFragment
=
true
...
...
@@ -166,9 +166,9 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
private
fun
getScreen
(
name
:
String
?):
NavDirections
?
{
return
when
(
name
)
{
Const
.
Nav
.
SUPERUSER
->
HomeFragment
Directions
.
actionSuperuserFragment
()
Const
.
Nav
.
HIDE
->
HomeFragment
Directions
.
actionHideFragment
()
Const
.
Nav
.
MODULES
->
HomeFragment
Directions
.
actionModuleFragment
()
Const
.
Nav
.
SUPERUSER
->
Main
Directions
.
actionSuperuserFragment
()
Const
.
Nav
.
HIDE
->
Main
Directions
.
actionHideFragment
()
Const
.
Nav
.
MODULES
->
Main
Directions
.
actionModuleFragment
()
Const
.
Nav
.
SETTINGS
->
HomeFragmentDirections
.
actionHomeFragmentToSettingsFragment
()
else
->
null
}
...
...
app/src/main/java/com/topjohnwu/magisk/ui/flash/FlashFragment.kt
View file @
bd935b05
...
...
@@ -7,8 +7,8 @@ import android.net.Uri
import
android.os.Bundle
import
android.view.*
import
androidx.navigation.NavDeepLinkBuilder
import
com.topjohnwu.magisk.MainDirections
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.BaseUIActivity
import
com.topjohnwu.magisk.arch.BaseUIFragment
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.cmp
...
...
@@ -16,7 +16,6 @@ import com.topjohnwu.magisk.databinding.FragmentFlashMd2Binding
import
com.topjohnwu.magisk.ui.MainActivity
import
org.koin.androidx.viewmodel.ext.android.viewModel
import
org.koin.core.parameter.parametersOf
import
com.topjohnwu.magisk.MainDirections.Companion.actionFlashFragment
as
toFlash
class
FlashFragment
:
BaseUIFragment
<
FlashViewModel
,
FragmentFlashMd2Binding
>()
{
...
...
@@ -91,22 +90,22 @@ class FlashFragment : BaseUIFragment<FlashViewModel, FragmentFlashMd2Binding>()
/* Flashing is understood as installing / flashing magisk itself */
fun
flash
(
isSecondSlot
:
Boolean
)
=
toFlash
(
fun
flash
(
isSecondSlot
:
Boolean
)
=
MainDirections
.
actionFlashFragment
(
action
=
flashType
(
isSecondSlot
)
)
.
let
{
BaseUIActivity
.
postDirections
(
it
)
}
)
/* Patching is understood as injecting img files with magisk */
fun
patch
(
uri
:
Uri
)
=
toFlash
(
fun
patch
(
uri
:
Uri
)
=
MainDirections
.
actionFlashFragment
(
action
=
Const
.
Value
.
PATCH_FILE
,
additionalData
=
uri
)
.
let
{
BaseUIActivity
.
postDirections
(
it
)
}
)
/* Uninstalling is understood as removing magisk entirely */
fun
uninstall
()
=
toFlash
(
fun
uninstall
()
=
MainDirections
.
actionFlashFragment
(
action
=
Const
.
Value
.
UNINSTALL
)
.
let
{
BaseUIActivity
.
postDirections
(
it
)
}
)
/* Installing is understood as flashing modules / zips */
...
...
@@ -116,11 +115,11 @@ class FlashFragment : BaseUIFragment<FlashViewModel, FragmentFlashMd2Binding>()
dismissId
=
id
).
let
{
createIntent
(
context
,
it
)
}
fun
install
(
file
:
Uri
,
id
:
Int
)
=
toFlash
(
fun
install
(
file
:
Uri
,
id
:
Int
)
=
MainDirections
.
actionFlashFragment
(
action
=
Const
.
Value
.
FLASH_ZIP
,
additionalData
=
file
,
dismissId
=
id
)
.
let
{
BaseUIActivity
.
postDirections
(
it
)
}
)
}
}
app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt
View file @
bd935b05
...
...
@@ -127,11 +127,11 @@ class HomeViewModel(
}
fun
onMagiskPressed
()
=
withExternalRW
{
HomeFragmentDirections
.
actionHomeFragmentToInstallFragment
().
publish
()
HomeFragmentDirections
.
actionHomeFragmentToInstallFragment
().
navigate
()
}
fun
onSafetyNetPressed
()
=
HomeFragmentDirections
.
actionHomeFragmentToSafetynetFragment
().
publish
()
HomeFragmentDirections
.
actionHomeFragmentToSafetynetFragment
().
navigate
()
fun
hideNotice
()
{
Config
.
safetyNotice
=
false
...
...
app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
View file @
bd935b05
...
...
@@ -89,9 +89,9 @@ class InstallViewModel(
fun
install
()
{
when
(
method
)
{
R
.
id
.
method_patch
->
FlashFragment
.
patch
(
data
!!
)
R
.
id
.
method_direct
->
FlashFragment
.
flash
(
false
)
R
.
id
.
method_inactive_slot
->
FlashFragment
.
flash
(
true
)
R
.
id
.
method_patch
->
FlashFragment
.
patch
(
data
!!
)
.
navigate
()
R
.
id
.
method_direct
->
FlashFragment
.
flash
(
false
)
.
navigate
()
R
.
id
.
method_inactive_slot
->
FlashFragment
.
flash
(
true
)
.
navigate
()
else
->
error
(
"Unknown value"
)
}
state
=
State
.
LOADING
...
...
app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt
View file @
bd935b05
...
...
@@ -103,7 +103,7 @@ class SettingsViewModel(
override
fun
onItemPressed
(
view
:
View
,
item
:
BaseSettingsItem
,
callback
:
()
->
Unit
)
=
when
(
item
)
{
is
DownloadPath
->
withExternalRW
(
callback
)
is
Biometrics
->
authenticate
(
callback
)
is
Theme
->
SettingsFragmentDirections
.
actionSettingsFragmentToThemeFragment
().
publish
()
is
Theme
->
SettingsFragmentDirections
.
actionSettingsFragmentToThemeFragment
().
navigate
()
is
ClearRepoCache
->
clearRepoCache
()
is
SystemlessHosts
->
createHosts
()
is
Restore
->
HideAPK
.
restore
(
view
.
activity
)
...
...
app/src/main/java/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt
View file @
bd935b05
...
...
@@ -80,7 +80,7 @@ class SuperuserViewModel(
}
private
fun
hidePressed
()
=
SuperuserFragmentDirections
.
actionSuperuserFragmentToHideFragment
().
publish
()
SuperuserFragmentDirections
.
actionSuperuserFragmentToHideFragment
().
navigate
()
fun
deletePressed
(
item
:
PolicyRvItem
)
{
fun
updateState
()
=
viewModelScope
.
launch
{
...
...
app/src/main/res/navigation/main.xml
View file @
bd935b05
...
...
@@ -145,8 +145,7 @@
app:exitAnim=
"@anim/fragment_exit"
app:popEnterAnim=
"@anim/fragment_enter_pop"
app:popExitAnim=
"@anim/fragment_exit_pop"
app:popUpTo=
"@id/superuserFragment"
app:popUpToInclusive=
"true"
/>
app:popUpTo=
"@id/homeFragment"
/>
<action
android:id=
"@+id/action_logFragment"
...
...
@@ -155,8 +154,7 @@
app:exitAnim=
"@anim/fragment_exit"
app:popEnterAnim=
"@anim/fragment_enter_pop"
app:popExitAnim=
"@anim/fragment_exit_pop"
app:popUpTo=
"@id/logFragment"
app:popUpToInclusive=
"true"
/>
app:popUpTo=
"@id/homeFragment"
/>
<action
android:id=
"@+id/action_moduleFragment"
...
...
@@ -165,8 +163,7 @@
app:exitAnim=
"@anim/fragment_exit"
app:popEnterAnim=
"@anim/fragment_enter_pop"
app:popExitAnim=
"@anim/fragment_exit_pop"
app:popUpTo=
"@id/modulesFragment"
app:popUpToInclusive=
"true"
/>
app:popUpTo=
"@id/homeFragment"
/>
<action
android:id=
"@+id/action_flashFragment"
...
...
@@ -175,8 +172,7 @@
app:exitAnim=
"@anim/fragment_exit"
app:popEnterAnim=
"@anim/fragment_enter_pop"
app:popExitAnim=
"@anim/fragment_exit_pop"
app:popUpTo=
"@id/installFragment"
app:popUpToInclusive=
"true"
/>
app:popUpTo=
"@id/homeFragment"
/>
<action
android:id=
"@+id/action_hideFragment"
...
...
@@ -184,8 +180,6 @@
app:enterAnim=
"@anim/fragment_enter"
app:exitAnim=
"@anim/fragment_exit"
app:popEnterAnim=
"@anim/fragment_enter_pop"
app:popExitAnim=
"@anim/fragment_exit_pop"
app:popUpTo=
"@id/superuserFragment"
app:popUpToInclusive=
"false"
/>
app:popExitAnim=
"@anim/fragment_exit_pop"
/>
</navigation>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment