no message
This commit is contained in:
parent
b3a7310f0b
commit
b98f835ab1
@ -41,13 +41,13 @@ export async function sendTextMessage(content) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送图片消息
|
* 发送图片消息
|
||||||
* @param {string} imageUrl - 图片URL(字符串)
|
* @param {string|File} imageSource - 图片URL(字符串)或文件对象
|
||||||
* @param {string} imageName - 图片名称(可选)
|
* @param {string} imageName - 图片名称(可选)
|
||||||
* @returns {Promise<boolean>} 发送是否成功
|
* @returns {Promise<boolean>} 发送是否成功
|
||||||
*/
|
*/
|
||||||
export async function sendImageMessage(imageUrl, imageName = '图片') {
|
export async function sendImageMessage(imageSource, imageName = '图片') {
|
||||||
if (!imageUrl) {
|
if (!imageSource) {
|
||||||
toast('图片URL不能为空');
|
toast('图片不能为空');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,17 @@ export async function sendImageMessage(imageUrl, imageName = '图片') {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await globalTimChatManager.sendImageMessage(imageUrl);
|
// 如果是URL字符串,需要先下载转换为文件对象
|
||||||
|
let imageFile = imageSource;
|
||||||
|
if (typeof imageSource === 'string') {
|
||||||
|
imageFile = await downloadImageAsFile(imageSource, imageName);
|
||||||
|
if (!imageFile) {
|
||||||
|
toast('图片下载失败');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await globalTimChatManager.sendImageMessage(imageFile);
|
||||||
|
|
||||||
if (result?.success) {
|
if (result?.success) {
|
||||||
return true;
|
return true;
|
||||||
@ -72,6 +82,44 @@ export async function sendImageMessage(imageUrl, imageName = '图片') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将图片URL下载转换为文件对象(小程序环境)
|
||||||
|
* @param {string} imageUrl - 图片URL
|
||||||
|
* @param {string} fileName - 文件名
|
||||||
|
* @returns {Promise<Object|null>} 文件对象或null
|
||||||
|
*/
|
||||||
|
async function downloadImageAsFile(imageUrl, fileName = '图片') {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
uni.downloadFile({
|
||||||
|
url: imageUrl,
|
||||||
|
success: (res) => {
|
||||||
|
if (res.statusCode === 200) {
|
||||||
|
// 返回包含 tempFiles 数组的对象,模拟 uni.chooseMedia 的返回格式
|
||||||
|
const fileObj = {
|
||||||
|
tempFiles: [{
|
||||||
|
tempFilePath: res.tempFilePath,
|
||||||
|
path: res.tempFilePath,
|
||||||
|
size: 0,
|
||||||
|
type: 'image'
|
||||||
|
}],
|
||||||
|
// 也保留直接的 tempFilePath 以兼容其他代码
|
||||||
|
tempFilePath: res.tempFilePath
|
||||||
|
};
|
||||||
|
console.log('图片下载成功,文件对象:', fileObj);
|
||||||
|
resolve(fileObj);
|
||||||
|
} else {
|
||||||
|
console.error('下载图片失败,状态码:', res.statusCode);
|
||||||
|
resolve(null);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail: (error) => {
|
||||||
|
console.error('下载图片失败:', error);
|
||||||
|
resolve(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送宣教文章消息
|
* 发送宣教文章消息
|
||||||
* @param {Object} article - 文章对象 { _id, title, cover, url }
|
* @param {Object} article - 文章对象 { _id, title, cover, url }
|
||||||
|
|||||||
@ -2189,7 +2189,7 @@ class TimChatManager {
|
|||||||
async sendImageMessage(imageFile) {
|
async sendImageMessage(imageFile) {
|
||||||
if (!this.tim) {
|
if (!this.tim) {
|
||||||
this.triggerCallback('onError', 'IM未初始化')
|
this.triggerCallback('onError', 'IM未初始化')
|
||||||
return
|
return { success: false, error: 'IM未初始化' }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.conversation) {
|
if (!this.conversation) {
|
||||||
@ -2240,20 +2240,27 @@ class TimChatManager {
|
|||||||
// 触发消息接收回调,让UI立即显示
|
// 触发消息接收回调,让UI立即显示
|
||||||
this.triggerCallback('onMessageReceived', localMessage)
|
this.triggerCallback('onMessageReceived', localMessage)
|
||||||
|
|
||||||
|
try {
|
||||||
|
console.log('准备创建图片消息,imageFile:', imageFile)
|
||||||
const message = this.tim.createImageMessage({
|
const message = this.tim.createImageMessage({
|
||||||
to: groupID,
|
to: groupID,
|
||||||
conversationType: TIM.TYPES.CONV_GROUP,
|
conversationType: TIM.TYPES.CONV_GROUP,
|
||||||
payload: { file: imageFile }
|
payload: { file: imageFile }
|
||||||
})
|
})
|
||||||
|
|
||||||
try {
|
console.log('图片消息创建成功:', message)
|
||||||
|
|
||||||
|
if (!message) {
|
||||||
|
throw new Error('createImageMessage 返回空值')
|
||||||
|
}
|
||||||
|
|
||||||
await this.tim.sendMessage(message)
|
await this.tim.sendMessage(message)
|
||||||
localMessage.status = 'success'
|
localMessage.status = 'success'
|
||||||
return { success: true, message: localMessage }
|
return { success: true, message: localMessage }
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('图片消息发送失败:', error)
|
console.error('图片消息发送失败:', error)
|
||||||
localMessage.status = 'failed'
|
localMessage.status = 'failed'
|
||||||
return { success: false, error }
|
return { success: false, error: error.message || error }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 发送语音消息
|
// 发送语音消息
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user