import {TypedMessage, messageField, messageType} from 'leancloud-realtime';

export default class StickerMessage extends TypedMessage {
  constructor(group, sticker) {
    super();
    this.group = group;
    this.sticker = sticker;
  }
  get summary() {
    return `[Sticker] ${this.sticker}`;
  }
}
messageField(['group', 'sticker'])(StickerMessage);
messageType(100)(StickerMessage);
import EventEmitter from 'eventemitter3';

export class TypingStatusMessage extends TypedMessage {
  constructor(status) {
    super();
    this.value = status;
  }
}
TypingStatusMessage.STATUS = {
  TYPING: 1,
  FINISHED: 0
};
TypingStatusMessage.sendOptions = {
  transient: true
};
messageField(['value'])(TypingStatusMessage);
messageType(-100)(TypingStatusMessage);

class TypingIndicator extends EventEmitter {
  constructor(client) {
    super();
    this._client = client;
    this._handleMessage = this._handleMessage.bind(this);
    this._reset();
  }
  _reset() {
    this.typingClients = [];
    this._typingClientsActiveTimers = {};
    this._lastSendStatus = {
      type: null,
      timestamp: 0