diff --git a/nodejs/public/lib/js/app-base.js b/nodejs/public/lib/js/app-base.js
index 7fe4a17..3d4398d 100644
--- a/nodejs/public/lib/js/app-base.js
+++ b/nodejs/public/lib/js/app-base.js
@@ -679,13 +679,10 @@ function formAJAX(btn){
return false;
}
- app.messages.action(
- `
- Loading...
-
`,
- $form,
- 'info'
- );
+ // Plain text: app.messages.action HTML-escapes its message (by design,
+ // see @simpleworkjs/frontend), so raw markup like a spinner would
+ // render literally instead of as an element.
+ app.messages.action('Saving…', $form, 'info');
app.api[method]($form.attr('action'), formData, function(error, data){
app.messages.action(data.message, $form, error ? 'danger' : 'success'); //re-populate table
diff --git a/nodejs/routes/user.js b/nodejs/routes/user.js
index c03dc3f..100db7c 100755
--- a/nodejs/routes/user.js
+++ b/nodejs/routes/user.js
@@ -49,7 +49,7 @@ router.post('/', async function(req, res, next){
}
}
- return res.json({results: user});
+ return res.json({results: user, message: `User ${user.uid} created.`});
}catch(error){
next(error);
}
@@ -107,7 +107,7 @@ router.put('/password', async function(req, res, next){
const verif = await UserVerification.getOrCreate(req.user.uid);
await verif.update({ password_must_change: false });
User.clearCache();
- return res.json({results: result});
+ return res.json({results: result, message: 'Password changed.'});
}catch(error){
next(error);
}