Enable branded URLs again by parsing the path client-side
Use the first path segment to key off config.teamTokenMap, which contains a mapping to teamTokens. The client then behaves as before, keeping the path in the address bar constant with no redirects required.
This commit is contained in:
parent
a5a43bcd93
commit
bdd031eac2
1 changed files with 17 additions and 1 deletions
|
@ -191,6 +191,17 @@ module.exports = React.createClass({
|
||||||
MatrixClientPeg.opts.initialSyncLimit = this.props.config.sync_timeline_limit;
|
MatrixClientPeg.opts.initialSyncLimit = this.props.config.sync_timeline_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// To enable things like riot.im/geektime in a nicer way than rewriting the URL
|
||||||
|
// and appending a team token query parameter, use the first path segment to
|
||||||
|
// indicate a team, with "public" team tokens stored in the config teamTokenMap.
|
||||||
|
let routedTeamToken = null;
|
||||||
|
if (this.props.config.teamTokenMap) {
|
||||||
|
const teamName = window.location.pathname.split('/')[1];
|
||||||
|
if (this.props.config.teamTokenMap.hasOwnProperty(teamName)) {
|
||||||
|
routedTeamToken = this.props.config.teamTokenMap[teamName];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Persist the team token across refreshes using sessionStorage. A new window or
|
// Persist the team token across refreshes using sessionStorage. A new window or
|
||||||
// tab will not persist sessionStorage, but refreshes will.
|
// tab will not persist sessionStorage, but refreshes will.
|
||||||
if (this.props.startingFragmentQueryParams.team_token) {
|
if (this.props.startingFragmentQueryParams.team_token) {
|
||||||
|
@ -202,8 +213,13 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
// Use the locally-stored team token first, then as a fall-back, check to see if
|
// Use the locally-stored team token first, then as a fall-back, check to see if
|
||||||
// a referral link was used, which will contain a query parameter `team_token`.
|
// a referral link was used, which will contain a query parameter `team_token`.
|
||||||
this._teamToken = window.localStorage.getItem('mx_team_token') ||
|
this._teamToken = routedTeamToken ||
|
||||||
|
window.localStorage.getItem('mx_team_token') ||
|
||||||
window.sessionStorage.getItem('mx_team_token');
|
window.sessionStorage.getItem('mx_team_token');
|
||||||
|
|
||||||
|
if (this._teamToken) {
|
||||||
|
console.info(`Team token set to ${this._teamToken}`);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount: function() {
|
componentDidMount: function() {
|
||||||
|
|
Loading…
Reference in a new issue