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 kMaxRecordsPerApiPage = 5000;
const int kMillisecondsToRefreshData = 1000 * 60 * 15; // 15 minutes const int kMillisecondsToRefreshData = 1000 * 60 * 15; // 15 minutes
const int kMillisecondsToRefreshActivities = 1000 * 15; // 15 seconds //const int kMillisecondsToRefreshActivities = 1000 * 15; // 15 seconds
//const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day
const int kCurrencyUSDollar = 1; const int kCurrencyUSDollar = 1;
const int kCurrencyEuro = 3; const int kCurrencyEuro = 3;

View File

@ -36,18 +36,21 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView> {
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
final company = widget.viewModel.company; loadTemplate(EmailTemplate.initial);
selectedTemplate = EmailTemplate.initial;
emailSubject = company.emailSubjectInvoice;
emailBody = company.emailBodyInvoice;
updateTemplate();
_controllers = [ _controllers = [
_subjectController, _subjectController,
_bodyController, _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 @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() { void updateTemplate() {
final viewModel = widget.viewModel; 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); emailSubject = processTemplate(emailSubject, viewModel.invoice, context);
emailBody = processTemplate(emailBody, viewModel.invoice, context); emailBody = processTemplate(emailBody, viewModel.invoice, context);
} }
@ -99,32 +119,9 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView> {
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: DropdownButton<EmailTemplate>( child: DropdownButton<EmailTemplate>(
value: selectedTemplate, value: selectedTemplate,
onChanged: (value) { onChanged: (template) {
setState(() { setState(() {
final viewModel = widget.viewModel; loadTemplate(template);
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();
}); });
}, },
items: [ items: [