fix display of a validation success message

This commit is contained in:
or-else
2022-08-25 15:02:11 -10:00
parent 0e53234d02
commit df203f48bd
6 changed files with 46 additions and 33 deletions
+13 -13
View File
@@ -1,8 +1,8 @@
// Utility class for hash navigation.
// Parse hash as in http://www.example.com/path#hash as if it were
// path and arguments.
export default class HashNavigation {
// Parse hash as in http://www.example.com/path#hash as if it were
// path and arguments.
static parseUrlHash(hash) {
// Split path from args, path -> parts[0], args->path[1]
const parts = hash.split('?', 2);
@@ -12,7 +12,7 @@ export default class HashNavigation {
path = parts[0].replace('#', '').split('/');
}
if (parts[1]) {
parts[1].split('&').forEach(function(part) {
parts[1].split('&').forEach((part) => {
const item = part.split('=');
if (item[0]) {
params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);
@@ -41,38 +41,38 @@ export default class HashNavigation {
}
static addUrlParam(hash, key, value) {
const parsed = this.parseUrlHash(hash);
const parsed = HashNavigation.parseUrlHash(hash);
parsed.params[key] = value;
return this.composeUrlHash(parsed.path, parsed.params);
return HashNavigation.composeUrlHash(parsed.path, parsed.params);
}
static removeUrlParam(hash, key) {
const parsed = this.parseUrlHash(hash);
const parsed = HashNavigation.parseUrlHash(hash);
delete parsed.params[key];
return this.composeUrlHash(parsed.path, parsed.params);
return HashNavigation.composeUrlHash(parsed.path, parsed.params);
}
static setUrlSidePanel(hash, sidepanel) {
const parsed = this.parseUrlHash(hash);
const parsed = HashNavigation.parseUrlHash(hash);
parsed.path[0] = sidepanel;
return this.composeUrlHash(parsed.path, parsed.params);
return HashNavigation.composeUrlHash(parsed.path, parsed.params);
}
static setUrlInfoPanel(hash, infopanel) {
const parsed = this.parseUrlHash(hash);
const parsed = HashNavigation.parseUrlHash(hash);
if (infopanel) {
parsed.params.info = infopanel;
} else {
delete parsed.params.info;
}
return this.composeUrlHash(parsed.path, parsed.params);
return HashNavigation.composeUrlHash(parsed.path, parsed.params);
}
static setUrlTopic(hash, topic) {
const parsed = this.parseUrlHash(hash);
const parsed = HashNavigation.parseUrlHash(hash);
parsed.path[1] = topic;
// Close InfoView on topic change.
delete parsed.params.info;
return this.composeUrlHash(parsed.path, parsed.params);
return HashNavigation.composeUrlHash(parsed.path, parsed.params);
}
}
+9 -3
View File
@@ -331,7 +331,10 @@ class TinodeWeb extends React.Component {
if (!['cred', 'reset', 'register'].includes(parsedNav.path[0])) {
// Save possible topic name.
this.setState({requestedTopic: parsedNav.path[1]});
HashNavigation.navigateTo('');
const path = parsedNav.params && parsedNav.params.cred_done ?
HashNavigation.addUrlParam('', 'cred_done', parsedNav.params.cred_done):
'';
HashNavigation.navigateTo(path);
}
this.readTimer = null;
@@ -504,6 +507,10 @@ class TinodeWeb extends React.Component {
if (hash.params.code) {
this.setState({ credCode: hash.params.code });
}
// Validation was successful, show a message.
if (hash.params.cred_done) {
this.handleError(this.props.intl.formatMessage(messages.cred_confirmed_successfully), 'info');
}
// Additional parameters of panels.
this.setState({
@@ -1659,8 +1666,7 @@ class TinodeWeb extends React.Component {
const me = this.tinode.getMeTopic();
me.setMeta({cred: {meth: cred, resp: code}})
.then(_ => {
this.handleError(this.props.intl.formatMessage(cred_confirmed_successfully), 'info');
HashNavigation.navigateTo('');
HashNavigation.navigateTo(HashNavigation.addUrlParam('', 'cred_done', 1));
})
.catch((err) => {
this.handleError(err.message, 'err');