diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkRobotSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkRobotSetting.kt index ef8b376a..2520d667 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkRobotSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/setting/WeworkRobotSetting.kt @@ -6,6 +6,9 @@ import java.io.Serializable data class WeworkRobotSetting( var webHook: String, val msgType: String = "text", + var atAll: Boolean? = false, + var atUserIds: String? = "", + var atMobiles: String? = "", ) : Serializable { fun getMsgTypeCheckId(): Int { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt index c6242435..ef3d15f2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt @@ -6,6 +6,8 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.CompoundButton +import android.widget.RadioGroup import androidx.fragment.app.viewModels import com.google.gson.Gson import com.idormy.sms.forwarder.R @@ -17,7 +19,13 @@ import com.idormy.sms.forwarder.database.viewmodel.SenderViewModel import com.idormy.sms.forwarder.databinding.FragmentSendersWeworkRobotBinding import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.WeworkRobotSetting -import com.idormy.sms.forwarder.utils.* +import com.idormy.sms.forwarder.utils.CommonUtils +import com.idormy.sms.forwarder.utils.KEY_SENDER_CLONE +import com.idormy.sms.forwarder.utils.KEY_SENDER_ID +import com.idormy.sms.forwarder.utils.KEY_SENDER_TEST +import com.idormy.sms.forwarder.utils.KEY_SENDER_TYPE +import com.idormy.sms.forwarder.utils.SettingUtils +import com.idormy.sms.forwarder.utils.XToastUtils import com.idormy.sms.forwarder.utils.sender.WeworkRobotUtils import com.jeremyliao.liveeventbus.LiveEventBus import com.xuexiang.xaop.annotation.SingleClick @@ -32,11 +40,11 @@ import io.reactivex.SingleObserver import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers -import java.util.* +import java.util.Date @Page(name = "企业微信群机器人") @Suppress("PrivatePropertyName") -class WeworkRobotFragment : BaseFragment(), View.OnClickListener { +class WeworkRobotFragment : BaseFragment(), View.OnClickListener, CompoundButton.OnCheckedChangeListener { private val TAG: String = WeworkRobotFragment::class.java.simpleName var titleBar: TitleBar? = null @@ -122,6 +130,10 @@ class WeworkRobotFragment : BaseFragment(), if (settingVo != null) { binding!!.etWebHook.setText(settingVo.webHook) binding!!.rgMsgType.check(settingVo.getMsgTypeCheckId()) + binding!!.layoutAt.visibility = if (settingVo.getMsgTypeCheckId() == R.id.rb_msg_type_text) View.VISIBLE else View.GONE + binding!!.sbAtAll.isChecked = settingVo.atAll == true + binding!!.etAtMobiles.setText(settingVo.atMobiles) + binding!!.etAtUserIds.setText(settingVo.atUserIds) } } }) @@ -131,9 +143,26 @@ class WeworkRobotFragment : BaseFragment(), binding!!.btnTest.setOnClickListener(this) binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) + binding!!.sbAtAll.setOnCheckedChangeListener(this) + binding!!.rgMsgType.setOnCheckedChangeListener { _: RadioGroup?, checkedId: Int -> + binding!!.layoutAt.visibility = if (checkedId == R.id.rb_msg_type_text) View.VISIBLE else View.GONE + } LiveEventBus.get(KEY_SENDER_TEST, String::class.java).observe(this) { mCountDownHelper?.finish() } } + override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) { + //这里只有一个监听不需要判断id + if (isChecked) { + binding!!.layoutAtMobiles.visibility = View.GONE + binding!!.layoutAtUserIds.visibility = View.GONE + binding!!.etAtMobiles.setText("") + binding!!.etAtUserIds.setText("") + } else { + binding!!.layoutAtMobiles.visibility = View.VISIBLE + binding!!.layoutAtUserIds.visibility = View.VISIBLE + } + } + @SingleClick override fun onClick(v: View) { try { @@ -208,7 +237,10 @@ class WeworkRobotFragment : BaseFragment(), throw Exception(getString(R.string.invalid_webhook)) } val msgType = if (binding!!.rgMsgType.checkedRadioButtonId == R.id.rb_msg_type_markdown) "markdown" else "text" - return WeworkRobotSetting(webHook, msgType) + val atAll = binding!!.sbAtAll.isChecked + val atUserIds = binding!!.etAtUserIds.text.toString().trim() + val atMobiles = binding!!.etAtMobiles.text.toString().trim() + return WeworkRobotSetting(webHook, msgType, atAll, atUserIds, atMobiles) } override fun onDestroyView() { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt index b4e3f454..cdda84ca 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt @@ -38,14 +38,23 @@ class WeworkRobotUtils private constructor() { val msgMap: MutableMap = mutableMapOf() msgMap["msgtype"] = setting.msgType + val contextMap = mutableMapOf() + contextMap["content"] = content + if (setting.msgType == "markdown") { - val markdownText: MutableMap = mutableMapOf() - markdownText["content"] = content - msgMap["markdown"] = markdownText + msgMap["markdown"] = contextMap } else { - val textText: MutableMap = mutableMapOf() - textText["content"] = content - msgMap["text"] = textText + if (setting.atAll == true) { + contextMap["mentioned_list"] = arrayListOf("@all") + } else { + if (!setting.atUserIds.isNullOrEmpty()) { + contextMap["mentioned_list"] = setting.atUserIds!!.split(",") + } + if (!setting.atMobiles.isNullOrEmpty()) { + contextMap["mentioned_mobile_list"] = setting.atMobiles!!.split(",") + } + } + msgMap["text"] = contextMap } val requestMsg: String = Gson().toJson(msgMap) diff --git a/app/src/main/res/layout/fragment_senders_wework_robot.xml b/app/src/main/res/layout/fragment_senders_wework_robot.xml index 309de9db..36c6ba01 100644 --- a/app/src/main/res/layout/fragment_senders_wework_robot.xml +++ b/app/src/main/res/layout/fragment_senders_wework_robot.xml @@ -38,14 +38,16 @@ android:layout_marginStart="5dp" android:layout_weight="1" android:singleLine="true" - app:met_clearButton="true" /> + app:met_clearButton="true" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + android:checked="true" + tools:ignore="DuplicateSpeakableTextCheck,TouchTargetSizeCheck" /> @@ -73,7 +75,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" - app:met_passWordButton="true" /> + app:met_passWordButton="true" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> @@ -99,17 +102,112 @@ android:id="@+id/rb_msg_type_text" style="@style/rg_rb_style" android:checked="true" - android:text="@string/wework_msg_type_text" /> + android:text="@string/wework_msg_type_text" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/wework_msg_type_markdown" + tools:ignore="TouchTargetSizeCheck" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -128,7 +226,7 @@ android:paddingStart="15dp" android:text="@string/del" android:textSize="11sp" - tools:ignore="RtlSymmetry" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index c065db41..db921d74 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -774,6 +774,10 @@ Msg Type Text Markdown + At Mobiles + Tips: Separate multiple mobiles with commas, e.g. 18888888888,19999999999 + At UserId + Tips:Separate multiple UserIds with commas, e.g. user1,user2 URL Scheme Example:myapp://api/add?&type=0&msg=[msg] diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e03846f5..e2daba84 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -775,6 +775,10 @@ 消息类型 纯文本 markdown + 被@人的手机号 + Tips:多个手机号用逗号分开,例如:18888888888,19999999999 + 被@人的userid + Tips:多个userid用逗号分开,例如:user1,user2 URL Scheme 示例:myapp://api/add?&type=0&msg=[msg]