Code clean
This commit is contained in:
1 parent
11b5784321
commit
384553e74e
26 files changed
+36
-41
No files matched your search
@@ -18,6 +18,7 @@ import com.v2ray.ang.dto.ConnectionTestResult
|
|||||||
import com.v2ray.ang.dto.OutboundTrafficStat
|
import com.v2ray.ang.dto.OutboundTrafficStat
|
||||||
import com.v2ray.ang.dto.entities.ProfileItem
|
import com.v2ray.ang.dto.entities.ProfileItem
|
||||||
import com.v2ray.ang.enums.BrowserDialerMode
|
import com.v2ray.ang.enums.BrowserDialerMode
|
||||||
|
import com.v2ray.ang.extension.delay
|
||||||
import com.v2ray.ang.extension.isNotNullEmpty
|
import com.v2ray.ang.extension.isNotNullEmpty
|
||||||
import com.v2ray.ang.handler.MmkvManager
|
import com.v2ray.ang.handler.MmkvManager
|
||||||
import com.v2ray.ang.handler.NotificationManager
|
import com.v2ray.ang.handler.NotificationManager
|
||||||
@@ -31,7 +32,6 @@ import com.v2ray.ang.util.LogUtil
|
|||||||
import com.v2ray.ang.util.Utils
|
import com.v2ray.ang.util.Utils
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import com.v2ray.ang.extension.delay
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import libv2ray.CoreCallbackHandler
|
import libv2ray.CoreCallbackHandler
|
||||||
import libv2ray.CoreController
|
import libv2ray.CoreController
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ import com.v2ray.ang.AppConfig
|
|||||||
import com.v2ray.ang.R
|
import com.v2ray.ang.R
|
||||||
import com.v2ray.ang.core.CoreServiceManager
|
import com.v2ray.ang.core.CoreServiceManager
|
||||||
import com.v2ray.ang.dto.entities.ProfileItem
|
import com.v2ray.ang.dto.entities.ProfileItem
|
||||||
|
import com.v2ray.ang.extension.delay
|
||||||
import com.v2ray.ang.extension.toSpeedString
|
import com.v2ray.ang.extension.toSpeedString
|
||||||
import com.v2ray.ang.ui.main.MainActivity
|
import com.v2ray.ang.ui.main.MainActivity
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import com.v2ray.ang.extension.delay
|
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|||||||
@@ -77,15 +77,15 @@ These rules apply to the service and service-adjacent paths listed in the reposi
|
|||||||
failed operation, and exception. Apply the root guide's secret-redaction rule.
|
failed operation, and exception. Apply the root guide's secret-redaction rule.
|
||||||
- Move deterministic lifecycle decisions into pure helpers and add a JVM regression test
|
- Move deterministic lifecycle decisions into pure helpers and add a JVM regression test
|
||||||
for each changed decision. Apply this scenario mapping to service changes:
|
for each changed decision. Apply this scenario mapping to service changes:
|
||||||
- Start dispatch, `onStartCommand`, or command deduplication: cold start and two
|
- Start dispatch, `onStartCommand`, or command deduplication: cold start and two
|
||||||
equivalent consecutive start commands.
|
equivalent consecutive start commands.
|
||||||
- Foreground setup or setup-error handling: successful setup and failure after at
|
- Foreground setup or setup-error handling: successful setup and failure after at
|
||||||
least one resource has been acquired.
|
least one resource has been acquired.
|
||||||
- Stop or teardown: normal stop, repeated stop, and stop while setup is in flight.
|
- Stop or teardown: normal stop, repeated stop, and stop while setup is in flight.
|
||||||
- Restart or network handover: successful restart/handover and a stop racing the
|
- Restart or network handover: successful restart/handover and a stop racing the
|
||||||
pending restart/handover.
|
pending restart/handover.
|
||||||
- Shared lifecycle code: run the mapped scenarios in VPN, proxy-only, and root modes.
|
- Shared lifecycle code: run the mapped scenarios in VPN, proxy-only, and root modes.
|
||||||
Mode-owned code: run them in the owning mode.
|
Mode-owned code: run them in the owning mode.
|
||||||
- Every service lifecycle scenario above requires an emulator or physical device; a JVM
|
- Every service lifecycle scenario above requires an emulator or physical device; a JVM
|
||||||
test or assembled APK is not a substitute. Record each scenario that did not run under
|
test or assembled APK is not a substitute. Record each scenario that did not run under
|
||||||
`Not run`, with the device requirement or blocker. Do not claim the service change is
|
`Not run`, with the device requirement or blocker. Do not claim the service change is
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ package com.v2ray.ang.service
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.v2ray.ang.AppConfig
|
import com.v2ray.ang.AppConfig
|
||||||
import com.v2ray.ang.contracts.IDialerService
|
import com.v2ray.ang.contracts.IDialerService
|
||||||
|
import com.v2ray.ang.extension.delay
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
import com.v2ray.ang.extension.delay
|
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import okhttp3.Call
|
import okhttp3.Call
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import android.net.Network
|
|||||||
import android.net.NetworkCapabilities
|
import android.net.NetworkCapabilities
|
||||||
import android.net.NetworkRequest
|
import android.net.NetworkRequest
|
||||||
import com.v2ray.ang.AppConfig
|
import com.v2ray.ang.AppConfig
|
||||||
|
import com.v2ray.ang.extension.delay
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import com.v2ray.ang.extension.delay
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import android.content.Intent
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import androidx.compose.material3.Icon
|
|||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.material3.Text
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
|||||||
import com.v2ray.ang.ui.compose.AppTopBar
|
import com.v2ray.ang.ui.compose.AppTopBar
|
||||||
import com.v2ray.ang.ui.compose.DeleteConfirmDialog
|
import com.v2ray.ang.ui.compose.DeleteConfirmDialog
|
||||||
import com.v2ray.ang.ui.compose.InputDialog
|
import com.v2ray.ang.ui.compose.InputDialog
|
||||||
import com.v2ray.ang.ui.compose.NavigationBarsSpacer
|
|
||||||
import com.v2ray.ang.ui.compose.InputField
|
import com.v2ray.ang.ui.compose.InputField
|
||||||
|
import com.v2ray.ang.ui.compose.NavigationBarsSpacer
|
||||||
import com.v2ray.ang.ui.compose.SelectListDialog
|
import com.v2ray.ang.ui.compose.SelectListDialog
|
||||||
import com.v2ray.ang.ui.compose.SettingsMenuItem
|
import com.v2ray.ang.ui.compose.SettingsMenuItem
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.v2ray.ang.ui.checkupdate
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import androidx.compose.animation.expandVertically
|
|||||||
import androidx.compose.animation.shrinkVertically
|
import androidx.compose.animation.shrinkVertically
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.RowScope
|
import androidx.compose.foundation.layout.RowScope
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.asPaddingValues
|
import androidx.compose.foundation.layout.asPaddingValues
|
||||||
|
|||||||
@@ -31,13 +31,12 @@ import androidx.compose.ui.unit.sp
|
|||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
|
import com.v2ray.ang.extension.delay
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.channels.BufferOverflow
|
import kotlinx.coroutines.channels.BufferOverflow
|
||||||
import com.v2ray.ang.extension.delay
|
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.flow.asSharedFlow
|
import kotlinx.coroutines.flow.asSharedFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.time.Duration.Companion.milliseconds
|
|
||||||
|
|
||||||
enum class ToastType {
|
enum class ToastType {
|
||||||
NORMAL, SUCCESS, ERROR, INFO
|
NORMAL, SUCCESS, ERROR, INFO
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class MainActivity : HelperBaseComponentActivity() {
|
|||||||
ProfileEditorResult.EXTRA_RESTART_SERVICE, false
|
ProfileEditorResult.EXTRA_RESTART_SERVICE, false
|
||||||
)
|
)
|
||||||
val selectedProfileSaved = action == ProfileEditorResult.ACTION_SAVED &&
|
val selectedProfileSaved = action == ProfileEditorResult.ACTION_SAVED &&
|
||||||
data.getStringExtra(ProfileEditorResult.EXTRA_GUID) == mainViewModel.uiState.value.selectedGuid
|
data.getStringExtra(ProfileEditorResult.EXTRA_GUID) == mainViewModel.uiState.value.selectedGuid
|
||||||
mainViewModel.onAction(MainAction.RefreshGroups)
|
mainViewModel.onAction(MainAction.RefreshGroups)
|
||||||
if (restartService || selectedProfileSaved) LauncherManager.restartService(this)
|
if (restartService || selectedProfileSaved) LauncherManager.restartService(this)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ import androidx.compose.material3.Text
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.semantics.contentDescription
|
|
||||||
import androidx.compose.ui.semantics.semantics
|
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.semantics.contentDescription
|
||||||
|
import androidx.compose.ui.semantics.semantics
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.v2ray.ang.R
|
import com.v2ray.ang.R
|
||||||
import com.v2ray.ang.ui.compose.AppDivider
|
import com.v2ray.ang.ui.compose.AppDivider
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.semantics.stateDescription
|
|
||||||
import androidx.compose.ui.semantics.semantics
|
import androidx.compose.ui.semantics.semantics
|
||||||
|
import androidx.compose.ui.semantics.stateDescription
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.LineBreak
|
import androidx.compose.ui.text.style.LineBreak
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
@@ -395,7 +395,14 @@ private fun ServerListItem(
|
|||||||
Text(row.subscriptionBadge.uppercase(), fontSize = 11.sp, fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary)
|
Text(row.subscriptionBadge.uppercase(), fontSize = 11.sp, fontWeight = FontWeight.Bold, color = MaterialTheme.colorScheme.primary)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Text(row.statistics, Modifier.weight(1f), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant, maxLines = 1, overflow = TextOverflow.Ellipsis)
|
Text(
|
||||||
|
row.statistics,
|
||||||
|
Modifier.weight(1f),
|
||||||
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
|
)
|
||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.height(6.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
|
Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.v2ray.ang.dto.TestServiceMessage
|
|||||||
import com.v2ray.ang.dto.entities.ProfileItem
|
import com.v2ray.ang.dto.entities.ProfileItem
|
||||||
import com.v2ray.ang.dto.entities.ServersCache
|
import com.v2ray.ang.dto.entities.ServersCache
|
||||||
import com.v2ray.ang.dto.entities.SubscriptionCache
|
import com.v2ray.ang.dto.entities.SubscriptionCache
|
||||||
|
import com.v2ray.ang.extension.delay
|
||||||
import com.v2ray.ang.extension.isComplexType
|
import com.v2ray.ang.extension.isComplexType
|
||||||
import com.v2ray.ang.extension.matchesPattern
|
import com.v2ray.ang.extension.matchesPattern
|
||||||
import com.v2ray.ang.extension.moveItem
|
import com.v2ray.ang.extension.moveItem
|
||||||
@@ -24,7 +25,6 @@ import kotlinx.coroutines.CoroutineDispatcher
|
|||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.currentCoroutineContext
|
import kotlinx.coroutines.currentCoroutineContext
|
||||||
import com.v2ray.ang.extension.delay
|
|
||||||
import kotlinx.coroutines.ensureActive
|
import kotlinx.coroutines.ensureActive
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ import com.v2ray.ang.ui.compose.AppDropdownMenuItems
|
|||||||
import com.v2ray.ang.ui.compose.AppListItem
|
import com.v2ray.ang.ui.compose.AppListItem
|
||||||
import com.v2ray.ang.ui.compose.AppTopBar
|
import com.v2ray.ang.ui.compose.AppTopBar
|
||||||
import com.v2ray.ang.ui.compose.ItemDivider
|
import com.v2ray.ang.ui.compose.ItemDivider
|
||||||
import com.v2ray.ang.ui.compose.colorFabActive
|
|
||||||
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
||||||
import com.v2ray.ang.ui.compose.verticalScrollbar
|
import com.v2ray.ang.ui.compose.verticalScrollbar
|
||||||
import com.v2ray.ang.util.Utils
|
import com.v2ray.ang.util.Utils
|
||||||
|
|||||||
@@ -54,12 +54,11 @@ import com.v2ray.ang.ui.base.HelperBaseComponentActivity
|
|||||||
import com.v2ray.ang.ui.compose.AppDropdownMenuItems
|
import com.v2ray.ang.ui.compose.AppDropdownMenuItems
|
||||||
import com.v2ray.ang.ui.compose.AppTopBar
|
import com.v2ray.ang.ui.compose.AppTopBar
|
||||||
import com.v2ray.ang.ui.compose.ItemDivider
|
import com.v2ray.ang.ui.compose.ItemDivider
|
||||||
|
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
||||||
import com.v2ray.ang.ui.compose.ReorderableListItem
|
import com.v2ray.ang.ui.compose.ReorderableListItem
|
||||||
import com.v2ray.ang.ui.compose.SelectListDialog
|
import com.v2ray.ang.ui.compose.SelectListDialog
|
||||||
import com.v2ray.ang.ui.compose.SettingsListItem
|
import com.v2ray.ang.ui.compose.SettingsListItem
|
||||||
import com.v2ray.ang.ui.compose.colorConfigType
|
import com.v2ray.ang.ui.compose.colorConfigType
|
||||||
import com.v2ray.ang.ui.compose.colorFabActive
|
|
||||||
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
|
||||||
import com.v2ray.ang.ui.compose.verticalScrollbar
|
import com.v2ray.ang.ui.compose.verticalScrollbar
|
||||||
import com.v2ray.ang.util.JsonUtil
|
import com.v2ray.ang.util.JsonUtil
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import android.os.Bundle
|
|||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.ColumnScope
|
import androidx.compose.foundation.layout.ColumnScope
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.consumeWindowInsets
|
import androidx.compose.foundation.layout.consumeWindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import androidx.compose.foundation.horizontalScroll
|
|||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.consumeWindowInsets
|
import androidx.compose.foundation.layout.consumeWindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package com.v2ray.ang.ui.server
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.consumeWindowInsets
|
import androidx.compose.foundation.layout.consumeWindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ import com.v2ray.ang.R
|
|||||||
import com.v2ray.ang.handler.MmkvManager
|
import com.v2ray.ang.handler.MmkvManager
|
||||||
import com.v2ray.ang.ui.base.BaseComponentActivity
|
import com.v2ray.ang.ui.base.BaseComponentActivity
|
||||||
import com.v2ray.ang.ui.compose.AppTopBar
|
import com.v2ray.ang.ui.compose.AppTopBar
|
||||||
import com.v2ray.ang.ui.compose.SettingsSwitchItem
|
|
||||||
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
||||||
|
import com.v2ray.ang.ui.compose.SettingsSwitchItem
|
||||||
import com.v2ray.ang.ui.compose.verticalScrollbar
|
import com.v2ray.ang.ui.compose.verticalScrollbar
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.v2ray.ang.ui.subscription
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.consumeWindowInsets
|
import androidx.compose.foundation.layout.consumeWindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
|||||||
@@ -47,12 +47,11 @@ import com.v2ray.ang.ui.base.BaseComponentActivity
|
|||||||
import com.v2ray.ang.ui.compose.AppTopBar
|
import com.v2ray.ang.ui.compose.AppTopBar
|
||||||
import com.v2ray.ang.ui.compose.DeleteConfirmDialog
|
import com.v2ray.ang.ui.compose.DeleteConfirmDialog
|
||||||
import com.v2ray.ang.ui.compose.ItemDivider
|
import com.v2ray.ang.ui.compose.ItemDivider
|
||||||
|
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
||||||
import com.v2ray.ang.ui.compose.QRCodeDialog
|
import com.v2ray.ang.ui.compose.QRCodeDialog
|
||||||
import com.v2ray.ang.ui.compose.ReorderableListItem
|
import com.v2ray.ang.ui.compose.ReorderableListItem
|
||||||
import com.v2ray.ang.ui.compose.SelectListDialog
|
import com.v2ray.ang.ui.compose.SelectListDialog
|
||||||
import com.v2ray.ang.ui.compose.SettingsSwitchItem
|
import com.v2ray.ang.ui.compose.SettingsSwitchItem
|
||||||
import com.v2ray.ang.ui.compose.colorFabActive
|
|
||||||
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
|
||||||
import com.v2ray.ang.ui.compose.verticalScrollbar
|
import com.v2ray.ang.ui.compose.verticalScrollbar
|
||||||
import com.v2ray.ang.util.QRCodeDecoder
|
import com.v2ray.ang.util.QRCodeDecoder
|
||||||
import com.v2ray.ang.util.Utils
|
import com.v2ray.ang.util.Utils
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ import com.v2ray.ang.ui.compose.AppDropdownMenuItems
|
|||||||
import com.v2ray.ang.ui.compose.AppTopBar
|
import com.v2ray.ang.ui.compose.AppTopBar
|
||||||
import com.v2ray.ang.ui.compose.DeleteConfirmDialog
|
import com.v2ray.ang.ui.compose.DeleteConfirmDialog
|
||||||
import com.v2ray.ang.ui.compose.ItemDivider
|
import com.v2ray.ang.ui.compose.ItemDivider
|
||||||
import com.v2ray.ang.ui.compose.SettingsListItem
|
|
||||||
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding
|
||||||
|
import com.v2ray.ang.ui.compose.SettingsListItem
|
||||||
import com.v2ray.ang.ui.compose.verticalScrollbar
|
import com.v2ray.ang.ui.compose.verticalScrollbar
|
||||||
import com.v2ray.ang.util.LogUtil
|
import com.v2ray.ang.util.LogUtil
|
||||||
import com.v2ray.ang.util.Utils
|
import com.v2ray.ang.util.Utils
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.v2ray.ang.ui.userasset
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
|||||||
@@ -179,9 +179,9 @@ object ZipUtil {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
entryBytes > 0L && (
|
entryBytes > 0L && (
|
||||||
compressedBytes == 0L ||
|
compressedBytes == 0L ||
|
||||||
entryBytes.toDouble() / compressedBytes > limits.maxCompressionRatio
|
entryBytes.toDouble() / compressedBytes > limits.maxCompressionRatio
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
throw ZipException("ZIP archive entry exceeds the compression-ratio limit")
|
throw ZipException("ZIP archive entry exceeds the compression-ratio limit")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user