diff --git a/frontend_nuxt/components/ReactionsGroup.vue b/frontend_nuxt/components/ReactionsGroup.vue
index 58b145330..2c983f93d 100644
--- a/frontend_nuxt/components/ReactionsGroup.vue
+++ b/frontend_nuxt/components/ReactionsGroup.vue
@@ -14,7 +14,7 @@
:class="{ selected: userReacted(r.type) }"
@click="toggleReaction(r.type)"
>
-
+
{{ counts[r.type] }}
@@ -220,6 +220,7 @@ onMounted(async () => {
align-items: center;
width: 100%;
justify-content: space-between;
+ flex-wrap: wrap;
}
.reactions-viewer {
@@ -229,6 +230,12 @@ onMounted(async () => {
align-items: center;
}
+.reaction-emoji {
+ width: 20px;
+ height: 20px;
+ vertical-align: middle;
+}
+
.reactions-viewer-item-container {
display: flex;
flex-direction: row;
@@ -337,5 +344,23 @@ onMounted(async () => {
font-size: 16px;
padding: 3px 5px;
}
+
+ .reactions-viewer-item.placeholder,
+ .reactions-viewer-single-item {
+ padding: 4px 8px;
+ gap: 3px;
+ border: 1px solid var(--normal-border-color);
+ border-radius: 10px;
+ margin-right: 3px;
+ margin-bottom: 3px;
+ font-size: 12px;
+ color: var(--text-color);
+ align-items: center;
+ }
+
+ .reaction-emoji {
+ width: 14px;
+ height: 14px;
+ }
}
diff --git a/frontend_nuxt/pages/users/[id].vue b/frontend_nuxt/pages/users/[id].vue
index 3bdf81c29..12d47c45c 100644
--- a/frontend_nuxt/pages/users/[id].vue
+++ b/frontend_nuxt/pages/users/[id].vue
@@ -895,6 +895,7 @@ watch(selectedTab, async (val) => {
font-weight: bold;
color: var(--primary-color);
text-decoration: none;
+ word-break: break-word;
}
.timeline-link:hover {
@@ -969,9 +970,5 @@ watch(selectedTab, async (val) => {
.hot-tag {
width: 100%;
}
-
- .profile-timeline {
- width: calc(100vw - 40px);
- }
}
diff --git a/frontend_nuxt/public/googlea6f18c4a543fb356.html b/frontend_nuxt/public/googlea6f18c4a543fb356.html
new file mode 100644
index 000000000..aed8c3c8b
--- /dev/null
+++ b/frontend_nuxt/public/googlea6f18c4a543fb356.html
@@ -0,0 +1 @@
+google-site-verification: googlea6f18c4a543fb356.html
diff --git a/frontend_nuxt/utils/reactions.js b/frontend_nuxt/utils/reactions.js
index a025ce8bc..84e9196cf 100644
--- a/frontend_nuxt/utils/reactions.js
+++ b/frontend_nuxt/utils/reactions.js
@@ -2,7 +2,11 @@ const toCdnUrl = (emoji) => {
const codepoints = Array.from(emoji)
.map((c) => c.codePointAt(0).toString(16))
.join('_')
- return `https://fonts.gstatic.com/s/e/notoemoji/latest/${codepoints}/emoji.svg`
+ // 国外镜像有点小卡 (=゚ω゚)ノ, 国内大部分地区访问时会触发 SNI 封锁 / DNS 污染
+ // return `https://fonts.gstatic.com/s/e/notoemoji/latest/${codepoints}/emoji.svg`
+
+ // loli.net(即字节系开源社区 mirror,比如 jsDelivr 中国优化节点背后的 CDN 体系). 不会被墙
+ return `https://gstatic.loli.net/s/e/notoemoji/latest/${codepoints}/emoji.svg`
}
export const reactionEmojiMap = {
diff --git a/frontend_nuxt/utils/tiebaEmoji.js b/frontend_nuxt/utils/tiebaEmoji.js
index bf3a9074a..2ed46ae38 100644
--- a/frontend_nuxt/utils/tiebaEmoji.js
+++ b/frontend_nuxt/utils/tiebaEmoji.js
@@ -1,6 +1,9 @@
+// cdn.jsdelivr.net/gh/... 国内容易抽风
+// export const TIEBA_EMOJI_CDN = 'https://cdn.jsdelivr.net/gh/microlong666/tieba_mobile_emotions@master/'
+
+// Finally方案: 自托管
export const TIEBA_EMOJI_CDN =
- 'https://cdn.jsdelivr.net/gh/microlong666/tieba_mobile_emotions@master/'
-// export const TIEBA_EMOJI_CDN = 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/vditor/dist/images/emoji/'
+ 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/tieba/'
export const tiebaEmoji = (() => {
const map = { tieba1: TIEBA_EMOJI_CDN + 'image_emoticon.png' }