From 4c8e522d40a63a52cb47d21a90861f458de413b3 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Wed, 28 Sep 2022 21:05:28 +0100 Subject: [PATCH] improve --- src/app/pages/chat/messages/messages.page.ts | 11 +++---- src/app/services/auth.service.ts | 1 + src/app/services/chat/message.service.ts | 10 +++++- src/app/shared/chat/messages/messages.page.ts | 31 +++++++++++++++++-- 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 1ef0c936c..db029d162 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -463,12 +463,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { } } - /* playSound(url?:any){ - alert('here') - - //this.audioDownloaded = this.sanitiser.bypassSecurityTrustResourceUrl(url); - this.audioDownloaded = url; - } */ docIndex(index: number) { this.dicIndex = index @@ -626,6 +620,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { async takePicture() { + alert("!"); + const roomId = this.roomId const image = await this.CameraService.takePicture(); @@ -633,12 +629,13 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { const lastphoto: any = await this.fileService.loadFiles(); const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto); - + alert('!!'); const base64 = await fetch(capturedImage); const blob = await base64.blob(); const formData = new FormData(); formData.append("blobFile", blob); + console.log(capturedImage); this.wsChatMethodsService.getDmRoom(roomId).send({ file: { diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 908324f5c..3bba2c9bc 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -223,6 +223,7 @@ export class AuthService { const formData = message.temporaryData try { + alert('upload try') let guid: any = await this.AttachmentsService.uploadFile(formData).toPromise() message.file.guid = guid.path diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts index f53a86590..2754384e4 100644 --- a/src/app/services/chat/message.service.ts +++ b/src/app/services/chat/message.service.ts @@ -59,6 +59,7 @@ export class MessageService { downloadLoader: boolean = false downloadAttachments = false; downloadAttachmentsTemp = 0; + UploadAttachmentsTemp = 0; constructor(private storage: Storage, private NfService: NfService, @@ -150,11 +151,13 @@ export class MessageService { let uploadSuccessfully = false if(this.hasSendAttachment == false) { uploadSuccessfully = await this.NfService.beforeSendAttachment(this) + this.UploadAttachmentsTemp++ } this.uploadingFile = false if(uploadSuccessfully) { + this.hasSendAttachment = true this.errorUploadingAttachment = false this.temporaryData = {} @@ -163,6 +166,7 @@ export class MessageService { await this.sendRequest(params) } else if(this.WsChatService.isLogin == false) { + this.WsChatService.registerCallback({ type: 'reConnect', funx: async ()=> { @@ -171,7 +175,11 @@ export class MessageService { } }) - } else if(uploadSuccessfully == false) { + } else if(uploadSuccessfully == false && this.UploadAttachmentsTemp == 1) { + this.send() + } + else if(uploadSuccessfully == false) { + this.errorUploadingAttachment = true return new Promise((resolve, reject) => { diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index f977f4f7e..dc8717df1 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -613,8 +613,34 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } + 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 takePictureMobile() { + const roomId = this.roomId const file = await Camera.getPhoto({ @@ -624,8 +650,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy source: CameraSource.Camera }); - const response = await fetch('data:image/jpeg;base64,' + file.base64String!); - const blob = await response.blob(); + const blob = this.dataURItoBlob('data:image/jpeg;base64,' + file.base64String) + console.log('data:image/jpeg;base64,' + file.base64String) const formData = new FormData(); formData.append("blobFile", blob); @@ -648,6 +674,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } async takePicture() { + const roomId = this.roomId const image = await this.CameraService.takePicture();