mirror of
https://github.com/devonthesofa/obsidian-note-status.git
synced 2026-07-22 12:30:24 +00:00
74 lines
1.6 KiB
TypeScript
74 lines
1.6 KiB
TypeScript
import { NoteStatus } from "@/types/noteStatus";
|
|
import { TFile } from "obsidian";
|
|
|
|
/**
|
|
* Checks if a status is selected in the current statuses array
|
|
*/
|
|
export const isStatusSelected = (
|
|
status: NoteStatus,
|
|
currentStatuses: NoteStatus[],
|
|
): boolean => {
|
|
return currentStatuses.some(
|
|
(s) => s.name === status.name && s.templateId === status.templateId,
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Generates a tooltip string for a status
|
|
*/
|
|
export const getStatusTooltip = (status: NoteStatus): string => {
|
|
return status.description
|
|
? `${status.name} - ${status.description}`
|
|
: status.name;
|
|
};
|
|
|
|
/**
|
|
* Converts a TFile to a FileItem for UI display
|
|
*/
|
|
export interface FileItem {
|
|
id: string;
|
|
name: string;
|
|
path: string;
|
|
}
|
|
|
|
export const convertTFileToFileItem = (file: TFile): FileItem => ({
|
|
id: file.path,
|
|
name: file.basename,
|
|
path: file.path,
|
|
});
|
|
|
|
/**
|
|
* Gets the display name for a status, optionally including description
|
|
*/
|
|
export const getStatusDisplayName = (
|
|
status: NoteStatus,
|
|
includeDescription = false,
|
|
): string => {
|
|
if (!includeDescription || !status.description) {
|
|
return status.name;
|
|
}
|
|
return `${status.name} - ${status.description}`;
|
|
};
|
|
|
|
/**
|
|
* Compares two statuses for equality by name and templateId
|
|
*/
|
|
export const isStatusEqual = (
|
|
status1: NoteStatus,
|
|
status2: NoteStatus,
|
|
): boolean => {
|
|
return (
|
|
status1.name === status2.name &&
|
|
status1.templateId === status2.templateId
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Finds a status by name in an array
|
|
*/
|
|
export const findStatusByName = (
|
|
statuses: NoteStatus[],
|
|
name: string,
|
|
): NoteStatus | undefined => {
|
|
return statuses.find((status) => status.name === name);
|
|
};
|