mirror of
https://github.com/devonthesofa/obsidian-note-status.git
synced 2026-07-22 12:30:24 +00:00
51 lines
1 KiB
TypeScript
51 lines
1 KiB
TypeScript
|
|
import settingsService from "@/core/settingsService";
|
||
|
|
import { GroupedStatuses, NoteStatus } from "@/types/noteStatus";
|
||
|
|
|
||
|
|
export const DEFAULT_STATUS_ACCENT_COLOR = "var(--text-accent)";
|
||
|
|
const DEFAULT_UNKNOWN_STATUS_COLOR = "#8b949e";
|
||
|
|
|
||
|
|
export function getPrimaryStatus(
|
||
|
|
statuses?: GroupedStatuses | null,
|
||
|
|
): NoteStatus | null {
|
||
|
|
if (!statuses) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
for (const list of Object.values(statuses)) {
|
||
|
|
if (list.length) {
|
||
|
|
return list[0];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getUnknownStatusColor(): string {
|
||
|
|
return (
|
||
|
|
settingsService.settings.unknownStatusColor?.trim() ||
|
||
|
|
DEFAULT_UNKNOWN_STATUS_COLOR
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
export function resolveStatusColor(
|
||
|
|
status?: NoteStatus | null,
|
||
|
|
fallbackColor?: string,
|
||
|
|
defaultColor: string | null = DEFAULT_STATUS_ACCENT_COLOR,
|
||
|
|
): string | undefined {
|
||
|
|
const statusColor = status?.color?.trim();
|
||
|
|
if (statusColor) {
|
||
|
|
return statusColor;
|
||
|
|
}
|
||
|
|
|
||
|
|
const fallback = fallbackColor?.trim();
|
||
|
|
if (fallback) {
|
||
|
|
return fallback;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (defaultColor === null) {
|
||
|
|
return undefined;
|
||
|
|
}
|
||
|
|
|
||
|
|
return defaultColor || undefined;
|
||
|
|
}
|