Refresh group tab titles on server changes

https://github.com/2dust/v2rayNG/issues/5765
This commit is contained in:
2dust committed 2026-06-13 15:20:06 +08:00
1 parent d06b9cb999
commit 71f94db929
2 files changed
+47 -12

No files matched your search

@@ -226,6 +226,7 @@ class GroupServerFragment : BaseFragment<FragmentGroupServerBinding>(),
private fun removeServerSub(guid: String, position: Int) {
mainViewModel.removeServer(guid)
adapter.removeServerSub(guid, position)
ownerActivity.refreshGroupTabTitles()
}
/**
@@ -76,12 +76,33 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
binding.viewPager.isUserInputEnabled = true
// setup navigation drawer
setupNavigationDrawer()
binding.fab.setOnClickListener { handleFabAction() }
binding.layoutTest.setOnClickListener { handleLayoutTestClick() }
setupGroupTab()
setupViewModel()
SubscriptionUpdater.sync()
mainViewModel.reloadServerList()
refreshGroupTabTitles(true)
checkAndRequestPermission(PermissionType.POST_NOTIFICATIONS) {
}
}
private fun setupNavigationDrawer() {
val toggle = ActionBarDrawerToggle(
this, binding.drawerLayout, binding.toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
this,
binding.drawerLayout,
binding.toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)
binding.drawerLayout.addDrawerListener(toggle)
toggle.syncState()
binding.navView.setNavigationItemSelectedListener(this)
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
@@ -93,17 +114,6 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
}
}
})
binding.fab.setOnClickListener { handleFabAction() }
binding.layoutTest.setOnClickListener { handleLayoutTestClick() }
setupGroupTab()
setupViewModel()
SubscriptionUpdater.sync()
mainViewModel.reloadServerList()
checkAndRequestPermission(PermissionType.POST_NOTIFICATIONS) {
}
}
private fun setupViewModel() {
@@ -133,6 +143,25 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
binding.tabGroup.isVisible = groups.size > 1
}
fun refreshGroupTabTitles(refreshAll: Boolean = false) {
val groupsToRefresh = if (refreshAll || mainViewModel.subscriptionId.isEmpty()) {
groupPagerAdapter.groups
} else {
groupPagerAdapter.groups.filter { it.id == mainViewModel.subscriptionId }
}
groupsToRefresh.forEach { group ->
if (group.id.isEmpty()) {
return@forEach
}
val tabIndex = groupPagerAdapter.groups.indexOfFirst { it.id == group.id }
if (tabIndex >= 0) {
val count = MmkvManager.decodeServerList(group.id).size
binding.tabGroup.getTabAt(tabIndex)?.text = "${group.remarks} ($count)"
}
}
}
private fun handleFabAction() {
applyRunningState(isLoading = true, isRunning = false)
@@ -416,6 +445,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
count > 0 -> {
toast(getString(R.string.title_import_config_count, count))
mainViewModel.reloadServerList()
refreshGroupTabTitles()
}
countSub > 0 -> setupGroupTab()
@@ -471,6 +501,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
}
if (result.configCount > 0) {
mainViewModel.reloadServerList()
refreshGroupTabTitles()
}
hideLoading()
}
@@ -500,6 +531,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
val ret = mainViewModel.removeAllServer()
launch(Dispatchers.Main) {
mainViewModel.reloadServerList()
refreshGroupTabTitles()
toast(getString(R.string.title_del_config_count, ret))
hideLoading()
}
@@ -519,6 +551,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
val ret = mainViewModel.removeDuplicateServer()
launch(Dispatchers.Main) {
mainViewModel.reloadServerList()
refreshGroupTabTitles()
toast(getString(R.string.title_del_duplicate_config_count, ret))
hideLoading()
}
@@ -538,6 +571,7 @@ class MainActivity : HelperBaseActivity(), NavigationView.OnNavigationItemSelect
val ret = mainViewModel.removeInvalidServer()
launch(Dispatchers.Main) {
mainViewModel.reloadServerList()
refreshGroupTabTitles()
toast(getString(R.string.title_del_config_count, ret))
hideLoading()
}