Refactor: remove Compose prefix from Activity names

- Rename ComposeActivity to MainActivity
- Rename EditProfileComposeActivity to EditProfileActivity
- Rename NewProfileComposeActivity to NewProfileActivity
- Rename GroupsComposeActivity to GroupsActivity
- Move data models to compose/model package
- Update all references in AndroidManifest.xml and source files
This commit is contained in:
世界
2025-12-30 18:38:51 +08:00
parent 71b936ba3a
commit 778cbc6fb0
18 changed files with 45 additions and 45 deletions

View File

@@ -96,7 +96,7 @@
</activity> </activity>
<activity <activity
android:name=".compose.ComposeActivity" android:name=".compose.MainActivity"
android:exported="false" android:exported="false"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:launchMode="singleTask" android:launchMode="singleTask"
@@ -108,15 +108,15 @@
</activity> </activity>
<activity <activity
android:name="io.nekohasekai.sfa.compose.NewProfileComposeActivity" android:name="io.nekohasekai.sfa.compose.NewProfileActivity"
android:exported="false" android:exported="false"
android:theme="@style/AppTheme" /> android:theme="@style/AppTheme" />
<activity <activity
android:name="io.nekohasekai.sfa.compose.EditProfileComposeActivity" android:name="io.nekohasekai.sfa.compose.EditProfileActivity"
android:exported="false" android:exported="false"
android:theme="@style/AppTheme" /> android:theme="@style/AppTheme" />
<activity <activity
android:name="io.nekohasekai.sfa.compose.GroupsComposeActivity" android:name="io.nekohasekai.sfa.compose.GroupsActivity"
android:exported="false" android:exported="false"
android:theme="@style/AppTheme" /> android:theme="@style/AppTheme" />
<activity <activity

View File

