feat(circle): 集成HaveADrink SDK实现酒友圈功能
- 集成HaveADrink SDK版本从1.0.4升级至1.0.8 - 实现酒友圈API接口,替换原有的mock数据 - 添加地理位置权限配置(requiredPrivateInfos) - 重构API调用方式,统一使用client实例调用真实接口 - 更新WebSocket协议与SDK保持一致,支持聊天、输入状态、已读回执等功能 - 实现游标分页获取动态信息流 - 添加文件上传API支持图片上传 - 优化API错误处理,支持业务级错误提示 - 调整酒局状态显示,新增upcoming待开始状态 - 优化自我感觉标签映射逻辑,支持更多状态类型 - 更新websocket连接认证方式,使用Authorization header传递token - 添加服务端连接确认和被踢下线事件处理
This commit is contained in:
+22
-9
@@ -121,6 +121,7 @@ import FriendItem from '../../components/FriendItem.vue'
|
||||
import EventCard from '../../components/EventCard.vue'
|
||||
import EmptyState from '../../components/EmptyState.vue'
|
||||
import { GetCircleFeeds, LikeFeed, UnlikeFeed, GetFriends, GetFriendRequests, GetEvents, GetUnreadCount } from '../../common/api'
|
||||
import wsManager from '../../common/websocket'
|
||||
import themeMixin from '../../common/theme-mixin'
|
||||
|
||||
export default {
|
||||
@@ -136,7 +137,7 @@ export default {
|
||||
headerPaddingRight: (sysInfo.windowWidth - menuBtn.left + 8) + 'px',
|
||||
// 动态
|
||||
feeds: [],
|
||||
page: 1,
|
||||
lastId: 0,
|
||||
hasMore: true,
|
||||
loading: false,
|
||||
refreshing: false,
|
||||
@@ -154,6 +155,14 @@ export default {
|
||||
this.loadFriends()
|
||||
this.loadEvents()
|
||||
this.loadUnread()
|
||||
this._wsHandler = () => { this.unreadTotal++ }
|
||||
wsManager.on('message', this._wsHandler)
|
||||
},
|
||||
onHide() {
|
||||
if (this._wsHandler) {
|
||||
wsManager.off('message', this._wsHandler)
|
||||
this._wsHandler = null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
switchTab(i) {
|
||||
@@ -163,20 +172,26 @@ export default {
|
||||
async loadFeeds(reset = false) {
|
||||
if (this.loading) return
|
||||
if (reset) {
|
||||
this.page = 1
|
||||
this.lastId = 0
|
||||
this.hasMore = true
|
||||
}
|
||||
this.loading = true
|
||||
try {
|
||||
const res = await GetCircleFeeds({ page: this.page, pageSize: 10 })
|
||||
const res = await GetCircleFeeds({ lastId: this.lastId, pageSize: 10 })
|
||||
const data = res.data
|
||||
if (reset) {
|
||||
this.feeds = data.list
|
||||
this.feeds = data.list || []
|
||||
} else {
|
||||
this.feeds = [...this.feeds, ...data.list]
|
||||
this.feeds = [...this.feeds, ...(data.list || [])]
|
||||
}
|
||||
this.hasMore = data.hasMore
|
||||
this.page++
|
||||
// 记录最后一条ID作为下次请求的游标
|
||||
if (data.list && data.list.length) {
|
||||
this.lastId = data.list[data.list.length - 1].id
|
||||
}
|
||||
// 存入 globalData 供详情页查找
|
||||
getApp().globalData = getApp().globalData || {}
|
||||
getApp().globalData.circleFeeds = this.feeds
|
||||
} catch (e) {
|
||||
console.warn('加载动态失败', e)
|
||||
}
|
||||
@@ -230,10 +245,8 @@ export default {
|
||||
if (this._navLock) return
|
||||
this._navLock = true
|
||||
setTimeout(() => { this._navLock = false }, 600)
|
||||
// 根据 friendId 查找对应会话 (f001 -> conv_001)
|
||||
const convId = 'conv_' + friend.id.replace('f', '')
|
||||
uni.navigateTo({
|
||||
url: `/pages/chat/chat?friendId=${friend.id}&nickname=${encodeURIComponent(friend.nickname)}&conversationId=${convId}`
|
||||
url: `/pages/chat/chat?friendId=${friend.id}&nickname=${encodeURIComponent(friend.nickname)}`
|
||||
})
|
||||
},
|
||||
goChatList() {
|
||||
|
||||
Reference in New Issue
Block a user