Allow enabling/disabling individual SMS template types from dashboard with sync to notification settings
This commit is contained in:
@@ -148,6 +148,7 @@ const SMS_TEMPLATE_DEFS = [
|
||||
key: 'classRequestApproved',
|
||||
label: 'تأیید درخواست تشکیل کلاس',
|
||||
envKey: 'SMS_TEMPLATE_CLASS_REQUEST_APPROVED',
|
||||
defaultEnabled: false,
|
||||
slots: [
|
||||
{ key: 'fullName', label: 'نام کارآموز', defaultName: 'fullName' },
|
||||
{ key: 'courseName', label: 'نام دوره', defaultName: 'courseName' },
|
||||
@@ -159,6 +160,7 @@ const SMS_TEMPLATE_DEFS = [
|
||||
key: 'classRequestRejected',
|
||||
label: 'رد درخواست ثبتنام',
|
||||
envKey: 'SMS_TEMPLATE_CLASS_REQUEST_REJECTED',
|
||||
defaultEnabled: false,
|
||||
slots: [
|
||||
{ key: 'fullName', label: 'نام کارآموز', defaultName: 'fullName' },
|
||||
{ key: 'courseName', label: 'نام دوره', defaultName: 'courseName' },
|
||||
@@ -171,6 +173,7 @@ const SMS_TEMPLATE_DEFS = [
|
||||
key: 'pendingRegistration',
|
||||
label: 'دریافت درخواست ثبتنام',
|
||||
envKey: 'SMS_TEMPLATE_PENDING_REGISTRATION',
|
||||
defaultEnabled: false,
|
||||
slots: [
|
||||
{ key: 'fullName', label: 'نام کارآموز', defaultName: 'fullName' },
|
||||
{ key: 'className', label: 'نام کلاس', defaultName: 'className' },
|
||||
@@ -225,6 +228,7 @@ const defaultVariablesList = (def) => {
|
||||
};
|
||||
|
||||
const emptyTemplateEntry = (def) => ({
|
||||
enabled: def ? (def.defaultEnabled !== false) : true,
|
||||
templateId: '',
|
||||
variables: defaultVariablesList(def)
|
||||
});
|
||||
@@ -266,20 +270,24 @@ const normalizeVariablesInput = (rawVariables, def) => {
|
||||
};
|
||||
|
||||
const normalizeStoredEntry = (raw, def) => {
|
||||
const defaultEnabled = def ? (def.defaultEnabled !== false) : true;
|
||||
if (raw == null || raw === '') {
|
||||
return {
|
||||
enabled: defaultEnabled,
|
||||
templateId: '',
|
||||
variables: def ? defaultVariablesList(def) : []
|
||||
};
|
||||
}
|
||||
if (typeof raw === 'string' || typeof raw === 'number') {
|
||||
return {
|
||||
enabled: true,
|
||||
templateId: String(raw),
|
||||
variables: def ? defaultVariablesList(def) : []
|
||||
};
|
||||
}
|
||||
if (typeof raw !== 'object') {
|
||||
return {
|
||||
enabled: defaultEnabled,
|
||||
templateId: '',
|
||||
variables: def ? defaultVariablesList(def) : []
|
||||
};
|
||||
@@ -289,7 +297,12 @@ const normalizeStoredEntry = (raw, def) => {
|
||||
? normalizeVariablesInput(raw.variables, def)
|
||||
: (def ? defaultVariablesList(def) : []);
|
||||
|
||||
const enabled = raw.enabled !== undefined
|
||||
? Boolean(raw.enabled)
|
||||
: defaultEnabled;
|
||||
|
||||
return {
|
||||
enabled,
|
||||
templateId: raw.templateId != null ? String(raw.templateId) : '',
|
||||
variables
|
||||
};
|
||||
@@ -304,8 +317,13 @@ const mergeTemplateEntry = (def, storedRaw, incomingRaw = null) => {
|
||||
const storedEntry = normalizeStoredEntry(storedRaw, def);
|
||||
let templateId = storedEntry.templateId || envFallbackFor(def);
|
||||
let variables = storedEntry.variables;
|
||||
let enabled = storedEntry.enabled;
|
||||
|
||||
if (incomingRaw) {
|
||||
if (incomingRaw.enabled !== undefined) {
|
||||
enabled = Boolean(incomingRaw.enabled);
|
||||
}
|
||||
|
||||
if (incomingRaw.templateId !== undefined) {
|
||||
const sanitized = sanitizeTemplateId(incomingRaw.templateId);
|
||||
if (sanitized === null) {
|
||||
@@ -336,6 +354,7 @@ const mergeTemplateEntry = (def, storedRaw, incomingRaw = null) => {
|
||||
}
|
||||
|
||||
return {
|
||||
enabled,
|
||||
templateId,
|
||||
variables: resolveVariablesList(def, variables)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user