Merge pull request #232 from matrix-org/bwindels/fix-parse-identifier
have a separate parse method for identifier so we don't validate the fragment hash
This commit is contained in:
commit
27c74448d6
22
src/Link.js
22
src/Link.js
@ -80,7 +80,7 @@ export function tryFixUrl(fragment) {
|
||||
|
||||
const validAttempts = [];
|
||||
for (const attempt of [...new Set(attempts)]) {
|
||||
const link = Link.parse(attempt);
|
||||
const link = Link.parseFragment(attempt);
|
||||
if (link) {
|
||||
validAttempts.push({ url: attempt, link });
|
||||
}
|
||||
@ -98,11 +98,20 @@ export class Link {
|
||||
);
|
||||
}
|
||||
|
||||
static parse(fragment) {
|
||||
static parseIdentifier(identifier) {
|
||||
return Link._parse(identifier);
|
||||
}
|
||||
|
||||
static parseFragment(fragment) {
|
||||
if (!fragment) {
|
||||
return null;
|
||||
}
|
||||
let [linkStr, queryParamsStr] = fragment.split("?");
|
||||
if (!linkStr.startsWith("#/")) {
|
||||
return null;
|
||||
}
|
||||
linkStr = linkStr.substr(2);
|
||||
const [identifier, eventId] = linkStr.split("/");
|
||||
|
||||
let viaServers = [];
|
||||
let clientId = null;
|
||||
@ -121,14 +130,13 @@ export class Link {
|
||||
}
|
||||
webInstances = getWebInstanceMap(queryParams);
|
||||
}
|
||||
return Link._parse(identifier, eventId, clientId, viaServers, webInstances);
|
||||
}
|
||||
|
||||
if (!linkStr.startsWith("#/")) {
|
||||
static _parse(identifier, eventId = undefined, clientId = null, viaServers = [], webInstances = {}) {
|
||||
if (!identifier) {
|
||||
return null;
|
||||
}
|
||||
linkStr = linkStr.substr(2);
|
||||
|
||||
const [identifier, eventId] = linkStr.split("/");
|
||||
|
||||
let matches;
|
||||
matches = USERID_PATTERN.exec(identifier);
|
||||
if (matches) {
|
||||
|
@ -76,7 +76,7 @@ export class RootViewModel extends ViewModel {
|
||||
} else if (hash === "" || hash === "#" || hash === "#/") {
|
||||
this._updateChildVMs(null, oldLink);
|
||||
this.createLinkViewModel = new CreateLinkViewModel(this.childOptions());
|
||||
} else if (newLink = Link.parse(hash)) {
|
||||
} else if (newLink = Link.parseFragment(hash)) {
|
||||
this._updateChildVMs(newLink, oldLink);
|
||||
} else {
|
||||
this._updateChildVMs(null, oldLink);
|
||||
|
@ -30,7 +30,7 @@ export class CreateLinkViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
async createLink(identifier) {
|
||||
this._link = Link.parse(identifier);
|
||||
this._link = Link.parseIdentifier(identifier);
|
||||
if (this._link) {
|
||||
this.openLink("#" + this._link.toFragment());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user