(value: unknown, userField: UserField)
| 760 | } |
| 761 | |
| 762 | function formatUserPropertyValue(value: unknown, userField: UserField): string { |
| 763 | if (value === null || value === undefined) return ""; |
| 764 | |
| 765 | try { |
| 766 | switch (userField.type) { |
| 767 | case "text": |
| 768 | case "number": |
| 769 | return stringifyUnknown(value); |
| 770 | case "date": |
| 771 | return formatDateTimeForDisplay(stringifyUnknown(value), { |
| 772 | dateFormat: "MMM d, yyyy", |
| 773 | timeFormat: "", |
| 774 | showTime: false, |
| 775 | }); |
| 776 | case "boolean": |
| 777 | return value ? "✓" : "✗"; |
| 778 | case "list": |
| 779 | if (Array.isArray(value)) { |
| 780 | return (value as unknown[]).flat(2).map(stringifyUnknown).join(", "); |
| 781 | } |
| 782 | return stringifyUnknown(value); |
| 783 | default: |
| 784 | return stringifyUnknown(value); |
| 785 | } |
| 786 | } catch (error) { |
| 787 | tasknotesLogger.warn("TaskCard: Error formatting user property value:", { |
| 788 | category: "validation", |
| 789 | operation: "taskcard-formatting-user-property-value", |
| 790 | error: error, |
| 791 | }); |
| 792 | return stringifyUnknown(value); |
| 793 | } |
| 794 | } |
| 795 | |
| 796 | function getTaskCardDateFormat(dateString: string): string { |
| 797 | const year = Number(getDatePart(dateString).slice(0, 4)); |
no test coverage detected