| 46 | export type ExtensionSortOption = "title" | "lastUpdated"; |
| 47 | |
| 48 | export function sortExtensions<T extends RenderableExtension>( |
| 49 | items: T[], |
| 50 | sort: ExtensionSortOption |
| 51 | ): T[] { |
| 52 | return [...items].sort((a, b) => { |
| 53 | if (sort === "lastUpdated") { |
| 54 | const dateA = a.lastUpdated ? new Date(a.lastUpdated).getTime() : 0; |
| 55 | const dateB = b.lastUpdated ? new Date(b.lastUpdated).getTime() : 0; |
| 56 | return dateB - dateA; |
| 57 | } |
| 58 | |
| 59 | return a.name.localeCompare(b.name); |
| 60 | }); |
| 61 | } |
| 62 | |
| 63 | export function renderExtensionsHtml(items: RenderableExtension[]): string { |
| 64 | if (items.length === 0) { |