bug adding file to chat on ios solved

This commit is contained in:
Equilibrium ITO
2024-03-11 11:18:32 +01:00
parent 63f3138162
commit c22efc99dc
8 changed files with 126 additions and 17 deletions
+8 -3
View File
@@ -12,6 +12,7 @@ import { Storage } from '@ionic/storage';
import { ChatController } from './controller/chat';
import { register } from 'swiper/element/bundle';
import { DomSanitizer } from '@angular/platform-browser';
import {ScreenOrientation} from "@ionic-native/screen-orientation/ngx";
const CUSTOM_DATE_FORMATS: NgxMatDateFormats = {
parse: {
@@ -41,7 +42,8 @@ export class AppComponent {
public ThemeService: ThemeService,
private storage: Storage,
private ChatSystemService: ChatSystemService,
private sanitizer: DomSanitizer
private sanitizer: DomSanitizer,
private screenOrientation: ScreenOrientation
) {
window["sanitizer"] = this.sanitizer
@@ -77,9 +79,12 @@ export class AppComponent {
if (this.platform.is("tablet")) {
window.screen.orientation.unlock();
} else if( this.platform.is("mobile")) {
// window.screen.orientation.lock('portrait');
if(this.platform.is('ios')){
this.screenOrientation.lock('portrait')
} else {
window.screen.orientation.lock('portrait');
}
}
});
}
}
+4 -1
View File
@@ -121,7 +121,10 @@ export class TokenInterceptor implements HttpInterceptor {
} else {
/* const pathBeforeGoOut = window.location.pathname */
this.router.navigateByUrl('/auth', { replaceUrl: true }).then(() =>{
this.httpErrorHandle.httpsSucessMessagge('sessonExpired')
if(SessionStore.user.Authorization){
this.httpErrorHandle.httpsSucessMessagge('sessonExpired')
}
})
}
return of(false);
@@ -34,6 +34,7 @@ import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
import { RouteService } from 'src/app/services/route.service';
import { FileValidatorService } from "src/app/services/file/file-validator.service"
import { sanitize } from "sanitize-filename-ts";
import { FilePicker } from '@capawesome/capacitor-file-picker';
@Component({
@@ -828,8 +829,47 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
async addFileToChat(types: typeof FileType[]) {
const roomId = this.roomId
if(this.platform.is('ios')) {
console.log('ios add file ')
const resultt = await FilePicker.pickFiles({
types: ['application/pdf'],
multiple: false,
readData: true,
});
console.log('RESULT', resultt.files[0])
const blobb = this.fileService.base64toBlob(resultt.files[0].data, resultt.files[0].mimeType)
const formDataa = new FormData();
formDataa.append('blobFile', blobb);
/* console.log('add file', fileBase64) */
this.ChatSystemService.getGroupRoom(roomId).send({
file: {
"type": resultt.files[0].mimeType,
"guid": '',
},
attachments: [{
"title": sanitize(resultt.files[0].name),
"name": sanitize(resultt.files[0].name),
// "text": "description",
"title_link_download": false,
}],
temporaryData: formDataa,
attachmentsModelData: {
fileBase64: '',
}
})
return
}
const file: any = await this.fileService.getFileFromDevice(types);
+50 -1
View File
@@ -35,6 +35,7 @@ import { NotificationsService } from 'src/app/services/notifications.service';
import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'
import { FileValidatorService } from "src/app/services/file/file-validator.service"
import { sanitize } from "sanitize-filename-ts";
import { FilePicker } from '@capawesome/capacitor-file-picker';
@@ -839,9 +840,46 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
async addFileToChat(types: typeof FileType[]) {
console.log('add file')
console.log('add file ')
const roomId = this.roomId
if(this.platform.is('ios')) {
console.log('ios add file ')
const resultt = await FilePicker.pickFiles({
types: ['application/pdf'],
multiple: false,
readData: true,
});
console.log('RESULT', resultt.files[0])
const blobb = this.fileService.base64toBlob(resultt.files[0].data, resultt.files[0].mimeType)
const formDataa = new FormData();
formDataa.append('blobFile', blobb);
/* console.log('add file', fileBase64) */
this.ChatSystemService.getDmRoom(roomId).send({
file: {
"type": resultt.files[0].mimeType,
"guid": '',
},
attachments: [{
"title": sanitize(resultt.files[0].name),
"name": sanitize(resultt.files[0].name),
// "text": "description",
"title_link_download": false,
}],
temporaryData: formDataa,
attachmentsModelData: {
fileBase64: '',
}
})
return
}
const file: any = await this.fileService.getFileFromDevice(types);
console.log(file)
@@ -1239,6 +1277,17 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
}
dataURItoBlobIso(dataURI: any) {
const byteString = window.atob(dataURI);
const arrayBuffer = new ArrayBuffer(byteString.length);
const int8Array = new Uint8Array(arrayBuffer);
for (let i = 0; i < byteString.length; i++) {
int8Array[i] = byteString.charCodeAt(i);
}
const blob = new Blob([int8Array], { type: 'application/pdf' });
return blob;
}
}
@@ -263,5 +263,17 @@ export class FileService {
return new File([u8arr], filename, {type:mime});
}
base64toBlobIos(base64Data, contentType) {
contentType = contentType || '';
const byteCharacters = atob(base64Data);
const byteArray = new Uint8Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteArray[i] = byteCharacters.charCodeAt(i);
}
return new Blob([byteArray], { type: contentType });
}
}