- 添加 expiresAt 和 refreshUserSig 参数支持自动续签 - 修改 PushSDK 初始化方式,自动完成设备注册和厂商初始化 - 调整过期续签策略,从提前 15 分钟改为提前 5 分钟触发 - 重构 RN SDK 文档结构,简化安装和使用方式 - 更新统一登录流程,支持 profile 信息传递 - 添加 IM 数据库自动隔离功能 - 修复 Android 群消息聚合问题 - 补充自动化测试验证和错误处理机制
63 行
3.0 KiB
Plaintext
63 行
3.0 KiB
Plaintext
<view class="chat-container">
|
|
<view class="header">
|
|
<text class="status {{connected ? 'online' : 'offline'}}">{{connected ? '已连接' : '未连接'}}</text>
|
|
<text class="user">当前用户: {{userId}}</text>
|
|
</view>
|
|
|
|
<view class="sidebar">
|
|
<view class="tab-bar">
|
|
<view class="tab {{activeTab==='conv'?'active':''}}" bindtap="switchTab" data-tab="conv">会话</view>
|
|
<view class="tab {{activeTab==='friend'?'active':''}}" bindtap="switchTab" data-tab="friend">好友</view>
|
|
<view class="tab {{activeTab==='group'?'active':''}}" bindtap="switchTab" data-tab="group">群组</view>
|
|
</view>
|
|
|
|
<scroll-view scroll-y class="list">
|
|
<block wx:if="{{activeTab==='conv'}}">
|
|
<view wx:for="{{conversations}}" wx:key="targetId" class="item" bindtap="selectConv" data-id="{{item.targetId}}" data-type="{{item.chatType}}">
|
|
<view class="item-title">{{item.targetId}}</view>
|
|
<view class="item-meta">{{item.lastMsgContent||'暂无消息'}}</view>
|
|
</view>
|
|
<view wx:if="{{conversations.length===0}}" class="empty">暂无会话</view>
|
|
</block>
|
|
|
|
<block wx:if="{{activeTab==='friend'}}">
|
|
<view wx:for="{{friends}}" wx:key="*this" class="item" bindtap="startChat" data-id="{{item}}">
|
|
<view class="item-title">{{item}}</view>
|
|
</view>
|
|
<view wx:if="{{friends.length===0}}" class="empty">暂无好友</view>
|
|
</block>
|
|
|
|
<block wx:if="{{activeTab==='group'}}">
|
|
<view wx:for="{{groups}}" wx:key="id" class="item" bindtap="startGroupChat" data-id="{{item.id}}">
|
|
<view class="item-title">{{item.name}}</view>
|
|
<view class="item-meta">{{item.memberIds ? JSON.parse(item.memberIds).length : 0}} 人</view>
|
|
</view>
|
|
<view wx:if="{{groups.length===0}}" class="empty">暂无群组</view>
|
|
</block>
|
|
</scroll-view>
|
|
</view>
|
|
|
|
<view class="chat-area" wx:if="{{currentTarget}}">
|
|
<view class="chat-header">{{currentTarget}} ({{currentChatType==='SINGLE'?'单聊':'群聊'}})</view>
|
|
<scroll-view scroll-y class="message-list" scroll-into-view="msg-{{messages.length-1}}">
|
|
<view wx:for="{{messages}}" wx:key="id" id="msg-{{index}}" class="msg-row {{item.fromId===userId?'self':'other'}}">
|
|
<view class="msg-bubble">
|
|
<view class="msg-sender">{{item.fromId||item.fromUserId}}</view>
|
|
<view class="msg-content">{{item.revoked?'消息已撤回':item.content}}</view>
|
|
<view class="msg-meta">
|
|
<text class="tag">{{item.status}}</text>
|
|
<text class="time">{{item.createdAt}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
|
|
<view class="input-area">
|
|
<input class="msg-input" placeholder="输入消息" value="{{inputText}}" bindinput="onInput" confirm-type="send" bindconfirm="sendText" />
|
|
<button class="send-btn" type="primary" size="mini" bindtap="sendText">发送</button>
|
|
</view>
|
|
</view>
|
|
|
|
<view wx:else class="empty-chat">选择一个会话开始聊天</view>
|
|
</view>
|