Fix restoring the last url at start

The last session url is now remembered for being restored at the beginning of the session. Thanks for the help of @bwindels
This commit is contained in:
Kaki In 2022-07-26 10:02:20 +02:00
parent bb5711db7e
commit adfecf0778
3 changed files with 14 additions and 13 deletions

View file

@ -27,7 +27,7 @@ export class URLRouter {
}
_getLastSessionId() {
const navPath = this._urlAsNavPath(this._history.getLastUrl() || "");
const navPath = this._urlAsNavPath(this._history.getLastSessionUrl() || "");
const sessionId = navPath.get("session")?.value;
if (typeof sessionId === "string") {
return sessionId;
@ -84,7 +84,7 @@ export class URLRouter {
}
tryRestoreLastUrl() {
const lastNavPath = this._urlAsNavPath(this._history.getLastUrl() || "");
const lastNavPath = this._urlAsNavPath(this._history.getLastSessionUrl() || "");
if (lastNavPath.segments.length !== 0) {
this._applyNavPathToNavigation(lastNavPath);
return true;

View file

@ -22,16 +22,16 @@ export function makeTxnId() {
}
export function isTxnId(txnId) {
return txnId.startsWith("t") && txnId.length === 15;
return txnId.startsWith("t") && txnId.length === 15;
}
export function tests() {
return {
"isTxnId succeeds on result of makeTxnId": assert => {
assert(isTxnId(makeTxnId()));
},
"isTxnId fails on event id": assert => {
assert(!isTxnId("$yS_n5n3cIO2aTtek0_2ZSlv-7g4YYR2zKrk2mFCW_rm"));
},
}
return {
"isTxnId succeeds on result of makeTxnId": assert => {
assert(isTxnId(makeTxnId()));
},
"isTxnId fails on event id": assert => {
assert(!isTxnId("$yS_n5n3cIO2aTtek0_2ZSlv-7g4YYR2zKrk2mFCW_rm"));
},
}
}

View file

@ -65,6 +65,7 @@ export class History extends BaseObservableValue {
}
onSubscribeFirst() {
this._lastSessionHash = window.localStorage?.getItem("hydrogen_last_url_hash");
window.addEventListener('hashchange', this);
}
@ -76,7 +77,7 @@ export class History extends BaseObservableValue {
window.localStorage?.setItem("hydrogen_last_url_hash", hash);
}
getLastUrl() {
return window.localStorage?.getItem("hydrogen_last_url_hash");
getLastSessionUrl() {
return this._lastSessionHash;
}
}