refactor: migrate placeholders to IconPark

This commit is contained in:
Tim
2025-09-06 02:02:02 +08:00
parent 4a4c256568
commit 78498c0ac3
8 changed files with 31 additions and 24 deletions

View File

@@ -56,7 +56,7 @@
<BasePlaceholder
v-if="messages.length === 0"
text="暂无会话,发送消息试试 🎉"
icon="fas fa-inbox"
icon="Inbox"
/>
</div>
</template>
@@ -351,9 +351,9 @@ onMounted(async () => {
})
const subscribeToConversation = () => {
if (!currentUser.value) return;
if (!currentUser.value) return
const destination = `/topic/conversation/${conversationId}`
subscribe(destination, async (message) => {
try {
const parsedMessage = JSON.parse(message.body)
@@ -370,12 +370,12 @@ const subscribeToConversation = () => {
await markConversationAsRead()
await nextTick()
if (isUserNearBottom.value) {
scrollToBottomSmooth()
}
} catch (e) {
console.error("Failed to parse websocket message", e)
console.error('Failed to parse websocket message', e)
}
})
}
@@ -394,7 +394,7 @@ onActivated(async () => {
await nextTick()
scrollToBottomSmooth()
updateNearBottom()
if (isConnected.value) {
// 如果已连接,重新订阅
subscribeToConversation()

View File

@@ -22,7 +22,7 @@
</div>
<div v-if="!loading && conversations.length === 0" class="empty-container">
<BasePlaceholder v-if="conversations.length === 0" text="暂无会话" icon="fas fa-inbox" />
<BasePlaceholder v-if="conversations.length === 0" text="暂无会话" icon="Inbox" />
</div>
<div
@@ -73,7 +73,7 @@
</div>
<div v-else>
<div v-if="channels.length === 0" class="empty-container">
<BasePlaceholder text="暂无频道" icon="fas fa-inbox" />
<BasePlaceholder text="暂无频道" icon="Inbox" />
</div>
<div
v-for="ch in channels"
@@ -273,9 +273,9 @@ onActivated(async () => {
})
const subscribeToUserMessages = () => {
if (!currentUser.value) return;
if (!currentUser.value) return
const destination = `/topic/user/${currentUser.value.id}/messages`
subscribe(destination, (message) => {
if (activeTab.value === 'messages') {
fetchConversations()

View File

@@ -14,8 +14,12 @@
<div class="message-control-container">
<div class="message-control-title">通知设置</div>
<div class="message-control-item-container">
<template v-for="pref in notificationPrefs">
<div v-if="canShowNotification(pref.type)" :key="pref.type" class="message-control-item">
<template v-for="pref in notificationPrefs">
<div
v-if="canShowNotification(pref.type)"
:key="pref.type"
class="message-control-item"
>
<div class="message-control-item-label">{{ formatType(pref.type) }}</div>
<BaseSwitch
:model-value="pref.enabled"
@@ -47,7 +51,7 @@
<BasePlaceholder
v-else-if="notifications.length === 0"
text="暂时没有消息 :)"
icon="fas fa-inbox"
icon="Inbox"
/>
<div class="timeline-container" v-if="notifications.length > 0">
@@ -757,7 +761,12 @@ const formatType = (t) => {
const isAdmin = computed(() => authState.role === 'ADMIN')
const needAdminSet = new Set(['POST_REVIEW_REQUEST','REGISTER_REQUEST', 'POINT_REDEEM', 'ACTIVITY_REDEEM'])
const needAdminSet = new Set([
'POST_REVIEW_REQUEST',
'REGISTER_REQUEST',
'POINT_REDEEM',
'ACTIVITY_REDEEM',
])
const canShowNotification = (type) => {
return !needAdminSet.has(type) || isAdmin.value

View File

@@ -63,11 +63,7 @@
<div class="loading-points-container" v-if="historyLoading">
<l-hatch size="28" stroke="4" speed="3.5" color="var(--primary-color)"></l-hatch>
</div>
<BasePlaceholder
v-else-if="histories.length === 0"
text="暂无积分记录"
icon="fas fa-inbox"
/>
<BasePlaceholder v-else-if="histories.length === 0" text="暂无积分记录" icon="Inbox" />
<div class="timeline-container" v-else>
<BaseTimeline :items="histories">
<template #item="{ item }">

View File

@@ -207,7 +207,7 @@
<BasePlaceholder
v-if="filteredTimelineItems.length === 0"
text="暂无时间线"
icon="fas fa-inbox"
icon="Inbox"
/>
<div class="timeline-list">
<BaseTimeline :items="filteredTimelineItems">
@@ -305,7 +305,7 @@
</BaseTimeline>
</div>
<div v-else>
<BasePlaceholder text="暂无收藏文章" icon="fas fa-inbox" />
<BasePlaceholder text="暂无收藏文章" icon="Inbox" />
</div>
</div>