mirror of
https://github.com/MisskeyIO/misskey
synced 2024-12-23 11:08:22 +09:00
c2370a1be6
* chore: Add the SPDX information to each file Add copyright and licensing information as defined in version 3.0 of the REUSE Specification. * tweak format --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and other misskey contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import * as misskey from 'misskey-js';
|
|
import { ComputedRef, inject, isRef, onActivated, onMounted, provide, ref, Ref } from 'vue';
|
|
|
|
export const setPageMetadata = Symbol('setPageMetadata');
|
|
export const pageMetadataProvider = Symbol('pageMetadataProvider');
|
|
|
|
export type PageMetadata = {
|
|
title: string;
|
|
subtitle?: string;
|
|
icon?: string | null;
|
|
avatar?: misskey.entities.User | null;
|
|
userName?: misskey.entities.User | null;
|
|
};
|
|
|
|
export function definePageMetadata(metadata: PageMetadata | null | Ref<PageMetadata | null> | ComputedRef<PageMetadata | null>): void {
|
|
const _metadata = isRef(metadata) ? metadata : ref(metadata);
|
|
|
|
provide(pageMetadataProvider, _metadata);
|
|
|
|
const set = inject(setPageMetadata) as any;
|
|
if (set) {
|
|
set(_metadata);
|
|
|
|
onMounted(() => {
|
|
set(_metadata);
|
|
});
|
|
|
|
onActivated(() => {
|
|
set(_metadata);
|
|
});
|
|
}
|
|
}
|
|
|
|
export function provideMetadataReceiver(callback: (info: ComputedRef<PageMetadata>) => void): void {
|
|
provide(setPageMetadata, callback);
|
|
}
|
|
|
|
export function injectPageMetadata(): PageMetadata | undefined {
|
|
return inject(pageMetadataProvider);
|
|
}
|