mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-12-23 03:25:12 +01:00
some cleanup
This commit is contained in:
parent
da9798979c
commit
696e7856f8
@ -39,6 +39,7 @@ export class BrawlViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async load() {
|
async load() {
|
||||||
|
// TODO: deduplicate code here
|
||||||
this.track(this.navigation.observe("login").subscribe(shown => {
|
this.track(this.navigation.observe("login").subscribe(shown => {
|
||||||
if (shown) {
|
if (shown) {
|
||||||
this._showLogin();
|
this._showLogin();
|
||||||
@ -125,7 +126,7 @@ export class BrawlViewModel extends ViewModel {
|
|||||||
sessionContainer.startWithExistingSession(sessionId);
|
sessionContainer.startWithExistingSession(sessionId);
|
||||||
return sessionContainer;
|
return sessionContainer;
|
||||||
},
|
},
|
||||||
sessionCallback: sessionContainer => this._sessionCallback(sessionContainer)
|
sessionCallback: this._sessionCallback
|
||||||
});
|
});
|
||||||
this._sessionLoadViewModel.start();
|
this._sessionLoadViewModel.start();
|
||||||
});
|
});
|
||||||
|
@ -23,7 +23,7 @@ export class URLRouter {
|
|||||||
this._navigation = navigation;
|
this._navigation = navigation;
|
||||||
}
|
}
|
||||||
|
|
||||||
start() {
|
attach() {
|
||||||
this._subscription = this._history.subscribe(url => {
|
this._subscription = this._history.subscribe(url => {
|
||||||
this._applyUrl(url);
|
this._applyUrl(url);
|
||||||
});
|
});
|
||||||
@ -60,6 +60,7 @@ export class URLRouter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
replaceUrl(url) {
|
replaceUrl(url) {
|
||||||
|
// TODO: we don't want this to always to trigger an update
|
||||||
this._history.replaceUrl(url);
|
this._history.replaceUrl(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
32
src/domain/navigation/index.js
Normal file
32
src/domain/navigation/index.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {Navigation} from "./Navigation.js";
|
||||||
|
|
||||||
|
export function createNavigation() {
|
||||||
|
return new Navigation(function allowsChild(parent, child) {
|
||||||
|
const {type} = child;
|
||||||
|
switch (parent?.type) {
|
||||||
|
case undefined:
|
||||||
|
// allowed root segments
|
||||||
|
return type === "login" || type === "session";
|
||||||
|
case "session":
|
||||||
|
return type === "room" || type === "rooms" || type === "settings";
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
17
src/main.js
17
src/main.js
@ -22,7 +22,7 @@ import {SessionContainer} from "./matrix/SessionContainer.js";
|
|||||||
import {StorageFactory} from "./matrix/storage/idb/StorageFactory.js";
|
import {StorageFactory} from "./matrix/storage/idb/StorageFactory.js";
|
||||||
import {SessionInfoStorage} from "./matrix/sessioninfo/localstorage/SessionInfoStorage.js";
|
import {SessionInfoStorage} from "./matrix/sessioninfo/localstorage/SessionInfoStorage.js";
|
||||||
import {BrawlViewModel} from "./domain/BrawlViewModel.js";
|
import {BrawlViewModel} from "./domain/BrawlViewModel.js";
|
||||||
import {Navigation} from "./domain/navigation/Navigation.js";
|
import {createNavigation} from "./domain/navigation/index.js";
|
||||||
import {URLRouter} from "./domain/navigation/URLRouter.js";
|
import {URLRouter} from "./domain/navigation/URLRouter.js";
|
||||||
import {BrawlView} from "./ui/web/BrawlView.js";
|
import {BrawlView} from "./ui/web/BrawlView.js";
|
||||||
import {Clock} from "./ui/web/dom/Clock.js";
|
import {Clock} from "./ui/web/dom/Clock.js";
|
||||||
@ -118,20 +118,9 @@ export async function main(container, paths, legacyExtras) {
|
|||||||
workerPromise = loadOlmWorker(paths);
|
workerPromise = loadOlmWorker(paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
const navigation = new Navigation(function allowsChild(parent, child) {
|
const navigation = createNavigation();
|
||||||
const {type} = child;
|
|
||||||
switch (parent?.type) {
|
|
||||||
case undefined:
|
|
||||||
// allowed root segments
|
|
||||||
return type === "login" || type === "session";
|
|
||||||
case "session":
|
|
||||||
return type === "room" || type === "settings";
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const urlRouter = new URLRouter(new History(), navigation);
|
const urlRouter = new URLRouter(new History(), navigation);
|
||||||
urlRouter.start();
|
urlRouter.attach();
|
||||||
|
|
||||||
const vm = new BrawlViewModel({
|
const vm = new BrawlViewModel({
|
||||||
createSessionContainer: () => {
|
createSessionContainer: () => {
|
||||||
|
Loading…
Reference in New Issue
Block a user