From 47a6623e62e31dc19cd48b6bb70b695b8db49961 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:21:36 +0800 Subject: [PATCH] Refactor: move interfaces to contracts package --- .../com/v2ray/ang/{ui => contracts}/BaseAdapterListener.kt | 2 +- .../com/v2ray/ang/{ui => contracts}/MainAdapterListener.kt | 2 +- .../com/v2ray/ang/{service => contracts}/ServiceControl.kt | 2 +- .../com/v2ray/ang/{service => contracts}/Tun2SocksControl.kt | 2 +- .../main/java/com/v2ray/ang/handler/V2RayServiceManager.kt | 2 +- .../v2ray/ang/{handler => helper}/MmkvPreferenceDataStore.kt | 5 ++++- .../app/src/main/java/com/v2ray/ang/service/TProxyService.kt | 1 + .../main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt | 1 + .../src/main/java/com/v2ray/ang/service/V2RayVpnService.kt | 2 ++ .../src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt | 1 + .../src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt | 1 + .../src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt | 1 + .../java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt | 1 + .../app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt | 2 +- .../app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt | 1 + .../main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt | 1 + .../app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt | 1 + .../app/src/main/java/com/v2ray/ang/ui/UserAssetAdapter.kt | 1 + 18 files changed, 22 insertions(+), 7 deletions(-) rename V2rayNG/app/src/main/java/com/v2ray/ang/{ui => contracts}/BaseAdapterListener.kt (97%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{ui => contracts}/MainAdapterListener.kt (89%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{service => contracts}/ServiceControl.kt (94%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{service => contracts}/Tun2SocksControl.kt (93%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{handler => helper}/MmkvPreferenceDataStore.kt (94%) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/BaseAdapterListener.kt similarity index 97% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/contracts/BaseAdapterListener.kt index 4358094d..43c5f76d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/BaseAdapterListener.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.contracts /** * A common Adapter -> host callback interface that includes common actions: edit, remove and refresh. diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainAdapterListener.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt similarity index 89% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainAdapterListener.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt index 2e097443..f2d07234 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainAdapterListener.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/MainAdapterListener.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.contracts import com.v2ray.ang.dto.ProfileItem diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/ServiceControl.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/ServiceControl.kt similarity index 94% rename from V2rayNG/app/src/main/java/com/v2ray/ang/service/ServiceControl.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/contracts/ServiceControl.kt index 085c72eb..bd9c97a4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/ServiceControl.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/ServiceControl.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.service +package com.v2ray.ang.contracts import android.app.Service diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/Tun2SocksControl.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt similarity index 93% rename from V2rayNG/app/src/main/java/com/v2ray/ang/service/Tun2SocksControl.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt index f478249a..a551cd16 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/Tun2SocksControl.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/contracts/Tun2SocksControl.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.service +package com.v2ray.ang.contracts /** * Interface that defines the control operations for tun2socks implementations. diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt index 5871365c..28c40aa0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2RayServiceManager.kt @@ -13,7 +13,7 @@ import com.v2ray.ang.R import com.v2ray.ang.enums.EConfigType import com.v2ray.ang.dto.ProfileItem import com.v2ray.ang.extension.toast -import com.v2ray.ang.service.ServiceControl +import com.v2ray.ang.contracts.ServiceControl import com.v2ray.ang.service.V2RayProxyOnlyService import com.v2ray.ang.service.V2RayVpnService import com.v2ray.ang.util.MessageUtil diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvPreferenceDataStore.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/MmkvPreferenceDataStore.kt similarity index 94% rename from V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvPreferenceDataStore.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/helper/MmkvPreferenceDataStore.kt index 2d8b26fa..4316af3e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvPreferenceDataStore.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/MmkvPreferenceDataStore.kt @@ -1,7 +1,10 @@ -package com.v2ray.ang.handler +package com.v2ray.ang.helper import androidx.preference.PreferenceDataStore import com.v2ray.ang.AppConfig +import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.handler.SettingsChangeManager +import com.v2ray.ang.handler.SettingsManager /** * PreferenceDataStore implementation that bridges AndroidX Preference framework to MMKV storage. diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt index 1050a4f4..2317e886 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.ParcelFileDescriptor import android.util.Log import com.v2ray.ang.AppConfig +import com.v2ray.ang.contracts.Tun2SocksControl import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt index 9b7bee9e..35c24bbd 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayProxyOnlyService.kt @@ -4,6 +4,7 @@ import android.app.Service import android.content.Context import android.content.Intent import android.os.IBinder +import com.v2ray.ang.contracts.ServiceControl import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.V2RayServiceManager import com.v2ray.ang.util.MyContextWrapper diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt index 0a3f509a..eae8d5fa 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayVpnService.kt @@ -18,6 +18,8 @@ import androidx.annotation.RequiresApi import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig.LOOPBACK import com.v2ray.ang.BuildConfig +import com.v2ray.ang.contracts.ServiceControl +import com.v2ray.ang.contracts.Tun2SocksControl import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.NotificationManager import com.v2ray.ang.handler.SettingsManager diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt index f837ff6d..58f8e29e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/GroupServerFragment.kt @@ -13,6 +13,7 @@ import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.ItemTouchHelper import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.contracts.MainAdapterListener import com.v2ray.ang.databinding.FragmentGroupServerBinding import com.v2ray.ang.databinding.ItemQrcodeBinding import com.v2ray.ang.enums.EConfigType diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt index f5ad4a9a..09a2211e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/MainRecyclerAdapter.kt @@ -9,6 +9,7 @@ import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.contracts.MainAdapterListener import com.v2ray.ang.databinding.ItemRecyclerFooterBinding import com.v2ray.ang.databinding.ItemRecyclerMainBinding import com.v2ray.ang.dto.ProfileItem diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt index f8017900..d78326ce 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt @@ -13,6 +13,7 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ActivityRoutingSettingBinding import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt index 3ea978b4..bdfe731c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView +import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ItemRecyclerRoutingSettingBinding import com.v2ray.ang.helper.ItemTouchHelperAdapter import com.v2ray.ang.helper.ItemTouchHelperViewHolder diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt index 4a299a8e..3e69f76c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt @@ -15,7 +15,7 @@ import com.v2ray.ang.AppConfig.VPN import com.v2ray.ang.R import com.v2ray.ang.extension.toLongEx import com.v2ray.ang.handler.MmkvManager -import com.v2ray.ang.handler.MmkvPreferenceDataStore +import com.v2ray.ang.helper.MmkvPreferenceDataStore import com.v2ray.ang.handler.SubscriptionUpdater import com.v2ray.ang.util.Utils import java.util.concurrent.TimeUnit diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt index 7dbad45f..cd7d178c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt @@ -14,6 +14,7 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ActivitySubSettingBinding import com.v2ray.ang.databinding.ItemQrcodeBinding import com.v2ray.ang.extension.toast diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt index 40d5bd09..0c482499 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt @@ -6,6 +6,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ItemRecyclerSubSettingBinding import com.v2ray.ang.helper.ItemTouchHelperAdapter import com.v2ray.ang.helper.ItemTouchHelperViewHolder diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt index 5fd5ab30..c4678f36 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt @@ -14,6 +14,7 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ActivityUserAssetBinding import com.v2ray.ang.dto.AssetUrlItem import com.v2ray.ang.extension.toast diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetAdapter.kt index ed982c21..a7fbe452 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetAdapter.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.v2ray.ang.R +import com.v2ray.ang.contracts.BaseAdapterListener import com.v2ray.ang.databinding.ItemRecyclerUserAssetBinding import com.v2ray.ang.extension.toTrafficString import com.v2ray.ang.viewmodel.UserAssetViewModel