add and view docments on chat solved

This commit is contained in:
Equilibrium ITO
2024-03-14 09:10:17 +01:00
parent 5b7224dbd6
commit 8cb9961bad
19 changed files with 230 additions and 25 deletions
+4 -4
View File
@@ -489,7 +489,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 90;
CURRENT_PROJECT_VERSION = 92;
DEVELOPMENT_TEAM = 94BRNM2LSS;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = App/Info.plist;
@@ -498,7 +498,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 4.0;
MARKETING_VERSION = 4.2;
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
PRODUCT_BUNDLE_IDENTIFIER = com.gpr.gabinetedigital.teste;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -516,7 +516,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 90;
CURRENT_PROJECT_VERSION = 92;
DEVELOPMENT_TEAM = 94BRNM2LSS;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
INFOPLIST_FILE = App/Info.plist;
@@ -525,7 +525,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 4.0;
MARKETING_VERSION = 4.2;
PRODUCT_BUNDLE_IDENTIFIER = com.gpr.gabinetedigital.teste;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
+17
View File
@@ -87,6 +87,23 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsFileWithMaxCount</key>
<integer>5</integer>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>5</integer>
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
<integer>5</integer>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationUsesStrictMatching</key>
<false/>
</dict>
<key>UNUserNotificationCenterDelegate</key>
<string>YourApp.NotificationDelegate</string>
</dict>
+9 -1
View File
@@ -15,12 +15,20 @@
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsFileWithMaxCount</key>
<integer>5</integer>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>1</integer>
<integer>5</integer>
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
<integer>5</integer>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationUsesStrictMatching</key>
<false/>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
+4
View File
@@ -301,6 +301,10 @@ const routes = [
{
path: 'not-found',
loadChildren: () => import('./pages/not-found/not-found.module').then( m => m.NotFoundPageModule)
},
{
path: 'view-document-second-options',
loadChildren: () => import('./modals/view-document-second-options/view-document-second-options.module').then( m => m.ViewDocumentSecondOptionsPageModule)
}
/*
@@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ViewDocumentSecondOptionsPage } from './view-document-second-options.page';
const routes: Routes = [
{
path: '',
component: ViewDocumentSecondOptionsPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class ViewDocumentSecondOptionsPageRoutingModule {}
@@ -0,0 +1,22 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { ViewDocumentSecondOptionsPageRoutingModule } from './view-document-second-options-routing.module';
import { ViewDocumentSecondOptionsPage } from './view-document-second-options.page';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
ViewDocumentSecondOptionsPageRoutingModule,
FontAwesomeModule
],
declarations: [ViewDocumentSecondOptionsPage]
})
export class ViewDocumentSecondOptionsPageModule {}
@@ -0,0 +1,24 @@
<ion-header class="ion-no-border">
<ion-toolbar class="d-flex">
<div class="d-flex align-items-center px-20 pt-20 font-25">
<div class="left cursor-pointer" (click)="close()">
<fa-icon icon="chevron-left" class="menu-icon font-awesome-1"></fa-icon>
</div>
<div class="middle ">
{{filename}}
</div>
<div *ngIf=" task || Document" class="right cursor-pointer" (click)="openOptions()">
<fa-icon icon="ellipsis-v" class="menu-icon font-awesome-1"></fa-icon>
</div>
</div>
</ion-toolbar>
</ion-header>
<ion-content class="pt-10 height-100">
<div class="height-100">
<iframe class="iframe" [src]="trustedUrl" height="100%" width="100%" title="Iframe Example"></iframe>
</div>
</ion-content>
@@ -0,0 +1,27 @@
.left{
float: left;
}
.middle{
float: left;
padding-left: 5px !important;
}
.right{
float: right;
margin-left: auto;
}
.container-img {
background-image: url(/assets/gif/theme/gov/Blocks-loader.svg);
background-repeat: no-repeat;
background-position-x: center;
background-position-y: center;
}
@media only screen and (max-width: 650px) {
.container-img {
background-size: 25%;
}
}
@@ -0,0 +1,24 @@
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ViewDocumentSecondOptionsPage } from './view-document-second-options.page';
describe('ViewDocumentSecondOptionsPage', () => {
let component: ViewDocumentSecondOptionsPage;
let fixture: ComponentFixture<ViewDocumentSecondOptionsPage>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ ViewDocumentSecondOptionsPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(ViewDocumentSecondOptionsPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,40 @@
import { Component, OnInit } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { ModalController, NavParams } from '@ionic/angular';
@Component({
selector: 'app-view-document-second-options',
templateUrl: './view-document-second-options.page.html',
styleUrls: ['./view-document-second-options.page.scss'],
})
export class ViewDocumentSecondOptionsPage implements OnInit {
fileUrl: string;
filename: string;
completeUrl: string
trustedUrl: any;
constructor(
private modalController: ModalController,
private navParams: NavParams,
private sanitazer: DomSanitizer,
) {
this.fileUrl = this.navParams.get('fileUrl');
this.filename = this.navParams.get('filename');
this.completeUrl = `/assets/www/pdfjs/web/viewer.html?file=${this.fileUrl}`;
}
ngOnInit() {
console.log(this.fileUrl)
console.log(this.completeUrl)
const link: string = this.completeUrl.replace('//pdfjs/web/', '/pdfjs/web/')
this.trustedUrl = this.sanitazer.bypassSecurityTrustResourceUrl(link);
}
close() {
this.modalController.dismiss();
}
}
@@ -35,6 +35,7 @@ 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';
import { ViewDocumentSecondOptionsPage } from 'src/app/modals/view-document-second-options/view-document-second-options.page';
@Component({
selector: 'app-group-messages',
@@ -1160,7 +1161,16 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
async openFile(pdfString, filename, type) {
const blob = this.b64toBlob(pdfString, type)
const modal = await this.modalController.create({
component: ViewDocumentSecondOptionsPage,
componentProps: {
fileUrl: pdfString,
filename: filename
},
cssClass: 'modal modal-desktop'
});
await modal.present();
/* const blob = this.b64toBlob(pdfString, type)
let pathFile = ''
const fileName = filename
const contentFile = blob
@@ -1180,7 +1190,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
.open(dir.uri, type)
.then(() => console.log())
.catch(e => console.error(e))
});
}); */
}
downloadFileMsg(msg: MessageService) {
@@ -1242,7 +1252,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
modal.present();
} else {
this.openFile(str, msg.attachments[0].title, msg.file.type);
this.openFile(msg.attachments[0].image_url, msg.attachments[0].title, msg.file.type);
}
}
}
@@ -80,7 +80,6 @@
</div>
</div>
<div *ngIf="msg.file && msg.delate == false">
<div (press)="handlePress(msg._id)"
class='message-container incoming-{{msg.u.username!=sessionStore.user.UserName}}'
+15 -2
View File
@@ -2,6 +2,7 @@ import { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, ViewChild } fr
import { Router } from '@angular/router'
import { GestureController, ModalController, NavParams, PopoverController, Platform, AlertController } from '@ionic/angular';
import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page';
import { ViewDocumentSecondOptionsPage} from 'src/app/modals/view-document-second-options/view-document-second-options.page';
import { EventPerson } from 'src/app/models/eventperson.model';
import { ExpedientTaskModalPageNavParamsTask } from 'src/app/models/ExpedientTaskModalPage';
import { ContactsPage } from 'src/app/pages/chat/messages/contacts/contacts.page';
@@ -1115,6 +1116,18 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
async openFile(pdfString, filename, type) {
console.log('url while open ',pdfString)
const modal = await this.modalController.create({
component: ViewDocumentSecondOptionsPage,
componentProps: {
fileUrl: pdfString,
filename: filename
},
cssClass: 'modal modal-desktop'
});
await modal.present();
/*
var blob = new Blob([pdfString], { type: 'application/pdf' });
console.log('blob blob', blob)
@@ -1152,7 +1165,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
.catch(e => console.error(e))
}).catch((error) => {
console.log('error writing the file', error)
});
}); */
}
removeTextBeforeSlash(inputString, controlString) {
@@ -1227,7 +1240,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
modal.present();
} else {
this.openFile(str, msg.attachments[0].title, msg.file.type);
this.openFile(msg.attachments[0].image_url, msg.attachments[0].title, msg.file.type);
}
}
@@ -835,7 +835,7 @@ console.log(stringGerada);
fileObject ={};
const deleteSecretFile = async () => {
await Filesystem.deleteFile({
path: 'output.mp4',
path: `${stringGerada}.mp4`,
directory: Directory.Cache,
});
};
@@ -953,7 +953,7 @@ console.log(stringGerada);
let fileObject ={};
this.videoconvertService.convertVideo(fullPath,directory.uri,filename,'mp4').then(() => {
Filesystem.readFile({ path: `${directory.uri}output.mp4`})
Filesystem.readFile({ path: `${directory.uri}${filename}.mp4`})
.then(async (content) => {
console.log(content.data)
@@ -972,7 +972,7 @@ console.log(stringGerada);
fileObject ={};
const deleteSecretFile = async () => {
await Filesystem.deleteFile({
path: 'output.mp4',
path: `${filename}.mp4`,
directory: Directory.Cache,
});
};
+1 -1
View File
@@ -68,7 +68,7 @@ export class AttachmentsService {
downloadFile(guid: any) {
let downloadUrl = environment.apiURL + 'objectserver/StreamChatFiles?path=' + guid;
let downloadUrl = environment.apiURL + 'objectserver/streamfiles?path=' + guid;
var name = new Date().getTime();
return this.http.get(downloadUrl, {
responseType: "arraybuffer",
+2 -2
View File
@@ -456,12 +456,12 @@ export class MessageService {
if (this.file.type == "application/img") {
downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
} else if (this.file.type != "application/img") {
downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
downloadFile = event.url
/*
let */
/* downloadFile = btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '')); */
console.log('downloaded file', downloadFile)
console.log('event body downloaded file', event.body)
console.log('event body downloaded file', event.url)
}
@@ -891,7 +891,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
fileBase64 = await this._getBase64(file)
formData = new FormData();
formData.append('blobFile', file);
formData.append('blobFile', blob);
}
@@ -775,7 +775,7 @@ console.log(stringGerada);
this.videoconvertService.convertVideo(fullPath,directory.uri,stringGerada,'mp4');
Filesystem.readFile({ path: `${directory.uri}output.mp4`})
Filesystem.readFile({ path: `${directory.uri}${stringGerada}.mp4`})
.then(async (content) => {
this.filecontent = true;
+1 -1
View File
@@ -1923,7 +1923,7 @@
}
if (file) {
PDFViewerApplication.open(file);
PDFViewerApplication.open(new URLSearchParams(window.location.search).get("file"));
}
};
}