From 06ce0112a99a273ca3196c2fb0c8418b809ab13b Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Wed, 20 Dec 2023 20:35:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=EF=BC=9Acode=20review?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 - .../forwarder/adapter/FrpcPagingAdapter.kt | 2 +- .../forwarder/adapter/LogsPagingAdapter.kt | 56 ------------------ .../sms/forwarder/adapter/MsgPagingAdapter.kt | 2 +- .../forwarder/adapter/RulePagingAdapter.kt | 2 +- .../forwarder/adapter/SenderPagingAdapter.kt | 2 +- .../forwarder/adapter/TaskPagingAdapter.kt | 2 +- .../forwarder/adapter/TaskSettingAdapter.kt | 2 +- .../base/broccoli/BroccoliRecyclerAdapter.kt | 1 - .../base/delegate/BaseDelegateAdapter.kt | 1 - .../forwarder/core/BaseContainerFragment.kt | 2 +- .../sms/forwarder/core/SimpleListAdapter.kt | 1 - .../core/webview/AgentWebFragment.kt | 20 ++++++- .../core/webview/MiddlewareWebViewClient.kt | 2 +- .../core/webview/WebViewInterceptDialog.kt | 1 - .../sms/forwarder/database/dao/LogsDao.kt | 11 ++-- .../sms/forwarder/database/dao/TaskDao.kt | 10 ---- .../idormy/sms/forwarder/entity/MsgInfo.kt | 2 +- .../sms/forwarder/fragment/AboutFragment.kt | 2 +- .../forwarder/fragment/SettingsFragment.kt | 2 +- .../forwarder/fragment/TasksEditFragment.kt | 2 +- .../fragment/action/SendSmsFragment.kt | 2 +- .../fragment/client/CloneFragment.kt | 1 - .../fragment/client/ContactAddFragment.kt | 2 +- .../fragment/client/LocationFragment.kt | 2 +- .../fragment/client/SmsSendFragment.kt | 2 +- .../receiver/NetworkChangeReceiver.kt | 2 +- .../forwarder/receiver/PhoneStateReceiver.kt | 2 +- .../sms/forwarder/receiver/SmsReceiver.kt | 2 +- .../server/component/LoginInterceptor.kt | 57 ------------------- .../server/controller/ConfigController.kt | 2 +- .../idormy/sms/forwarder/utils/AppUtils.kt | 30 ++++++++-- .../idormy/sms/forwarder/utils/CommonUtils.kt | 2 +- .../idormy/sms/forwarder/utils/Constants.kt | 1 + .../sms/forwarder/utils/HttpServerUtils.kt | 1 - .../idormy/sms/forwarder/utils/SendUtils.kt | 1 - .../forwarder/utils/sender/PushplusUtils.kt | 1 - .../sms/forwarder/utils/sender/SmsUtils.kt | 1 - .../sms/forwarder/utils/sender/SocketUtils.kt | 2 +- .../forwarder/utils/sender/UrlSchemeUtils.kt | 2 +- .../forwarder/utils/sender/WebhookUtils.kt | 2 +- .../update/CustomUpdateFailureListener.kt | 1 - .../sms/forwarder/widget/GuideTipsDialog.kt | 2 +- app/src/main/res/values-en/strings.xml | 2 +- 44 files changed, 77 insertions(+), 171 deletions(-) delete mode 100644 app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt delete mode 100644 app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a8aead44..5cbee035 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,7 +29,6 @@ - diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt index 34b8455d..22e10692 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt @@ -15,7 +15,7 @@ import com.idormy.sms.forwarder.databinding.AdapterFrpcsCardViewListItemBinding import com.xuexiang.xutil.resource.ResUtils.getColors import frpclib.Frpclib -@Suppress("EmptyMethod", "unused") +@Suppress("EmptyMethod") class FrpcPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt deleted file mode 100644 index e8c1c78a..00000000 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt +++ /dev/null @@ -1,56 +0,0 @@ -package com.idormy.sms.forwarder.adapter - -import android.annotation.SuppressLint -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.paging.PagingDataAdapter -import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.RecyclerView -import com.idormy.sms.forwarder.adapter.LogsPagingAdapter.MyViewHolder -import com.idormy.sms.forwarder.database.entity.LogsAndRuleAndSender -import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding -import com.xuexiang.xutil.data.DateUtils - -class LogsPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { - val binding = AdapterLogsCardViewListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return MyViewHolder(binding) - } - - override fun onBindViewHolder(holder: MyViewHolder, position: Int) { - val item = getItem(position) - if (item != null) { - holder.binding.tvFrom.text = item.msg.from - holder.binding.tvTime.text = DateUtils.getFriendlyTimeSpanByNow(item.logs.time) - holder.binding.tvContent.text = item.msg.content - //holder.binding.ivSenderImage.setImageResource(Sender.getImageId(item.sender.type)) - //holder.binding.ivStatusImage.setImageResource(item.logs.statusImageId) - holder.binding.ivSimImage.setImageResource(item.msg.simImageId) - - holder.binding.cardView.setOnClickListener { view: View? -> - itemClickListener.onItemClicked(view, item) - } - } - } - - class MyViewHolder(val binding: AdapterLogsCardViewListItemBinding) : RecyclerView.ViewHolder(binding.root) - interface OnItemClickListener { - fun onItemClicked(view: View?, item: LogsAndRuleAndSender) - fun onItemRemove(view: View?, id: Int) - } - - companion object { - var diffCallback: DiffUtil.ItemCallback = object : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: LogsAndRuleAndSender, newItem: LogsAndRuleAndSender): Boolean { - return oldItem.logs.id == newItem.logs.id - } - - @SuppressLint("DiffUtilEquals") - override fun areContentsTheSame(oldItem: LogsAndRuleAndSender, newItem: LogsAndRuleAndSender): Boolean { - return oldItem.logs === newItem.logs - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt index bba93742..b5da6bc9 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt @@ -18,7 +18,7 @@ import com.idormy.sms.forwarder.database.entity.MsgAndLogs import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding import com.xuexiang.xutil.data.DateUtils -@Suppress("EmptyMethod", "unused") +@Suppress("EmptyMethod") class MsgPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt index c8f17bca..e0a69bbc 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt @@ -16,7 +16,7 @@ import com.idormy.sms.forwarder.adapter.RulePagingAdapter.MyViewHolder import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.databinding.AdapterRulesCardViewListItemBinding -@Suppress("EmptyMethod", "unused") +@Suppress("EmptyMethod") class RulePagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt index 220935a0..a835596c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt @@ -11,7 +11,7 @@ import com.idormy.sms.forwarder.adapter.SenderPagingAdapter.MyViewHolder import com.idormy.sms.forwarder.database.entity.Sender import com.idormy.sms.forwarder.databinding.AdapterSendersCardViewListItemBinding -@Suppress("EmptyMethod", "unused") +@Suppress("EmptyMethod") class SenderPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt index c838b16d..e6b79c38 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt @@ -18,7 +18,7 @@ import com.idormy.sms.forwarder.databinding.AdapterTasksCardViewListItemBinding import com.idormy.sms.forwarder.entity.TaskSetting import com.xuexiang.xutil.data.DateUtils -@Suppress("EmptyMethod", "unused") +@Suppress("EmptyMethod") class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt index 4af529fb..9a923701 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt @@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.entity.TaskSetting -@Suppress("DEPRECATION", "unused") +@Suppress("DEPRECATION") class TaskSettingAdapter( val itemList: MutableList, private val editClickListener: (Int) -> Unit, diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt index 86ef7527..bd943c0b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt @@ -12,7 +12,6 @@ import me.samlss.broccoli.Broccoli * @author XUE * @since 2019/4/8 16:33 */ -@Suppress("unused") abstract class BroccoliRecyclerAdapter(collection: Collection?) : BaseRecyclerAdapter(collection) { /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt index af639d2d..27561ea1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt @@ -9,7 +9,6 @@ import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder * @author xuexiang * @since 2020/3/20 12:44 AM */ -@Suppress("unused") abstract class BaseDelegateAdapter : XDelegateAdapter { constructor() : super() constructor(list: Collection?) : super(list) diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt index d5b27ba3..ecb157d2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt @@ -16,7 +16,7 @@ import com.xuexiang.xui.widget.actionbar.TitleUtils * @author xuexiang * @since 2018/11/22 上午11:26 */ -@Suppress("UNUSED_PARAMETER", "unused") +@Suppress("UNUSED_PARAMETER") abstract class BaseContainerFragment : XPageContainerListFragment() { override fun initPage() { initTitle() diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt index 5e282ae5..7289f83a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt @@ -13,7 +13,6 @@ import com.xuexiang.xutil.common.StringUtils * @author xuexiang * @since 2018/12/19 上午12:19 */ -@Suppress("unused") class SimpleListAdapter(context: Context?, data: List?>?) : BaseListAdapter, SimpleListAdapter.ViewHolder>(context, data) { override fun newViewHolder(convertView: View): ViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt index 7bc03e70..9f0b01d8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/AgentWebFragment.kt @@ -11,8 +11,18 @@ import android.os.Build import android.os.Bundle import android.text.TextUtils import android.util.Log -import android.view.* -import android.webkit.* +import android.view.Gravity +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.webkit.DownloadListener +import android.webkit.WebChromeClient +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest +import android.webkit.WebResourceResponse +import android.webkit.WebView +import android.webkit.WebViewClient import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout @@ -46,7 +56,6 @@ import com.xuexiang.xutil.net.JsonUtil */ @Suppress( "unused", - "MemberVisibilityCanBePrivate", "ProtectedInFinal", "NAME_SHADOWING", "UNUSED_PARAMETER", @@ -147,6 +156,7 @@ class AgentWebFragment : Fragment(), FragmentKeyDown { if (!mAgentWeb!!.back()) { this.requireActivity().finish() } + R.id.iv_finish -> this.requireActivity().finish() R.id.iv_more -> showPoPup(v) else -> {} @@ -459,24 +469,28 @@ class AgentWebFragment : Fragment(), FragmentKeyDown { } true } + R.id.copy -> { if (mAgentWeb != null) { mAgentWeb!!.webCreator.webView.url?.let { toCopy(context, it) } } true } + R.id.default_browser -> { if (mAgentWeb != null) { mAgentWeb!!.webCreator.webView.url?.let { openBrowser(it) } } true } + R.id.share -> { if (mAgentWeb != null) { mAgentWeb!!.webCreator.webView.url?.let { shareWebUrl(it) } } true } + else -> false } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt index 6280ab5c..b0e7812c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt @@ -47,7 +47,7 @@ import java.util.Locale * * 这里主要是做去广告的工作 */ -@Suppress("UNUSED_PARAMETER", "DEPRECATION", "OVERRIDE_DEPRECATION", "unused") +@Suppress("UNUSED_PARAMETER", "DEPRECATION", "OVERRIDE_DEPRECATION") open class MiddlewareWebViewClient : MiddlewareWebClientBase() { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/WebViewInterceptDialog.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/WebViewInterceptDialog.kt index 4f1e0096..5ece954b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/WebViewInterceptDialog.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/WebViewInterceptDialog.kt @@ -19,7 +19,6 @@ import java.net.URISyntaxException * @author xuexiang * @since 2019-10-21 9:51 */ -@Suppress("DEPRECATION") class WebViewInterceptDialog : AppCompatActivity(), DialogInterface.OnDismissListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt index 884983b1..a65a87fc 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt @@ -1,7 +1,13 @@ package com.idormy.sms.forwarder.database.dao import androidx.paging.PagingSource -import androidx.room.* +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Transaction +import androidx.room.Update import com.idormy.sms.forwarder.database.entity.Logs import com.idormy.sms.forwarder.database.entity.LogsAndRuleAndSender import io.reactivex.Completable @@ -25,9 +31,6 @@ interface LogsDao { @Query("DELETE FROM Logs") fun deleteAll() - @Query("DELETE FROM Logs where time<:time") - fun deleteTimeAgo(time: Long) - @Update fun update(logs: Logs): Completable diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/TaskDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/TaskDao.kt index 8ba3d8a4..bc5fcb30 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/TaskDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/TaskDao.kt @@ -21,12 +21,6 @@ interface TaskDao { @Query("SELECT * FROM Task where id=:id") fun getOne(id: Long): Task - @Query("SELECT * FROM Task ORDER BY id DESC") - fun getAll(): List - - @Query("SELECT * FROM Task where type = 1000 ORDER BY id DESC") - fun getAllCron(): List - @Query("SELECT * FROM Task where type < 1000 ORDER BY id DESC") fun pagingSourceFixed(): PagingSource @@ -40,10 +34,6 @@ interface TaskDao { @Query("SELECT * FROM Task WHERE status = 1 AND type = :taskType") fun getByType(taskType: Int): List - //TODO:根据条件查询,不推荐使用 - @Query("SELECT * FROM Task WHERE type = :taskType AND conditions LIKE '%' || :conditionKey || '%' AND conditions LIKE '%' || :conditionValue || '%'") - fun getByCondition(taskType: String, conditionKey: String, conditionValue: String): List - @Insert fun insert(task: Task) diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt index 993ad710..462bafa0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt @@ -5,6 +5,7 @@ import android.text.TextUtils import android.util.Log import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.BatteryUtils import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.SettingUtils @@ -12,7 +13,6 @@ import com.idormy.sms.forwarder.utils.SettingUtils.Companion.enableSmsTemplate import com.idormy.sms.forwarder.utils.SettingUtils.Companion.extraDeviceMark import com.idormy.sms.forwarder.utils.SettingUtils.Companion.smsTemplate import com.idormy.sms.forwarder.utils.task.TaskUtils -import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.resource.ResUtils.getString import java.io.Serializable import java.text.SimpleDateFormat diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/AboutFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/AboutFragment.kt index 0678e2d3..cf3e69a6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/AboutFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/AboutFragment.kt @@ -10,6 +10,7 @@ import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.core.webview.AgentWebActivity import com.idormy.sms.forwarder.databinding.FragmentAboutBinding +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.CacheUtils import com.idormy.sms.forwarder.utils.CommonUtils.Companion.gotoProtocol import com.idormy.sms.forwarder.utils.CommonUtils.Companion.previewMarkdown @@ -25,7 +26,6 @@ import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xui.widget.textview.supertextview.SuperTextView -import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.file.FileUtils import frpclib.Frpclib import java.io.File diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt index 4087bdbe..add78a98 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt @@ -40,6 +40,7 @@ import com.idormy.sms.forwarder.receiver.BootCompletedReceiver import com.idormy.sms.forwarder.service.ForegroundService import com.idormy.sms.forwarder.service.LocationService import com.idormy.sms.forwarder.utils.* +import com.idormy.sms.forwarder.utils.AppUtils.getAppPackageName import com.idormy.sms.forwarder.widget.GuideTipsDialog import com.idormy.sms.forwarder.workers.LoadAppListWorker import com.jeremyliao.liveeventbus.LiveEventBus @@ -55,7 +56,6 @@ import com.xuexiang.xui.widget.picker.widget.builder.OptionsPickerBuilder import com.xuexiang.xui.widget.picker.widget.listener.OnOptionsSelectListener import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.XUtil.getPackageManager -import com.xuexiang.xutil.app.AppUtils.getAppPackageName import kotlinx.coroutines.* import java.util.* diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt index db4b212b..4f8aabdc 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt @@ -54,7 +54,7 @@ import java.util.* @Page(name = "自动任务·编辑器") -@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "EmptyMethod", "unused") +@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "EmptyMethod") class TasksEditFragment : BaseFragment(), View.OnClickListener, RecyclerViewHolder.OnItemClickListener { private val TAG: String = TasksEditFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt index ca155660..8a6e574b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/SendSmsFragment.kt @@ -41,7 +41,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xutil.XUtil @Page(name = "SendSms") -@Suppress("PrivatePropertyName", "DEPRECATION") +@Suppress("PrivatePropertyName") class SendSmsFragment : BaseFragment(), View.OnClickListener { private val TAG: String = SendSmsFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt index f737a63f..cd844c87 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt @@ -34,7 +34,6 @@ import com.xuexiang.xui.utils.CountDownButtonHelper import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog -import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.data.ConvertTools import com.xuexiang.xutil.file.FileIOUtils import com.xuexiang.xutil.file.FileUtils diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt index e8d54578..b3824705 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt @@ -24,7 +24,7 @@ import com.xuexiang.xui.utils.CountDownButtonHelper import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xutil.data.ConvertTools -@Suppress("PrivatePropertyName", "DEPRECATION") +@Suppress("PrivatePropertyName") @Page(name = "远程加话簿") class ContactAddFragment : BaseFragment(), View.OnClickListener { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt index 903f7a88..c9874ea3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt @@ -29,7 +29,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.grouplist.XUIGroupListView import com.xuexiang.xutil.data.ConvertTools -@Suppress("PrivatePropertyName", "DEPRECATION") +@Suppress("PrivatePropertyName") @Page(name = "远程找手机") class LocationFragment : BaseFragment(), View.OnClickListener { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt index 014ce8e7..2fb84325 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt @@ -25,7 +25,7 @@ import com.xuexiang.xui.utils.CountDownButtonHelper import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xutil.data.ConvertTools -@Suppress("PrivatePropertyName", "DEPRECATION") +@Suppress("PrivatePropertyName") @Page(name = "远程发短信") class SmsSendFragment : BaseFragment(), View.OnClickListener { diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt index 9134d4ac..4f160978 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt @@ -22,7 +22,7 @@ import com.idormy.sms.forwarder.utils.TaskWorker import com.idormy.sms.forwarder.utils.task.TaskUtils import com.idormy.sms.forwarder.workers.NetworkWorker -@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "unused") +@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER") class NetworkChangeReceiver : BroadcastReceiver() { private val TAG: String = NetworkChangeReceiver::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt index aa6f2faf..e84e8ce6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt @@ -8,7 +8,7 @@ import android.util.Log import com.idormy.sms.forwarder.utils.SettingUtils import java.util.Date -@Suppress("DEPRECATION", "unused") +@Suppress("DEPRECATION") abstract class PhoneStateReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt index d2bcdde0..301e44aa 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt @@ -20,7 +20,7 @@ import com.xuexiang.xrouter.utils.TextUtils import java.util.Date //短信广播 -@Suppress("PrivatePropertyName", "unused", "UNUSED_PARAMETER") +@Suppress("PrivatePropertyName", "UNUSED_PARAMETER") class SmsReceiver : BroadcastReceiver() { private var TAG = SmsReceiver::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt b/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt deleted file mode 100644 index 1a74bfa8..00000000 --- a/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt +++ /dev/null @@ -1,57 +0,0 @@ -package com.idormy.sms.forwarder.server.component - -import com.yanzhenjie.andserver.error.HttpException -import com.yanzhenjie.andserver.framework.HandlerInterceptor -import com.yanzhenjie.andserver.framework.handler.MethodHandler -import com.yanzhenjie.andserver.framework.handler.RequestHandler -import com.yanzhenjie.andserver.framework.mapping.Addition -import com.yanzhenjie.andserver.http.HttpRequest -import com.yanzhenjie.andserver.http.HttpResponse - -//@Interceptor -class LoginInterceptor : HandlerInterceptor { - override fun onIntercept( - request: HttpRequest, - response: HttpResponse, - handler: RequestHandler, - ): Boolean { - if (handler is MethodHandler) { - val methodHandler: MethodHandler = handler - val addition: Addition = methodHandler.addition - if (!isLogin(request, addition)) { - throw HttpException(401, "You are not logged in yet.") - } - } - return false - } - - private fun isNeedLogin(addition: Addition?): Boolean { - if (addition == null) { - return false - } - val stringType = addition.stringType - if (stringType.isEmpty()) { - return false - } - val booleanType = addition.booleanType - return if (booleanType.isEmpty()) { - false - } else stringType[0].equals("login", ignoreCase = true) && booleanType[0] - } - - private fun isLogin(request: HttpRequest, addition: Addition): Boolean { - if (isNeedLogin(addition)) { - val session = request.session - if (session != null) { - val o = session.getAttribute(LOGIN_ATTRIBUTE) - return o is Boolean && o - } - return false - } - return true - } - - companion object { - const val LOGIN_ATTRIBUTE = "USER.LOGIN.SIGN" - } -} \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/server/controller/ConfigController.kt b/app/src/main/java/com/idormy/sms/forwarder/server/controller/ConfigController.kt index 130fde47..addf8df1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/server/controller/ConfigController.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/server/controller/ConfigController.kt @@ -4,10 +4,10 @@ import android.util.Log import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.server.model.BaseRequest import com.idormy.sms.forwarder.server.model.ConfigData +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.SettingUtils -import com.xuexiang.xutil.app.AppUtils import com.yanzhenjie.andserver.annotation.* @Suppress("PrivatePropertyName") diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/AppUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/AppUtils.kt index 2c8d18a5..8881433d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/AppUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/AppUtils.kt @@ -49,13 +49,35 @@ object AppUtils { return appsInfo } - fun getAppVersionName(): String? { + fun getAppVersionCode(): Int { + return getAppVersionCode(App.context.packageName) + } + + private fun getAppVersionCode(packageName: String?): Int { + if (packageName.isNullOrBlank()) { + return -1 + } + return try { + val pm: PackageManager = App.context.packageManager + val pi: PackageInfo = pm.getPackageInfo(packageName, 0) + pi.versionCode + } catch (e: PackageManager.NameNotFoundException) { + e.printStackTrace() + -1 + } + } + + fun getAppPackageName(): String { + return App.context.packageName + } + + fun getAppVersionName(): String { return getAppVersionName(App.context.packageName) } - fun getAppVersionName(packageName: String): String? { + private fun getAppVersionName(packageName: String): String { if (packageName.isBlank()) { - return null + return "" } return try { val pm: PackageManager = App.context.packageManager @@ -63,7 +85,7 @@ object AppUtils { pi.versionName } catch (e: PackageManager.NameNotFoundException) { e.printStackTrace() - null + "" } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt index 7ded6364..4d5e27bf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.kt @@ -43,7 +43,7 @@ import java.util.regex.Pattern /** * 常用工具类 */ -@Suppress("RegExpRedundantEscape", "unused", "RegExpUnnecessaryNonCapturingGroup", "DEPRECATION") +@Suppress("RegExpRedundantEscape", "unused", "RegExpUnnecessaryNonCapturingGroup") class CommonUtils private constructor() { companion object { /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt index d52300f2..2366222e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Constants.kt @@ -238,6 +238,7 @@ const val TASK_ACTION_SENDSMS = 2000 const val TASK_ACTION_NOTIFICATION = 2001 const val TASK_ACTION_FRPC = 2002 const val TASK_ACTION_HTTPSERVER = 2003 +const val TASK_ACTION_CLEANER = 2004 const val SP_BATTERY_INFO = "battery_info" const val SP_BATTERY_STATUS = "battery_status" diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt index e8f6a49f..77dbe3d4 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/HttpServerUtils.kt @@ -10,7 +10,6 @@ import com.idormy.sms.forwarder.core.Core import com.idormy.sms.forwarder.entity.CloneInfo import com.idormy.sms.forwarder.entity.LocationInfo import com.idormy.sms.forwarder.server.model.BaseRequest -import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.resource.ResUtils.getString import com.yanzhenjie.andserver.error.HttpException import java.net.URLEncoder diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt index a6051933..660f766f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt @@ -25,7 +25,6 @@ import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date -@Suppress("DEPRECATION") object SendUtils { private const val TAG = "SendUtils" diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt index f2a505dc..93cfb46b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt @@ -16,7 +16,6 @@ import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xutil.resource.ResUtils.getString -@Suppress("DEPRECATION") class PushplusUtils private constructor() { companion object { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SmsUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SmsUtils.kt index 78939e50..23a54e61 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SmsUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SmsUtils.kt @@ -16,7 +16,6 @@ import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.net.NetworkUtils import com.xuexiang.xutil.resource.ResUtils.getString -@Suppress("DEPRECATION") class SmsUtils { companion object { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SocketUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SocketUtils.kt index 4fc3e553..3ea332f6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SocketUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/SocketUtils.kt @@ -8,9 +8,9 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.SocketSetting +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils -import com.xuexiang.xutil.app.AppUtils import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken import org.eclipse.paho.client.mqttv3.MqttCallbackExtended import org.eclipse.paho.client.mqttv3.MqttClient diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/UrlSchemeUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/UrlSchemeUtils.kt index baee6f06..9174ef09 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/UrlSchemeUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/UrlSchemeUtils.kt @@ -7,10 +7,10 @@ import android.util.Log import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.UrlSchemeSetting +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xutil.XUtil -import com.xuexiang.xutil.app.AppUtils import java.net.URLEncoder import java.text.SimpleDateFormat import java.util.* diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt index 7ad21592..412f4e6b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt @@ -8,13 +8,13 @@ import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.WebhookSetting +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException -import com.xuexiang.xutil.app.AppUtils import java.net.URLEncoder import java.nio.charset.StandardCharsets import java.text.SimpleDateFormat diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/update/CustomUpdateFailureListener.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/update/CustomUpdateFailureListener.kt index 848c845c..1f79d0e7 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/update/CustomUpdateFailureListener.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/update/CustomUpdateFailureListener.kt @@ -13,7 +13,6 @@ import com.xuexiang.xutil.resource.ResUtils.getString * @author xuexiang * @since 2019/4/15 上午12:01 */ -@Suppress("DEPRECATION") class CustomUpdateFailureListener @JvmOverloads constructor( /** * 是否需要错误提示 diff --git a/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt b/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt index ab32857f..19ffb5c2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt @@ -10,13 +10,13 @@ import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.http.api.ApiService.IGetService import com.idormy.sms.forwarder.core.http.callback.NoTipCallBack import com.idormy.sms.forwarder.core.http.entity.TipInfo +import com.idormy.sms.forwarder.utils.AppUtils import com.idormy.sms.forwarder.utils.SharedPreference import com.xuexiang.constant.TimeConstants import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xui.widget.dialog.BaseDialog -import com.xuexiang.xutil.app.AppUtils import com.zzhoujay.richtext.RichText /** diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 957e3cfd..770acf04 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1139,7 +1139,7 @@ Are you sure to delete this task? The task has deleted. Add Condition - Example: Below 20% battery + Example: battery level below 20% Continue to add condition Add Action Example: Disable all forwarding