Hi,
I want to send a file and host it on SendBird’s Server, so i pass the file from DocumentPicker, convert to blob, then convert to File
Here is piece of my code:
selectPhotoTapped = async () => {
const options = {
type: [DocumentPicker.types.images, DocumentPicker.types.video, DocumentPicker.types.pdf],
readContent: true,
// copyTo: ‘cachesDirectory’,
}
try {
const doc = await DocumentPicker.pick(options)
const response = await fetch(doc.uri)
const blob = await response.blob()
const sb = SendBird.getInstance()
const params = new sb.FileMessageParams()
const { groupChannel } = this.state
const file = new File([blob], doc.name)
console.log(file)
params.file = file
params.fileName = doc.name
params.fileSize = doc.size
params.data = ''
// params.thumbnailSizes = [
// { maxWidth: 100, maxHeight: 100 },
// { maxWidth: 200, maxHeight: 200 },
// ] // Add the maximum sizes of thumbnail images (allowed number of thumbnail images: 3).
params.mimeType = doc.type
params.customType = 'PARTICIPANT_CHAT'
// params.metaArrayKeys = ['linkTo', 'itemType']
params.pushNotificationDeliveryOption = 'default'
groupChannel.sendFileMessage(params, (fileMessage, error) => {
console.log(fileMessage)
if (error) {
console.log(error)
return
}
let tempMessages = Object.assign([], this.state.messages)
tempMessages = [...[fileMessage], ...tempMessages]
this.setState({ messages: tempMessages, textMessage: '' }, () => {
if (this.state.messages.length > 0)
this.flatList.scrollToIndex({ index: 0, animated: true })
})
})
} catch (e) {
console.log(e)
}
}
Here’s the error i get
0.2.2꞉8081/App/Containers/Discussion/DiscussionScreen.bundle?platform=android&dev=true&minify=false&modulesOnly=true&runModule=false&shallow=true:360
i: Request failed.
at b.value (/[censored]/node_modules/sendbird/SendBird.min.js:6:13712)
at /[censored]/node_modules/sendbird/SendBird.min.js:6:15695
at tryCallOne (/[censored]/node_modules/promise/setimmediate/core.js:37:12)
at /[censored]/node_modules/promise/setimmediate/core.js:123:15
at /[censored]/node_modules/react-native/Libraries/Core/Timers/JSTimers.js:289:18
at _callTimer (/[censored]/node_modules/react-native/Libraries/Core/Timers/JSTimers.js:146:7)
at _callImmediatesPass (/[censored]/node_modules/react-native/Libraries/Core/Timers/JSTimers.js:194:7)
at Object.callImmediates (/[censored]/node_modules/react-native/Libraries/Core/Timers/JSTimers.js:458:12)
at MessageQueue.__callImmediates (/[censored]/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:407:12)
at /[censored]/.vscode/.react/index.bundle:5326:18 {name: ‘SendBirdException’, code: 800220, stack: ‘SendBirdException: Request failed.
at b.v…/.vscode/.react/index.bundle:5326:18’, message: ‘Request failed.’}
I’ve tried pass blob file to params.file, but here’s another error:
TypeError: Cannot read property ‘name’ of und…mobile/.vscode/.react/index.bundle:242110:69)', message: ‘Cannot read property ‘name’ of undefined’}
for additional info, here is my package.json:
"react-native": "0.61.5", "react-native-document-picker": "^4.1.0", "sendbird": "^3.0.138"
Please help in advance.
Thanks!