|
|
@@ -29,10 +29,8 @@
|
|
|
:refresher-triggered="refresherTriggered"
|
|
|
@refresherrefresh="onRefresh"
|
|
|
>
|
|
|
- <view v-if="loadingContacts" class="empty-tip">加载中...</view>
|
|
|
- <view v-else-if="!messageList || messageList.length === 0" class="empty-tip" @click="goLogin">暂无会话,点击去登录</view>
|
|
|
+ <block v-if="messageList && messageList.length">
|
|
|
<view
|
|
|
- v-else
|
|
|
class="message-item"
|
|
|
v-for="item in messageList"
|
|
|
:key="item.id"
|
|
|
@@ -65,6 +63,10 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ </block>
|
|
|
+ <view v-else-if="!hasToken" class="empty-tip" @click="goLogin">暂无会话,点击去登录</view>
|
|
|
+ <view v-else-if="contactsFetchFailed" class="empty-tip" @click="retryFetch">请下拉刷新</view>
|
|
|
+ <view v-else class="empty-tip">暂无消息</view>
|
|
|
</scroll-view>
|
|
|
</view>
|
|
|
</template>
|
|
|
@@ -77,6 +79,7 @@
|
|
|
import { useWebSocket } from '../../composables/useWebSocket'
|
|
|
import { fetchUnreadCountAndUpdateTabBar } from '../../composables/useUnreadBadge'
|
|
|
import { chatStore } from '../../store/chat'
|
|
|
+ import { getToken } from '../../utils/api'
|
|
|
import { setupAppNotifications } from '../../utils/notificationSetup'
|
|
|
|
|
|
const USER_KEY = 'current_user'
|
|
|
@@ -109,7 +112,6 @@
|
|
|
currentUser.value = {
|
|
|
name: raw.name || raw.nickname || '',
|
|
|
id: String(raw.id ?? raw.user_id ?? ''),
|
|
|
- id: String(raw.id ?? raw.user_id ?? ''),
|
|
|
avatar: raw.avatar || raw.avatar_url || '',
|
|
|
orgName: raw.org_name || raw.orgName || ''
|
|
|
}
|
|
|
@@ -130,11 +132,15 @@
|
|
|
uni.navigateTo({ url: '/pages/chat/index?otherUserId=' + encodeURIComponent(id) })
|
|
|
}
|
|
|
|
|
|
+ async function retryFetch() {
|
|
|
+ await fetchContacts()
|
|
|
+ await fetchUnreadCountAndUpdateTabBar()
|
|
|
+ }
|
|
|
+
|
|
|
async function onRefresh() {
|
|
|
refresherTriggered.value = true
|
|
|
try {
|
|
|
- await fetchContacts()
|
|
|
- await fetchUnreadCountAndUpdateTabBar()
|
|
|
+ await retryFetch()
|
|
|
} finally {
|
|
|
refresherTriggered.value = false
|
|
|
}
|
|
|
@@ -150,7 +156,8 @@
|
|
|
// #endif
|
|
|
})
|
|
|
|
|
|
- const loadingContacts = computed(() => chatStore.loadingContacts)
|
|
|
+ const hasToken = computed(() => !!getToken())
|
|
|
+ const contactsFetchFailed = computed(() => chatStore.contactsFetchFailed)
|
|
|
|
|
|
function goLogin() {
|
|
|
uni.reLaunch({ url: '/pages/login/index' })
|
|
|
@@ -158,7 +165,9 @@
|
|
|
|
|
|
return {
|
|
|
messageList,
|
|
|
- loadingContacts,
|
|
|
+ hasToken,
|
|
|
+ contactsFetchFailed,
|
|
|
+ retryFetch,
|
|
|
fetchContacts,
|
|
|
fetchUnreadCountAndUpdateTabBar,
|
|
|
connect,
|