+ {spark.plainText} +
+ + {format( + new Date(spark.creationDate), + "dd.MM.yyyy", + )} + +Sparktag - Under Construction
- -sparktag@derwebcoder.de
+diff --git a/package-lock.json b/package-lock.json index 64c477b..221a215 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@tiptap/react": "^2.6.6", "@tiptap/starter-kit": "^2.6.6", "astro": "^4.14.3", + "date-fns": "^4.1.0", "dexie": "^4.0.8", "dexie-react-hooks": "^1.1.7", "preline": "^2.4.1", @@ -7648,6 +7649,16 @@ "node": ">=18" } }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", diff --git a/package.json b/package.json index a9c71db..82769c9 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@tiptap/react": "^2.6.6", "@tiptap/starter-kit": "^2.6.6", "astro": "^4.14.3", + "date-fns": "^4.1.0", "dexie": "^4.0.8", "dexie-react-hooks": "^1.1.7", "preline": "^2.4.1", diff --git a/src/application/SparkList/SparkList.tsx b/src/application/SparkList/SparkList.tsx index 49e45ff..8ac4979 100644 --- a/src/application/SparkList/SparkList.tsx +++ b/src/application/SparkList/SparkList.tsx @@ -1,14 +1,78 @@ import { useLiveQuery } from "dexie-react-hooks"; import { sparkService } from "../../scripts/db/SparkService"; +import { format } from "date-fns"; +import type Spark from "../../interfaces/Spark"; export const SparkList = () => { const sparks = useLiveQuery(() => sparkService.listSparks()); + const grouped = sparks?.reduce< + { + key: string; + prefixTags: string[]; + sparks: Spark[]; + }[] + >((tmpGrouped, spark) => { + const prevKey = + tmpGrouped.length > 0 + ? tmpGrouped[tmpGrouped.length - 1].key + : `${Math.random()}`; + const nextKey = + spark.contextTags.length > 0 + ? spark.contextTags.join("/") + : `${Math.random()}`; + if (prevKey === "" || prevKey !== nextKey) { + tmpGrouped.push({ + key: nextKey, + prefixTags: spark.contextTags, + sparks: [spark], + }); + return tmpGrouped; + } + + tmpGrouped[tmpGrouped.length - 1].sparks.push(spark); + return tmpGrouped; + }, []); + return ( -
+ {spark.plainText} +
+ + {format( + new Date(spark.creationDate), + "dd.MM.yyyy", + )} + +sparktag@derwebcoder.de
+