invite link better response
This commit is contained in:
@@ -24,8 +24,9 @@
|
||||
:setting-type="settingType"
|
||||
:description="description"
|
||||
:disabled="readonly"
|
||||
:rows="fieldType === 'longtext' ? 6 : 6"
|
||||
:rows="fieldType === 'longtext' ? 10 : 6"
|
||||
@update:value="emit('update:value', $event)"
|
||||
@blur="emit('blur')"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="saving" class="setting-card__status">
|
||||
@@ -51,6 +52,7 @@ const props = defineProps<{
|
||||
|
||||
const emit = defineEmits<{
|
||||
'update:value': [value: string]
|
||||
blur: []
|
||||
}>()
|
||||
|
||||
const settingKey = computed(() => props.row.key ?? '')
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
:rows="rows"
|
||||
class="w-full font-mono text-sm"
|
||||
@update:value="emit('update:value', $event)"
|
||||
@blur="emit('blur')"
|
||||
/>
|
||||
|
||||
<a-input
|
||||
@@ -56,6 +57,7 @@
|
||||
:disabled="disabled"
|
||||
allow-clear
|
||||
@update:value="emit('update:value', $event)"
|
||||
@blur="emit('blur')"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
@@ -83,7 +85,10 @@ const props = withDefaults(
|
||||
{ disabled: false, rows: 10 }
|
||||
)
|
||||
|
||||
const emit = defineEmits<{ 'update:value': [value: string] }>()
|
||||
const emit = defineEmits<{
|
||||
'update:value': [value: string]
|
||||
blur: []
|
||||
}>()
|
||||
|
||||
const fieldType = computed<SettingFieldType>(() =>
|
||||
resolveSettingFieldType({
|
||||
|
||||
@@ -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