summaryrefslogtreecommitdiff
path: root/packages/frontend/src/router/supplier.ts
blob: bdeb47cfd84b970c77c13ce911f862cb67b5df49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import { inject } from 'vue';
import type { IRouter } from '@/nirax.js';
import { mainRouter } from '@/router/main.js';
import { DI } from '@/di.js';

/**
 * メインの{@link Router}を取得する。
 * あらかじめ{@link setupRouter}を実行しておく必要がある({@link provide}により{@link IRouter}のインスタンスを注入可能であるならばこの限りではない)
 */
export function useRouter(): IRouter {
	return inject(DI.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;
}