From 3a1482c721d3cb103d34ef60318acc7b86891898 Mon Sep 17 00:00:00 2001 From: ra939 Date: Sun, 5 Oct 2025 08:54:02 +0000 Subject: [PATCH] commit plugin to fix data format issue in inbox and send files --- client/plugins/format-date-safe.client.js | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 client/plugins/format-date-safe.client.js diff --git a/client/plugins/format-date-safe.client.js b/client/plugins/format-date-safe.client.js new file mode 100644 index 000000000..bd11a9569 --- /dev/null +++ b/client/plugins/format-date-safe.client.js @@ -0,0 +1,37 @@ +// Wrap app.$formatDate to accept ISO strings / numbers safely +import Vue from 'vue' +import { parseISO, isValid } from 'date-fns' +import format from 'date-fns/format' + +export default ({ app }) => { + const use = (impl) => (v, p) => { + let d = v instanceof Date ? v : null + if (!d && typeof v === 'string') { + const k = parseISO(v) + if (isValid(k)) d = k + } + if (!d && (typeof v === 'number' || typeof v === 'string')) { + const k = new Date(v) + if (isValid(k)) d = k + } + if (!d) return '' + try { + return impl(d, p) + } catch { + try { + return format(d, p || 'yyyy-MM-dd') + } catch { + return '' + } + } + } + if (typeof app.$formatDate === 'function') { + const safe = use((d, p) => app.$formatDate(d, p)) + app.$formatDate = safe + Vue.prototype.$formatDate = safe + } else { + const safe = use((d, p) => format(d, p || 'yyyy-MM-dd')) + app.$formatDate = safe + Vue.prototype.$formatDate = safe + } +}