diff --git a/frontend/src/utils.js b/frontend/src/utils.js index c20e6eed2..89c351381 100644 --- a/frontend/src/utils.js +++ b/frontend/src/utils.js @@ -103,6 +103,8 @@ export default class Utils { // https://stackoverflow.com/a/12034334 escapeHTML = (html) => html.replace(/[&<>"'`=/]/g, (s) => htmlEntities[s]); + titleCase = (str) => str[0].toUpperCase() + str.substr(1).toLowerCase(); + // UI shortcuts. confirm = (msg, onConfirm, onCancel) => { Dialog.confirm({ diff --git a/frontend/src/views/SubscriberForm.vue b/frontend/src/views/SubscriberForm.vue index 372bcdd2c..f0a87cda7 100644 --- a/frontend/src/views/SubscriberForm.vue +++ b/frontend/src/views/SubscriberForm.vue @@ -165,6 +165,18 @@ export default Vue.extend({ }, onSubmit() { + // If there is no name, auto-generate one from the e-mail. + if (!this.form.name) { + let name = ''; + [name] = this.form.email.toLowerCase().split('@'); + + if (name.includes('.')) { + this.form.name = name.split('.').map((c) => this.$utils.titleCase(c)).join(' '); + } else { + this.form.name = this.$utils.titleCase(name); + } + } + if (this.isEditing) { this.updateSubscriber(); return;