diff --git a/frontend/components/wrapped/cards/Card07BentoSummary.vue b/frontend/components/wrapped/cards/Card07BentoSummary.vue
index 9d6e6ec..38713b9 100644
--- a/frontend/components/wrapped/cards/Card07BentoSummary.vue
+++ b/frontend/components/wrapped/cards/Card07BentoSummary.vue
@@ -515,16 +515,26 @@
>👍
-
- {{ topUnicodeEmoji }}
-
+
+
+
+
+
+ {{ topEmojiLabel }}
+
+
- 使用了 {{ formatInt(topUnicodeEmojiCount) }} 次
+ 使用了 {{ formatInt(topEmojiCount) }} 次
☺
@@ -1069,6 +1079,42 @@ watch(
const topUnicodeEmoji = computed(() => String(snapshot.value?.topUnicodeEmoji || '😀'))
const topUnicodeEmojiCount = computed(() => Number(snapshot.value?.topUnicodeEmojiCount || 0))
+const topEmoji = computed(() => {
+ const o = snapshot.value?.topEmoji
+ return o && typeof o === 'object' ? o : null
+})
+const topEmojiKind = computed(() => String(topEmoji.value?.kind || '').trim())
+const topEmojiLabel = computed(() => {
+ if (topEmoji.value) {
+ if (topEmojiKind.value === 'wechat') {
+ const key = String(topEmoji.value?.key || '').trim()
+ if (key) return key
+ } else if (topEmojiKind.value === 'unicode') {
+ const emo = String(topEmoji.value?.emoji || '').trim()
+ if (emo) return emo
+ }
+ }
+ return topUnicodeEmoji.value
+})
+const topEmojiCount = computed(() => {
+ if (topEmoji.value) {
+ const n = Number(topEmoji.value?.count || 0)
+ return Number.isFinite(n) ? n : 0
+ }
+ return topUnicodeEmojiCount.value
+})
+const topEmojiAssetPath = computed(() => {
+ if (!topEmoji.value || topEmojiKind.value !== 'wechat') return ''
+ return resolveMediaUrl(topEmoji.value?.assetPath || '')
+})
+watch(
+ topEmojiAssetPath,
+ () => {
+ broken.topEmoji = false
+ },
+ { immediate: true }
+)
+
const rawMonthly = computed(() => (Array.isArray(snapshot.value?.monthlyBestBuddies) ? snapshot.value.monthlyBestBuddies : []))
const monthlyNormalized = computed(() => {
const byMonth = new Map()
diff --git a/frontend/pages/wrapped/index.vue b/frontend/pages/wrapped/index.vue
index 343fb6a..ec667dc 100644
--- a/frontend/pages/wrapped/index.vue
+++ b/frontend/pages/wrapped/index.vue
@@ -105,7 +105,7 @@
:style="slideStyle"
>