Refactor UI package structure by feature
This commit is contained in:
1 parent
4b903cf5e0
commit
f6ea2df5a0
46 files changed
+130
-130
No files matched your search
@@ -11,7 +11,7 @@
|
||||
<!--suppress AndroidDomInspection -->
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScSwitchActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScSwitchActivity"
|
||||
android:targetPackage="com.v2ray.ang.fdroid" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
@@ -26,7 +26,7 @@
|
||||
<!--suppress AndroidDomInspection -->
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScScannerActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScScannerActivity"
|
||||
android:targetPackage="com.v2ray.ang.fdroid" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
@@ -41,7 +41,7 @@
|
||||
<!--suppress AndroidDomInspection -->
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScStartActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScStartActivity"
|
||||
android:targetPackage="com.v2ray.ang.fdroid" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
@@ -56,7 +56,7 @@
|
||||
<!--suppress AndroidDomInspection -->
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScStopActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScStopActivity"
|
||||
android:targetPackage="com.v2ray.ang.fdroid" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
|
||||
@@ -115,58 +115,58 @@
|
||||
android:exported="false"
|
||||
android:windowSoftInputMode="stateUnchanged|adjustResize" />
|
||||
<activity
|
||||
android:name=".ui.SettingsActivity"
|
||||
android:name=".ui.settings.SettingsActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.PerAppProxyActivity"
|
||||
android:name=".ui.perappproxy.PerAppProxyActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.AppPickerActivity"
|
||||
android:name=".ui.apppicker.AppPickerActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.ScannerActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.LogcatActivity"
|
||||
android:name=".ui.logcat.LogcatActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.RoutingSettingActivity"
|
||||
android:name=".ui.routing.RoutingSettingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.RoutingEditActivity"
|
||||
android:name=".ui.routing.RoutingEditActivity"
|
||||
android:windowSoftInputMode="stateUnchanged|adjustResize"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.SubSettingActivity"
|
||||
android:name=".ui.subscription.SubSettingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.UserAssetActivity"
|
||||
android:name=".ui.userasset.UserAssetActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.UserAssetUrlActivity"
|
||||
android:name=".ui.userasset.UserAssetUrlActivity"
|
||||
android:exported="false" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.SubEditActivity"
|
||||
android:name=".ui.subscription.SubEditActivity"
|
||||
android:windowSoftInputMode="stateUnchanged|adjustResize"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.ScScannerActivity"
|
||||
android:name=".ui.shortcut.ScScannerActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.ScSwitchActivity"
|
||||
android:name=".ui.shortcut.ScSwitchActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="false"
|
||||
android:process=":RunSoLibV2RayDaemon"
|
||||
android:theme="@style/AppThemeDayNight.NoActionBar.Translucent" />
|
||||
<activity
|
||||
android:name=".ui.ScStartActivity"
|
||||
android:name=".ui.shortcut.ScStartActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="false"
|
||||
android:process=":RunSoLibV2RayDaemon"
|
||||
android:theme="@style/AppThemeDayNight.NoActionBar.Translucent" />
|
||||
<activity
|
||||
android:name=".ui.ScStopActivity"
|
||||
android:name=".ui.shortcut.ScStopActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="false"
|
||||
android:process=":RunSoLibV2RayDaemon"
|
||||
@@ -192,10 +192,10 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.CheckUpdateActivity"
|
||||
android:name=".ui.checkupdate.CheckUpdateActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.BackupActivity"
|
||||
android:name=".ui.backup.BackupActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".ui.AboutActivity"
|
||||
@@ -292,7 +292,7 @@
|
||||
</service>
|
||||
<!-- =====================Tasker===================== -->
|
||||
<activity
|
||||
android:name=".ui.TaskerActivity"
|
||||
android:name=".ui.shortcut.TaskerActivity"
|
||||
android:exported="true"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<intent-filter>
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.v2ray.ang.compose.AppTopBar
|
||||
import com.v2ray.ang.compose.SettingsMenuItem
|
||||
import com.v2ray.ang.compose.VersionInfoBlock
|
||||
import com.v2ray.ang.core.CoreNativeManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.Utils
|
||||
|
||||
class AboutActivity : BaseComponentActivity() {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.v2ray.ang.ui
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.BitmapFactory
|
||||
import android.os.Bundle
|
||||
import android.util.Size as TargetSize
|
||||
@@ -68,7 +67,7 @@ import com.v2ray.ang.R
|
||||
import com.v2ray.ang.compose.AppTopBar
|
||||
import com.v2ray.ang.enums.PermissionType
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.QRCodeDecoder
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.v2ray.ang.R
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.extension.toastError
|
||||
import com.v2ray.ang.handler.AngConfigManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.ui.main.MainActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.apppicker
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -36,7 +36,7 @@ import com.v2ray.ang.compose.AppListItem
|
||||
import com.v2ray.ang.compose.AppTopBar
|
||||
import com.v2ray.ang.compose.verticalScrollbar
|
||||
import com.v2ray.ang.dto.AppInfo
|
||||
import com.v2ray.ang.viewmodel.AppPickerViewModel
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
|
||||
class AppPickerActivity : BaseComponentActivity() {
|
||||
|
||||
+7
-4
@@ -1,9 +1,11 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.apppicker
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import com.v2ray.ang.AppConfig
|
||||
import com.v2ray.ang.R
|
||||
import com.v2ray.ang.dto.AppInfo
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.util.AppManagerUtil
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -12,6 +14,7 @@ import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.text.Collator
|
||||
import kotlin.collections.plus
|
||||
|
||||
/**
|
||||
* ViewModel for AppPicker screen.
|
||||
@@ -45,7 +48,7 @@ class AppPickerViewModel(application: Application) : BaseViewModel(application)
|
||||
_displayedApps.value = applyFilter(currentQuery)
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e("AppPickerViewModel", "Failed to load app list", e)
|
||||
toastError(com.v2ray.ang.R.string.toast_failure)
|
||||
toastError(R.string.toast_failure)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,11 +110,11 @@ class AppPickerViewModel(application: Application) : BaseViewModel(application)
|
||||
?: context.getDrawable(android.R.drawable.sym_def_app_icon)
|
||||
?: error("No fallback drawable available")
|
||||
return AppInfo(
|
||||
appName = context.getString(com.v2ray.ang.R.string.app_picker_unknown_app),
|
||||
appName = context.getString(R.string.app_picker_unknown_app),
|
||||
packageName = AppConfig.UNIDENTIFIED_PACKAGE,
|
||||
appIcon = icon,
|
||||
isSystemApp = false,
|
||||
isSelected = 0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.backup
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
@@ -40,8 +40,8 @@ import com.v2ray.ang.dto.entities.WebDavConfig
|
||||
import com.v2ray.ang.extension.toastError
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.viewmodel.BackupViewModel
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
+6
-6
@@ -1,18 +1,18 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.backup
|
||||
|
||||
import android.app.Application
|
||||
import android.net.Uri
|
||||
import com.tencent.mmkv.MMKV
|
||||
import com.v2ray.ang.AppConfig
|
||||
import com.v2ray.ang.AppConfig.WEBDAV_BACKUP_FILE_NAME
|
||||
import com.v2ray.ang.R
|
||||
import com.v2ray.ang.dto.entities.WebDavConfig
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsChangeManager
|
||||
import com.v2ray.ang.handler.WebDavManager
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.ui.base.ViewModelEvent
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.ZipUtil
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
@@ -91,7 +91,7 @@ class BackupViewModel(application: Application) : BaseViewModel(application) {
|
||||
WebDavManager.init(config)
|
||||
|
||||
val ok = try {
|
||||
WebDavManager.uploadFile(tempFile, WEBDAV_BACKUP_FILE_NAME)
|
||||
WebDavManager.uploadFile(tempFile, AppConfig.WEBDAV_BACKUP_FILE_NAME)
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(AppConfig.TAG, "WebDAV upload error", e)
|
||||
false
|
||||
@@ -123,7 +123,7 @@ class BackupViewModel(application: Application) : BaseViewModel(application) {
|
||||
try {
|
||||
target = File(cacheDir, "download_${System.currentTimeMillis()}.zip")
|
||||
WebDavManager.init(config)
|
||||
val ok = WebDavManager.downloadFile(WEBDAV_BACKUP_FILE_NAME, target)
|
||||
val ok = WebDavManager.downloadFile(AppConfig.WEBDAV_BACKUP_FILE_NAME, target)
|
||||
if (!ok) {
|
||||
toastError(R.string.toast_failure)
|
||||
return@launchLoading
|
||||
@@ -178,4 +178,4 @@ class BackupViewModel(application: Application) : BaseViewModel(application) {
|
||||
|
||||
return count > 0
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.base
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
@@ -28,4 +28,4 @@ abstract class BaseComponentActivity : ComponentActivity() {
|
||||
|
||||
@Composable
|
||||
protected abstract fun ScreenContent()
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.base
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
@@ -7,8 +7,8 @@ import com.v2ray.ang.AngApplication
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.extension.toastError
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
@@ -113,4 +113,4 @@ abstract class BaseViewModel(application: Application) : AndroidViewModel(applic
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.base
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
@@ -86,4 +86,4 @@ abstract class HelperBaseComponentActivity : BaseComponentActivity() {
|
||||
) {
|
||||
qrCodeScanner.launch(onResult)
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,13 +1,13 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.base
|
||||
|
||||
/**
|
||||
* Base interface for ViewModel UI events.
|
||||
*/
|
||||
sealed interface ViewModelEvent
|
||||
interface ViewModelEvent
|
||||
|
||||
/**
|
||||
* Common UI events for all ViewModels.
|
||||
*/
|
||||
sealed interface BaseViewModelEvent : ViewModelEvent {
|
||||
interface BaseViewModelEvent : ViewModelEvent {
|
||||
object FinishActivity : BaseViewModelEvent
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.checkupdate
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
@@ -28,8 +28,8 @@ import com.v2ray.ang.compose.SettingsMenuItem
|
||||
import com.v2ray.ang.compose.SettingsSwitchItem
|
||||
import com.v2ray.ang.compose.VersionInfoBlock
|
||||
import com.v2ray.ang.core.CoreNativeManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.CheckUpdateViewModel
|
||||
|
||||
class CheckUpdateActivity : BaseComponentActivity() {
|
||||
|
||||
+3
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.checkupdate
|
||||
|
||||
import android.app.Application
|
||||
import com.v2ray.ang.AppConfig
|
||||
@@ -6,6 +6,7 @@ import com.v2ray.ang.R
|
||||
import com.v2ray.ang.dto.CheckUpdateResult
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.UpdateCheckerManager
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
@@ -54,4 +55,4 @@ class CheckUpdateViewModel(application: Application) : BaseViewModel(application
|
||||
fun dismissUpdateDialog() {
|
||||
_showUpdateDialog.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-4
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.logcat
|
||||
|
||||
import android.content.ClipData
|
||||
import android.content.Intent
|
||||
@@ -43,11 +43,9 @@ import com.v2ray.ang.compose.AppTopBar
|
||||
import com.v2ray.ang.compose.LocalAppSnackbar
|
||||
import com.v2ray.ang.compose.verticalScrollbar
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.LogcatViewModel
|
||||
import kotlinx.coroutines.Delay
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.logcat
|
||||
|
||||
import android.app.Application
|
||||
import com.v2ray.ang.AppConfig
|
||||
import com.v2ray.ang.AppConfig.ANG_PACKAGE
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
@@ -25,7 +25,7 @@ class LogcatViewModel(application: Application) : BaseViewModel(application) {
|
||||
lst.add("-v")
|
||||
lst.add("time")
|
||||
lst.add("-s")
|
||||
lst.add("GoLog,${ANG_PACKAGE},AndroidRuntime,System.err")
|
||||
lst.add("GoLog,${AppConfig.ANG_PACKAGE},AndroidRuntime,System.err")
|
||||
val process = Runtime.getRuntime().exec(lst.toTypedArray())
|
||||
val allText = process.inputStream.bufferedReader().use { it.readLines() }.reversed()
|
||||
|
||||
@@ -65,4 +65,4 @@ class LogcatViewModel(application: Application) : BaseViewModel(application) {
|
||||
logsetsAll.filter { it.contains(currentFilter) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,15 +25,15 @@ import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsChangeManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.AboutActivity
|
||||
import com.v2ray.ang.ui.BackupActivity
|
||||
import com.v2ray.ang.ui.CheckUpdateActivity
|
||||
import com.v2ray.ang.ui.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.ui.LogcatActivity
|
||||
import com.v2ray.ang.ui.PerAppProxyActivity
|
||||
import com.v2ray.ang.ui.RoutingSettingActivity
|
||||
import com.v2ray.ang.ui.SettingsActivity
|
||||
import com.v2ray.ang.ui.SubSettingActivity
|
||||
import com.v2ray.ang.ui.UserAssetActivity
|
||||
import com.v2ray.ang.ui.backup.BackupActivity
|
||||
import com.v2ray.ang.ui.checkupdate.CheckUpdateActivity
|
||||
import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.ui.logcat.LogcatActivity
|
||||
import com.v2ray.ang.ui.perappproxy.PerAppProxyActivity
|
||||
import com.v2ray.ang.ui.routing.RoutingSettingActivity
|
||||
import com.v2ray.ang.ui.settings.SettingsActivity
|
||||
import com.v2ray.ang.ui.subscription.SubSettingActivity
|
||||
import com.v2ray.ang.ui.userasset.UserAssetActivity
|
||||
import com.v2ray.ang.ui.server.ProfileEditorResult
|
||||
import com.v2ray.ang.ui.server.ServerCustomConfigActivity
|
||||
import com.v2ray.ang.ui.server.ServerGroupActivity
|
||||
@@ -48,7 +48,6 @@ import com.v2ray.ang.ui.server.ServerVmessActivity
|
||||
import com.v2ray.ang.ui.server.ServerWireguardActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.MainViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
@@ -19,7 +19,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.v2ray.ang.compose.colorFabActive
|
||||
import com.v2ray.ang.dto.GroupMapItem
|
||||
import com.v2ray.ang.dto.entities.ServersCache
|
||||
import com.v2ray.ang.viewmodel.MainViewModel
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
@Composable
|
||||
|
||||
@@ -31,7 +31,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.v2ray.ang.compose.LocalDarkTheme
|
||||
import com.v2ray.ang.compose.QRCodeDialog
|
||||
import com.v2ray.ang.dto.entities.ProfileItem
|
||||
import com.v2ray.ang.viewmodel.MainViewModel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -56,7 +56,6 @@ import com.v2ray.ang.extension.isComplexType
|
||||
import com.v2ray.ang.extension.nullIfBlank
|
||||
import com.v2ray.ang.handler.AngConfigManager
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.viewmodel.MainViewModel
|
||||
import sh.calvin.reorderable.ReorderableItem
|
||||
import sh.calvin.reorderable.rememberReorderableLazyGridState
|
||||
import sh.calvin.reorderable.rememberReorderableLazyListState
|
||||
|
||||
+3
-6
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.main
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.ViewModel
|
||||
@@ -14,10 +14,7 @@ import com.v2ray.ang.dto.entities.ServersCache
|
||||
import com.v2ray.ang.dto.entities.SubscriptionCache
|
||||
import com.v2ray.ang.extension.isComplexType
|
||||
import com.v2ray.ang.extension.matchesPattern
|
||||
import com.v2ray.ang.ui.main.MainAction
|
||||
import com.v2ray.ang.ui.main.MainDataSource
|
||||
import com.v2ray.ang.ui.main.MainUiState
|
||||
import com.v2ray.ang.ui.main.MainServiceEvent
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
@@ -785,4 +782,4 @@ class MainViewModel(
|
||||
throw IllegalArgumentException("Unknown ViewModel class")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.perappproxy
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
@@ -49,8 +49,8 @@ import com.v2ray.ang.compose.verticalScrollbar
|
||||
import com.v2ray.ang.dto.AppInfo
|
||||
import com.v2ray.ang.extension.toastInfo
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.PerAppProxyViewModel
|
||||
|
||||
class PerAppProxyActivity : BaseComponentActivity() {
|
||||
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.perappproxy
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import com.v2ray.ang.AppConfig
|
||||
import com.v2ray.ang.AppConfig.ANG_PACKAGE
|
||||
import com.v2ray.ang.dto.AppInfo
|
||||
import com.v2ray.ang.dto.UrlContentRequest
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsChangeManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.util.AppManagerUtil
|
||||
import com.v2ray.ang.util.HttpUtil
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
@@ -132,7 +132,7 @@ class PerAppProxyViewModel(application: Application) : BaseViewModel(application
|
||||
appsAll = apps
|
||||
_displayedApps.value = apps
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(ANG_PACKAGE, "Error loading apps", e)
|
||||
LogUtil.e(AppConfig.ANG_PACKAGE, "Error loading apps", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -268,4 +268,4 @@ class PerAppProxyViewModel(application: Application) : BaseViewModel(application
|
||||
setPerAppProxyEnabled(true)
|
||||
SettingsChangeManager.makeRestartService()
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.routing
|
||||
|
||||
import android.app.Activity
|
||||
import android.os.Bundle
|
||||
@@ -16,7 +16,6 @@ import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.ScaffoldDefaults
|
||||
import androidx.compose.material3.Text
|
||||
@@ -46,6 +45,8 @@ import com.v2ray.ang.extension.nullIfBlank
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.apppicker.AppPickerActivity
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.routing
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
@@ -58,10 +58,10 @@ import com.v2ray.ang.extension.toastError
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.util.JsonUtil
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.RoutingSettingsViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
+3
-2
@@ -1,9 +1,10 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.routing
|
||||
|
||||
import android.app.Application
|
||||
import com.v2ray.ang.dto.entities.RulesetItem
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
@@ -48,4 +49,4 @@ class RoutingSettingsViewModel(application: Application) : BaseViewModel(applica
|
||||
_rulesetsFlow.value = rulesets.toList()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,7 @@ import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.AngConfigManager
|
||||
import com.v2ray.ang.handler.CertificateFingerprintManager
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.BaseComponentActivity
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.JsonUtil
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
||||
@@ -49,7 +49,7 @@ import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.AngConfigManager
|
||||
import com.v2ray.ang.handler.CertificateFingerprintManager
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.BaseComponentActivity
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.JsonUtil
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -67,7 +67,7 @@ import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.fmt.CustomFmt
|
||||
import com.v2ray.ang.handler.AngConfigManager
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.BaseComponentActivity
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ import com.v2ray.ang.extension.isNotNullEmpty
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.BaseComponentActivity
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
|
||||
class ServerGroupActivity : BaseComponentActivity() {
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.BaseComponentActivity
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import sh.calvin.reorderable.ReorderableItem
|
||||
import sh.calvin.reorderable.rememberReorderableLazyListState
|
||||
|
||||
|
||||
+2
-3
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
@@ -16,7 +16,6 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringArrayResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
@@ -36,8 +35,8 @@ import com.v2ray.ang.handler.MmkvManager.rememberMmkvBool
|
||||
import com.v2ray.ang.handler.MmkvManager.rememberMmkvString
|
||||
import com.v2ray.ang.handler.SettingsChangeManager
|
||||
import com.v2ray.ang.root.RootManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.SettingsViewModel
|
||||
|
||||
class SettingsActivity : BaseComponentActivity() {
|
||||
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.settings
|
||||
|
||||
import android.app.Application
|
||||
import com.v2ray.ang.AppConfig
|
||||
import com.v2ray.ang.R
|
||||
import com.v2ray.ang.root.RootManager
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class SettingsViewModel(application: Application) : BaseViewModel(application) {
|
||||
@@ -56,4 +56,4 @@ class SettingsViewModel(application: Application) : BaseViewModel(application) {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.shortcut
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
@@ -8,6 +8,7 @@ import com.v2ray.ang.R
|
||||
import com.v2ray.ang.extension.toastError
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.AngConfigManager
|
||||
import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.ui.main.MainActivity
|
||||
|
||||
class ScScannerActivity : HelperBaseComponentActivity() {
|
||||
@@ -39,4 +40,4 @@ class ScScannerActivity : HelperBaseComponentActivity() {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.shortcut
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import com.v2ray.ang.core.CoreServiceManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
|
||||
class ScStartActivity : BaseComponentActivity() {
|
||||
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.shortcut
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import com.v2ray.ang.core.CoreServiceManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
|
||||
class ScStopActivity : BaseComponentActivity() {
|
||||
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.shortcut
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import com.v2ray.ang.core.CoreServiceManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
|
||||
class ScSwitchActivity : BaseComponentActivity() {
|
||||
|
||||
+2
-2
@@ -1,9 +1,8 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.shortcut
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
@@ -36,6 +35,7 @@ import com.v2ray.ang.compose.AppTopBar
|
||||
import com.v2ray.ang.compose.SettingsSwitchItem
|
||||
import com.v2ray.ang.compose.verticalScrollbar
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
|
||||
class TaskerActivity : BaseComponentActivity() {
|
||||
+2
-3
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.subscription
|
||||
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
@@ -11,7 +11,6 @@ import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.ScaffoldDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
@@ -20,7 +19,6 @@ import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
@@ -42,6 +40,7 @@ import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsChangeManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.handler.SubscriptionUpdater
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.Utils
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
+5
-5
@@ -1,6 +1,7 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.subscription
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.foundation.layout.Column
|
||||
@@ -10,7 +11,6 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
@@ -52,9 +52,9 @@ import com.v2ray.ang.compose.verticalScrollbar
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.MmkvManager.rememberMmkvBool
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.QRCodeDecoder
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.SubscriptionsViewModel
|
||||
import sh.calvin.reorderable.ReorderableItem
|
||||
import sh.calvin.reorderable.rememberReorderableLazyListState
|
||||
|
||||
@@ -107,7 +107,7 @@ fun SubSettingScreen(
|
||||
onSubUpdate: () -> Unit,
|
||||
onEditSub: (String) -> Unit,
|
||||
onRemoveSub: (String) -> Unit,
|
||||
onShareQRCode: (String) -> android.graphics.Bitmap?,
|
||||
onShareQRCode: (String) -> Bitmap?,
|
||||
onShareClipboard: (String) -> Unit,
|
||||
shareSubMethodEntries: List<String>
|
||||
) {
|
||||
@@ -117,7 +117,7 @@ fun SubSettingScreen(
|
||||
val confirmRemove = MmkvManager.decodeSettingsBool(AppConfig.PREF_CONFIRM_REMOVE, false)
|
||||
|
||||
var shareTarget by remember { mutableStateOf<Pair<String, String>?>(null) }
|
||||
var showQRCodeBitmap by remember { mutableStateOf<android.graphics.Bitmap?>(null) }
|
||||
var showQRCodeBitmap by remember { mutableStateOf<Bitmap?>(null) }
|
||||
|
||||
val lazyListState = rememberLazyListState()
|
||||
val reorderableState = rememberReorderableLazyListState(lazyListState) { from, to ->
|
||||
+3
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.subscription
|
||||
|
||||
import android.app.Application
|
||||
import com.v2ray.ang.R
|
||||
@@ -8,6 +8,7 @@ import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsChangeManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.handler.SubscriptionUpdater
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
@@ -62,4 +63,4 @@ class SubscriptionsViewModel(application: Application) : BaseViewModel(applicati
|
||||
|
||||
toast(R.string.subscription_updater_job_tips)
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-3
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.userasset
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
@@ -48,7 +48,6 @@ import com.v2ray.ang.R
|
||||
import com.v2ray.ang.compose.AppDivider
|
||||
import com.v2ray.ang.compose.AppTopBar
|
||||
import com.v2ray.ang.compose.ConfirmDialog
|
||||
import com.v2ray.ang.compose.SelectListDialog
|
||||
import com.v2ray.ang.compose.SettingsListItem
|
||||
import com.v2ray.ang.compose.verticalScrollbar
|
||||
import com.v2ray.ang.dto.entities.AssetUrlCache
|
||||
@@ -59,9 +58,9 @@ import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.extension.toTrafficString
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.handler.SettingsManager
|
||||
import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.Utils
|
||||
import com.v2ray.ang.viewmodel.UserAssetViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
+2
-3
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.ui
|
||||
package com.v2ray.ang.ui.userasset
|
||||
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
@@ -7,10 +7,8 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.ScaffoldDefaults
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
@@ -29,6 +27,7 @@ import com.v2ray.ang.dto.entities.AssetUrlItem
|
||||
import com.v2ray.ang.extension.toast
|
||||
import com.v2ray.ang.extension.toastSuccess
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.Utils
|
||||
import java.io.File
|
||||
+3
-2
@@ -1,4 +1,4 @@
|
||||
package com.v2ray.ang.viewmodel
|
||||
package com.v2ray.ang.ui.userasset
|
||||
|
||||
import android.app.Application
|
||||
import com.v2ray.ang.AppConfig
|
||||
@@ -7,6 +7,7 @@ import com.v2ray.ang.dto.entities.AssetUrlCache
|
||||
import com.v2ray.ang.dto.entities.AssetUrlItem
|
||||
import com.v2ray.ang.extension.concatUrl
|
||||
import com.v2ray.ang.handler.MmkvManager
|
||||
import com.v2ray.ang.ui.base.BaseViewModel
|
||||
import com.v2ray.ang.util.HttpUtil
|
||||
import com.v2ray.ang.util.LogUtil
|
||||
import com.v2ray.ang.util.Utils
|
||||
@@ -126,4 +127,4 @@ class UserAssetViewModel(application: Application) : BaseViewModel(application)
|
||||
val failureCount: Int,
|
||||
val failedAssets: List<String>
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScSwitchActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScSwitchActivity"
|
||||
android:targetPackage="com.v2ray.ang" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScScannerActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScScannerActivity"
|
||||
android:targetPackage="com.v2ray.ang" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScStartActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScStartActivity"
|
||||
android:targetPackage="com.v2ray.ang" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="com.v2ray.ang.ui.ScStopActivity"
|
||||
android:targetClass="com.v2ray.ang.ui.shortcut.ScStopActivity"
|
||||
android:targetPackage="com.v2ray.ang" />
|
||||
<categories android:name="android.shortcut.conversation" />
|
||||
</shortcut>
|
||||
|
||||
Reference in new issue
Block a user