@onyx-p/imlib-web 2.3.6 → 2.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.esm.js CHANGED
@@ -28942,11 +28942,21 @@ async function createSendFunction(fileType, conversation, msgBody, hooks, sendOp
28942
28942
  }
28943
28943
  message1.content.user = msgBody.user;
28944
28944
  message1.content.extra = msgBody.extra;
28945
+ const uploader = imConfig.getUploader();
28946
+ const prepareResult = await uploader.prepare(files);
28947
+ const uploadItems = files.map((file, i) => ({
28948
+ url: prepareResult.urls[i],
28949
+ file: file
28950
+ }));
28951
+ const mediaUploadParams = {
28952
+ encryptKey: prepareResult.encryptedKey,
28953
+ items: uploadItems
28954
+ };
28945
28955
  return internal_sendMessage(conversation, message1, sendOptions, {
28946
- files,
28947
- task: (message2, toBeUploadedFiles) => {
28956
+ uploadItems: mediaUploadParams,
28957
+ task: (message2, uploadItems) => {
28948
28958
  return new Promise(resolve => {
28949
- imConfig.getUploader().upload(toBeUploadedFiles, {
28959
+ uploader.upload(uploadItems, {
28950
28960
  onProgress: progress => hooks?.onProgress?.(progress),
28951
28961
  onError: () => {
28952
28962
  resolve({
@@ -28967,7 +28977,7 @@ async function createSendFunction(fileType, conversation, msgBody, hooks, sendOp
28967
28977
  });
28968
28978
  }
28969
28979
  async function internal_sendMessage(conversation, message, options, uploadOptions) {
28970
- const checkResult = await beforeSend(conversation, message, options);
28980
+ const checkResult = await beforeSend(conversation, message, options, uploadOptions?.uploadItems);
28971
28981
  if (checkResult.code !== ErrorCode.SUCCESS || !checkResult.message || !checkResult.sentArgs) {
28972
28982
  return {
28973
28983
  code: checkResult.code
@@ -28982,7 +28992,7 @@ async function internal_sendMessage(conversation, message, options, uploadOption
28982
28992
  sentArgs
28983
28993
  } = checkResult;
28984
28994
  if (isDef(uploadOptions)) {
28985
- const uploadResult = await uploadOptions.task(sentMessage, uploadOptions.files);
28995
+ const uploadResult = await uploadOptions.task(sentMessage, uploadOptions.uploadItems);
28986
28996
  sentMessage = uploadResult.message;
28987
28997
  if (!uploadResult.finished) {
28988
28998
  const receivedMessage = transSentAttrs2IReceivedMessage(checkResult.message, checkResult.sentArgs, SentStatus.FAILED);
@@ -28995,7 +29005,7 @@ async function internal_sendMessage(conversation, message, options, uploadOption
28995
29005
  }
28996
29006
  return send(sentMessage, sentArgs);
28997
29007
  }
28998
- async function beforeSend(conversation, message, options) {
29008
+ async function beforeSend(conversation, message, options, uploadOptions) {
28999
29009
  const mediaAttribute = JSON.stringify(filterNullProperty(message.content));
29000
29010
  if (getByteLength(mediaAttribute) > MAX_MESSAGE_CONTENT_BYTES) {
29001
29011
  return {
@@ -29014,7 +29024,7 @@ async function beforeSend(conversation, message, options) {
29014
29024
  };
29015
29025
  if (options?.onSendBefore) {
29016
29026
  const receivedMessage = transSentAttrs2IReceivedMessage(message, sentArgs);
29017
- options.onSendBefore(receivedMessage);
29027
+ options.onSendBefore(receivedMessage, uploadOptions);
29018
29028
  }
29019
29029
  return {
29020
29030
  code: ErrorCode.SUCCESS,
package/index.umd.js CHANGED
@@ -28948,11 +28948,21 @@
28948
28948
  }
28949
28949
  message1.content.user = msgBody.user;
28950
28950
  message1.content.extra = msgBody.extra;
28951
+ const uploader = imConfig.getUploader();
28952
+ const prepareResult = await uploader.prepare(files);
28953
+ const uploadItems = files.map((file, i) => ({
28954
+ url: prepareResult.urls[i],
28955
+ file: file
28956
+ }));
28957
+ const mediaUploadParams = {
28958
+ encryptKey: prepareResult.encryptedKey,
28959
+ items: uploadItems
28960
+ };
28951
28961
  return internal_sendMessage(conversation, message1, sendOptions, {
28952
- files,
28953
- task: (message2, toBeUploadedFiles) => {
28962
+ uploadItems: mediaUploadParams,
28963
+ task: (message2, uploadItems) => {
28954
28964
  return new Promise(resolve => {
28955
- imConfig.getUploader().upload(toBeUploadedFiles, {
28965
+ uploader.upload(uploadItems, {
28956
28966
  onProgress: progress => hooks?.onProgress?.(progress),
28957
28967
  onError: () => {
28958
28968
  resolve({
@@ -28973,7 +28983,7 @@
28973
28983
  });
28974
28984
  }
28975
28985
  async function internal_sendMessage(conversation, message, options, uploadOptions) {
28976
- const checkResult = await beforeSend(conversation, message, options);
28986
+ const checkResult = await beforeSend(conversation, message, options, uploadOptions?.uploadItems);
28977
28987
  if (checkResult.code !== exports.ErrorCode.SUCCESS || !checkResult.message || !checkResult.sentArgs) {
28978
28988
  return {
28979
28989
  code: checkResult.code
@@ -28988,7 +28998,7 @@
28988
28998
  sentArgs
28989
28999
  } = checkResult;
28990
29000
  if (isDef(uploadOptions)) {
28991
- const uploadResult = await uploadOptions.task(sentMessage, uploadOptions.files);
29001
+ const uploadResult = await uploadOptions.task(sentMessage, uploadOptions.uploadItems);
28992
29002
  sentMessage = uploadResult.message;
28993
29003
  if (!uploadResult.finished) {
28994
29004
  const receivedMessage = transSentAttrs2IReceivedMessage(checkResult.message, checkResult.sentArgs, exports.SentStatus.FAILED);
@@ -29001,7 +29011,7 @@
29001
29011
  }
29002
29012
  return send(sentMessage, sentArgs);
29003
29013
  }
29004
- async function beforeSend(conversation, message, options) {
29014
+ async function beforeSend(conversation, message, options, uploadOptions) {
29005
29015
  const mediaAttribute = JSON.stringify(filterNullProperty(message.content));
29006
29016
  if (getByteLength(mediaAttribute) > MAX_MESSAGE_CONTENT_BYTES) {
29007
29017
  return {
@@ -29020,7 +29030,7 @@
29020
29030
  };
29021
29031
  if (options?.onSendBefore) {
29022
29032
  const receivedMessage = transSentAttrs2IReceivedMessage(message, sentArgs);
29023
- options.onSendBefore(receivedMessage);
29033
+ options.onSendBefore(receivedMessage, uploadOptions);
29024
29034
  }
29025
29035
  return {
29026
29036
  code: exports.ErrorCode.SUCCESS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "2.3.6",
3
+ "version": "2.3.8",
4
4
  "main": "index.umd.js",
5
5
  "module": "index.esm.js",
6
6
  "types": "types/index.d.ts",
package/types/types.d.ts CHANGED
@@ -137,7 +137,7 @@ export interface ISendMessageOptions {
137
137
  /**
138
138
  * 消息发送之前的回调
139
139
  */
140
- onSendBefore?: (message: IReceivedMessage) => void;
140
+ onSendBefore?: (message: IReceivedMessage, uploadOptions?: IUploadMessageParams) => void;
141
141
  /**
142
142
  * 重发消息时用到,重发消息的 messageId。
143
143
  * 当要重发消息时所有参数需与原始消息参数一致,messageId 必须存在。
@@ -166,11 +166,22 @@ export interface IUploadHooks {
166
166
  /**
167
167
  * 文件上传完成回调,可通过修改返回值以修改待发布的消息内容,如实现自定义消息
168
168
  */
169
- onComplete?: (fileInfo: IUploadCompletedResult) => void | BaseMessage;
169
+ onComplete?: (result: IUploadCompletedResult) => void | BaseMessage;
170
+ }
171
+ export type IUploadPrepareResult = {
172
+ urls: string[];
173
+ encryptedKey: string;
174
+ };
175
+ export interface IUploadMessageParams {
176
+ items: {
177
+ url: string;
178
+ file: Blob;
179
+ }[];
180
+ encryptKey: string;
170
181
  }
171
182
  export type IUploadCompletedResult = {
172
183
  urls: string[];
173
- encryptedKey?: string;
184
+ encryptedKey: string;
174
185
  };
175
186
  export type IUploadCallback = {
176
187
  onProgress?: (progress: number) => void;
@@ -178,8 +189,9 @@ export type IUploadCallback = {
178
189
  onError?: (reason: string) => void;
179
190
  };
180
191
  export interface IUploader {
181
- upload(files: Blob[], callback: IUploadCallback): void;
192
+ upload(params: IUploadMessageParams, callback: IUploadCallback): void;
182
193
  cancel(): void;
194
+ prepare(files: Blob[]): Promise<IUploadPrepareResult>;
183
195
  }
184
196
  /**
185
197
  * 文件消息配置