Skip to content

Commit d7f5f56

Browse files
fix: add design to email template
1 parent 6c29149 commit d7f5f56

File tree

10 files changed

+104
-20
lines changed

10 files changed

+104
-20
lines changed

dashboard/src/components/UpdateEmailTemplateModal.tsx

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ interface selectedEmailTemplateDataTypes {
4848
[EmailTemplateInputDataFields.SUBJECT]: string;
4949
[EmailTemplateInputDataFields.CREATED_AT]: number;
5050
[EmailTemplateInputDataFields.TEMPLATE]: string;
51+
[EmailTemplateInputDataFields.DESIGN]: string;
5152
}
5253

5354
interface UpdateEmailTemplateInputPropTypes {
@@ -102,20 +103,17 @@ const UpdateEmailTemplate = ({
102103
const [isDynamicVariableInfoOpen, setIsDynamicVariableInfoOpen] =
103104
useState<boolean>(false);
104105

105-
const onLoad = () => {
106-
// editor instance is created
107-
// you can load your template here;
108-
// const templateJson = {};
109-
// emailEditorRef.current.editor.loadDesign(templateJson);
110-
console.log('onLoad');
111-
};
112-
113106
const onReady = () => {
114-
// editor is ready
115-
console.log('onReady');
116107
if (selectedTemplate) {
117-
const { template } = selectedTemplate;
118-
console.log('incoming template ==>> ', template);
108+
const { design } = selectedTemplate;
109+
try {
110+
const designData = JSON.parse(design);
111+
// @ts-ignore
112+
emailEditorRef.current.editor.loadDesign(designData);
113+
} catch (error) {
114+
console.error(error);
115+
onClose();
116+
}
119117
}
120118
};
121119

@@ -132,7 +130,6 @@ const UpdateEmailTemplate = ({
132130
const validateData = () => {
133131
return (
134132
!loading &&
135-
emailEditorRef?.current &&
136133
templateData[EmailTemplateInputDataFields.EVENT_NAME].length > 0 &&
137134
templateData[EmailTemplateInputDataFields.SUBJECT].length > 0 &&
138135
validator[EmailTemplateInputDataFields.SUBJECT]
@@ -145,7 +142,6 @@ const UpdateEmailTemplate = ({
145142
// @ts-ignore
146143
return await emailEditorRef.current.editor.exportHtml(async (data) => {
147144
const { design, html } = data;
148-
console.log('design ==>> ', design);
149145
if (!html || !design) {
150146
setLoading(false);
151147
return;
@@ -156,6 +152,7 @@ const UpdateEmailTemplate = ({
156152
[EmailTemplateInputDataFields.SUBJECT]:
157153
templateData[EmailTemplateInputDataFields.SUBJECT],
158154
[EmailTemplateInputDataFields.TEMPLATE]: html.trim(),
155+
[EmailTemplateInputDataFields.DESIGN]: JSON.stringify(design),
159156
};
160157
let res: any = {};
161158
if (
@@ -217,7 +214,7 @@ const UpdateEmailTemplate = ({
217214
selectedTemplate &&
218215
Object.keys(selectedTemplate || {}).length
219216
) {
220-
const { id, created_at, template, ...rest } = selectedTemplate;
217+
const { id, created_at, template, design, ...rest } = selectedTemplate;
221218
setTemplateData(rest);
222219
}
223220
}, [isOpen]);
@@ -419,11 +416,7 @@ const UpdateEmailTemplate = ({
419416
>
420417
Template Body
421418
</Flex>
422-
<EmailEditor
423-
ref={emailEditorRef}
424-
onLoad={onLoad}
425-
onReady={onReady}
426-
/>
419+
<EmailEditor ref={emailEditorRef} onReady={onReady} />
427420
</Flex>
428421
</ModalBody>
429422
<ModalFooter>

dashboard/src/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ export enum EmailTemplateInputDataFields {
168168
SUBJECT = 'subject',
169169
CREATED_AT = 'created_at',
170170
TEMPLATE = 'template',
171+
DESIGN = 'design',
171172
}
172173

173174
export enum WebhookInputHeaderFields {

dashboard/src/graphql/queries/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ export const EmailTemplatesQuery = `
132132
subject
133133
created_at
134134
template
135+
design
135136
}
136137
pagination {
137138
limit

dashboard/src/pages/EmailTemplates.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ interface EmailTemplateDataType {
5858
[EmailTemplateInputDataFields.SUBJECT]: string;
5959
[EmailTemplateInputDataFields.CREATED_AT]: number;
6060
[EmailTemplateInputDataFields.TEMPLATE]: string;
61+
[EmailTemplateInputDataFields.DESIGN]: string;
6162
}
6263

6364
const EmailTemplates = () => {

server/db/models/email_templates.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type EmailTemplate struct {
1414
EventName string `gorm:"unique" json:"event_name" bson:"event_name" cql:"event_name"`
1515
Subject string `gorm:"type:text" json:"subject" bson:"subject" cql:"subject"`
1616
Template string `gorm:"type:text" json:"template" bson:"template" cql:"template"`
17+
Design string `gorm:"type:text" json:"design" bson:"design" cql:"design"`
1718
CreatedAt int64 `json:"created_at" bson:"created_at" cql:"created_at"`
1819
UpdatedAt int64 `json:"updated_at" bson:"updated_at" cql:"updated_at"`
1920
}
@@ -29,6 +30,7 @@ func (e *EmailTemplate) AsAPIEmailTemplate() *model.EmailTemplate {
2930
EventName: e.EventName,
3031
Subject: e.Subject,
3132
Template: e.Template,
33+
Design: e.Design,
3234
CreatedAt: refs.NewInt64Ref(e.CreatedAt),
3335
UpdatedAt: refs.NewInt64Ref(e.UpdatedAt),
3436
}

server/graph/generated/generated.go

Lines changed: 67 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/model/models_gen.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/schema.graphqls

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ type EmailTemplate {
194194
id: ID!
195195
event_name: String!
196196
template: String!
197+
design: String!
197198
subject: String!
198199
created_at: Int64
199200
updated_at: Int64
@@ -417,13 +418,15 @@ input AddEmailTemplateRequest {
417418
event_name: String!
418419
subject: String!
419420
template: String!
421+
design: String!
420422
}
421423

422424
input UpdateEmailTemplateRequest {
423425
id: ID!
424426
event_name: String
425427
template: String
426428
subject: String
429+
design: String
427430
}
428431

429432
input DeleteEmailTemplateRequest {

server/resolvers/add_email_template.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,15 @@ func AddEmailTemplateResolver(ctx context.Context, params model.AddEmailTemplate
4040
return nil, fmt.Errorf("empty template not allowed")
4141
}
4242

43+
if strings.TrimSpace(params.Design) == "" {
44+
return nil, fmt.Errorf("empty design not allowed")
45+
}
46+
4347
_, err = db.Provider.AddEmailTemplate(ctx, models.EmailTemplate{
4448
EventName: params.EventName,
4549
Template: params.Template,
4650
Subject: params.Subject,
51+
Design: params.Design,
4752
})
4853
if err != nil {
4954
log.Debug("Failed to add email template: ", err)

server/resolvers/update_email_template.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ func UpdateEmailTemplateResolver(ctx context.Context, params model.UpdateEmailTe
6565
emailTemplateDetails.Template = refs.StringValue(params.Template)
6666
}
6767

68+
if params.Design != nil && emailTemplateDetails.Design != refs.StringValue(params.Design) {
69+
if strings.TrimSpace(refs.StringValue(params.Design)) == "" {
70+
log.Debug("empty design not allowed")
71+
return nil, fmt.Errorf("empty design not allowed")
72+
}
73+
emailTemplateDetails.Design = refs.StringValue(params.Design)
74+
}
75+
6876
_, err = db.Provider.UpdateEmailTemplate(ctx, emailTemplateDetails)
6977
if err != nil {
7078
return nil, err

0 commit comments

Comments
 (0)