From 53bc91c07a31ebadaf95b44864d482e21ad71a53 Mon Sep 17 00:00:00 2001 From: level <1364007522@qq.com> Date: Mon, 30 Jun 2025 15:34:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?bug=20fix=20:=E6=9B=B4=E6=96=B0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BD=BF=E7=94=A8=E6=97=B6=E9=95=BF=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=94=B110s=E6=9B=B4=E6=94=B9=E4=B8=BA60s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yingmao/clash/fragment/home/HomeFragment.kt | 17 ++++++++++++++++- .../clash/service/ConnectionService.java | 2 +- .../main/java/com/yingmao/clash/util/Utils.kt | 11 +++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt index e69062e..36498bc 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt @@ -66,6 +66,7 @@ import com.yingmao.clash.util.ActivityResultLifecycle import com.yingmao.clash.util.CommonUtils import com.yingmao.clash.util.MarqueeTextView import com.yingmao.clash.util.PayUtils +import com.yingmao.clash.util.Utils import com.yingmao.clash.util.startClashService import com.yingmao.clash.util.stopClashService import com.yingmao.clash.view.RxToast @@ -384,7 +385,12 @@ class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatcher MMKV.defaultMMKV().encode(BZYConstants.CONNECTID, dataInfo.data.id) val serviceIntent = Intent(requireContext(), ConnectionService::class.java) serviceIntent.putExtra("receiver", resultReceiver) - requireContext().startService(serviceIntent) + val serviceRunning = + Utils.isServiceRunning(requireContext(), ConnectionService::class.java) + android.util.Log.i("AppStartupStatus","data::"+serviceRunning) + if(!serviceRunning){ + requireContext().startService(serviceIntent) + } } } } @@ -994,4 +1000,13 @@ class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatcher }) dialog.show() } + override fun onDestroy() { + super.onDestroy() + val serviceRunning = + Utils.isServiceRunning(requireContext(), ConnectionService::class.java) + if(serviceRunning){ + val serviceIntent= Intent(requireContext(), ConnectionService::class.java) + requireContext().stopService(serviceIntent) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/service/ConnectionService.java b/app/src/main/java/com/yingmao/clash/service/ConnectionService.java index 432e09a..18b1cfc 100644 --- a/app/src/main/java/com/yingmao/clash/service/ConnectionService.java +++ b/app/src/main/java/com/yingmao/clash/service/ConnectionService.java @@ -13,7 +13,7 @@ import com.yingmao.clash.fragment.AccelerateViewModel; public class ConnectionService extends Service { private static final String TAG = "TimerService"; - private static final long INTERVAL_MILLIS = 10000; // 10 秒 + private static final long INTERVAL_MILLIS = 60000; // 60 秒 private Handler handler = new Handler(); private Intent intent; private Runnable runnable = new Runnable() { diff --git a/app/src/main/java/com/yingmao/clash/util/Utils.kt b/app/src/main/java/com/yingmao/clash/util/Utils.kt index bd68f1d..a55eb29 100644 --- a/app/src/main/java/com/yingmao/clash/util/Utils.kt +++ b/app/src/main/java/com/yingmao/clash/util/Utils.kt @@ -2,6 +2,7 @@ package com.yingmao.clash.util import android.Manifest import android.app.Activity +import android.app.ActivityManager import android.content.Context import android.content.pm.PackageManager import android.media.MediaDrm @@ -286,5 +287,15 @@ object Utils { v.requestLayout() } } + fun isServiceRunning(context: Context, serviceClass: Class<*>): Boolean { + val manager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + val runningServices = manager.getRunningServices(Int.MAX_VALUE) + for (service in runningServices) { + if (serviceClass.name == service.service.className) { + return true + } + } + return false + } } \ No newline at end of file From c55d282acc55e7a997db74aa2c73c4094318501b Mon Sep 17 00:00:00 2001 From: level <1364007522@qq.com> Date: Tue, 1 Jul 2025 15:02:51 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=9C=80=E6=B1=82:=20bug=20fix=20:1.=20?= =?UTF-8?q?=E5=8D=95=E7=82=B9=E7=99=BB=E5=BD=95=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=202.=20=E7=94=A8=E6=88=B7=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clash/act/MemberRechargeActivity.kt | 73 +++++++++++++++++-- .../com/yingmao/clash/act/UIMainActivity.kt | 70 +++++++++++++++++- .../clash/fragment/setting/SettingFragment.kt | 3 +- .../java/com/yingmao/clash/vm/MainAtyVM.kt | 17 +++++ app/src/main/res/values-en/strings.xml | 2 + app/src/main/res/values-zh-rHK/strings.xml | 2 + app/src/main/res/values-zh-rTW/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 8 files changed, 159 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt b/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt index d39d215..ea076fc 100644 --- a/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt @@ -30,12 +30,16 @@ import com.stripe.android.model.StripeIntent import com.tencent.mmkv.MMKV import com.yingmao.clash.BuildConfig import com.yingmao.clash.R +import com.yingmao.clash.act.UIMainActivity.Companion.isVip +import com.yingmao.clash.act.UIMainActivity.Companion.profileBinder import com.yingmao.clash.app.MainApplication import com.yingmao.clash.base.BaseActivity import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.entity.CheckLoginRsp import com.yingmao.clash.entity.PayUploadParamData import com.yingmao.clash.entity.RechargeModelEntity +import com.yingmao.clash.fragment.home.HomeFragment +import com.yingmao.clash.fragment.home.HomeFragment.Companion.clashRunning import com.yingmao.clash.fragment.recharge.RechargeViewModel import com.yingmao.clash.fragment.recharge.adapter.RechargeModelAdapter import com.yingmao.clash.fragment.recharge.adapter.VIPRechargeAdapter @@ -52,7 +56,9 @@ import com.yingmao.clash.util.ThreadUtils import com.yingmao.clash.view.RxToast import com.yingmao.clash.view.dialog.DialogDoMainChoose import com.yingmao.clash.view.dialog.RxDialogShapeLoading +import com.yingmao.clash.vm.MainAtyVM import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch @@ -77,7 +83,7 @@ class MemberRechargeActivity : BaseActivity() { private lateinit var rxDialogShapeLoading: RxDialogShapeLoading private var outTradeNo = "" private var selectedGradeID: Int = 0 - + private lateinit var mainAtyVM: MainAtyVM //stripePay 支付 private var paymentIntentClientSecret: String = "" private val stripe: Stripe by lazy { @@ -96,9 +102,11 @@ class MemberRechargeActivity : BaseActivity() { } private fun initData() { + mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java] val validPeriod = MMKV.defaultMMKV().decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD) setExpireDate(validPeriod) - if (checkExpire()) { + android.util.Log.i("AAAAAAAAAAA:","isvip::"+ isVip) + if (isVip) { userIdentity.text = resources.getString(R.string.TemporaryUser) } else { userIdentity.text = resources.getString(R.string.VIPMember) @@ -264,12 +272,19 @@ class MemberRechargeActivity : BaseActivity() { HttpReqType.GET_RECHARGE_INFO -> { Logger.d("获取充值续费信息请求成功") swipeLayout.isRefreshing = false - (httpStatus.rsp as RechargeInfoRsp).let { it -> - if (it.code != "1000") { - RxToast.error(if (it.message.isNullOrBlank()) resources.getString(R.string.FailedRechargeList) + "(${it.code})" else "${it.code}:${it.message}") - } else { - it.data?.let { rechargeInfo -> - initAdapter(rechargeInfo) + (httpStatus.rsp as RechargeInfoRsp).let { + when (it.code) { + "1088" -> { + RxToast.info(resources.getString(R.string.LoginOut)) + cleanUserInfo() + } + "1000" -> { + it.data?.let { rechargeInfo -> + initAdapter(rechargeInfo) + } + } + else -> { + RxToast.error(if (it.message.isNullOrBlank())resources.getString(R.string.FailedRechargeList)+ "(${it.code})" else "${it.code}:${it.message}") } } } @@ -640,4 +655,46 @@ class MemberRechargeActivity : BaseActivity() { finish() // 关闭当前 Activity super.onBackPressed() } + private fun cleanUserInfo() { + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_PH_TOKEN) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_CURRENT_NODE) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_SELECTED_NAME_KEY) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_VPN_UserCommand) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL) + Log.d("cleanUserInfo clashRunning==>$clashRunning") + if (clashRunning) { + HomeFragment().stopClash() + } + mainAtyVM.stopHeartBeat() + cleanProfile() + val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java) + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(intent) + finish() + } + private fun cleanProfile() { + Log.d("cleanProfile start") + GlobalScope.launch(Dispatchers.IO) { + profileBinder?.let { pm -> + pm.queryAll().forEach { profile -> + Log.d("cleanProfile go delete name==>${profile.name}, uuid==>${profile.uuid}") + pm.delete(profile.uuid) + } + } ?: let { + Log.d("profileBinder is null") + } + } + } + override fun onDestroy() { + super.onDestroy() + if(dialogDoMainChoose!=null){ + if(dialogDoMainChoose!!.isShowing){ + dialogDoMainChoose!!.dismiss() + dialogDoMainChoose=null + } + + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt b/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt index 43aa0d4..e78932f 100644 --- a/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt @@ -39,6 +39,7 @@ import com.yingmao.clash.base.BaseActivity import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.conf.Conf import com.yingmao.clash.entity.CheckLoginRsp +import com.yingmao.clash.fragment.NewAccFragment import com.yingmao.clash.fragment.home.HomeFragment import com.yingmao.clash.fragment.setting.SettingFragment import com.yingmao.clash.listener.DownLoadListener @@ -47,6 +48,7 @@ import com.yingmao.clash.net.http.HttpReqType import com.yingmao.clash.net.http.HttpStatus import com.yingmao.clash.net.http.NetService import com.yingmao.clash.net.http.entity.AppVersionCheckRsp +import com.yingmao.clash.net.http.entity.ExpensesRecordRsp import com.yingmao.clash.net.http.entity.GetActivityRsp import com.yingmao.clash.net.http.entity.PhDownloadUrlRsp import com.yingmao.clash.net.http.entity.SubscriptionRsp @@ -99,7 +101,7 @@ class UIMainActivity : BaseActivity() { private var activityDialog: ActivityViewDialog? = null private var checkPayResultDia: MaterialDialog? = null private var checkBindAccountDia: MaterialDialog? = null - + private val mPageInfo = PageInfo() companion object { //记录心跳失败次数 var HEART_BEAT_FAILURE_FREQUENCY = 0 @@ -113,6 +115,7 @@ class UIMainActivity : BaseActivity() { var hostsMem: ArrayList = ArrayList() var isSubed = false var newMainActGlo: Boolean = false + var isVip:Boolean=false } override fun onCreate(savedInstanceState: Bundle?) { @@ -131,6 +134,7 @@ class UIMainActivity : BaseActivity() { newMainActGlo = isGlobal startLog() firstEntry() + mainAtyVM.getExpensesRecord(mPageInfo) } private fun initView(savedInstanceState: Bundle?) { @@ -273,7 +277,10 @@ class UIMainActivity : BaseActivity() { } else { // RxToast.info(resources.getString(R.string.PaymentResultsStr)) } - } else { + }else if(checkLoginRsp.code == -2){ + RxToast.info(resources.getString(R.string.LoginOut)) + cleanUserInfoToLogout() + }else { RxToast.info(resources.getString(R.string.QueryFailed)) } payResultLoading?.dismiss() @@ -305,7 +312,31 @@ class UIMainActivity : BaseActivity() { } } } - + HttpReqType.EXPENSES_RECORD ->{ + if(httpStatus.rsp is ExpensesRecordRsp){ + httpStatus.rsp.let { expensesRecordRsp -> + if(expensesRecordRsp.code == "1000"){ + if(expensesRecordRsp.data != null) { + val expensesRecordList = expensesRecordRsp.data.expensesRecords + if(expensesRecordList!=null){ + if(expensesRecordList.size>0){ + android.util.Log.i("AAAAAAAA:","data::"+expensesRecordList.size) + isVip=true + }else{ + isVip=false + } + }else{ + isVip=false + } + }else{ + isVip=false + } + }else{ + isVip=false + } + } + } + } else -> { } @@ -682,4 +713,37 @@ class UIMainActivity : BaseActivity() { REQUEST_CODE_PAY_WEB_VIEW_ACTIVITY ) } + private fun cleanUserInfoToLogout() { + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_PH_TOKEN) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_CURRENT_NODE) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_SELECTED_NAME_KEY) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_VPN_UserCommand) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY) + MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL) + Log.d("cleanUserInfo clashRunning==>${clashRunning}") + if (clashRunning) { + fragments.filterIsInstance().forEach { it.stopClash() } + } + stopUploadTimer() + mainAtyVM.stopHeartBeat() + cleanProfile() + val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java) + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(intent) + finish() + } + class PageInfo { + var page = 1 + fun nextPage() { + page++ + } + + fun reset() { + page = 1 + } + + val isFirstPage: Boolean + get() = page == 1 + } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt index 8d46487..fee1466 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt @@ -58,6 +58,7 @@ import com.yingmao.clash.act.SplashActivity import com.yingmao.clash.act.SplashHelper import com.yingmao.clash.act.UIMainActivity import com.yingmao.clash.act.UIMainActivity.Companion.isSubed +import com.yingmao.clash.act.UIMainActivity.Companion.isVip import com.yingmao.clash.act.UIMainActivity.Companion.newUuid import com.yingmao.clash.act.UIMainActivity.Companion.profileBinder import com.yingmao.clash.act.UIMainActivity.Companion.subUrl @@ -257,7 +258,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc } setExpireDate() - if (checkExpire()) { + if (isVip) { userIdentity.text = requireActivity().resources.getString(R.string.TemporaryUser) } else { userIdentity.text = requireActivity().resources.getString(R.string.VIPMember) diff --git a/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt b/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt index ea22259..f8b708f 100644 --- a/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt +++ b/app/src/main/java/com/yingmao/clash/vm/MainAtyVM.kt @@ -12,11 +12,14 @@ import com.yingmao.clash.act.NewMainActivity import com.yingmao.clash.base.PublicViewMode import com.cncat.vpn.common.log.Log import com.google.gson.Gson +import com.yingmao.clash.act.PageInfo +import com.yingmao.clash.act.UIMainActivity import com.yingmao.clash.app.MainApplication import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.entity.CheckLoginRsp import com.yingmao.clash.entity.ClashNodebBean import com.yingmao.clash.entity.Node +import com.yingmao.clash.fragment.setting.SettingFragment import com.yingmao.clash.http.OkHttpBase import com.yingmao.clash.listener.AsyncCallBackListener import com.yingmao.clash.listener.DownLoadListener @@ -343,4 +346,18 @@ class MainAtyVM : PublicViewMode() { httpApi.appUpStatus(paramsToken,requestBody) } } + fun getExpensesRecord(page : UIMainActivity.PageInfo){ + val httpApi = NetService.instances.createHttps(HttpApi::class.java) + val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!! + val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!! + val userId = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_USER_ID)!! + val params = hashMapOf( + "phoneNumber" to username, + "userId" to userId, + "phToken" to phToken, + "pageno" to "${page.page}", + "pageSize" to "5", + ) + doAsync(HttpReqType.EXPENSES_RECORD){httpApi.phOrderList(params)} + } } \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 545bb7c..c456beb 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -358,4 +358,6 @@ Service Description\n Go to login Email registration Recharge Membership + It is detected that the current account is logged in on other devices. If it is not your own operation, please change the password immediately and log out of the unfamiliar device. + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 1896975..75f481d 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -349,4 +349,6 @@ 手動注册 充值會員 + 檢測到當前賬號在其他設備登錄,如非本人操作,請立即修改密碼並退出陌生設備。 + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b4fcc26..fd17ff3 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -347,4 +347,6 @@ 雲梯加速器 手動注册 充值會員 + 檢測到當前賬號在其他設備登錄,如非本人操作,請立即修改密碼並退出陌生設備。 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a36634c..64aecc4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -369,4 +369,6 @@ 手动注册 充值会员 + 检测到当前账号在其他设备登录,如非本人操作,请立即修改密码并退出陌生设备。 + \ No newline at end of file From 2f240e85a51a4c2e3af51cb052d8d318ea6c4cc6 Mon Sep 17 00:00:00 2001 From: level <1364007522@qq.com> Date: Tue, 1 Jul 2025 17:21:57 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=9C=80=E6=B1=82:=20bug=20fix=20:1.?= =?UTF-8?q?=E5=8D=95=E7=82=B9=E7=99=BB=E5=BD=95=20=E5=85=85=E5=80=BC?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A3=80=E6=B5=8B=E7=99=BB=E5=BD=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=94=B9=E5=8F=98=E4=B9=8B=E5=90=8E=E9=80=80=E5=87=BA?= =?UTF-8?q?=E5=88=B0=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=202.=E7=94=A8=E6=88=B7=E4=BD=BF=E7=94=A8=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8A=E4=BC=A0=E7=94=B110s=E6=94=B9=E4=B8=BA60s=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=203.=E5=86=85=E6=A0=B8=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=96=87=E4=BB=B6=E5=90=8E=E7=AD=89=E5=BE=85=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=8F=90=E7=A4=BA=E5=AE=8C=E6=88=90=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yingmao/clash/act/MemberRechargeActivity.kt | 6 +++--- .../java/com/yingmao/clash/act/UIMainActivity.kt | 4 ++-- .../yingmao/clash/fragment/home/HomeFragment.kt | 14 +++++++++----- .../clash/fragment/setting/SettingFragment.kt | 13 ++++++------- app/src/main/res/values-en/strings.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 8 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt b/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt index ea076fc..d39d82f 100644 --- a/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt @@ -105,11 +105,10 @@ class MemberRechargeActivity : BaseActivity() { mainAtyVM = ViewModelProvider(this)[MainAtyVM::class.java] val validPeriod = MMKV.defaultMMKV().decodeLong(BZYConstants.MMKV_KEY_VPN_VALID_PERIOD) setExpireDate(validPeriod) - android.util.Log.i("AAAAAAAAAAA:","isvip::"+ isVip) if (isVip) { - userIdentity.text = resources.getString(R.string.TemporaryUser) - } else { userIdentity.text = resources.getString(R.string.VIPMember) + } else { + userIdentity.text = resources.getString(R.string.TemporaryUser) } userIdentityNumber.text = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME) @@ -667,6 +666,7 @@ class MemberRechargeActivity : BaseActivity() { if (clashRunning) { HomeFragment().stopClash() } + UIMainActivity.isSubbed=false mainAtyVM.stopHeartBeat() cleanProfile() val intent=Intent(CommonUtils.getApp(), LoginActivity::class.java) diff --git a/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt b/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt index e78932f..1e5a611 100644 --- a/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/UIMainActivity.kt @@ -113,7 +113,6 @@ class UIMainActivity : BaseActivity() { var profileBinder: IProfileManager? = null var isUpload: Boolean = false var hostsMem: ArrayList = ArrayList() - var isSubed = false var newMainActGlo: Boolean = false var isVip:Boolean=false } @@ -320,7 +319,6 @@ class UIMainActivity : BaseActivity() { val expensesRecordList = expensesRecordRsp.data.expensesRecords if(expensesRecordList!=null){ if(expensesRecordList.size>0){ - android.util.Log.i("AAAAAAAA:","data::"+expensesRecordList.size) isVip=true }else{ isVip=false @@ -391,6 +389,7 @@ class UIMainActivity : BaseActivity() { if (clashRunning) { fragments.filterIsInstance().forEach { it.stopClash() } } + isSubbed=false stopUploadTimer() mainAtyVM.stopHeartBeat() cleanProfile() @@ -725,6 +724,7 @@ class UIMainActivity : BaseActivity() { if (clashRunning) { fragments.filterIsInstance().forEach { it.stopClash() } } + isSubbed=false stopUploadTimer() mainAtyVM.stopHeartBeat() cleanProfile() diff --git a/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt index 36498bc..1b3169b 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/home/HomeFragment.kt @@ -45,7 +45,7 @@ import com.yingmao.clash.act.ConnectionModeActivity import com.yingmao.clash.act.LoginActivity import com.yingmao.clash.act.UIMainActivity import com.yingmao.clash.act.UIMainActivity.Companion.clashBinder -import com.yingmao.clash.act.UIMainActivity.Companion.isSubed +import com.yingmao.clash.act.UIMainActivity.Companion.isSubbed import com.yingmao.clash.act.UIMainActivity.Companion.newMainActGlo import com.yingmao.clash.act.UIMainActivity.Companion.newUuid import com.yingmao.clash.act.UIMainActivity.Companion.profileBinder @@ -261,7 +261,13 @@ class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatcher } rxDialogSureCancel.show() } else { - startClash() + android.util.Log.i("AAAAAAAAAAAAA::","data isSubbed::: "+isSubbed) + if(isSubbed){ + startClash() + }else{ + RxToast.success(resources.getString(R.string.tooFast)) + } + } } clActivity.setOnClickListener { @@ -277,7 +283,7 @@ class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatcher var selected_name = - MMKV.defaultMMKV().decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, ""); + MMKV.defaultMMKV().decodeString(BZYConstants.NODE_SELECTED_NAME_KEY, "") if (!TextUtils.isEmpty(selected_name)) { if (!BuildConfig.is_tz){ setNodeNameAndImg(selected_name!!) @@ -526,14 +532,12 @@ class HomeFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatcher pm.setActive(profile) newUuid = profile.uuid.toString() - isSubed = true } ?: run { //为空的情况下选择第一个 pm.queryAll().forEach { profile -> pm.setActive(profile) newUuid = profile.uuid.toString() - isSubed = true return@forEach } } diff --git a/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt b/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt index fee1466..ca1ebd4 100644 --- a/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt +++ b/app/src/main/java/com/yingmao/clash/fragment/setting/SettingFragment.kt @@ -57,7 +57,6 @@ import com.yingmao.clash.act.ShareActivity import com.yingmao.clash.act.SplashActivity import com.yingmao.clash.act.SplashHelper import com.yingmao.clash.act.UIMainActivity -import com.yingmao.clash.act.UIMainActivity.Companion.isSubed import com.yingmao.clash.act.UIMainActivity.Companion.isVip import com.yingmao.clash.act.UIMainActivity.Companion.newUuid import com.yingmao.clash.act.UIMainActivity.Companion.profileBinder @@ -259,9 +258,9 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc setExpireDate() if (isVip) { - userIdentity.text = requireActivity().resources.getString(R.string.TemporaryUser) - } else { userIdentity.text = requireActivity().resources.getString(R.string.VIPMember) + } else { + userIdentity.text = requireActivity().resources.getString(R.string.TemporaryUser) } userIdentityNumber.text = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME) @@ -338,6 +337,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc launch(Dispatchers.IO) { profileBinder?.let { pm -> pm.queryAll().forEach { profile -> + Log.d("setting profile delete ==>${profile.name}") pm.delete(profile.uuid) } @@ -637,6 +637,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_VPN_UserCommand) MMKV.defaultMMKV().removeValueForKey(BZYConstants.NODE_All_ITEM_NAME_KEY) MMKV.defaultMMKV().removeValueForKey(BZYConstants.PROFILE_SUB_URL) + UIMainActivity.isSubbed=false Log.d("cleanUserInfo clashRunning==>${clashRunning}") if (clashRunning) { fragments.filterIsInstance().forEach { it.stopClash() } @@ -825,7 +826,6 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc delay(500) pm.update(it.uuid) newUuid = pro.uuid.toString() - isSubed = true } ?: run { val uuid: UUID = pm.create( Profile.Type.Url, Conf.getClashConfName(requireActivity().applicationContext) @@ -844,7 +844,6 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc ) } newUuid = qPro.uuid.toString() - isSubed = true // } } } @@ -904,7 +903,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc Log.d("new main actname==>" + actName) pm.setActive(it) newUuid = pro.uuid.toString(); - isSubed = true + UIMainActivity.isSubbed = true Log.d("setSub2 setActive end") finishInit() } ?: run { @@ -925,7 +924,7 @@ class SettingFragment : BaseFragment(), CoroutineScope by CoroutineScope(Dispatc ) } newUuid = qPro.uuid.toString(); - isSubed = true + UIMainActivity.isSubbed = true // } } finishInit() diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index c456beb..aa1ea77 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -359,5 +359,5 @@ Service Description\n Email registration Recharge Membership It is detected that the current account is logged in on other devices. If it is not your own operation, please change the password immediately and log out of the unfamiliar device. - + The application is initializing. Please wait for 1~2 seconds and try again. \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 75f481d..fb30da2 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -350,5 +350,5 @@ 充值會員 檢測到當前賬號在其他設備登錄,如非本人操作,請立即修改密碼並退出陌生設備。 - + 應用初始化中,請等待1~2秒後重試 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index fd17ff3..2cef652 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -348,5 +348,5 @@ 手動注册 充值會員 檢測到當前賬號在其他設備登錄,如非本人操作,請立即修改密碼並退出陌生設備。 - + 應用初始化中,請等待1~2秒後重試 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 64aecc4..3c85c12 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -370,5 +370,5 @@ 充值会员 检测到当前账号在其他设备登录,如非本人操作,请立即修改密码并退出陌生设备。 - + 应用初始化中,请等待1~2秒后重试 \ No newline at end of file