/* * Copyright (c) 2020 WildFireChat. All rights reserved. */ /* * Copyright © 2020 WildFireChat. All rights reserved. */ import MessageContent from "./messageContent"; import MessageContentType from "./messageContentType"; import wfc from "../client/wfc"; import Config from "../../config"; export default class CardMessageContent extends MessageContent { /** * 0,用户;1,群组;2,聊天室;3,频道 */ cardType; target; name; displayName; portrait; from; constructor(cardType, target, displayName, portrait, from) { super(MessageContentType.UserCard); this.cardType = cardType; this.target = target; this.displayName = displayName; this.portrait = portrait; this.from = from; } encode() { let payload = super.encode(); payload.content = this.target; let obj = { t: this.cardType, n: this.name, d: this.displayName, p: this.portrait, f: this.from, }; payload.binaryContent = wfc.utf8_to_b64(JSON.stringify(obj)); return payload; } decode(payload) { super.decode(payload); this.target = payload.content; let obj = JSON.parse(wfc.b64_to_utf8(payload.binaryContent)); this.cardType = obj.t; this.name = obj.n; this.displayName = obj.d; this.portrait = obj.p; if (Config.urlRedirect) { this.portrait = Config.urlRedirect(obj.p); } this.from = obj.f; } digest() { let msg = "[名片]"; switch (this.cardType) { case 0: msg = "[个人名片]"; break; case 1: msg = "[群组名片]"; break; case 2: msg = "[聊天室名]"; break; case 3: msg = "[频道名片]"; break; default: break; } return msg + this.displayName; } }