(fix):update user setting toast
This commit is contained in:
1 parent
e429b59077
commit
95553086dd
7 files changed
+156
-52
No files matched your search
@@ -30,8 +30,11 @@
|
||||
* SMS 验证码发送 + 倒计时
|
||||
* ================================================================= */
|
||||
|
||||
function initSmsButtons() {
|
||||
document.querySelectorAll('[data-aksrt-sms-trigger]').forEach(btn => {
|
||||
function initSmsButtons(root) {
|
||||
root = root || document
|
||||
root.querySelectorAll('[data-aksrt-sms-trigger]').forEach(btn => {
|
||||
if (btn.dataset.aksrtSmsInitialized === 'true') return
|
||||
btn.dataset.aksrtSmsInitialized = 'true'
|
||||
const cooldown = parseInt(btn.dataset.cooldown || DEFAULT_COOLDOWN, 10)
|
||||
|
||||
// 恢复页面刷新后的倒计时
|
||||
@@ -78,26 +81,32 @@
|
||||
const original = btn.textContent
|
||||
btn.textContent = '发送中...'
|
||||
|
||||
const scene = btn.dataset.aksrtSmsScene || 'register'
|
||||
const toastId = scene === 'bind_phone'
|
||||
? 'aksrt-settings-phone-code-toast'
|
||||
: 'aksrt-auth-sms-code-toast'
|
||||
notyf('正在发送验证码…', 'load', '', toastId)
|
||||
|
||||
// 收集人机验证字段
|
||||
const form = btn.closest('form')
|
||||
const captchaData = collectCaptchaFields(form)
|
||||
const scene = btn.dataset.aksrtSmsScene || 'register'
|
||||
|
||||
fetch(REST_BASE + '/auth/send-sms-code', {
|
||||
method: 'POST',
|
||||
credentials: 'same-origin',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ phone, scene, ...captchaData }),
|
||||
})
|
||||
.then(r => r.json().then(data => ({ ok: r.ok, data })))
|
||||
.then(({ ok, data }) => {
|
||||
if (ok && data.success) {
|
||||
notyf(data.message || '验证码已发送', 'success')
|
||||
notyf(data.message || '验证码已发送', 'success', 5, toastId)
|
||||
const seconds = (data.data && data.data.remaining_time) || cooldown
|
||||
sessionStorage.setItem(COUNTDOWN_KEY, String(Date.now() + seconds * 1000))
|
||||
startCountdown(btn, seconds)
|
||||
} else {
|
||||
const msg = (data.data && data.data.message) || data.message || '发送失败'
|
||||
notyf(msg, 'danger')
|
||||
notyf(msg, 'danger', 5, toastId)
|
||||
try {
|
||||
const captchaState = window.AKSRTCaptchaState
|
||||
if (captchaState && captchaState.scenes && captchaState.scenes[scene]) {
|
||||
@@ -115,7 +124,7 @@
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
notyf('网络错误,请重试', 'danger')
|
||||
notyf('网络错误,请重试', 'danger', 5, toastId)
|
||||
btn.disabled = false
|
||||
btn.textContent = original
|
||||
})
|
||||
@@ -397,6 +406,12 @@
|
||||
}
|
||||
|
||||
// 初始化
|
||||
if (window.AksrtFrontend && typeof window.AksrtFrontend.register === 'function') {
|
||||
window.AksrtFrontend.register('aksrt-sms-buttons', function(root) {
|
||||
initSmsButtons(root)
|
||||
})
|
||||
}
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initAuthPages)
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user