import { useMemo, FunctionComponent } from 'react' import { SNNote, classNames } from '@standardnotes/snjs' import { formatDateForContextMenu } from '@/Utils/DateUtils' import { calculateReadTime } from './Utils/calculateReadTime' import { countNoteAttributes } from './Utils/countNoteAttributes' import { WebApplicationInterface } from '@standardnotes/ui-services' export const useNoteAttributes = (application: WebApplicationInterface, note: SNNote) => { const { words, characters, paragraphs } = useMemo(() => countNoteAttributes(note.text), [note.text]) const readTime = useMemo(() => (typeof words === 'number' ? calculateReadTime(words) : 'N/A'), [words]) const dateLastModified = useMemo(() => formatDateForContextMenu(note.userModifiedDate), [note.userModifiedDate]) const dateCreated = useMemo(() => formatDateForContextMenu(note.created_at), [note.created_at]) const editor = application.componentManager.editorForNote(note) const format = editor.fileType return { words, characters, paragraphs, readTime, dateLastModified, dateCreated, format, } } export const NoteAttributes: FunctionComponent<{ application: WebApplicationInterface note: SNNote className?: string }> = ({ application, note, className }) => { const { words, characters, paragraphs, readTime, dateLastModified, dateCreated, format } = useNoteAttributes( application, note, ) return (
{typeof words === 'number' && (format === 'txt' || format === 'md') ? ( <>
{words} words · {characters} characters · {paragraphs} paragraphs
Read time: {readTime}
) : null}
Last modified: {dateLastModified}
Created: {dateCreated}
Note ID: {note.uuid}
) }