62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { $i } from '@/account.js';
|
|
import { instance } from '@/instance.js';
|
|
|
|
export const basicTimelineTypes = [
|
|
'home',
|
|
'local',
|
|
'social',
|
|
'bubble',
|
|
'global',
|
|
] as const;
|
|
|
|
export type BasicTimelineType = typeof basicTimelineTypes[number];
|
|
|
|
export function isBasicTimeline(timeline: string): timeline is BasicTimelineType {
|
|
return basicTimelineTypes.includes(timeline as BasicTimelineType);
|
|
}
|
|
|
|
export function basicTimelineIconClass(timeline: BasicTimelineType): string {
|
|
switch (timeline) {
|
|
case 'home':
|
|
return 'ti ti-home';
|
|
case 'local':
|
|
return 'ti ti-planet';
|
|
case 'social':
|
|
return 'ti ti-universe';
|
|
case 'bubble':
|
|
return 'ph-drop ph-bold ph-lg';
|
|
case 'global':
|
|
return 'ti ti-whirl';
|
|
}
|
|
}
|
|
|
|
export function isAvailableBasicTimeline(timeline: BasicTimelineType | undefined | null): boolean {
|
|
switch (timeline) {
|
|
case 'home':
|
|
return $i != null;
|
|
case 'local':
|
|
return ($i == null && instance.policies.ltlAvailable) || ($i != null && $i.policies.ltlAvailable);
|
|
case 'social':
|
|
return $i != null && $i.policies.ltlAvailable;
|
|
case 'bubble':
|
|
return ($i == null && instance.policies.btlAvailable) || ($i != null && $i.policies.btlAvailable);
|
|
case 'global':
|
|
return ($i == null && instance.policies.gtlAvailable) || ($i != null && $i.policies.gtlAvailable);
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export function availableBasicTimelines(): BasicTimelineType[] {
|
|
return basicTimelineTypes.filter(isAvailableBasicTimeline);
|
|
}
|
|
|
|
export function hasWithReplies(timeline: BasicTimelineType | undefined | null): boolean {
|
|
return timeline === 'local' || timeline === 'social';
|
|
}
|