fix chat camera

This commit is contained in:
Peter Maquiran
2023-03-14 09:50:40 +01:00
parent 2b4b879970
commit c825fb2d3c
4 changed files with 48 additions and 14 deletions
+39 -8
View File
@@ -108,6 +108,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
audioPermissionStatus: 'granted' | 'denied' | 'prompt' | null = null
sessionStore = SessionStore
convertBlobToBase64Worker;
constructor(
public popoverController: PopoverController,
private modalController: ModalController,
@@ -130,6 +132,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
private notificationService: NotificationsService,
private router: Router
) {
this.convertBlobToBase64Worker = new Worker(new URL('./convertBlobToBase64.worker.js', import.meta.url));
this.loggedUser = SessionStore.user.ChatData['data'];
this.roomId = this.navParams.get('roomId');
@@ -648,18 +652,20 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
const roomId = this.roomId
const image = await this.CameraService.takePicture();
await this.fileService.saveImage(image)
const lastphoto: any = await this.fileService.loadFiles();
const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto);
const file = await Camera.getPhoto({
quality: 90,
// allowEditing: true,
resultType: CameraResultType.Base64,
source: CameraSource.Camera
});
const blob = this.dataURItoBlob('data:image/jpeg;base64,' + file.base64String)
console.log('data:image/jpeg;base64,' + file.base64String)
const base64 = await fetch(capturedImage);
const blob = await base64.blob();
const formData = new FormData();
formData.append("blobFile", blob);
console.log(capturedImage);
// console.log('capturedImage', capturedImage);
this.ChatSystemService.getDmRoom(roomId).send({
file: {
@@ -667,13 +673,38 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
"guid": ''
},
attachments: [{
"title": capturedImageTitle,
"title": "file.jpg",
"text": "description",
"title_link_download": false,
}],
temporaryData: formData
})
}
dataURItoBlob(dataURI) {
// convert base64 to raw binary data held in a string
// doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
var byteString = atob(dataURI.split(',')[1]);
// separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
// write the bytes of the string to an ArrayBuffer
var ab = new ArrayBuffer(byteString.length);
// create a view into the buffer
var ia = new Uint8Array(ab);
// set the bytes of the buffer to the correct values
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
// write the ArrayBuffer to a blob, and you're done
var blob = new Blob([ab], {type: mimeString});
return blob;
}
async addImageMobile() {