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
c0981174
Commit
c0981174
authored
May 29, 2022
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use LiveData instead of Observable
parent
0b5f973b
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
13 additions
and
27 deletions
+13
-27
BaseFragment.kt
app/src/main/java/com/topjohnwu/magisk/arch/BaseFragment.kt
+1
-1
BaseViewModel.kt
app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt
+0
-19
UIActivity.kt
app/src/main/java/com/topjohnwu/magisk/arch/UIActivity.kt
+1
-1
ViewModelHolder.kt
...rc/main/java/com/topjohnwu/magisk/arch/ViewModelHolder.kt
+5
-1
Info.kt
app/src/main/java/com/topjohnwu/magisk/core/Info.kt
+5
-4
ModuleViewModel.kt
...in/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt
+1
-1
No files found.
app/src/main/java/com/topjohnwu/magisk/arch/BaseFragment.kt
View file @
c0981174
...
...
@@ -24,7 +24,7 @@ abstract class BaseFragment<Binding : ViewDataBinding> : Fragment(), ViewModelHo
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
startObserve
Events
()
startObserve
LiveData
()
}
override
fun
onCreateView
(
...
...
app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt
View file @
c0981174
...
...
@@ -4,9 +4,7 @@ import android.Manifest.permission.REQUEST_INSTALL_PACKAGES
import
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
import
android.annotation.SuppressLint
import
android.os.Bundle
import
androidx.annotation.CallSuper
import
androidx.databinding.Bindable
import
androidx.databinding.Observable
import
androidx.databinding.PropertyChangeRegistry
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
...
...
@@ -15,7 +13,6 @@ import androidx.lifecycle.viewModelScope
import
androidx.navigation.NavDirections
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.databinding.ObservableHost
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.events.BackPressEvent
...
...
@@ -41,7 +38,6 @@ abstract class BaseViewModel(
@get
:
Bindable
val
loadFailed
get
()
=
state
==
State
.
LOADING_FAILED
val
isConnected
get
()
=
Info
.
isConnected
val
viewEvents
:
LiveData
<
ViewEvent
>
get
()
=
_viewEvents
var
state
=
initialState
...
...
@@ -49,15 +45,6 @@ abstract class BaseViewModel(
private
val
_viewEvents
=
MutableLiveData
<
ViewEvent
>()
private
var
runningJob
:
Job
?
=
null
private
val
refreshCallback
=
object
:
Observable
.
OnPropertyChangedCallback
()
{
override
fun
onPropertyChanged
(
sender
:
Observable
?,
propertyId
:
Int
)
{
requestRefresh
()
}
}
init
{
isConnected
.
addOnPropertyChangedCallback
(
refreshCallback
)
}
open
fun
onSaveState
(
state
:
Bundle
)
{}
open
fun
onRestoreState
(
state
:
Bundle
)
{}
...
...
@@ -73,12 +60,6 @@ abstract class BaseViewModel(
protected
open
fun
refresh
():
Job
?
=
null
@CallSuper
override
fun
onCleared
()
{
isConnected
.
removeOnPropertyChangedCallback
(
refreshCallback
)
super
.
onCleared
()
}
fun
withPermission
(
permission
:
String
,
callback
:
(
Boolean
)
->
Unit
)
{
PermissionEvent
(
permission
,
callback
).
publish
()
}
...
...
app/src/main/java/com/topjohnwu/magisk/arch/UIActivity.kt
View file @
c0981174
...
...
@@ -36,7 +36,7 @@ abstract class UIActivity<Binding : ViewDataBinding> : BaseActivity(), ViewModel
super
.
onCreate
(
savedInstanceState
)
startObserve
Events
()
startObserve
LiveData
()
// We need to set the window background explicitly since for whatever reason it's not
// propagated upstream
...
...
app/src/main/java/com/topjohnwu/magisk/arch/ViewModelHolder.kt
View file @
c0981174
...
...
@@ -4,6 +4,7 @@ import androidx.lifecycle.LifecycleOwner
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.ViewModelStoreOwner
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.di.ServiceLocator
import
com.topjohnwu.magisk.ui.home.HomeViewModel
import
com.topjohnwu.magisk.ui.install.InstallViewModel
...
...
@@ -15,10 +16,13 @@ interface ViewModelHolder : LifecycleOwner, ViewModelStoreOwner {
val
viewModel
:
BaseViewModel
fun
startObserve
Events
()
{
fun
startObserve
LiveData
()
{
viewModel
.
viewEvents
.
observe
(
this
)
{
onEventDispatched
(
it
)
}
Info
.
isConnected
.
observe
(
this
)
{
viewModel
.
requestRefresh
()
}
}
/**
...
...
app/src/main/java/com/topjohnwu/magisk/core/Info.kt
View file @
c0981174
package
com.topjohnwu.magisk.core
import
android.os.Build
import
androidx.databinding.ObservableBoolean
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
import
com.topjohnwu.magisk.StubApk
import
com.topjohnwu.magisk.core.di.AppContext
import
com.topjohnwu.magisk.core.model.UpdateInfo
...
...
@@ -43,10 +44,10 @@ object Info {
getProperty
(
"ro.kernel.qemu"
,
"0"
)
==
"1"
||
getProperty
(
"ro.boot.qemu"
,
"0"
)
==
"1"
val
isConnected
by
lazy
{
ObservableBoolean
(
false
).
also
{
field
->
val
isConnected
:
LiveData
<
Boolean
>
by
lazy
{
MutableLiveData
(
false
).
also
{
field
->
NetworkObserver
.
observe
(
AppContext
)
{
UiThreadHandler
.
run
{
field
.
set
(
it
)
}
UiThreadHandler
.
run
{
field
.
value
=
it
}
}
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt
View file @
c0981174
...
...
@@ -70,7 +70,7 @@ class ModuleViewModel : BaseViewModel() {
}
fun
downloadPressed
(
item
:
OnlineModule
?)
=
if
(
item
!=
null
&&
isConnected
.
get
()
)
{
if
(
item
!=
null
&&
Info
.
isConnected
.
value
==
true
)
{
withExternalRW
{
ModuleInstallDialog
(
item
).
publish
()
}
}
else
{
SnackbarEvent
(
R
.
string
.
no_connection
).
publish
()
...
...
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