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');
+21 -14
View File
@@ -3084,7 +3084,7 @@ class HashNavigation {
}
if (parts[1]) {
parts[1].split('&').forEach(function (part) {
parts[1].split('&').forEach(part => {
const item = part.split('=');
if (item[0]) {
@@ -3121,25 +3121,25 @@ 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;
@@ -3147,14 +3147,14 @@ class HashNavigation {
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;
delete parsed.params.info;
return this.composeUrlHash(parsed.path, parsed.params);
return HashNavigation.composeUrlHash(parsed.path, parsed.params);
}
}
@@ -7828,6 +7828,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
getBlankState() {
const settings = _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_17__["default"].getObject('settings') || {};
const persist = !!_lib_local_storage_js__WEBPACK_IMPORTED_MODULE_17__["default"].getObject('keep-logged-in');
console.log("Blank state");
return {
connected: false,
ready: false,
@@ -7942,7 +7943,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
this.setState({
requestedTopic: parsedNav.path[1]
});
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].navigateTo('');
const path = parsedNav.params && parsedNav.params.cred_done ? _lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].addUrlParam('', 'cred_done', parsedNav.params.cred_done) : '';
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].navigateTo(path);
}
this.readTimer = null;
@@ -8151,6 +8153,11 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
});
}
if (hash.params.cred_done) {
console.log("credentials validated");
this.handleError(this.props.intl.formatMessage(messages.cred_confirmed_successfully), 'info');
}
this.setState({
infoPanel: hash.params.info,
newTopicTabSelected: hash.params.tab
@@ -9349,8 +9356,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
resp: code
}
}).then(_ => {
this.handleError(this.props.intl.formatMessage(cred_confirmed_successfully), 'info');
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].navigateTo('');
console.log("URL with creds:", _lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].addUrlParam('', 'cred_done', 1));
_lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].navigateTo(_lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].addUrlParam('', 'cred_done', 1));
}).catch(err => {
this.handleError(err.message, 'err');
});
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long