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
743c7c93
Commit
743c7c93
authored
Sep 01, 2021
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
App code reorganization
parent
067248da
Show whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
57 additions
and
67 deletions
+57
-67
build.gradle.kts
app/build.gradle.kts
+2
-2
BaseViewModel.kt
app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt
+2
-2
HideAPK.kt
app/src/main/java/com/topjohnwu/magisk/core/tasks/HideAPK.kt
+2
-2
MagiskInstaller.kt
...n/java/com/topjohnwu/magisk/core/tasks/MagiskInstaller.kt
+1
-1
Keygen.kt
app/src/main/java/com/topjohnwu/magisk/core/utils/Keygen.kt
+3
-3
DiffObservableList.kt
...va/com/topjohnwu/magisk/databinding/DiffObservableList.kt
+1
-1
FilterableDiffObservableList.kt
...johnwu/magisk/databinding/FilterableDiffObservableList.kt
+2
-2
Helpers.kt
...src/main/java/com/topjohnwu/magisk/databinding/Helpers.kt
+1
-6
ObservableHost.kt
...n/java/com/topjohnwu/magisk/databinding/ObservableHost.kt
+1
-1
RecyclerViewItems.kt
...ava/com/topjohnwu/magisk/databinding/RecyclerViewItems.kt
+0
-2
ApkSignerV2.java
...c/main/java/com/topjohnwu/magisk/signing/ApkSignerV2.java
+1
-1
ByteArrayStream.java
...in/java/com/topjohnwu/magisk/signing/ByteArrayStream.java
+1
-1
CryptoUtils.java
...c/main/java/com/topjohnwu/magisk/signing/CryptoUtils.java
+1
-1
JarMap.java
app/src/main/java/com/topjohnwu/magisk/signing/JarMap.java
+1
-1
SignApk.java
app/src/main/java/com/topjohnwu/magisk/signing/SignApk.java
+1
-1
SignBoot.java
app/src/main/java/com/topjohnwu/magisk/signing/SignBoot.java
+1
-1
ZipUtils.java
app/src/main/java/com/topjohnwu/magisk/signing/ZipUtils.java
+1
-1
FlashViewModel.kt
...main/java/com/topjohnwu/magisk/ui/flash/FlashViewModel.kt
+3
-3
HideRvItems.kt
...src/main/java/com/topjohnwu/magisk/ui/hide/HideRvItems.kt
+2
-2
HideViewModel.kt
...c/main/java/com/topjohnwu/magisk/ui/hide/HideViewModel.kt
+3
-3
HomeViewModel.kt
...c/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt
+6
-2
LayoutInflaterFactory.kt
...com/topjohnwu/magisk/ui/inflater/LayoutInflaterFactory.kt
+0
-1
InstallViewModel.kt
.../java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
+1
-1
LogRvItem.kt
app/src/main/java/com/topjohnwu/magisk/ui/log/LogRvItem.kt
+1
-1
LogViewModel.kt
...src/main/java/com/topjohnwu/magisk/ui/log/LogViewModel.kt
+3
-3
ModuleRvItem.kt
.../main/java/com/topjohnwu/magisk/ui/module/ModuleRvItem.kt
+1
-1
ModuleViewModel.kt
...in/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt
+3
-4
CheckSafetyNetEvent.kt
.../com/topjohnwu/magisk/ui/safetynet/CheckSafetyNetEvent.kt
+1
-1
SafetynetViewModel.kt
...a/com/topjohnwu/magisk/ui/safetynet/SafetynetViewModel.kt
+1
-1
BaseSettingsItem.kt
...java/com/topjohnwu/magisk/ui/settings/BaseSettingsItem.kt
+1
-1
SettingsItems.kt
...in/java/com/topjohnwu/magisk/ui/settings/SettingsItems.kt
+1
-1
SettingsViewModel.kt
...ava/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt
+2
-2
PolicyRvItem.kt
...in/java/com/topjohnwu/magisk/ui/superuser/PolicyRvItem.kt
+1
-1
SuperuserViewModel.kt
...a/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt
+3
-3
SuRequestViewModel.kt
...a/com/topjohnwu/magisk/ui/surequest/SuRequestViewModel.kt
+1
-1
MagiskDialog.kt
app/src/main/java/com/topjohnwu/magisk/view/MagiskDialog.kt
+1
-6
No files found.
app/build.gradle.kts
View file @
743c7c93
...
@@ -144,7 +144,7 @@ tasks["preBuild"]?.dependsOn(syncResources)
...
@@ -144,7 +144,7 @@ tasks["preBuild"]?.dependsOn(syncResources)
android
.
applicationVariants
.
all
{
android
.
applicationVariants
.
all
{
val
keysDir
=
rootProject
.
file
(
"tools/keys"
)
val
keysDir
=
rootProject
.
file
(
"tools/keys"
)
val
outSrcDir
=
File
(
buildDir
,
"generated/source/keydata/$name"
)
val
outSrcDir
=
File
(
buildDir
,
"generated/source/keydata/$name"
)
val
outSrc
=
File
(
outSrcDir
,
"com/topjohnwu/signing/KeyData.java"
)
val
outSrc
=
File
(
outSrcDir
,
"com/topjohnwu/
magisk/
signing/KeyData.java"
)
fun
PrintStream
.
newField
(
name
:
String
,
file
:
File
)
{
fun
PrintStream
.
newField
(
name
:
String
,
file
:
File
)
{
println
(
"public static byte[] $name() {"
)
println
(
"public static byte[] $name() {"
)
...
@@ -162,7 +162,7 @@ android.applicationVariants.all {
...
@@ -162,7 +162,7 @@ android.applicationVariants.all {
doLast
{
doLast
{
outSrc
.
parentFile
.
mkdirs
()
outSrc
.
parentFile
.
mkdirs
()
PrintStream
(
outSrc
).
use
{
PrintStream
(
outSrc
).
use
{
it
.
println
(
"package com.topjohnwu.signing;"
)
it
.
println
(
"package com.topjohnwu.
magisk.
signing;"
)
it
.
println
(
"public final class KeyData {"
)
it
.
println
(
"public final class KeyData {"
)
it
.
newField
(
"testCert"
,
File
(
keysDir
,
"testkey.x509.pem"
))
it
.
newField
(
"testCert"
,
File
(
keysDir
,
"testkey.x509.pem"
))
...
...
app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt
View file @
743c7c93
...
@@ -13,12 +13,12 @@ import androidx.navigation.NavDirections
...
@@ -13,12 +13,12 @@ import androidx.navigation.NavDirections
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.databinding.ObservableHost
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.events.BackPressEvent
import
com.topjohnwu.magisk.events.BackPressEvent
import
com.topjohnwu.magisk.events.NavigationEvent
import
com.topjohnwu.magisk.events.NavigationEvent
import
com.topjohnwu.magisk.events.PermissionEvent
import
com.topjohnwu.magisk.events.PermissionEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.utils.ObservableHost
import
com.topjohnwu.magisk.utils.set
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.Job
abstract
class
BaseViewModel
(
abstract
class
BaseViewModel
(
...
...
app/src/main/java/com/topjohnwu/magisk/core/tasks/HideAPK.kt
View file @
743c7c93
...
@@ -16,10 +16,10 @@ import com.topjohnwu.magisk.core.utils.AXML
...
@@ -16,10 +16,10 @@ import com.topjohnwu.magisk.core.utils.AXML
import
com.topjohnwu.magisk.core.utils.Keygen
import
com.topjohnwu.magisk.core.utils.Keygen
import
com.topjohnwu.magisk.di.ServiceLocator
import
com.topjohnwu.magisk.di.ServiceLocator
import
com.topjohnwu.magisk.ktx.writeTo
import
com.topjohnwu.magisk.ktx.writeTo
import
com.topjohnwu.magisk.signing.JarMap
import
com.topjohnwu.magisk.signing.SignApk
import
com.topjohnwu.magisk.utils.APKInstall
import
com.topjohnwu.magisk.utils.APKInstall
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.signing.JarMap
import
com.topjohnwu.signing.SignApk
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.withContext
import
kotlinx.coroutines.withContext
...
...
app/src/main/java/com/topjohnwu/magisk/core/tasks/MagiskInstaller.kt
View file @
743c7c93
...
@@ -16,8 +16,8 @@ import com.topjohnwu.magisk.di.ServiceLocator
...
@@ -16,8 +16,8 @@ import com.topjohnwu.magisk.di.ServiceLocator
import
com.topjohnwu.magisk.ktx.reboot
import
com.topjohnwu.magisk.ktx.reboot
import
com.topjohnwu.magisk.ktx.withStreams
import
com.topjohnwu.magisk.ktx.withStreams
import
com.topjohnwu.magisk.ktx.writeTo
import
com.topjohnwu.magisk.ktx.writeTo
import
com.topjohnwu.magisk.signing.SignBoot
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.signing.SignBoot
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.ShellUtils
import
com.topjohnwu.superuser.ShellUtils
import
com.topjohnwu.superuser.internal.NOPList
import
com.topjohnwu.superuser.internal.NOPList
...
...
app/src/main/java/com/topjohnwu/magisk/core/utils/Keygen.kt
View file @
743c7c93
...
@@ -5,9 +5,9 @@ import android.content.pm.PackageManager
...
@@ -5,9 +5,9 @@ import android.content.pm.PackageManager
import
android.util.Base64
import
android.util.Base64
import
android.util.Base64OutputStream
import
android.util.Base64OutputStream
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.signing.CryptoUtils.readCertificate
import
com.topjohnwu.
magisk.
signing.CryptoUtils.readCertificate
import
com.topjohnwu.signing.CryptoUtils.readPrivateKey
import
com.topjohnwu.
magisk.
signing.CryptoUtils.readPrivateKey
import
com.topjohnwu.signing.KeyData
import
com.topjohnwu.
magisk.
signing.KeyData
import
org.bouncycastle.asn1.x500.X500Name
import
org.bouncycastle.asn1.x500.X500Name
import
org.bouncycastle.cert.jcajce.JcaX509CertificateConverter
import
org.bouncycastle.cert.jcajce.JcaX509CertificateConverter
import
org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder
import
org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder
...
...
app/src/main/java/com/topjohnwu/magisk/
utils
/DiffObservableList.kt
→
app/src/main/java/com/topjohnwu/magisk/
databinding
/DiffObservableList.kt
View file @
743c7c93
package
com.topjohnwu.magisk.
utils
package
com.topjohnwu.magisk.
databinding
import
androidx.annotation.MainThread
import
androidx.annotation.MainThread
import
androidx.databinding.ListChangeRegistry
import
androidx.databinding.ListChangeRegistry
...
...
app/src/main/java/com/topjohnwu/magisk/
utils
/FilterableDiffObservableList.kt
→
app/src/main/java/com/topjohnwu/magisk/
databinding
/FilterableDiffObservableList.kt
View file @
743c7c93
package
com.topjohnwu.magisk.
utils
package
com.topjohnwu.magisk.
databinding
import
android.os.Handler
import
android.os.Handler
import
android.os.HandlerThread
import
android.os.HandlerThread
...
...
app/src/main/java/com/topjohnwu/magisk/
arch
/Helpers.kt
→
app/src/main/java/com/topjohnwu/magisk/
databinding
/Helpers.kt
View file @
743c7c93
package
com.topjohnwu.magisk.
arch
package
com.topjohnwu.magisk.
databinding
import
androidx.databinding.ViewDataBinding
import
androidx.databinding.ViewDataBinding
import
com.topjohnwu.magisk.databinding.AnyDiffRvItem
import
com.topjohnwu.magisk.databinding.DiffRvItem
import
com.topjohnwu.magisk.databinding.RvItem
import
com.topjohnwu.magisk.utils.DiffObservableList
import
com.topjohnwu.magisk.utils.FilterableDiffObservableList
import
me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter
import
me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
me.tatarka.bindingcollectionadapter2.OnItemBind
import
me.tatarka.bindingcollectionadapter2.OnItemBind
...
...
app/src/main/java/com/topjohnwu/magisk/
utils
/ObservableHost.kt
→
app/src/main/java/com/topjohnwu/magisk/
databinding
/ObservableHost.kt
View file @
743c7c93
package
com.topjohnwu.magisk.
utils
package
com.topjohnwu.magisk.
databinding
import
androidx.databinding.Observable
import
androidx.databinding.Observable
import
androidx.databinding.PropertyChangeRegistry
import
androidx.databinding.PropertyChangeRegistry
...
...
app/src/main/java/com/topjohnwu/magisk/databinding/RecyclerViewItems.kt
View file @
743c7c93
...
@@ -5,8 +5,6 @@ import androidx.databinding.PropertyChangeRegistry
...
@@ -5,8 +5,6 @@ import androidx.databinding.PropertyChangeRegistry
import
androidx.databinding.ViewDataBinding
import
androidx.databinding.ViewDataBinding
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.utils.DiffObservableList
import
com.topjohnwu.magisk.utils.ObservableHost
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
me.tatarka.bindingcollectionadapter2.ItemBinding
abstract
class
RvItem
{
abstract
class
RvItem
{
...
...
app/src/main/java/com/topjohnwu/signing/ApkSignerV2.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/ApkSignerV2.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
java.nio.BufferUnderflowException
;
import
java.nio.BufferUnderflowException
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
...
...
app/src/main/java/com/topjohnwu/signing/ByteArrayStream.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/ByteArrayStream.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.ByteArrayOutputStream
;
...
...
app/src/main/java/com/topjohnwu/signing/CryptoUtils.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/CryptoUtils.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
org.bouncycastle.asn1.ASN1InputStream
;
import
org.bouncycastle.asn1.ASN1InputStream
;
import
org.bouncycastle.asn1.ASN1ObjectIdentifier
;
import
org.bouncycastle.asn1.ASN1ObjectIdentifier
;
...
...
app/src/main/java/com/topjohnwu/signing/JarMap.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/JarMap.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
java.io.Closeable
;
import
java.io.Closeable
;
import
java.io.File
;
import
java.io.File
;
...
...
app/src/main/java/com/topjohnwu/signing/SignApk.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/SignApk.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
org.bouncycastle.asn1.ASN1Encoding
;
import
org.bouncycastle.asn1.ASN1Encoding
;
import
org.bouncycastle.asn1.ASN1InputStream
;
import
org.bouncycastle.asn1.ASN1InputStream
;
...
...
app/src/main/java/com/topjohnwu/signing/SignBoot.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/SignBoot.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
androidx.annotation.Keep
;
import
androidx.annotation.Keep
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
...
...
app/src/main/java/com/topjohnwu/signing/ZipUtils.java
→
app/src/main/java/com/topjohnwu/
magisk/
signing/ZipUtils.java
View file @
743c7c93
package
com
.
topjohnwu
.
signing
;
package
com
.
topjohnwu
.
magisk
.
signing
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteOrder
;
import
java.nio.ByteOrder
;
...
...
app/src/main/java/com/topjohnwu/magisk/ui/flash/FlashViewModel.kt
View file @
743c7c93
...
@@ -8,8 +8,6 @@ import androidx.lifecycle.viewModelScope
...
@@ -8,8 +8,6 @@ import androidx.lifecycle.viewModelScope
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.diffListOf
import
com.topjohnwu.magisk.arch.itemBindingOf
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.tasks.FlashZip
import
com.topjohnwu.magisk.core.tasks.FlashZip
...
@@ -17,9 +15,11 @@ import com.topjohnwu.magisk.core.tasks.MagiskInstaller
...
@@ -17,9 +15,11 @@ import com.topjohnwu.magisk.core.tasks.MagiskInstaller
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils.outputStream
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils.outputStream
import
com.topjohnwu.magisk.databinding.RvBindingAdapter
import
com.topjohnwu.magisk.databinding.RvBindingAdapter
import
com.topjohnwu.magisk.databinding.diffListOf
import
com.topjohnwu.magisk.databinding.itemBindingOf
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.ktx.*
import
com.topjohnwu.magisk.ktx.*
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.magisk.view.Notifications
import
com.topjohnwu.magisk.view.Notifications
import
com.topjohnwu.superuser.CallbackList
import
com.topjohnwu.superuser.CallbackList
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/ui/hide/HideRvItems.kt
View file @
743c7c93
...
@@ -7,9 +7,9 @@ import com.topjohnwu.magisk.BR
...
@@ -7,9 +7,9 @@ import com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.databinding.ComparableRv
import
com.topjohnwu.magisk.databinding.ComparableRv
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.addOnPropertyChangedCallback
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.ktx.startAnimations
import
com.topjohnwu.magisk.ktx.startAnimations
import
com.topjohnwu.magisk.utils.addOnPropertyChangedCallback
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
kotlin.math.roundToInt
import
kotlin.math.roundToInt
...
...
app/src/main/java/com/topjohnwu/magisk/ui/hide/HideViewModel.kt
View file @
743c7c93
...
@@ -9,12 +9,12 @@ import androidx.lifecycle.viewModelScope
...
@@ -9,12 +9,12 @@ import androidx.lifecycle.viewModelScope
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.Queryable
import
com.topjohnwu.magisk.arch.Queryable
import
com.topjohnwu.magisk.arch.filterableListOf
import
com.topjohnwu.magisk.arch.itemBindingOf
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.databinding.filterableListOf
import
com.topjohnwu.magisk.databinding.itemBindingOf
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt
View file @
743c7c93
...
@@ -4,12 +4,17 @@ import androidx.databinding.Bindable
...
@@ -4,12 +4,17 @@ import androidx.databinding.Bindable
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.*
import
com.topjohnwu.magisk.arch.ActivityExecutor
import
com.topjohnwu.magisk.arch.BaseUIActivity
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.ViewEvent
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.download.Subject
import
com.topjohnwu.magisk.core.download.Subject
import
com.topjohnwu.magisk.core.download.Subject.Manager
import
com.topjohnwu.magisk.core.download.Subject.Manager
import
com.topjohnwu.magisk.data.repository.NetworkService
import
com.topjohnwu.magisk.data.repository.NetworkService
import
com.topjohnwu.magisk.databinding.itemBindingOf
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.events.OpenInappLinkEvent
import
com.topjohnwu.magisk.events.OpenInappLinkEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.dialog.EnvFixDialog
import
com.topjohnwu.magisk.events.dialog.EnvFixDialog
...
@@ -17,7 +22,6 @@ import com.topjohnwu.magisk.events.dialog.ManagerInstallDialog
...
@@ -17,7 +22,6 @@ import com.topjohnwu.magisk.events.dialog.ManagerInstallDialog
import
com.topjohnwu.magisk.events.dialog.UninstallDialog
import
com.topjohnwu.magisk.events.dialog.UninstallDialog
import
com.topjohnwu.magisk.ktx.await
import
com.topjohnwu.magisk.ktx.await
import
com.topjohnwu.magisk.utils.asText
import
com.topjohnwu.magisk.utils.asText
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
me.tatarka.bindingcollectionadapter2.BR
import
me.tatarka.bindingcollectionadapter2.BR
...
...
app/src/main/java/com/topjohnwu/magisk/ui/inflater/LayoutInflaterFactory.kt
View file @
743c7c93
package
com.topjohnwu.magisk.ui.inflater
package
com.topjohnwu.magisk.ui.inflater
import
android.content.Context
import
android.content.Context
import
android.os.Build
import
android.util.AttributeSet
import
android.util.AttributeSet
import
android.view.InflateException
import
android.view.InflateException
import
android.view.LayoutInflater
import
android.view.LayoutInflater
...
...
app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt
View file @
743c7c93
...
@@ -11,11 +11,11 @@ import com.topjohnwu.magisk.arch.BaseViewModel
...
@@ -11,11 +11,11 @@ import com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.data.repository.NetworkService
import
com.topjohnwu.magisk.data.repository.NetworkService
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.events.MagiskInstallFileEvent
import
com.topjohnwu.magisk.events.MagiskInstallFileEvent
import
com.topjohnwu.magisk.events.dialog.SecondSlotWarningDialog
import
com.topjohnwu.magisk.events.dialog.SecondSlotWarningDialog
import
com.topjohnwu.magisk.ui.flash.FlashFragment
import
com.topjohnwu.magisk.ui.flash.FlashFragment
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
timber.log.Timber
import
timber.log.Timber
...
...
app/src/main/java/com/topjohnwu/magisk/ui/log/LogRvItem.kt
View file @
743c7c93
...
@@ -6,9 +6,9 @@ import com.topjohnwu.magisk.R
...
@@ -6,9 +6,9 @@ import com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.core.model.su.SuLog
import
com.topjohnwu.magisk.core.model.su.SuLog
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.ktx.timeDateFormat
import
com.topjohnwu.magisk.ktx.timeDateFormat
import
com.topjohnwu.magisk.ktx.toTime
import
com.topjohnwu.magisk.ktx.toTime
import
com.topjohnwu.magisk.utils.set
class
LogRvItem
(
class
LogRvItem
(
override
val
item
:
SuLog
override
val
item
:
SuLog
...
...
app/src/main/java/com/topjohnwu/magisk/ui/log/LogViewModel.kt
View file @
743c7c93
...
@@ -6,17 +6,17 @@ import com.topjohnwu.magisk.BR
...
@@ -6,17 +6,17 @@ import com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.diffListOf
import
com.topjohnwu.magisk.arch.itemBindingOf
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils.outputStream
import
com.topjohnwu.magisk.core.utils.MediaStoreUtils.outputStream
import
com.topjohnwu.magisk.data.repository.LogRepository
import
com.topjohnwu.magisk.data.repository.LogRepository
import
com.topjohnwu.magisk.databinding.diffListOf
import
com.topjohnwu.magisk.databinding.itemBindingOf
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.ktx.now
import
com.topjohnwu.magisk.ktx.now
import
com.topjohnwu.magisk.ktx.timeFormatStandard
import
com.topjohnwu.magisk.ktx.timeFormatStandard
import
com.topjohnwu.magisk.ktx.toTime
import
com.topjohnwu.magisk.ktx.toTime
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.magisk.view.TextItem
import
com.topjohnwu.magisk.view.TextItem
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleRvItem.kt
View file @
743c7c93
...
@@ -8,7 +8,7 @@ import com.topjohnwu.magisk.core.model.module.OnlineModule
...
@@ -8,7 +8,7 @@ import com.topjohnwu.magisk.core.model.module.OnlineModule
import
com.topjohnwu.magisk.databinding.DiffRvItem
import
com.topjohnwu.magisk.databinding.DiffRvItem
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.
utils
.set
import
com.topjohnwu.magisk.
databinding
.set
object
InstallModule
:
DiffRvItem
<
InstallModule
>()
{
object
InstallModule
:
DiffRvItem
<
InstallModule
>()
{
override
val
layoutRes
=
R
.
layout
.
item_module_download
override
val
layoutRes
=
R
.
layout
.
item_module_download
...
...
app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt
View file @
743c7c93
...
@@ -5,19 +5,18 @@ import androidx.databinding.ObservableArrayList
...
@@ -5,19 +5,18 @@ import androidx.databinding.ObservableArrayList
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.*
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.Queryable
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.model.module.LocalModule
import
com.topjohnwu.magisk.core.model.module.LocalModule
import
com.topjohnwu.magisk.core.model.module.OnlineModule
import
com.topjohnwu.magisk.core.model.module.OnlineModule
import
com.topjohnwu.magisk.databinding.AnyDiffRvItem
import
com.topjohnwu.magisk.databinding.*
import
com.topjohnwu.magisk.databinding.RvItem
import
com.topjohnwu.magisk.events.OpenReadmeEvent
import
com.topjohnwu.magisk.events.OpenReadmeEvent
import
com.topjohnwu.magisk.events.SelectModuleEvent
import
com.topjohnwu.magisk.events.SelectModuleEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.dialog.ModuleInstallDialog
import
com.topjohnwu.magisk.events.dialog.ModuleInstallDialog
import
com.topjohnwu.magisk.ktx.addOnListChangedCallback
import
com.topjohnwu.magisk.ktx.addOnListChangedCallback
import
com.topjohnwu.magisk.ktx.reboot
import
com.topjohnwu.magisk.ktx.reboot
import
com.topjohnwu.magisk.utils.set
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
app/src/main/java/com/topjohnwu/magisk/ui/safetynet/CheckSafetyNetEvent.kt
View file @
743c7c93
...
@@ -15,8 +15,8 @@ import com.topjohnwu.magisk.di.ServiceLocator
...
@@ -15,8 +15,8 @@ import com.topjohnwu.magisk.di.ServiceLocator
import
com.topjohnwu.magisk.ktx.createClassLoader
import
com.topjohnwu.magisk.ktx.createClassLoader
import
com.topjohnwu.magisk.ktx.reflectField
import
com.topjohnwu.magisk.ktx.reflectField
import
com.topjohnwu.magisk.ktx.writeTo
import
com.topjohnwu.magisk.ktx.writeTo
import
com.topjohnwu.magisk.signing.CryptoUtils
import
com.topjohnwu.magisk.view.MagiskDialog
import
com.topjohnwu.magisk.view.MagiskDialog
import
com.topjohnwu.signing.CryptoUtils
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
dalvik.system.BaseDexClassLoader
import
dalvik.system.BaseDexClassLoader
import
dalvik.system.DexFile
import
dalvik.system.DexFile
...
...
app/src/main/java/com/topjohnwu/magisk/ui/safetynet/SafetynetViewModel.kt
View file @
743c7c93
...
@@ -4,7 +4,7 @@ import androidx.databinding.Bindable
...
@@ -4,7 +4,7 @@ import androidx.databinding.Bindable
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.
utils
.set
import
com.topjohnwu.magisk.
databinding
.set
class
SafetyNetResult
(
class
SafetyNetResult
(
val
response
:
SafetyNetResponse
?
=
null
,
val
response
:
SafetyNetResponse
?
=
null
,
...
...
app/src/main/java/com/topjohnwu/magisk/ui/settings/BaseSettingsItem.kt
View file @
743c7c93
...
@@ -8,8 +8,8 @@ import androidx.databinding.Bindable
...
@@ -8,8 +8,8 @@ import androidx.databinding.Bindable
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.databinding.ObservableRvItem
import
com.topjohnwu.magisk.databinding.ObservableRvItem
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.utils.TextHolder
import
com.topjohnwu.magisk.utils.TextHolder
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.magisk.view.MagiskDialog
import
com.topjohnwu.magisk.view.MagiskDialog
sealed
class
BaseSettingsItem
:
ObservableRvItem
()
{
sealed
class
BaseSettingsItem
:
ObservableRvItem
()
{
...
...
app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsItems.kt
View file @
743c7c93
...
@@ -21,10 +21,10 @@ import com.topjohnwu.magisk.core.utils.currentLocale
...
@@ -21,10 +21,10 @@ import com.topjohnwu.magisk.core.utils.currentLocale
import
com.topjohnwu.magisk.databinding.DialogSettingsAppNameBinding
import
com.topjohnwu.magisk.databinding.DialogSettingsAppNameBinding
import
com.topjohnwu.magisk.databinding.DialogSettingsDownloadPathBinding
import
com.topjohnwu.magisk.databinding.DialogSettingsDownloadPathBinding
import
com.topjohnwu.magisk.databinding.DialogSettingsUpdateChannelBinding
import
com.topjohnwu.magisk.databinding.DialogSettingsUpdateChannelBinding
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.asText
import
com.topjohnwu.magisk.utils.asText
import
com.topjohnwu.magisk.utils.set
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.Shell
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsViewModel.kt
View file @
743c7c93
...
@@ -9,13 +9,13 @@ import com.topjohnwu.magisk.BR
...
@@ -9,13 +9,13 @@ import com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.adapterOf
import
com.topjohnwu.magisk.arch.itemBindingOf
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.Const
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.Info
import
com.topjohnwu.magisk.core.isRunningAsStub
import
com.topjohnwu.magisk.core.isRunningAsStub
import
com.topjohnwu.magisk.core.tasks.HideAPK
import
com.topjohnwu.magisk.core.tasks.HideAPK
import
com.topjohnwu.magisk.data.database.RepoDao
import
com.topjohnwu.magisk.data.database.RepoDao
import
com.topjohnwu.magisk.databinding.adapterOf
import
com.topjohnwu.magisk.databinding.itemBindingOf
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.events.AddHomeIconEvent
import
com.topjohnwu.magisk.events.AddHomeIconEvent
import
com.topjohnwu.magisk.events.RecreateEvent
import
com.topjohnwu.magisk.events.RecreateEvent
...
...
app/src/main/java/com/topjohnwu/magisk/ui/superuser/PolicyRvItem.kt
View file @
743c7c93
...
@@ -7,7 +7,7 @@ import com.topjohnwu.magisk.R
...
@@ -7,7 +7,7 @@ import com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.core.model.su.SuPolicy
import
com.topjohnwu.magisk.core.model.su.SuPolicy
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.ObservableDiffRvItem
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.
utils
.set
import
com.topjohnwu.magisk.
databinding
.set
class
PolicyRvItem
(
class
PolicyRvItem
(
override
val
item
:
SuPolicy
,
override
val
item
:
SuPolicy
,
...
...
app/src/main/java/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt
View file @
743c7c93
...
@@ -5,15 +5,15 @@ import androidx.lifecycle.viewModelScope
...
@@ -5,15 +5,15 @@ import androidx.lifecycle.viewModelScope
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.BaseViewModel
import
com.topjohnwu.magisk.arch.adapterOf
import
com.topjohnwu.magisk.arch.diffListOf
import
com.topjohnwu.magisk.arch.itemBindingOf
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.core.Config
import
com.topjohnwu.magisk.core.magiskdb.PolicyDao
import
com.topjohnwu.magisk.core.magiskdb.PolicyDao
import
com.topjohnwu.magisk.core.model.su.SuPolicy
import
com.topjohnwu.magisk.core.model.su.SuPolicy
import
com.topjohnwu.magisk.core.utils.BiometricHelper
import
com.topjohnwu.magisk.core.utils.BiometricHelper
import
com.topjohnwu.magisk.core.utils.currentLocale
import
com.topjohnwu.magisk.core.utils.currentLocale
import
com.topjohnwu.magisk.databinding.AnyDiffRvItem
import
com.topjohnwu.magisk.databinding.AnyDiffRvItem
import
com.topjohnwu.magisk.databinding.adapterOf
import
com.topjohnwu.magisk.databinding.diffListOf
import
com.topjohnwu.magisk.databinding.itemBindingOf
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.SnackbarEvent
import
com.topjohnwu.magisk.events.dialog.BiometricEvent
import
com.topjohnwu.magisk.events.dialog.BiometricEvent
import
com.topjohnwu.magisk.events.dialog.SuperuserRevokeDialog
import
com.topjohnwu.magisk.events.dialog.SuperuserRevokeDialog
...
...
app/src/main/java/com/topjohnwu/magisk/ui/surequest/SuRequestViewModel.kt
View file @
743c7c93
...
@@ -26,13 +26,13 @@ import com.topjohnwu.magisk.core.model.su.SuPolicy.Companion.ALLOW
...
@@ -26,13 +26,13 @@ import com.topjohnwu.magisk.core.model.su.SuPolicy.Companion.ALLOW
import
com.topjohnwu.magisk.core.model.su.SuPolicy.Companion.DENY
import
com.topjohnwu.magisk.core.model.su.SuPolicy.Companion.DENY
import
com.topjohnwu.magisk.core.su.SuRequestHandler
import
com.topjohnwu.magisk.core.su.SuRequestHandler
import
com.topjohnwu.magisk.core.utils.BiometricHelper
import
com.topjohnwu.magisk.core.utils.BiometricHelper
import
com.topjohnwu.magisk.databinding.set
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.di.AppContext
import
com.topjohnwu.magisk.events.DieEvent
import
com.topjohnwu.magisk.events.DieEvent
import
com.topjohnwu.magisk.events.ShowUIEvent
import
com.topjohnwu.magisk.events.ShowUIEvent
import
com.topjohnwu.magisk.events.dialog.BiometricEvent
import
com.topjohnwu.magisk.events.dialog.BiometricEvent
import
com.topjohnwu.magisk.utils.TextHolder
import
com.topjohnwu.magisk.utils.TextHolder
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.set
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
java.util.concurrent.TimeUnit.SECONDS
import
java.util.concurrent.TimeUnit.SECONDS
...
...
app/src/main/java/com/topjohnwu/magisk/view/MagiskDialog.kt
View file @
743c7c93
...
@@ -22,12 +22,7 @@ import com.google.android.material.color.MaterialColors
...
@@ -22,12 +22,7 @@ import com.google.android.material.color.MaterialColors
import
com.google.android.material.shape.MaterialShapeDrawable
import
com.google.android.material.shape.MaterialShapeDrawable
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.arch.itemBindingOf
import
com.topjohnwu.magisk.databinding.*
import
com.topjohnwu.magisk.databinding.DiffRvItem
import
com.topjohnwu.magisk.databinding.DialogMagiskBaseBinding
import
com.topjohnwu.magisk.databinding.RvContainer
import
com.topjohnwu.magisk.utils.ObservableHost
import
com.topjohnwu.magisk.utils.set
import
me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapters
import
me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapters
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
me.tatarka.bindingcollectionadapter2.ItemBinding
...
...
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