fix, open file

This commit is contained in:
Peter Maquiran
2024-09-12 14:50:10 +01:00
parent 4413ce4698
commit e2df6a0919
10 changed files with 154 additions and 71 deletions
+122 -44
View File
@@ -52,7 +52,9 @@ import { tap } from 'rxjs/operators';
import { ChatPopoverPage } from '../chat-popover/chat-popover.page';
import { ViewOncesImagePageInput, ViewOncesImagePage } from '../view-onces/view-onces.page';
import { LastMessage } from '../../utils/lastMessage';
import { File } from '@awesome-cordova-plugins/file/ngx';
import { Filesystem, Directory } from '@capacitor/filesystem';
import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';
const IMAGE_DIR = 'stored-images';
@@ -168,6 +170,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
private userTypingLocalRepository: UserTypingLocalRepository,
private UserTypingRemoteRepositoryService: UserTypingRemoteRepositoryService,
private messageLocalDataSourceService: MessageLocalDataSourceService,
private file: File,
private fileOpener: FileOpener,
) {
@@ -1263,59 +1267,133 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
async openFile(pdfString, filename, type) {
// async openFile(pdfString, filename, type) {
console.log('url while open ',pdfString)
// console.log('url while open ',pdfString)
/* const modal = await this.modalController.create({
component: ViewDocumentSecondOptionsPage,
componentProps: {
fileUrl: pdfString,
filename: filename
},
cssClass: 'modal modal-desktop'
// /* const modal = await this.modalController.create({
// component: ViewDocumentSecondOptionsPage,
// componentProps: {
// fileUrl: pdfString,
// filename: filename
// },
// cssClass: 'modal modal-desktop'
// });
// await modal.present();
// /*
// await modal.present(); */
// // var blob = new Blob([pdfString], { type: 'application/pdf' });
// let pathFile = ''
// const fileName = filename
// if (this.platform.is('ios')) {
// pathFile = this.file.documentsDirectory
// } else {
// pathFile = this.file.externalRootDirectory
// }
// console.log('file data', pdfString)
// console.log(pathFile)
// let removePre = this.removeTextBeforeSlash(pdfString,',')
// console.log('file data remove ', removePre)
// await Filesystem.writeFile({
// path: fileName,
// data: removePre,
// directory: Directory.Cache,
// }).then((dir) => {
// console.log('DIR ', dir)
// this.fileOpener
// .open(dir.uri, type)
// .then(() => console.log())
// .catch(e => console.error(e))
// }).catch((error) => {
// console.log('error writing the file', error)
// });
// }
async fetchBlobFromURL(blobUrl: string): Promise<Blob> {
try {
const response = await fetch(blobUrl);
if (!response.ok) {
throw new Error(`Failed to fetch blob: ${response.statusText}`);
}
return await response.blob();
} catch (error) {
console.error('Error fetching blob from URL:', error);
throw error;
}
}
convertBlobToDataURL(blob: Blob): Promise<string> {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => {
if (reader.result) {
resolve(reader.result as string);
} else {
reject('Conversion failed');
}
};
reader.onerror = (error) => reject(error);
reader.readAsDataURL(blob);
});
await modal.present();
/*
await modal.present(); */
}
// var blob = new Blob([pdfString], { type: 'application/pdf' });
// async openFile(blobUrl:string, filename, fileType) {
// console.log(blobUrl, filename, fileType)
// let pathFile: string;
// console.log('blob blob', blob)
// if (this.platform.is('ios')) {
// pathFile = this.file.documentsDirectory
// } else {
// pathFile = this.file.externalRootDirectory
// }
// this.blobToBase64(blob).then((value) => {
// console.log(value)
// }).catch((error) => {
// console.log(error)
// })
// let a = await this.fetchBlobFromURL(blobUrl)
// let pathFile = ''
// const fileName = filename
// if (this.platform.is('ios')) {
// pathFile = this.file.documentsDirectory
// } else {
// pathFile = this.file.externalRootDirectory
// }
// console.log({e:await this.convertBlobToDataURL(a)})
// let removePre = this.removeTextBeforeSlash(await this.convertBlobToDataURL(a),',')
// console.log('file data', pdfString)
// console.log(pathFile)
// Filesystem.writeFile({
// path: filename,
// data: removePre,
// directory: Directory.Cache,
// let removePre = this.removeTextBeforeSlash(pdfString,',')
// console.log('file data remove ', removePre)
// }).then(dir => {
// console.log('DIR ', dir)
// this.fileOpener
// .open(dir.uri, fileType)
// .then(() => console.log())
// .catch(e => console.error(e))
// })
// .catch(e => console.log('Error writing file', e))
// }
// await Filesystem.writeFile({
// path: fileName,
// data: removePre,
// directory: Directory.Cache,
// }).then((dir) => {
// console.log('DIR ', dir)
// this.fileOpener
// .open(dir.uri, type)
// .then(() => console.log())
// .catch(e => console.error(e))
// }).catch((error) => {
// console.log('error writing the file', error)
// });
async openFile(blobUrl:string, filename, fileType) {
let pathFile = ''
const fileName = filename
const contentFile = await this.fetchBlobFromURL(blobUrl)
if (this.platform.is('ios')) {
pathFile = this.file.documentsDirectory
} else {
pathFile = this.file.cacheDirectory
}
console.log(pathFile)
console.log(contentFile)
this.file
.writeFile(pathFile, fileName, contentFile, { replace: true })
.then(success => {
this.fileOpener
.open(pathFile + fileName, fileType)
.then(() => console.log('File is opened'))
.catch(e => console.log('Error opening file', e));
})
.catch(e => console.log('Error writing file', e))
}
removeTextBeforeSlash(inputString, controlString) {