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. // 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 { export default class HashNavigation {
// Parse hash as in http://www.example.com/path#hash as if it were
// path and arguments.
static parseUrlHash(hash) { static parseUrlHash(hash) {
// Split path from args, path -> parts[0], args->path[1] // Split path from args, path -> parts[0], args->path[1]
const parts = hash.split('?', 2); const parts = hash.split('?', 2);
@@ -12,7 +12,7 @@ export default class HashNavigation {
path = parts[0].replace('#', '').split('/'); path = parts[0].replace('#', '').split('/');
} }
if (parts[1]) { if (parts[1]) {
parts[1].split('&').forEach(function(part) { parts[1].split('&').forEach((part) => {
const item = part.split('='); const item = part.split('=');
if (item[0]) { if (item[0]) {
params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]); params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);
@@ -41,38 +41,38 @@ export default class HashNavigation {
} }
static addUrlParam(hash, key, value) { static addUrlParam(hash, key, value) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
parsed.params[key] = value; parsed.params[key] = value;
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static removeUrlParam(hash, key) { static removeUrlParam(hash, key) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
delete parsed.params[key]; delete parsed.params[key];
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static setUrlSidePanel(hash, sidepanel) { static setUrlSidePanel(hash, sidepanel) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
parsed.path[0] = sidepanel; parsed.path[0] = sidepanel;
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static setUrlInfoPanel(hash, infopanel) { static setUrlInfoPanel(hash, infopanel) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
if (infopanel) { if (infopanel) {
parsed.params.info = infopanel; parsed.params.info = infopanel;
} else { } else {
delete parsed.params.info; delete parsed.params.info;
} }
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static setUrlTopic(hash, topic) { static setUrlTopic(hash, topic) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
parsed.path[1] = topic; parsed.path[1] = topic;
// Close InfoView on topic change. // Close InfoView on topic change.
delete parsed.params.info; 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])) { if (!['cred', 'reset', 'register'].includes(parsedNav.path[0])) {
// Save possible topic name. // Save possible topic name.
this.setState({requestedTopic: parsedNav.path[1]}); 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; this.readTimer = null;
@@ -504,6 +507,10 @@ class TinodeWeb extends React.Component {
if (hash.params.code) { if (hash.params.code) {
this.setState({ credCode: 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. // Additional parameters of panels.
this.setState({ this.setState({
@@ -1659,8 +1666,7 @@ class TinodeWeb extends React.Component {
const me = this.tinode.getMeTopic(); const me = this.tinode.getMeTopic();
me.setMeta({cred: {meth: cred, resp: code}}) me.setMeta({cred: {meth: cred, resp: code}})
.then(_ => { .then(_ => {
this.handleError(this.props.intl.formatMessage(cred_confirmed_successfully), 'info'); HashNavigation.navigateTo(HashNavigation.addUrlParam('', 'cred_done', 1));
HashNavigation.navigateTo('');
}) })
.catch((err) => { .catch((err) => {
this.handleError(err.message, 'err'); this.handleError(err.message, 'err');
+21 -14
View File
@@ -3084,7 +3084,7 @@ class HashNavigation {
} }
if (parts[1]) { if (parts[1]) {
parts[1].split('&').forEach(function (part) { parts[1].split('&').forEach(part => {
const item = part.split('='); const item = part.split('=');
if (item[0]) { if (item[0]) {
@@ -3121,25 +3121,25 @@ class HashNavigation {
} }
static addUrlParam(hash, key, value) { static addUrlParam(hash, key, value) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
parsed.params[key] = value; parsed.params[key] = value;
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static removeUrlParam(hash, key) { static removeUrlParam(hash, key) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
delete parsed.params[key]; delete parsed.params[key];
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static setUrlSidePanel(hash, sidepanel) { static setUrlSidePanel(hash, sidepanel) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
parsed.path[0] = sidepanel; parsed.path[0] = sidepanel;
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static setUrlInfoPanel(hash, infopanel) { static setUrlInfoPanel(hash, infopanel) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
if (infopanel) { if (infopanel) {
parsed.params.info = infopanel; parsed.params.info = infopanel;
@@ -3147,14 +3147,14 @@ class HashNavigation {
delete parsed.params.info; delete parsed.params.info;
} }
return this.composeUrlHash(parsed.path, parsed.params); return HashNavigation.composeUrlHash(parsed.path, parsed.params);
} }
static setUrlTopic(hash, topic) { static setUrlTopic(hash, topic) {
const parsed = this.parseUrlHash(hash); const parsed = HashNavigation.parseUrlHash(hash);
parsed.path[1] = topic; parsed.path[1] = topic;
delete parsed.params.info; 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() { getBlankState() {
const settings = _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_17__["default"].getObject('settings') || {}; 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'); const persist = !!_lib_local_storage_js__WEBPACK_IMPORTED_MODULE_17__["default"].getObject('keep-logged-in');
console.log("Blank state");
return { return {
connected: false, connected: false,
ready: false, ready: false,
@@ -7942,7 +7943,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
this.setState({ this.setState({
requestedTopic: parsedNav.path[1] 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; 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({ this.setState({
infoPanel: hash.params.info, infoPanel: hash.params.info,
newTopicTabSelected: hash.params.tab newTopicTabSelected: hash.params.tab
@@ -9349,8 +9356,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
resp: code resp: code
} }
}).then(_ => { }).then(_ => {
this.handleError(this.props.intl.formatMessage(cred_confirmed_successfully), 'info'); 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"].navigateTo(_lib_navigation_js__WEBPACK_IMPORTED_MODULE_18__["default"].addUrlParam('', 'cred_done', 1));
}).catch(err => { }).catch(err => {
this.handleError(err.message, '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