in client/src/pages/add-word/add-word.ts [65:104]
onFormSubmit() {
// Force validation of all fields
for (const k of Object.keys(this.form.controls)) {
this.form.controls[k].markAsDirty();
}
if (!this.form.valid) {
return;
}
this.submittingForm = true;
const loadingPopup = this.dialog.open(LoadingPopUpComponent, { panelClass: 'loading-popup' });
const addedWord: AddedWord = this.form.value;
if (!addedWord.word && this.i18n.currentLanguage.code == DEFAULT_LOCALE) {
addedWord.word = addedWord.englishWord;
}
addedWord.language = this.i18n.currentLanguage.code;
addedWord.nativeLanguage = this.endangeredLanguageService.currentLanguage.code;
this.feedbackService.addWord(this.form.value).then(
() => {
logger.log('Added word submitted');
this.location.back();
const snackbarCssClass = this.prevPageCssClass ? `${this.prevPageCssClass}-snack-bar` : '';
this.snackBar.open(this.i18n.getTranslation('wordSubmitted') || 'Submitted for review', '',
{ duration: environment.components.snackBar.duration, panelClass: snackbarCssClass });
// HACK: fix snackbar not closing on some iOS devices
setTimeout(() => {
(document.getElementsByTagName('snack-bar-container')[0].parentNode as Element).remove();
}, environment.components.snackBar.duration + 500);
},
err => {
logger.warn('Failed adding word', err);
const errorMessage = this.i18n.getTranslation('addWordError') || 'Unable to add word';
this.dialog.open(ErrorPopUpComponent, { data: { message: errorMessage } });
}
).finally(
() => {
this.submittingForm = false;
loadingPopup.close();
}
);
}