Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ export class WechatLibTurboModule extends TurboModule implements TM.WechatLibTur
http.createHttp().request(url,
(error: BusinessError, data: http.HttpResponse) => {
if (error || data.responseCode != 200) {
if(callback){
if (callback) {
callback("Download image failed, error code: " + data.responseCode, null)
}
return
Expand Down Expand Up @@ -332,8 +332,48 @@ export class WechatLibTurboModule extends TurboModule implements TM.WechatLibTur
return this.notSupportPromise(callback)
}

shareWebpage(message: TM.WechatLibTurboModule.ShareWebpageMetadata, callback: CallbackBoolean): void {
return this.notSupportPromise(callback)
async shareWebpage(message: TM.WechatLibTurboModule.ShareWebpageMetadata, callback: CallbackBoolean): Promise<void> {
if (!WechatLibTurboModule.wxApi) {
callback(this.NOT_REGISTERED, null);
return;
}

try {
const webpageObject = new wxopensdk.WXWebpageObject()
webpageObject.webpageUrl = message.webpageUrl ?? ''

const mediaMessage = new wxopensdk.WXMediaMessage()
mediaMessage.mediaObject = webpageObject
mediaMessage.title = message.title ?? ' '
mediaMessage.description = message.description ?? ' '

let thumbImageUrl = (message.thumbImageUrl ? message.thumbImageUrl : null);
if (thumbImageUrl != null && !(thumbImageUrl === "")) {
await new Promise<void>((resolve) => {
this.downloadImageWithUrl(thumbImageUrl!, async (imageData: ArrayBuffer) => {
if (!imageData) {
callback("shareWebpage Failed to retrieve imageData", null);
return;
}
let thumbPixel = image.createImageSource(imageData).createPixelMapSync();
// 图片压缩
let thumbBuffer = await this.bitmapResizeGetBytes(thumbPixel, this.THUMB_SIZE);
mediaMessage.thumbData = new Uint8Array(thumbBuffer);
resolve()
}, callback);
})
}

const req = new wxopensdk.SendMessageToWXReq()
req.scene = message.scene ?? wxopensdk.SendMessageToWXReq.WXSceneSession;
req.message = mediaMessage

const res = await WechatLibTurboModule.wxApi.sendReq(this.context, req) as boolean;
callback(null, res);
} catch (err) {
const message = err instanceof Error ? err.message : 'shareWebpage Unknown error';
callback(message, null);
}
}

async shareMiniProgram(message: TM.WechatLibTurboModule.ShareMiniProgramMetadata, callback: CallbackBoolean) {
Expand Down Expand Up @@ -493,4 +533,4 @@ export class WechatLibTurboModule extends TurboModule implements TM.WechatLibTur
subscribeMessage(message: TM.WechatLibTurboModule.SubscribeMessageMetadata, callback: CallbackBoolean): void {
return this.notSupportPromise(callback)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ export class WechatLibTurboModule extends TurboModule implements TM.WechatLibTur
http.createHttp().request(url,
(error: BusinessError, data: http.HttpResponse) => {
if (error || data.responseCode != 200) {
if(callback){
if (callback) {
callback("Download image failed, error code: " + data.responseCode, null)
}
return
Expand Down Expand Up @@ -332,8 +332,48 @@ export class WechatLibTurboModule extends TurboModule implements TM.WechatLibTur
return this.notSupportPromise(callback)
}

shareWebpage(message: TM.WechatLibTurboModule.ShareWebpageMetadata, callback: CallbackBoolean): void {
return this.notSupportPromise(callback)
async shareWebpage(message: TM.WechatLibTurboModule.ShareWebpageMetadata, callback: CallbackBoolean): Promise<void> {
if (!WechatLibTurboModule.wxApi) {
callback(this.NOT_REGISTERED, null);
return;
}

try {
const webpageObject = new wxopensdk.WXWebpageObject()
webpageObject.webpageUrl = message.webpageUrl ?? ''

const mediaMessage = new wxopensdk.WXMediaMessage()
mediaMessage.mediaObject = webpageObject
mediaMessage.title = message.title ?? ' '
mediaMessage.description = message.description ?? ' '

let thumbImageUrl = (message.thumbImageUrl ? message.thumbImageUrl : null);
if (thumbImageUrl != null && !(thumbImageUrl === "")) {
await new Promise<void>((resolve) => {
this.downloadImageWithUrl(thumbImageUrl!, async (imageData: ArrayBuffer) => {
if (!imageData) {
callback("shareWebpage Failed to retrieve imageData", null);
return;
}
let thumbPixel = image.createImageSource(imageData).createPixelMapSync();
// 图片压缩
let thumbBuffer = await this.bitmapResizeGetBytes(thumbPixel, this.THUMB_SIZE);
mediaMessage.thumbData = new Uint8Array(thumbBuffer);
resolve()
}, callback);
})
}

const req = new wxopensdk.SendMessageToWXReq()
req.scene = message.scene ?? wxopensdk.SendMessageToWXReq.WXSceneSession;
req.message = mediaMessage

const res = await WechatLibTurboModule.wxApi.sendReq(this.context, req) as boolean;
callback(null, res);
} catch (err) {
const message = err instanceof Error ? err.message : 'shareWebpage Unknown error';
callback(message, null);
}
}

async shareMiniProgram(message: TM.WechatLibTurboModule.ShareMiniProgramMetadata, callback: CallbackBoolean) {
Expand Down Expand Up @@ -493,4 +533,4 @@ export class WechatLibTurboModule extends TurboModule implements TM.WechatLibTur
subscribeMessage(message: TM.WechatLibTurboModule.SubscribeMessageMetadata, callback: CallbackBoolean): void {
return this.notSupportPromise(callback)
}
}
}