Email templates

This commit is contained in:
Hillel Coren 2018-08-13 15:22:38 -07:00
parent 55b3c02e18
commit fc7cd128f7
2 changed files with 41 additions and 44 deletions

View File

@ -15,8 +15,8 @@ const int kMinPatchAppVersion = 2;
const int kMaxRecordsPerApiPage = 5000;
const int kMillisecondsToRefreshData = 1000 * 60 * 15; // 15 minutes
const int kMillisecondsToRefreshActivities = 1000 * 15; // 15 seconds
//const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day
//const int kMillisecondsToRefreshActivities = 1000 * 15; // 15 seconds
const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day
const int kCurrencyUSDollar = 1;
const int kCurrencyEuro = 3;

View File

@ -36,18 +36,21 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView> {
void didChangeDependencies() {
super.didChangeDependencies();
final company = widget.viewModel.company;
selectedTemplate = EmailTemplate.initial;
emailSubject = company.emailSubjectInvoice;
emailBody = company.emailBodyInvoice;
updateTemplate();
loadTemplate(EmailTemplate.initial);
_controllers = [
_subjectController,
_bodyController,
];
_controllers
.forEach((dynamic controller) => controller.removeListener(_onChanged));
_subjectController.text = emailSubject;
_bodyController.text = emailBody.replaceAll('</div>', '</div>\n');
_controllers
.forEach((dynamic controller) => controller.addListener(_onChanged));
}
@override
@ -66,19 +69,36 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView> {
});
}
void loadTemplate(EmailTemplate template) {
final company = widget.viewModel.company;
selectedTemplate = template;
switch (template) {
case EmailTemplate.initial:
emailSubject = company.emailSubjectInvoice;
emailBody = company.emailBodyInvoice;
break;
case EmailTemplate.reminder1:
emailSubject = company.emailSubjectReminder1;
emailBody = company.emailBodyReminder1;
break;
case EmailTemplate.reminder2:
emailSubject = company.emailSubjectReminder2;
emailBody = company.emailBodyReminder2;
break;
case EmailTemplate.reminder3:
emailSubject = company.emailSubjectReminder3;
emailBody = company.emailBodyReminder3;
break;
}
updateTemplate();
}
void updateTemplate() {
final viewModel = widget.viewModel;
_controllers
.forEach((dynamic controller) => controller.removeListener(_onChanged));
_subjectController.text = emailSubject;
_bodyController.text = emailBody
.replaceAll('</div>', '</div>\n');
_controllers
.forEach((dynamic controller) => controller.addListener(_onChanged));
emailSubject = processTemplate(emailSubject, viewModel.invoice, context);
emailBody = processTemplate(emailBody, viewModel.invoice, context);
}
@ -99,32 +119,9 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView> {
DropdownButtonHideUnderline(
child: DropdownButton<EmailTemplate>(
value: selectedTemplate,
onChanged: (value) {
onChanged: (template) {
setState(() {
final viewModel = widget.viewModel;
final company = viewModel.company;
selectedTemplate = value;
switch (value) {
case EmailTemplate.initial:
emailSubject = company.emailSubjectInvoice;
emailBody = company.emailBodyInvoice;
break;
case EmailTemplate.reminder1:
emailSubject = company.emailSubjectReminder1;
emailBody = company.emailBodyReminder1;
break;
case EmailTemplate.reminder2:
emailSubject = company.emailSubjectReminder2;
emailBody = company.emailBodyReminder2;
break;
case EmailTemplate.reminder3:
emailSubject = company.emailSubjectReminder3;
emailBody = company.emailBodyReminder3;
break;
}
updateTemplate();
loadTemplate(template);
});
},
items: [