fix display of a validation success message
This commit is contained in:
+13
-13
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
@@ -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');
|
||||||
});
|
});
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user