2024-01-08 14:44:43 +09:00
|
|
|
|
/*
|
2024-02-14 00:50:11 +09:00
|
|
|
|
* SPDX-FileCopyrightText: syuilo and other misskey contributors
|
2024-01-08 14:44:43 +09:00
|
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { inject } from 'vue';
|
|
|
|
|
import { IRouter, Router } from '@/nirax.js';
|
2024-01-30 21:07:34 +09:00
|
|
|
|
import { mainRouter } from '@/router/main.js';
|
2024-01-08 14:44:43 +09:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* メインの{@link Router}を取得する。
|
|
|
|
|
* あらかじめ{@link setupRouter}を実行しておく必要がある({@link provide}により{@link IRouter}のインスタンスを注入可能であるならばこの限りではない)
|
|
|
|
|
*/
|
|
|
|
|
export function useRouter(): IRouter {
|
|
|
|
|
return inject<Router | null>('router', null) ?? mainRouter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 任意の{@link Router}を取得するためのファクトリを取得する。
|
|
|
|
|
* あらかじめ{@link setupRouter}を実行しておく必要がある。
|
|
|
|
|
*/
|
|
|
|
|
export function useRouterFactory(): (path: string) => IRouter {
|
|
|
|
|
const factory = inject<(path: string) => IRouter>('routerFactory');
|
|
|
|
|
if (!factory) {
|
|
|
|
|
console.error('routerFactory is not defined.');
|
|
|
|
|
throw new Error('routerFactory is not defined.');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return factory;
|
|
|
|
|
}
|