@@ -3,14 +3,14 @@ package io.nekohasekai.sfa
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import io.nekohasekai.sfa.compose.ComposeActivity import io.nekohasekai.sfa.compose.MainActivity
class LauncherActivity : Activity() { class LauncherActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val launchIntent = val launchIntent =
Intent(this, ComposeActivity::class.java).apply { Intent(this, MainActivity::class.java).apply {
intent?.let { intent?.let {
action = it.action action = it.action
data = it.data data = it.data

View File

@@ -34,7 +34,7 @@ import io.nekohasekai.sfa.constant.Status
import io.nekohasekai.sfa.database.ProfileManager import io.nekohasekai.sfa.database.ProfileManager
import io.nekohasekai.sfa.database.Settings import io.nekohasekai.sfa.database.Settings
import io.nekohasekai.sfa.ktx.hasPermission import io.nekohasekai.sfa.ktx.hasPermission
import io.nekohasekai.sfa.compose.ComposeActivity import io.nekohasekai.sfa.compose.MainActivity
import io.nekohasekai.sfa.vendor.Vendor import io.nekohasekai.sfa.vendor.Vendor
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -397,7 +397,7 @@ class BoxService(
0, 0,
Intent( Intent(
service, service,
ComposeActivity::class.java, MainActivity::class.java,
).apply { ).apply {
setAction(Action.OPEN_URL).setData(Uri.parse(notification.openURL)) setAction(Action.OPEN_URL).setData(Uri.parse(notification.openURL))
setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)

View File

@@ -23,7 +23,7 @@ import io.nekohasekai.sfa.compose.screen.profile.EditProfileViewModel
import io.nekohasekai.sfa.compose.screen.profile.IconSelectionScreen import io.nekohasekai.sfa.compose.screen.profile.IconSelectionScreen
import io.nekohasekai.sfa.compose.theme.SFATheme import io.nekohasekai.sfa.compose.theme.SFATheme
class EditProfileComposeActivity : ComponentActivity() { class EditProfileActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()

View File

@@ -34,7 +34,7 @@ import io.nekohasekai.sfa.compose.theme.SFATheme
import io.nekohasekai.sfa.constant.Alert import io.nekohasekai.sfa.constant.Alert
import io.nekohasekai.sfa.constant.Status import io.nekohasekai.sfa.constant.Status
class GroupsComposeActivity : ComponentActivity(), ServiceConnection.Callback { class GroupsActivity : ComponentActivity(), ServiceConnection.Callback {
private val connection = ServiceConnection(this, this) private val connection = ServiceConnection(this, this)
private var currentServiceStatus by mutableStateOf(Status.Stopped) private var currentServiceStatus by mutableStateOf(Status.Stopped)

View File

@@ -105,9 +105,9 @@ import io.nekohasekai.sfa.compose.screen.dashboard.GroupsCard
import io.nekohasekai.sfa.compose.screen.connections.ConnectionDetailsScreen import io.nekohasekai.sfa.compose.screen.connections.ConnectionDetailsScreen
import io.nekohasekai.sfa.compose.screen.connections.ConnectionsScreen import io.nekohasekai.sfa.compose.screen.connections.ConnectionsScreen
import io.nekohasekai.sfa.compose.screen.connections.ConnectionsViewModel import io.nekohasekai.sfa.compose.screen.connections.ConnectionsViewModel
import io.nekohasekai.sfa.ui.connections.Connection import io.nekohasekai.sfa.compose.model.Connection
import io.nekohasekai.sfa.ui.connections.ConnectionSort import io.nekohasekai.sfa.compose.model.ConnectionSort
import io.nekohasekai.sfa.ui.connections.ConnectionStateFilter import io.nekohasekai.sfa.compose.model.ConnectionStateFilter
import io.nekohasekai.sfa.compose.screen.dashboard.groups.GroupsViewModel import io.nekohasekai.sfa.compose.screen.dashboard.groups.GroupsViewModel
import io.nekohasekai.sfa.compose.screen.log.LogViewModel import io.nekohasekai.sfa.compose.screen.log.LogViewModel
import io.nekohasekai.sfa.compose.theme.SFATheme import io.nekohasekai.sfa.compose.theme.SFATheme
@@ -123,7 +123,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
class ComposeActivity : ComponentActivity(), ServiceConnection.Callback { class MainActivity : ComponentActivity(), ServiceConnection.Callback {
private val connection = ServiceConnection(this, this) private val connection = ServiceConnection(this, this)
private lateinit var dashboardViewModel: DashboardViewModel private lateinit var dashboardViewModel: DashboardViewModel
private var currentServiceStatus by mutableStateOf(Status.Stopped) private var currentServiceStatus by mutableStateOf(Status.Stopped)
@@ -240,7 +240,7 @@ class ComposeActivity : ComponentActivity(), ServiceConnection.Callback {
} }
val intent = Intent(Application.application, Settings.serviceClass()) val intent = Intent(Application.application, Settings.serviceClass())
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
ContextCompat.startForegroundService(this@ComposeActivity, intent) ContextCompat.startForegroundService(this@MainActivity, intent)
} }
Settings.startedByUser = true Settings.startedByUser = true
} }
@@ -249,7 +249,7 @@ class ComposeActivity : ComponentActivity(), ServiceConnection.Callback {
private suspend fun prepare() = private suspend fun prepare() =
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
try { try {
val intent = VpnService.prepare(this@ComposeActivity) val intent = VpnService.prepare(this@MainActivity)
if (intent != null) { if (intent != null) {
prepareLauncher.launch(intent) prepareLauncher.launch(intent)
true true
@@ -338,9 +338,9 @@ class ComposeActivity : ComponentActivity(), ServiceConnection.Callback {
confirmButton = { confirmButton = {
TextButton(onClick = { TextButton(onClick = {
startActivity( startActivity(
Intent(this@ComposeActivity, NewProfileComposeActivity::class.java).apply { Intent(this@MainActivity, NewProfileActivity::class.java).apply {
putExtra(NewProfileComposeActivity.EXTRA_IMPORT_NAME, name) putExtra(NewProfileActivity.EXTRA_IMPORT_NAME, name)
putExtra(NewProfileComposeActivity.EXTRA_IMPORT_URL, url) putExtra(NewProfileActivity.EXTRA_IMPORT_URL, url)
}, },
) )
showImportProfileDialog = false showImportProfileDialog = false
@@ -430,7 +430,7 @@ class ComposeActivity : ComponentActivity(), ServiceConnection.Callback {
try { try {
val result = withContext(Dispatchers.IO) { val result = withContext(Dispatchers.IO) {
Vendor.downloadAndInstall( Vendor.downloadAndInstall(
this@ComposeActivity, this@MainActivity,
updateInfo!!.downloadUrl, updateInfo!!.downloadUrl,
) )
} }
@@ -525,7 +525,7 @@ class ComposeActivity : ComponentActivity(), ServiceConnection.Callback {
} }
is UiEvent.OpenUrl -> { is UiEvent.OpenUrl -> {
this@ComposeActivity.launchCustomTab(event.url) this@MainActivity.launchCustomTab(event.url)
} }
is UiEvent.RequestStartService -> { is UiEvent.RequestStartService -> {
@@ -538,7 +538,7 @@ class ComposeActivity : ComponentActivity(), ServiceConnection.Callback {
is UiEvent.EditProfile -> { is UiEvent.EditProfile -> {
val intent = val intent =
Intent(this@ComposeActivity, EditProfileComposeActivity::class.java) Intent(this@MainActivity, EditProfileActivity::class.java)
intent.putExtra("profile_id", event.profileId) intent.putExtra("profile_id", event.profileId)
startActivity(intent) startActivity(intent)
} }

View File

@@ -12,7 +12,7 @@ import androidx.compose.ui.Modifier
import io.nekohasekai.sfa.compose.screen.configuration.NewProfileScreen import io.nekohasekai.sfa.compose.screen.configuration.NewProfileScreen
import io.nekohasekai.sfa.compose.theme.SFATheme import io.nekohasekai.sfa.compose.theme.SFATheme
class NewProfileComposeActivity : ComponentActivity() { class NewProfileActivity : ComponentActivity() {
companion object { companion object {
const val EXTRA_PROFILE_ID = "profile_id" const val EXTRA_PROFILE_ID = "profile_id"
const val EXTRA_IMPORT_NAME = "import_name" const val EXTRA_IMPORT_NAME = "import_name"

View File

@@ -1,4 +1,4 @@
package io.nekohasekai.sfa.ui.connections package io.nekohasekai.sfa.compose.model
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import io.nekohasekai.libbox.Connection as LibboxConnection import io.nekohasekai.libbox.Connection as LibboxConnection

View File

@@ -1,4 +1,4 @@
package io.nekohasekai.sfa.ui.connections package io.nekohasekai.sfa.compose.model
import io.nekohasekai.libbox.Libbox import io.nekohasekai.libbox.Libbox

View File

@@ -1,4 +1,4 @@
package io.nekohasekai.sfa.ui.dashboard package io.nekohasekai.sfa.compose.model
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import io.nekohasekai.libbox.OutboundGroup import io.nekohasekai.libbox.OutboundGroup

View File

@@ -43,7 +43,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.nekohasekai.libbox.Libbox import io.nekohasekai.libbox.Libbox
import io.nekohasekai.sfa.R import io.nekohasekai.sfa.R
import io.nekohasekai.sfa.ui.connections.Connection import io.nekohasekai.sfa.compose.model.Connection
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
import java.util.Locale import java.util.Locale

View File

@@ -44,7 +44,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.nekohasekai.libbox.Libbox import io.nekohasekai.libbox.Libbox
import io.nekohasekai.sfa.R import io.nekohasekai.sfa.R
import io.nekohasekai.sfa.ui.connections.Connection import io.nekohasekai.sfa.compose.model.Connection
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
import java.util.Locale import java.util.Locale

View File

@@ -44,7 +44,7 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import io.nekohasekai.sfa.R import io.nekohasekai.sfa.R
import io.nekohasekai.sfa.constant.Status import io.nekohasekai.sfa.constant.Status
import io.nekohasekai.sfa.ui.connections.Connection import io.nekohasekai.sfa.compose.model.Connection
@Composable @Composable
fun ConnectionsScreen( fun ConnectionsScreen(

View File

@@ -7,9 +7,9 @@ import io.nekohasekai.sfa.compose.base.BaseViewModel
import io.nekohasekai.sfa.compose.base.ScreenEvent import io.nekohasekai.sfa.compose.base.ScreenEvent
import io.nekohasekai.sfa.constant.Status import io.nekohasekai.sfa.constant.Status
import io.nekohasekai.sfa.ktx.toList import io.nekohasekai.sfa.ktx.toList
import io.nekohasekai.sfa.ui.connections.Connection import io.nekohasekai.sfa.compose.model.Connection
import io.nekohasekai.sfa.ui.connections.ConnectionSort import io.nekohasekai.sfa.compose.model.ConnectionSort
import io.nekohasekai.sfa.ui.connections.ConnectionStateFilter import io.nekohasekai.sfa.compose.model.ConnectionStateFilter
import io.nekohasekai.sfa.utils.CommandClient import io.nekohasekai.sfa.utils.CommandClient
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job

View File

@@ -65,8 +65,8 @@ import io.nekohasekai.libbox.Libbox
import io.nekohasekai.sfa.R import io.nekohasekai.sfa.R
import io.nekohasekai.sfa.compose.screen.dashboard.groups.GroupsViewModel import io.nekohasekai.sfa.compose.screen.dashboard.groups.GroupsViewModel
import io.nekohasekai.sfa.constant.Status import io.nekohasekai.sfa.constant.Status
import io.nekohasekai.sfa.ui.dashboard.Group import io.nekohasekai.sfa.compose.model.Group
import io.nekohasekai.sfa.ui.dashboard.GroupItem import io.nekohasekai.sfa.compose.model.GroupItem
import io.nekohasekai.sfa.utils.CommandClient import io.nekohasekai.sfa.utils.CommandClient
@Composable @Composable

View File

@@ -60,7 +60,7 @@ import androidx.compose.ui.unit.dp
import io.nekohasekai.libbox.Libbox import io.nekohasekai.libbox.Libbox
import io.nekohasekai.libbox.ProfileContent import io.nekohasekai.libbox.ProfileContent
import io.nekohasekai.sfa.R import io.nekohasekai.sfa.R
import io.nekohasekai.sfa.compose.NewProfileComposeActivity import io.nekohasekai.sfa.compose.NewProfileActivity
import io.nekohasekai.sfa.compose.screen.configuration.ProfileImportHandler import io.nekohasekai.sfa.compose.screen.configuration.ProfileImportHandler
import io.nekohasekai.sfa.compose.screen.configuration.QRCodeDialog import io.nekohasekai.sfa.compose.screen.configuration.QRCodeDialog
import io.nekohasekai.sfa.compose.util.QRCodeGenerator import io.nekohasekai.sfa.compose.util.QRCodeGenerator
@@ -114,7 +114,7 @@ fun ProfilesCard(
ActivityResultContracts.StartActivityForResult(), ActivityResultContracts.StartActivityForResult(),
) { result -> ) { result ->
if (result.resultCode == android.app.Activity.RESULT_OK) { if (result.resultCode == android.app.Activity.RESULT_OK) {
val profileId = result.data?.getLongExtra(NewProfileComposeActivity.EXTRA_PROFILE_ID, -1L) val profileId = result.data?.getLongExtra(NewProfileActivity.EXTRA_PROFILE_ID, -1L)
if (profileId != null && profileId != -1L) { if (profileId != null && profileId != -1L) {
coroutineScope.launch { coroutineScope.launch {
val profile = val profile =
@@ -165,9 +165,9 @@ fun ProfilesCard(
is ProfileImportHandler.QRCodeParseResult.RemoteProfile -> { is ProfileImportHandler.QRCodeParseResult.RemoteProfile -> {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
val newProfileIntent = val newProfileIntent =
Intent(context, NewProfileComposeActivity::class.java).apply { Intent(context, NewProfileActivity::class.java).apply {
putExtra(NewProfileComposeActivity.EXTRA_IMPORT_NAME, parseResult.name) putExtra(NewProfileActivity.EXTRA_IMPORT_NAME, parseResult.name)
putExtra(NewProfileComposeActivity.EXTRA_IMPORT_URL, parseResult.url) putExtra(NewProfileActivity.EXTRA_IMPORT_URL, parseResult.url)
} }
newProfileLauncher.launch(newProfileIntent) newProfileLauncher.launch(newProfileIntent)
} }
@@ -419,7 +419,7 @@ fun ProfilesCard(
ListItem( ListItem(
modifier = Modifier.clickable { modifier = Modifier.clickable {
onHideAddProfileSheet() onHideAddProfileSheet()
val intent = Intent(context, NewProfileComposeActivity::class.java) val intent = Intent(context, NewProfileActivity::class.java)
newProfileLauncher.launch(intent) newProfileLauncher.launch(intent)
}, },
leadingContent = { leadingContent = {

View File

@@ -55,8 +55,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import io.nekohasekai.libbox.Libbox import io.nekohasekai.libbox.Libbox
import io.nekohasekai.sfa.R import io.nekohasekai.sfa.R
import io.nekohasekai.sfa.constant.Status import io.nekohasekai.sfa.constant.Status
import io.nekohasekai.sfa.ui.dashboard.Group import io.nekohasekai.sfa.compose.model.Group
import io.nekohasekai.sfa.ui.dashboard.GroupItem import io.nekohasekai.sfa.compose.model.GroupItem
@Composable @Composable
fun GroupsScreen( fun GroupsScreen(

View File

@@ -6,9 +6,9 @@ import io.nekohasekai.libbox.OutboundGroup
import io.nekohasekai.sfa.compose.base.BaseViewModel import io.nekohasekai.sfa.compose.base.BaseViewModel
import io.nekohasekai.sfa.compose.base.ScreenEvent import io.nekohasekai.sfa.compose.base.ScreenEvent
import io.nekohasekai.sfa.constant.Status import io.nekohasekai.sfa.constant.Status
import io.nekohasekai.sfa.ui.dashboard.Group import io.nekohasekai.sfa.compose.model.Group
import io.nekohasekai.sfa.ui.dashboard.GroupItem import io.nekohasekai.sfa.compose.model.GroupItem
import io.nekohasekai.sfa.ui.dashboard.toList import io.nekohasekai.sfa.compose.model.toList
import io.nekohasekai.sfa.utils.CommandClient import io.nekohasekai.sfa.utils.CommandClient
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job