新增:主动控制·客户端增加服务地址历史记录(测试接口通过后自动加入)

This commit is contained in:
pppscn 2022-06-16 16:00:34 +08:00
parent 04207e0911
commit b74beba37c
6 changed files with 66 additions and 0 deletions

View File

@ -32,8 +32,11 @@ import com.xuexiang.xui.utils.DensityUtils
import com.xuexiang.xui.utils.ResUtils
import com.xuexiang.xui.utils.WidgetUtils
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.XUtil
@Suppress("PrivatePropertyName", "PropertyName")
@Page(name = "主动控制·客户端")
class ClientFragment : BaseFragment<FragmentClientBinding?>(),
@ -43,6 +46,7 @@ class ClientFragment : BaseFragment<FragmentClientBinding?>(),
val TAG: String = ClientFragment::class.java.simpleName
private var appContext: App? = null
private var serverConfig: ConfigData? = null
private var serverHistory: MutableMap<String, String> = mutableMapOf()
private var mCountDownHelper: CountDownButtonHelper? = null
override fun initViews() {
@ -65,6 +69,12 @@ class ClientFragment : BaseFragment<FragmentClientBinding?>(),
widgetItemAdapter.setOnItemClickListener(this)
binding!!.recyclerView.adapter = widgetItemAdapter
//取出历史记录
val history = HttpServerUtils.serverHistory
if (!TextUtils.isEmpty(history)) {
serverHistory = Gson().fromJson(history, object : TypeToken<MutableMap<String, String>>() {}.type)
}
if (CommonUtils.checkUrl(HttpServerUtils.serverAddress)) queryConfig(false)
}
@ -113,12 +123,39 @@ class ClientFragment : BaseFragment<FragmentClientBinding?>(),
}
})
binding!!.btnServerHistory.setOnClickListener(this)
binding!!.btnServerTest.setOnClickListener(this)
}
@SingleClick
override fun onClick(v: View) {
when (v.id) {
R.id.btn_server_history -> {
if (serverHistory.isEmpty()) {
XToastUtils.warning(getString(R.string.no_server_history))
return
}
Log.d(TAG, "serverHistory = $serverHistory")
MaterialDialog.Builder(context!!)
.title(R.string.server_history)
.items(serverHistory.keys)
.itemsCallbackSingleChoice(0) { _: MaterialDialog?, _: View?, _: Int, text: CharSequence ->
//XToastUtils.info("$which: $text")
binding!!.etServerAddress.setText(text)
binding!!.etSignKey.setText(serverHistory[text])
true // allow selection
}
.positiveText(R.string.select)
.negativeText(R.string.cancel)
.neutralText(R.string.clear_history)
.neutralColor(ResUtils.getColors(R.color.red))
.onNeutral { _: MaterialDialog?, _: DialogAction? ->
serverHistory.clear()
HttpServerUtils.serverHistory = ""
}
.show()
}
R.id.btn_server_test -> {
if (!CommonUtils.checkUrl(HttpServerUtils.serverAddress)) {
XToastUtils.error(getString(R.string.invalid_service_address))
@ -202,6 +239,9 @@ class ClientFragment : BaseFragment<FragmentClientBinding?>(),
if (resp.code == 200) {
serverConfig = resp.data!!
if (needToast) XToastUtils.success(ResUtils.getString(R.string.request_succeeded))
//添加到历史记录
serverHistory[HttpServerUtils.serverAddress.toString()] = HttpServerUtils.clientSignKey ?: ""
HttpServerUtils.serverHistory = Gson().toJson(serverHistory)
} else {
if (needToast) XToastUtils.error(ResUtils.getString(R.string.request_failed) + resp.msg)
}

View File

@ -237,6 +237,7 @@ const val SP_ENABLE_API_CALL_QUERY = "enable_api_call_query"
const val SP_ENABLE_API_CONTACT_QUERY = "enable_api_contact_query"
const val SP_ENABLE_API_BATTERY_QUERY = "enable_api_battery_query"
const val SP_SERVER_ADDRESS = "server_address"
const val SP_SERVER_HISTORY = "server_history"
const val SP_CLIENT_SIGN_KEY = "client_sign_key"
var CLIENT_FRAGMENT_LIST = listOf(
PageInfo(getString(R.string.api_clone), "com.idormy.sms.forwarder.fragment.client.CloneFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_clone),

View File

@ -47,6 +47,14 @@ class HttpServerUtils private constructor() {
MMKVUtils.put(SP_SERVER_ADDRESS, clientSignKey)
}
//服务地址历史记录
@JvmStatic
var serverHistory: String?
get() = MMKVUtils.getString(SP_SERVER_HISTORY, "")
set(serverHistory) {
MMKVUtils.put(SP_SERVER_HISTORY, serverHistory)
}
//客户端签名密钥
@JvmStatic
var clientSignKey: String?

View File

@ -60,6 +60,17 @@
android:layout_weight="1"
android:hint="@string/service_address_hint" />
<com.xuexiang.xui.widget.button.ButtonView
android:id="@+id/btn_server_history"
style="@style/ButtonView.Gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:gravity="center"
android:minWidth="70dp"
android:padding="5dp"
android:text="@string/server_history" />
</LinearLayout>
<LinearLayout

View File

@ -169,6 +169,7 @@
<string name="about">About</string>
<string name="help">Help</string>
<string name="clear_logs">Clear logs</string>
<string name="clear_history">Clear History</string>
<string name="app_rule">App rule</string>
<string name="call_rule">Call rule</string>
<string name="sms_rule">Sms rule</string>
@ -807,6 +808,7 @@
<string name="battery_health">Health: %s</string>
<string name="battery_plugged">Plugged: %s</string>
<string name="server_history">Server History</string>
<string name="server_test">Server Test</string>
<string name="invalid_service_address">Invalid service address\nFormat: http://127.0.0.1:5000 or https://smsf.demo.com</string>
<string name="click_test_button_first">Click the test button first, to get the list of features enabled by the server</string>
@ -864,4 +866,5 @@
<string name="load_app_list">Get installed app info async at startup</string>
<string name="load_app_list_tips">Used to speed up entering the application list/editing forwarding rules drop-down selection/replacement {{APP_NAME}}</string>
<string name="load_app_list_toast">A type must be selected when enabling asynchronous loading of the list of installed apps</string>
<string name="no_server_history">There is no history record, it will be added automatically after the interface test is passed</string>
</resources>

View File

@ -170,6 +170,7 @@
<string name="about">关于软件</string>
<string name="help">使用帮助</string>
<string name="clear_logs">清空日志</string>
<string name="clear_history">清空记录</string>
<string name="app_rule">通知转发规则</string>
<string name="call_rule">通话转发规则</string>
<string name="sms_rule">短信转发规则</string>
@ -808,6 +809,7 @@
<string name="battery_health">健康度:%s</string>
<string name="battery_plugged">充电器:%s</string>
<string name="server_history">历史记录</string>
<string name="server_test">测试接口</string>
<string name="invalid_service_address">无效的服务地址!\n格式http://127.0.0.1:5000 或 https://smsf.demo.com</string>
<string name="click_test_button_first">请先点击【测试接口】按钮,获取服务端已启用的功能列表</string>
@ -865,4 +867,5 @@
<string name="load_app_list">启动时异步获取已安装App列表</string>
<string name="load_app_list_tips">用于加速进入应用列表/编辑转发规则下拉选择/替换{{APP名称}}</string>
<string name="load_app_list_toast">开启异步获取已安装App列表时必选一个类型</string>
<string name="no_server_history">暂无历史记录,接口测试通过后自动加入</string>
</resources>