invite link better response
This commit is contained in:
@@ -70,6 +70,7 @@
|
||||
:saving="isSaving(row.id)"
|
||||
:saved-flash="isSavedFlash(row.id)"
|
||||
@update:value="onValueChange(row, $event)"
|
||||
@blur="onFieldBlur(row)"
|
||||
/>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@@ -305,7 +306,7 @@ const SETTING_GROUPS: Array<{
|
||||
title: 'معرف، پاداش و ثبتنام',
|
||||
icon: 'vuesax-linear:people',
|
||||
match: (k) =>
|
||||
/^(referral_|gift_for|register_referral|register_jibit|has_page_earn_money|jibit_verification|referral_bonus)/.test(
|
||||
/^(referral_|gift_for|register_referral|register_jibit|has_page_earn_money|jibit_verification|referral_bonus|invite_link_text)/.test(
|
||||
k
|
||||
)
|
||||
},
|
||||
@@ -460,21 +461,43 @@ async function initConfig() {
|
||||
}
|
||||
}
|
||||
|
||||
function saveDebounceMs(row: Const): number {
|
||||
const type = resolveSettingFieldType(row)
|
||||
if (type === 'switch') return 200
|
||||
if (type === 'longtext') return 3000
|
||||
if (type === 'text') return 1200
|
||||
return 800
|
||||
}
|
||||
|
||||
function onValueChange(row: Const, value: string) {
|
||||
if (row.id == null || isReadonly(row)) return
|
||||
drafts.value[row.id] = value
|
||||
if (resolveSettingFieldType(row) === 'longtext') {
|
||||
return
|
||||
}
|
||||
scheduleSave(row)
|
||||
}
|
||||
|
||||
function scheduleSave(row: Const) {
|
||||
function onFieldBlur(row: Const) {
|
||||
if (row.id == null || isReadonly(row)) return
|
||||
scheduleSave(row, { flush: true })
|
||||
}
|
||||
|
||||
function scheduleSave(row: Const, options?: { flush?: boolean }) {
|
||||
const id = row.id!
|
||||
const delay = saveDebounceMs(row)
|
||||
if (!debouncedSave.has(id)) {
|
||||
debouncedSave.set(
|
||||
id,
|
||||
debounce(() => persistRowValue(id), resolveSettingFieldType(row) === 'switch' ? 200 : 600)
|
||||
debounce(() => persistRowValue(id), delay)
|
||||
)
|
||||
}
|
||||
debouncedSave.get(id)!()
|
||||
const saveFn = debouncedSave.get(id)!
|
||||
if (options?.flush) {
|
||||
saveFn.flush()
|
||||
} else {
|
||||
saveFn()
|
||||
}
|
||||
}
|
||||
|
||||
async function persistRowValue(id: number) {
|
||||
@@ -496,6 +519,8 @@ async function saveSettingRow(row: Const) {
|
||||
const value = formatValueForSave(raw, type, row.key)
|
||||
if (value === (row.value ?? '')) return
|
||||
|
||||
const draftSnapshot = raw
|
||||
|
||||
savingIds.value.add(id)
|
||||
savedFlashIds.value.delete(id)
|
||||
|
||||
@@ -511,7 +536,12 @@ async function saveSettingRow(row: Const) {
|
||||
})
|
||||
row.value = value
|
||||
row.is_active = true
|
||||
drafts.value[id] = value
|
||||
const currentDraft = drafts.value[id] ?? ''
|
||||
if (currentDraft === draftSnapshot) {
|
||||
drafts.value[id] = value
|
||||
} else {
|
||||
scheduleSave(row)
|
||||
}
|
||||
if (row.key === 'is_store') {
|
||||
setStoreModeFromSettings(isSwitchOn(value))
|
||||
refreshAppModeMenu()
|
||||
@@ -527,7 +557,9 @@ async function saveSettingRow(row: Const) {
|
||||
)
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
drafts.value[id] = row.value ?? ''
|
||||
if ((drafts.value[id] ?? '') === draftSnapshot) {
|
||||
drafts.value[id] = row.value ?? ''
|
||||
}
|
||||
message.error(`ذخیره «${row.title_fa || row.key}» ناموفق بود`)
|
||||
} finally {
|
||||
savingIds.value.delete(id)
|
||||
|
||||
Reference in New Issue
Block a user