No Description

MediaMsg.ts 841B

123456789101112131415161718192021222324252627282930313233343536
  1. import { MsgBase, MsgType } from './MsgBase';
  2. export class MediaMsg extends MsgBase {
  3. msgType: MsgType = 'audio';
  4. // 消息内容
  5. file: { data: Blob | null; url: string };
  6. // 创建消息
  7. static createMsg(baseMsg: Partial<MediaMsg>): MediaMsg {
  8. const msg = new MediaMsg();
  9. Object.assign(msg, baseMsg);
  10. return msg;
  11. }
  12. // 从剪贴板中创建
  13. static createFromClipboard(baseMsg: Partial<MediaMsg>, clipboardData: DataTransfer) {
  14. if (clipboardData && clipboardData.types) {
  15. if (clipboardData.items.length > 0) {
  16. const blob = clipboardData.items[0].getAsFile();
  17. const url = window.URL.createObjectURL(blob);
  18. return MediaMsg.createMsg({
  19. ...baseMsg,
  20. file: {
  21. data: blob,
  22. url
  23. }
  24. });
  25. }
  26. }
  27. return null;
  28. }
  29. }