wildfire-im-sdk
Version:
野火IM SDK for Vue3 projects
64 lines (57 loc) • 2.14 kB
JavaScript
/*
* Copyright (c) 2020 WildFireChat. All rights reserved.
*/
import MessageContent from './messageContent'
import Config from '../../config'
export default class MediaMessageContent extends MessageContent {
file;
remotePath = '';
localPath = '';
mediaType = 0;
/**
*
* @param {number} messageType 消息类型
* @param {number} mediaType 媒体类型
* @param {File | string} fileOrLocalPath File类型,或者dataUri或者本地路径,本地路径是必须是绝对路径
* @param {string} remotePath 远端地址
*/
constructor(messageType, mediaType = 0, fileOrLocalPath, remotePath) {
super(messageType);
this.mediaType = mediaType;
if (!fileOrLocalPath) {
this.localPath = '';
this.remotePath = remotePath;
} else if (typeof fileOrLocalPath === "string" && !fileOrLocalPath.startsWith("http")) {
this.localPath = fileOrLocalPath;
this.remotePath = remotePath;
} else {
this.file = fileOrLocalPath;
if (fileOrLocalPath && fileOrLocalPath.path) {
this.localPath = fileOrLocalPath.path;
// attention: 粘贴的时候,path是空字符串,故采用了这个trick
if (this.localPath.indexOf(fileOrLocalPath.name) < 0) {
this.localPath += fileOrLocalPath.name;
}
}
}
}
encode() {
let payload = super.encode();
payload.localMediaPath = this.localPath;
payload.remoteMediaUrl = this.remotePath ? this.remotePath : '';
payload.mediaType = this.mediaType;
if (Config.urlRedirect){
this.remotePath = Config.urlRedirect(payload.remoteMediaUrl);
}
return payload;
}
decode(payload) {
super.decode(payload);
this.localPath = payload.localMediaPath;
this.remotePath = payload.remoteMediaUrl;
if (Config.urlRedirect){
this.remotePath = Config.urlRedirect(payload.remoteMediaUrl);
}
this.mediaType = payload.mediaType;
}
}