Delegate combined mixins (slash/oauth/invite/permission/worker) use the same gossip keysField and initMethod as dedicated *-json-mixin.js modules. Extract platform-message-enrichment.js and platform-delivery-receipts-imports.js from index.js (~38 lines removed). Mesh ingest and heal behavior unchanged. Co-authored-by: Cursor <[email protected]>
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
'use strict'
|
|
|
|
const { classifyMessageLayout, LAYOUT } = require('pearcord-message-layout')
|
|
const { parseHubMirrorJson, hubMirrorFromMessage } = require('pearcord-hub-cards')
|
|
|
|
function messageLayoutKind (m) {
|
|
const layout = classifyMessageLayout(m)
|
|
if (layout === LAYOUT.HUB) return 'hub'
|
|
if (layout === LAYOUT.COMBO) return 'combo'
|
|
if (layout === LAYOUT.STICKER_ONLY) return 'sticker-only'
|
|
if (layout === LAYOUT.EMOJI_ONLY) return 'emoji-only'
|
|
return 'text'
|
|
}
|
|
|
|
function enrichMessageStickerNames (m) {
|
|
if (!m) return m
|
|
if ((m.stickerNames || []).length) return m
|
|
if (!m.stickerNamesJson) return m
|
|
try {
|
|
const parsed = JSON.parse(m.stickerNamesJson)
|
|
if (Array.isArray(parsed) && parsed.length) {
|
|
return { ...m, stickerNames: parsed }
|
|
}
|
|
} catch { /* ignore */ }
|
|
return m
|
|
}
|
|
|
|
function enrichMessageHubMirror (m) {
|
|
if (!m) return m
|
|
if (m.hubMirror?.kind === 'hub-mirror') return m
|
|
if (m.hubMirrorJson) {
|
|
const card = parseHubMirrorJson(m.hubMirrorJson)
|
|
if (card) return { ...m, hubMirror: card }
|
|
}
|
|
const legacy = hubMirrorFromMessage(m)
|
|
if (legacy) return { ...m, hubMirror: legacy }
|
|
return m
|
|
}
|
|
|
|
function enrichMessageRow (m) {
|
|
return enrichMessageHubMirror(enrichMessageStickerNames(m))
|
|
}
|
|
|
|
module.exports = {
|
|
messageLayoutKind,
|
|
enrichMessageStickerNames,
|
|
enrichMessageHubMirror,
|
|
enrichMessageRow
|
|
}
|