diff --git a/src/views/settings/SettingsView.vue b/src/views/settings/SettingsView.vue index 7d5f0a1..1f74208 100644 --- a/src/views/settings/SettingsView.vue +++ b/src/views/settings/SettingsView.vue @@ -14,7 +14,7 @@

قالب‌های پیامک

- شناسه قالب‌های sms.ir را وارد کنید. اگر قالبی در پایگاه داده نباشد، با ذخیره ایجاد می‌شود. + شناسه قالب و نام متغیرهای sms.ir را وارد کنید. نام متغیر باید دقیقاً با قالب پنل یکی باشد. اگر قالبی در پایگاه داده نباشد، با ذخیره ایجاد می‌شود.

@@ -28,29 +28,51 @@
+
@@ -289,6 +311,16 @@ const confirmImport = () => { }); }; +const emptyFormEntry = (template) => ({ + templateId: template?.templateId || '', + variables: Object.fromEntries( + (template?.variables || []).map((variable) => [ + variable.slot, + variable.name || variable.defaultName || '' + ]) + ) +}); + const applySmsTemplates = (payload) => { const data = payload?.data || payload || {}; const templates = Array.isArray(data.smsTemplates) ? data.smsTemplates : []; @@ -297,7 +329,7 @@ const applySmsTemplates = (payload) => { delete templateForm[key]; }); templates.forEach((template) => { - templateForm[template.key] = template.templateId || ''; + templateForm[template.key] = emptyFormEntry(template); }); }; @@ -316,11 +348,15 @@ const loadSettings = async () => { const saveSmsTemplates = async () => { isSavingSettings.value = true; try { - const smsTemplateIds = {}; + const smsTemplatesPayload = {}; smsTemplates.value.forEach((template) => { - smsTemplateIds[template.key] = templateForm[template.key] || ''; + const entry = templateForm[template.key] || emptyFormEntry(template); + smsTemplatesPayload[template.key] = { + templateId: entry.templateId || '', + variables: { ...(entry.variables || {}) } + }; }); - const response = await settingsApi.save({ smsTemplates: smsTemplateIds }); + const response = await settingsApi.save({ smsTemplates: smsTemplatesPayload }); applySmsTemplates(response); showSuccess('قالب‌های پیامک ذخیره شدند.'); } catch (err) {