0.1.9 • Published 3 years ago

@tripmini/tchat v0.1.9

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

tchat 微信小程序聊天对话交互组件

安装

tchat是一个微信小程序组件,使用前需要下载及在开发工具构建npm包

npm

npm install @tripmini/tchat -S

使用

引入组件

{
  "usingComponents": {
    "tchat": "@tripmini/tchat/index"
  }
}

页面中使用(id是后续建议使用的参数,不是组件内部需要的值)

<tchat id="tchat" />

参数

属性类型默认值必填说明
load-config-funtionstring-必填获取自定义配置的方法名,此方法需要在page.js中定义,示例参考下方
bind:layoutInitializedeventhandle-tchat布局需要计算,等待计算完成会触发此事件,需要在此事件发生之后再往容器里面添加内容,否则会有一些体验不好的问题
bind:sendTextMessageeventhandle-输入完成一条文字消息(带表情)
bind:failIconTapeventhandle-消息发送错误时,点击消息左测红色叹号图标时触发

注意

  1. 页面在使用自定义头部导航时,navbarHeight一定需要提供,否则会出现各种UI错位的问题

一些默认的配置信息

const config = {
  /**
   * 顶部导航栏占用的高度,单位px
   * 如使用自定义导航栏,则需要填入自定义导航栏高度,否则 0
   */
  navbarHeight: 0,
  /**
   * 最小录制语音时间
   * 单位毫秒,默认 1 * 1000
   */
  minVoiceDuration: 1 * 1000,
  /**
   * 最大录制语音时间
   * 单位毫秒,默认 60 * 1000
   */
  maxVoiceDuration: 60 * 1000,
  /**
   * 最小取消发送语音的移动距离
   * 单位px,默认 40
   */
  minCancelVoiceDistance: 40,
  /**
   * 日志工具,如提供,至少包含以下方法且需要支持任意参数个数及类型
   * 
   * + info
   * + error
   */
  logger: null,
  /**
   * 点击更多时,允许选择图片的数量,默认9
   */
  chooseImageCount: 9
}

示例

wxml

<tchat 
  id="tchat"
  load-config-funtion="getTchatCustomConfig" 
  bind:layoutInitialized="initConversation"
  bind:sendTextMessage="sendTextMessage"
  bind:failIconTap="resendMessage"
/>

js

// 使用tchat组件的js文件
Page({
    // 提供tchat配置
    getTchatCustomConfig() {
        return {
            navbarHeight: N, // 实际值,单位px
            chooseImageCount: N, // 实际值,1-9
            // ...
        }
    },
    // tchat布局初始化完成
    onLayoutInitialized() {
        // todo: 渲染历史消息
    },
    // 发送文字消息事件
    onSendTextMessage(event) {
        const { data } = event.detail
        console.log(data) // 文字消息内容
    },
    // 重发消息
    resendMessage(event) {
        const { id } = event.detail
        console.log(id) // 消息id,可以通过下文中方法获取消息实体
    }
})

API

Conversation

操作会话相关

参数(按顺序展示)

名称类型默认值必填说明
tchatComponent-必填tchat组件的实例
tim-必填已登录的IM实例

API

名称说明
push(message)向会话容器中添加一条状态为success的IM消息
bulkPush(messages)向会话容器中添加多条状态为success的IM消息
delete(id)根据消息id移除一条消息记录(仅在显示容器内移除,不涉及IM逻辑)
getMessageById(id)根据IM消息id或者IM消息实体,搜索范围仅在使用Conversation操作的消息场景:消息发送错误时,点击错误图标会给id信息,通过此方法获取IMMessage
sendTextMessage(toUserId, text)向指定userId发送一条文字消息,返回Promise对象,可捕获错误进行后续处理(如遇到了屏蔽关键字)
// 在引入npm包时,注意不要使用vscode的智能提示
// 小程序的包构建在miniprogram_npm中,使用提示会导致找不到模块

import Conversation from '@tripmini/tchat/helper/Conversation'
// 已登录的IM实例
import tim from '...'

Page({
    onLoad() {
        this.tchat = this.selectComponent('#tchat')
    },
    // 提供tchat配置
    getTchatCustomConfig() {
        return {
            navbarHeight: N, // 实际值,单位px
            chooseImageCount: N, // 实际值,1-9
            // ...
        }
    },
    // tchat布局初始化完成
    onLayoutInitialized() {
        this.conversation = new Conversation(this.tchat, tim)
        this.loadMessages()
    },
    // 加载历史消息
    async loadMessages() {
        const list = await tim.getMessageList()
        // list 注意过滤系统消息,类似上次portal端问题
        this.conversation.bulkPush(list)
    },
    // 发送文字消息事件
    onSendTextMessage(event) {
        const { data } = event.detail
        this.conversation.sendTextMessage(fromUserId, data)
    },
    // 重发消息
    resendMessage(event) {
        const { id } = event.detail
        const message = this.conversation.getMessageById(id)
        console.log(message)
        // TODO: conversation将实现的功能
    }
})
0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.0.38

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.0.37

4 years ago

0.0.35

4 years ago

0.0.36

4 years ago

0.0.34

4 years ago

0.0.33

4 years ago

0.0.32

4 years ago

0.0.31

4 years ago

0.0.30

4 years ago

0.0.29

4 years ago

0.0.28

4 years ago

0.0.27

4 years ago

0.0.26

4 years ago

0.0.25

4 years ago

0.0.23

4 years ago

0.0.22

4 years ago

0.0.21

4 years ago

0.0.20

4 years ago

0.0.19

4 years ago

0.0.18

4 years ago

0.0.17

4 years ago

0.0.16

4 years ago

0.0.15

4 years ago

0.0.14

4 years ago

0.0.13

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago

0.0.0

4 years ago