Merge branch 'feature/viewer-attachment' of bitbucket.org:equilibriumito/gabinete-digital-fo into feature/viewer-attachment

This commit is contained in:
Peter Maquiran
2024-03-11 16:35:44 +01:00
9 changed files with 136 additions and 28 deletions
+10 -10
View File
@@ -15,7 +15,7 @@
504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; }; 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; };
50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; }; 50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; };
A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; }; A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; };
A9D8C5112B87AF2B00C95FBB /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = A9D8C5102B87AF2B00C95FBB /* GoogleService-Info.plist */; }; A99931862B9691C4001D9C4F /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = A99931852B9691C4001D9C4F /* GoogleService-Info.plist */; };
A9D8C5192B87B08300C95FBB /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D8C5182B87B08300C95FBB /* ShareViewController.swift */; }; A9D8C5192B87B08300C95FBB /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D8C5182B87B08300C95FBB /* ShareViewController.swift */; };
A9D8C51C2B87B08300C95FBB /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9D8C51A2B87B08300C95FBB /* MainInterface.storyboard */; }; A9D8C51C2B87B08300C95FBB /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9D8C51A2B87B08300C95FBB /* MainInterface.storyboard */; };
A9D8C5202B87B08300C95FBB /* Share.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = A9D8C5162B87B08300C95FBB /* Share.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; A9D8C5202B87B08300C95FBB /* Share.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = A9D8C5162B87B08300C95FBB /* Share.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
@@ -55,7 +55,7 @@
504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; }; 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; };
A9D8C5102B87AF2B00C95FBB /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../Downloads/GoogleService-Info.plist"; sourceTree = "<group>"; }; A99931852B9691C4001D9C4F /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../Downloads/GoogleService-Info.plist"; sourceTree = "<group>"; };
A9D8C5162B87B08300C95FBB /* Share.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Share.appex; sourceTree = BUILT_PRODUCTS_DIR; }; A9D8C5162B87B08300C95FBB /* Share.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Share.appex; sourceTree = BUILT_PRODUCTS_DIR; };
A9D8C5182B87B08300C95FBB /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; }; A9D8C5182B87B08300C95FBB /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
A9D8C51B2B87B08300C95FBB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; }; A9D8C51B2B87B08300C95FBB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
@@ -117,8 +117,8 @@
504EC3061FED79650016851F /* App */ = { 504EC3061FED79650016851F /* App */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A99931852B9691C4001D9C4F /* GoogleService-Info.plist */,
A9D8C5252B888E8300C95FBB /* App.entitlements */, A9D8C5252B888E8300C95FBB /* App.entitlements */,
A9D8C5102B87AF2B00C95FBB /* GoogleService-Info.plist */,
50379B222058CBB4000EE86E /* capacitor.config.json */, 50379B222058CBB4000EE86E /* capacitor.config.json */,
504EC3071FED79650016851F /* AppDelegate.swift */, 504EC3071FED79650016851F /* AppDelegate.swift */,
504EC30B1FED79650016851F /* Main.storyboard */, 504EC30B1FED79650016851F /* Main.storyboard */,
@@ -243,7 +243,7 @@
50379B232058CBB4000EE86E /* capacitor.config.json in Resources */, 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */,
504EC30D1FED79650016851F /* Main.storyboard in Resources */, 504EC30D1FED79650016851F /* Main.storyboard in Resources */,
2FAD9763203C412B000D30F8 /* config.xml in Resources */, 2FAD9763203C412B000D30F8 /* config.xml in Resources */,
A9D8C5112B87AF2B00C95FBB /* GoogleService-Info.plist in Resources */, A99931862B9691C4001D9C4F /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -489,16 +489,16 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements; CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 81; CURRENT_PROJECT_VERSION = 88;
DEVELOPMENT_TEAM = 94BRNM2LSS; DEVELOPMENT_TEAM = 94BRNM2LSS;
ENABLE_USER_SCRIPT_SANDBOXING = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = App/Info.plist; INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0; IPHONEOS_DEPLOYMENT_TARGET = 16.3;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3.1; MARKETING_VERSION = 3.8;
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
PRODUCT_BUNDLE_IDENTIFIER = com.gpr.gabinetedigital.teste; PRODUCT_BUNDLE_IDENTIFIER = com.gpr.gabinetedigital.teste;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -516,16 +516,16 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements; CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 81; CURRENT_PROJECT_VERSION = 88;
DEVELOPMENT_TEAM = 94BRNM2LSS; DEVELOPMENT_TEAM = 94BRNM2LSS;
ENABLE_USER_SCRIPT_SANDBOXING = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = App/Info.plist; INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 17.0; IPHONEOS_DEPLOYMENT_TARGET = 16.3;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3.1; MARKETING_VERSION = 3.8;
PRODUCT_BUNDLE_IDENTIFIER = com.gpr.gabinetedigital.teste; PRODUCT_BUNDLE_IDENTIFIER = com.gpr.gabinetedigital.teste;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
-1
View File
@@ -62,7 +62,6 @@
<string>This app requires access to the photo library.</string> <string>This app requires access to the photo library.</string>
<key>UIBackgroundModes</key> <key>UIBackgroundModes</key>
<array> <array>
<string>processing</string>
<string>remote-notification</string> <string>remote-notification</string>
</array> </array>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
+7 -7
View File
@@ -124,7 +124,7 @@
"cordova-plugin-filepath": "^1.5.8", "cordova-plugin-filepath": "^1.5.8",
"cordova-plugin-multiple-documents-picker": "^1.0.0", "cordova-plugin-multiple-documents-picker": "^1.0.0",
"cordova-plugin-okhttp": "^2.0.0", "cordova-plugin-okhttp": "^2.0.0",
"cordova-plugin-screen-orientation": "^3.0.2", "cordova-plugin-screen-orientation": "^3.0.4",
"cordova-res": "^0.15.3", "cordova-res": "^0.15.3",
"cordova-sqlite-storage": "^6.0.0", "cordova-sqlite-storage": "^6.0.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
@@ -12878,9 +12878,9 @@
] ]
}, },
"node_modules/cordova-plugin-screen-orientation": { "node_modules/cordova-plugin-screen-orientation": {
"version": "3.0.2", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/cordova-plugin-screen-orientation/-/cordova-plugin-screen-orientation-3.0.2.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-screen-orientation/-/cordova-plugin-screen-orientation-3.0.4.tgz",
"integrity": "sha512-2w6CMC+HGvbhogJetalwGurL2Fx8DQCCPy3wlSZHN1/W7WoQ5n9ujVozcoKrY4VaagK6bxrPFih+ElkO8Uqfzg==", "integrity": "sha512-AswRuUKJ8J3HycUilTJsIB50aa9TLrwndPNBFG+wfAPhHEqIBF0HaD0q3HbAK7ypgmaj0cvbzk84qP51IcTfrQ==",
"engines": { "engines": {
"cordovaDependencies": { "cordovaDependencies": {
"4.0.0": { "4.0.0": {
@@ -53547,9 +53547,9 @@
"integrity": "sha512-k8Fr3Zcv2kcsTD7TYrPPBZX/kEDSCjnPQOtaQBOFmCS3IcJNgWQY8LYST57zkIijaTKeQR7JZo4DvW1Oda3o2Q==" "integrity": "sha512-k8Fr3Zcv2kcsTD7TYrPPBZX/kEDSCjnPQOtaQBOFmCS3IcJNgWQY8LYST57zkIijaTKeQR7JZo4DvW1Oda3o2Q=="
}, },
"cordova-plugin-screen-orientation": { "cordova-plugin-screen-orientation": {
"version": "3.0.2", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/cordova-plugin-screen-orientation/-/cordova-plugin-screen-orientation-3.0.2.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-screen-orientation/-/cordova-plugin-screen-orientation-3.0.4.tgz",
"integrity": "sha512-2w6CMC+HGvbhogJetalwGurL2Fx8DQCCPy3wlSZHN1/W7WoQ5n9ujVozcoKrY4VaagK6bxrPFih+ElkO8Uqfzg==" "integrity": "sha512-AswRuUKJ8J3HycUilTJsIB50aa9TLrwndPNBFG+wfAPhHEqIBF0HaD0q3HbAK7ypgmaj0cvbzk84qP51IcTfrQ=="
}, },
"cordova-plugin-statusbar": { "cordova-plugin-statusbar": {
"version": "2.4.3", "version": "2.4.3",
+1 -1
View File
@@ -140,7 +140,7 @@
"cordova-plugin-filepath": "^1.5.8", "cordova-plugin-filepath": "^1.5.8",
"cordova-plugin-multiple-documents-picker": "^1.0.0", "cordova-plugin-multiple-documents-picker": "^1.0.0",
"cordova-plugin-okhttp": "^2.0.0", "cordova-plugin-okhttp": "^2.0.0",
"cordova-plugin-screen-orientation": "^3.0.2", "cordova-plugin-screen-orientation": "^3.0.4",
"cordova-res": "^0.15.3", "cordova-res": "^0.15.3",
"cordova-sqlite-storage": "^6.0.0", "cordova-sqlite-storage": "^6.0.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
+8 -3
View File
@@ -12,6 +12,7 @@ import { Storage } from '@ionic/storage';
import { ChatController } from './controller/chat'; import { ChatController } from './controller/chat';
import { register } from 'swiper/element/bundle'; import { register } from 'swiper/element/bundle';
import { DomSanitizer } from '@angular/platform-browser'; import { DomSanitizer } from '@angular/platform-browser';
import {ScreenOrientation} from "@ionic-native/screen-orientation/ngx";
const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { const CUSTOM_DATE_FORMATS: NgxMatDateFormats = {
parse: { parse: {
@@ -41,7 +42,8 @@ export class AppComponent {
public ThemeService: ThemeService, public ThemeService: ThemeService,
private storage: Storage, private storage: Storage,
private ChatSystemService: ChatSystemService, private ChatSystemService: ChatSystemService,
private sanitizer: DomSanitizer private sanitizer: DomSanitizer,
private screenOrientation: ScreenOrientation
) { ) {
window["sanitizer"] = this.sanitizer window["sanitizer"] = this.sanitizer
@@ -77,9 +79,12 @@ export class AppComponent {
if (this.platform.is("tablet")) { if (this.platform.is("tablet")) {
window.screen.orientation.unlock(); window.screen.orientation.unlock();
} else if( this.platform.is("mobile")) { } 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');
}
} }
}); });
} }
} }
@@ -34,6 +34,7 @@ import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
import { RouteService } from 'src/app/services/route.service'; import { RouteService } from 'src/app/services/route.service';
import { FileValidatorService } from "src/app/services/file/file-validator.service" import { FileValidatorService } from "src/app/services/file/file-validator.service"
import { sanitize } from "sanitize-filename-ts"; import { sanitize } from "sanitize-filename-ts";
import { FilePicker } from '@capawesome/capacitor-file-picker';
@Component({ @Component({
selector: 'app-group-messages', selector: 'app-group-messages',
@@ -839,8 +840,47 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
async addFileToChat(types: typeof FileType[]) { async addFileToChat(types: typeof FileType[]) {
const roomId = this.roomId 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); const file: any = await this.fileService.getFileFromDevice(types);
+55 -6
View File
@@ -29,12 +29,13 @@ import { SessionStore } from 'src/app/store/session.service';
import { ViewMediaPage } from 'src/app/modals/view-media/view-media.page'; import { ViewMediaPage } from 'src/app/modals/view-media/view-media.page';
import { File } from '@awesome-cordova-plugins/file/ngx'; import { File } from '@awesome-cordova-plugins/file/ngx';
import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx'; import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';
import { Filesystem, Directory } from '@capacitor/filesystem'; import { Filesystem, Directory, Encoding } from '@capacitor/filesystem';
import { NewEventPage } from '../../agenda/new-event/new-event.page'; import { NewEventPage } from '../../agenda/new-event/new-event.page';
import { NotificationsService } from 'src/app/services/notifications.service'; import { NotificationsService } from 'src/app/services/notifications.service';
import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service' import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'
import { FileValidatorService } from "src/app/services/file/file-validator.service" import { FileValidatorService } from "src/app/services/file/file-validator.service"
import { sanitize } from "sanitize-filename-ts"; import { sanitize } from "sanitize-filename-ts";
import { FilePicker } from '@capawesome/capacitor-file-picker';
import { ChangeDetectorRef } from '@angular/core'; import { ChangeDetectorRef } from '@angular/core';
@@ -848,9 +849,46 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
} }
async addFileToChat(types: typeof FileType[]) { async addFileToChat(types: typeof FileType[]) {
console.log('add file') console.log('add file ')
const roomId = this.roomId 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); const file: any = await this.fileService.getFileFromDevice(types);
console.log(file) console.log(file)
@@ -1068,11 +1106,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
} }
async openFile(pdfString, filename, type) { async openFile(pdfString, filename, type) {
const blob = this.b64toBlob(pdfString, type)
console.log(blob)
let pathFile = '' let pathFile = ''
const fileName = filename const fileName = filename
const contentFile = blob
if (this.platform.is('ios')) { if (this.platform.is('ios')) {
pathFile = this.file.documentsDirectory pathFile = this.file.documentsDirectory
} else { } else {
@@ -1084,13 +1119,16 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
await Filesystem.writeFile({ await Filesystem.writeFile({
path: fileName, path: fileName,
data: pdfString, data: pdfString,
directory: Directory.Data, directory: Directory.Cache,
encoding: Encoding.UTF8,
}).then((dir) => { }).then((dir) => {
console.log('DIR ', dir) console.log('DIR ', dir)
this.fileOpener this.fileOpener
.open(dir.uri, type) .open(dir.uri, type)
.then(() => console.log()) .then(() => console.log())
.catch(e => console.error(e)) .catch(e => console.error(e))
}).catch((error) => {
console.log('error writing the file', error)
}); });
} }
@@ -1248,6 +1286,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;
}
} }
+3
View File
@@ -448,6 +448,8 @@ export class MessageService {
let downloadFile = ""; let downloadFile = "";
this.AttachmentsService.downloadFile(this.file.guid).subscribe(async (event) => { this.AttachmentsService.downloadFile(this.file.guid).subscribe(async (event) => {
console.log('download file',event)
if (event.type === HttpEventType.DownloadProgress) { if (event.type === HttpEventType.DownloadProgress) {
} else if (event.type === HttpEventType.Response) { } else if (event.type === HttpEventType.Response) {
@@ -456,6 +458,7 @@ export class MessageService {
} else if (this.file.type != "application/img") { } else if (this.file.type != "application/img") {
downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''); downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
console.log('downloaded file', downloadFile)
} }
@@ -263,5 +263,17 @@ export class FileService {
return new File([u8arr], filename, {type:mime}); 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 });
}
} }