+
diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts
index 6dc135f23..0180b6f80 100644
--- a/src/app/pages/chat/group-messages/group-messages.page.ts
+++ b/src/app/pages/chat/group-messages/group-messages.page.ts
@@ -1,5 +1,5 @@
import { Component, ElementRef, OnInit, ViewChild, AfterViewChecked, AfterViewInit, OnDestroy, ChangeDetectorRef, } from '@angular/core';
-import { ActionSheetController, IonSlides, MenuController, ModalController, NavParams, PopoverController,Platform } from '@ionic/angular';
+import { ActionSheetController, IonSlides, MenuController, ModalController, NavParams, PopoverController, Platform } from '@ionic/angular';
import { AlertService } from 'src/app/services/alert.service';
import { AuthService } from 'src/app/services/auth.service';
import { ChatService } from 'src/app/services/chat.service';
@@ -8,7 +8,7 @@ import { ChatPopoverPage } from 'src/app/shared/popover/chat-popover/chat-popove
import { ContactsPage } from '../new-group/contacts/contacts.page';
import { NewGroupPage } from '../new-group/new-group.page';
import { GroupContactsPage } from './group-contacts/group-contacts.page';
-import {Router} from '@angular/router'
+import { Router } from '@angular/router'
import { EditGroupPage } from '../edit-group/edit-group.page';
import { TimeService } from 'src/app/services/functions/time.service';
import { FileLoaderService } from 'src/app/services/file/file-loader.service';
@@ -43,33 +43,33 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
showLoader: boolean;
- isGroupCreated:boolean;
+ isGroupCreated: boolean;
loggedUser: any;
- room:any;
- roomName:any;
- members:any;
+ room: any;
+ roomName: any;
+ members: any;
contacts: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"];
- allUsers:any[] = [];
+ allUsers: any[] = [];
roomId: string;
- loggedUserChat:any;
+ loggedUserChat: any;
eventSelectedDate: Date = new Date();
- scrollingOnce:boolean = true;
+ scrollingOnce: boolean = true;
private scrollChangeCallback: () => void;
currentPosition: any;
startPosition: number;
- capturedImage:any;
- capturedImageTitle:any;
+ capturedImage: any;
+ capturedImageTitle: any;
attendees: EventPerson[] = [];
scrollToBottomBtn = false;
longPressActive = false;
showMessageOptions = false;
- selectedMsgId:string;
- roomCountDownDate:any;
+ selectedMsgId: string;
+ roomCountDownDate: any;
downloadFile: any;
@ViewChild('scrollMe') private myScrollContainer: ElementRef;
@@ -104,7 +104,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.isGroupCreated = true;
this.roomId = this.navParams.get('roomId');
window.onresize = (event) => {
- if( window.innerWidth > 701){
+ if (window.innerWidth > 701) {
this.modalController.dismiss();
}
};
@@ -113,7 +113,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.wsChatMethodsService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked;
this.wsChatMethodsService.openRoom(this.roomId)
- setTimeout(()=>{
+ setTimeout(() => {
this.scrollToBottomClicked()
}, 50)
@@ -121,7 +121,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
ngOnInit() {
console.log(this.roomId);
- this.loggedUser=this.loggedUserChat;
+ this.loggedUser = this.loggedUserChat;
this.getRoomInfo();
this.scrollToBottom();
this.serverLongPull();
@@ -134,7 +134,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
})
}
- setStatus(status:string){
+ setStatus(status: string) {
let body = {
message: '',
status: status,
@@ -144,16 +144,16 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
})
}
- deleteMessage(msgId:string){
+ deleteMessage(msgId: string) {
let body = {
"roomId": this.roomId,
"msgId": msgId,
"asUser": false,
}
- if(msgId){
+ if (msgId) {
//this.alertService.confirmDeleteMessage(body);
}
- else{
+ else {
this.toastService.badRequest('Não foi possível apagar');
}
this.showMessageOptions = false;
@@ -166,12 +166,12 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.roomCountDownDate = this.timeService.countDownDate(this.room.customFields.countDownDate, this.room._id);
}
- handlePress(id?:string){
+ handlePress(id?: string) {
this.selectedMsgId = id;
this.showMessageOptions = true;
}
- handleClick(){
+ handleClick() {
this.showMessageOptions = false;
this.selectedMsgId = "";
}
@@ -188,10 +188,10 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
//alert('UP');
this.scrollingOnce = false;
}
- if((containerHeight - 100) > scroll){
+ if ((containerHeight - 100) > scroll) {
this.scrollToBottomBtn = true;
}
- else{
+ else {
this.scrollToBottomBtn = false;
}
this.currentPosition = scroll;
@@ -225,25 +225,25 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
scrollToBottom(): void {
try {
- if(this.scrollingOnce){
+ if (this.scrollingOnce) {
this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight;
//this.scrollingOnce = false;
}
- } catch(err) { }
+ } catch (err) { }
}
scrollToBottomClicked = () => {
try {
this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight;
- } catch(err) { }
+ } catch (err) { }
}
- getRoomInfo(){
+ getRoomInfo() {
this.showLoader = true;
- this.chatService.getRoomInfo(this.roomId).subscribe(room=>{
+ this.chatService.getRoomInfo(this.roomId).subscribe(room => {
this.room = room['room'];
this.roomName = this.room.name.split('-').join(' ');
- if(this.room.customFields.countDownDate){
+ if (this.room.customFields.countDownDate) {
this.roomCountDownDate = this.timeService.countDownDateTimer(this.room.customFields.countDownDate, this.room._id);
}
this.getGroupContacts(this.room);
@@ -251,9 +251,9 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
}
- async getChatMembers(){
+ async getChatMembers() {
//return await this.chatService.getMembers(roomId).toPromise();
- this.chatService.getAllUsers().subscribe(res=> {
+ this.chatService.getAllUsers().subscribe(res => {
console.log(res);
this.allUsers = res['users'].filter(data => data.username != this.loggedUserChat.me.username);
@@ -266,28 +266,28 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.loadGroupMessages();
} */
- close(){
+ close() {
this.modalController.dismiss();
}
- doRefresh(ev:any){
+ doRefresh(ev: any) {
this.getRoomInfo();
ev.target.complete();
}
- getGroupContacts(room:any){
+ getGroupContacts(room: any) {
this.showLoader = true;
//If group is private call getGroupMembers
- if(this.room.t === 'p'){
- this.chatService.getGroupMembers(this.roomId).subscribe(res=>{
+ if (this.room.t === 'p') {
+ this.chatService.getGroupMembers(this.roomId).subscribe(res => {
console.log(res);
this.members = res['members'];
this.showLoader = false;
});
}
//Otherwise call getChannelMembers for públic groups
- else{
- this.chatService.getChannelMembers(this.roomId).subscribe(res=>{
+ else {
+ this.chatService.getChannelMembers(this.roomId).subscribe(res => {
console.log(res);
this.members = res['members'];
this.showLoader = false;
@@ -296,10 +296,10 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
- showDateDuration(start:any){
+ showDateDuration(start: any) {
return this.timeService.showDateDuration(start);
}
- countDownDate(date:any, roomId:string){
+ countDownDate(date: any, roomId: string) {
this.roomCountDownDate = this.timeService.countDownDate(date, roomId);
return this.timeService.countDownDateTimer(date, roomId);
}
@@ -328,33 +328,33 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
},
});
await modal.present();
- modal.onDidDismiss().then(res=>{
- if(res.data == 'leave'){
+ modal.onDidDismiss().then(res => {
+ if (res.data == 'leave') {
console.log('saiu do grupo');
//this.wsChatMethodsService.subscribeToRoomUpdate(this.roomId, this.room);
}
- else if(res.data == 'cancel'){
+ else if (res.data == 'cancel') {
console.log('cancel');
}
- else if(res.data == 'edit'){
+ else if (res.data == 'edit') {
this.editGroup(this.roomId);
}
});
}
- viewDocument(file:any, url?:string){
+ viewDocument(file: any, url?: string) {
- if(file.type == "application/webtrix") {
+ if (file.type == "application/webtrix") {
this.openViewDocumentModal(file);
}
- else{
+ else {
let fullUrl = "https://www.tabularium.pt" + url;
this.fileService.viewDocumentByUrl(fullUrl);
}
}
- async openViewDocumentModal(file:any){
+ async openViewDocumentModal(file: any) {
let task = {
serialNumber: '',
@@ -371,17 +371,17 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
let doc = {
- "Id": "",
- "ParentId": "",
- "Source": 1,
- "ApplicationId": file.ApplicationId,
- "CreateDate": "",
- "Data": null,
- "Description":"",
- "Link": null,
- "SourceId": file.DocId,
- "SourceName": file.Assunto,
- "Stakeholders": "",
+ "Id": "",
+ "ParentId": "",
+ "Source": 1,
+ "ApplicationId": file.ApplicationId,
+ "CreateDate": "",
+ "Data": null,
+ "Description": "",
+ "Link": null,
+ "SourceId": file.DocId,
+ "SourceName": file.Assunto,
+ "Stakeholders": "",
}
const modal = await this.modalController.create({
@@ -406,19 +406,19 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
async bookMeeting() {
- this.attendees = this.members.map((val)=>{
+ this.attendees = this.members.map((val) => {
return {
Name: val.name,
- EmailAddress: val.username+"@"+environment.domain,
+ EmailAddress: val.username + "@" + environment.domain,
IsRequired: "true",
}
});
console.log(this.attendees);
this.popoverController.dismiss();
- if( window.innerWidth <= 1024){
+ if (window.innerWidth <= 1024) {
const modal = await this.modalController.create({
component: NewEventPage,
- componentProps:{
+ componentProps: {
attendees: this.attendees,
},
cssClass: 'modal modal-desktop',
@@ -426,7 +426,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
await modal.present();
modal.onDidDismiss().then((data) => {
- if(data){
+ if (data) {
}
});
@@ -441,7 +441,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
const image = await this.CameraService.takePicture();
await this.fileService.saveImage(image)
const lastphoto: any = await this.fileService.loadFiles();
- const { capturedImage, capturedImageTitle} = await this.fileService.loadFileData(lastphoto);
+ const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto);
const base64 = await fetch(capturedImage);
const blob = await base64.blob();
const formData = new FormData();
@@ -454,8 +454,8 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
},
temporaryData: formData,
attachments: [{
- "title": capturedImageTitle ,
- "image_url": capturedImage, // rocketchat
+ "title": capturedImageTitle,
+ //"image_url": capturedImage, // rocketchat
"text": "description",
"title_link_download": false,
}]
@@ -482,13 +482,13 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
});
await modal.present();
- modal.onDidDismiss().then(async res=>{
+ modal.onDidDismiss().then(async res => {
const data = res.data;
- if(data.selected) {
+ if (data.selected) {
this.wsChatMethodsService.getGroupRoom(this.roomId).send({
- file:{
+ file: {
"name": res.data.selected.Assunto,
"type": "application/webtrix",
"ApplicationId": res.data.selected.ApplicationType,
@@ -515,26 +515,37 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
async addFileToChat(types: typeof FileType[] ) {
+
+ const roomId = this.roomId
+
const file: any = await this.fileService.getFileFromDevice(types);
- const imageData = await this.fileToBase64Service.convert(file)
+ console.log('Add file', file)
+ /* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
+ console.log('Add file', filee)
+ }) */
+ const response = await fetch(file);
+ const blob = await response.blob();
+ console.log('Add file', blob)
const formData = new FormData();
- formData.append("blobFile", file);
+ formData.append("blobFile", blob);
- this.wsChatMethodsService.getGroupRoom(this.roomId).send({
+ this.wsChatMethodsService.getGroupRoom(roomId).send({
file: {
- "type": "application/img",
- "guid": ''
+ "type": file.type,
+ "guid": '',
},
- temporaryData: formData,
attachments: [{
"title": file.name ,
- "text": "description",
- "image_url": imageData,
+ "name": file.name ,
+ // "text": "description",
+ //"image_url": file.base64String, // rocketchat
"title_link_download": false,
- }]
+ }],
+ temporaryData: formData
})
+
}
async openChatOptions(ev?: any) {
@@ -553,7 +564,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
translucent: true
});
await popover.present();
- await popover.onDidDismiss().then( async(res)=>{
+ await popover.onDidDismiss().then(async (res) => {
console.log(res['data']);
if (res['data'] == 'meeting') {
this.bookMeeting();
@@ -575,7 +586,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
}
- async addContacts(){
+ async addContacts() {
console.log(this.members);
const modal = await this.modalController.create({
@@ -592,12 +603,12 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
await modal.present();
- modal.onDidDismiss().then(()=>{
+ modal.onDidDismiss().then(() => {
this.getRoomInfo();
});
}
- async editGroup(roomId){
+ async editGroup(roomId) {
const modal = await this.modalController.create({
component: EditGroupPage,
cssClass: 'modal modal-desktop',
@@ -606,7 +617,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
},
});
await modal.present();
- modal.onDidDismiss().then((res)=>{
+ modal.onDidDismiss().then((res) => {
console.log(res.data);
this.getRoomInfo();
//this.modalController.dismiss(res.data);
@@ -711,42 +722,42 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
- async serverLongPull(){
+ async serverLongPull() {
this.chatService.getPrivateGroupMessages(this.roomId).subscribe(async res => {
- if (res == 502) {
- // Connection timeout
- // happens when the connection was pending for too long
- // let's reconnect
- await this.serverLongPull();
- } else if (res != 200) {
- // Show Error
- //showMessage(response.statusText);
- //this.loadMessages()
- let msgOnly = res['messages'].filter(data => data.t != 'au');
- //this.messages = msgOnly.reverse();
- // console.log('MOBILE MSG ROCKET',this.messages);
- this.transformDataMSG(msgOnly.reverse());
- this.getRoomMessageDB(this.roomId);
- // Reconnect in one second
- if(this.route.url != "/home/chat"){
- console.log("Timer message stop")
- } else {
- //Check if modal is opened
- if(document.querySelector('.isGroupChatOpened')){
- await new Promise(resolve => setTimeout(resolve, 5000));
- await this.serverLongPull();
- console.log('Timer message running')
+ if (res == 502) {
+ // Connection timeout
+ // happens when the connection was pending for too long
+ // let's reconnect
+ await this.serverLongPull();
+ } else if (res != 200) {
+ // Show Error
+ //showMessage(response.statusText);
+ //this.loadMessages()
+ let msgOnly = res['messages'].filter(data => data.t != 'au');
+ //this.messages = msgOnly.reverse();
+ // console.log('MOBILE MSG ROCKET',this.messages);
+ this.transformDataMSG(msgOnly.reverse());
+ this.getRoomMessageDB(this.roomId);
+ // Reconnect in one second
+ if (this.route.url != "/home/chat") {
+ console.log("Timer message stop")
+ } else {
+ //Check if modal is opened
+ if (document.querySelector('.isGroupChatOpened')) {
+ await new Promise(resolve => setTimeout(resolve, 5000));
+ await this.serverLongPull();
+ console.log('Timer message running')
+ }
}
- }
- } else {
- // Got message
- //let message = await response.text();
- //this.loadMessages()
- await this.serverLongPull();
- }
- });
+ } else {
+ // Got message
+ //let message = await response.text();
+ //this.loadMessages()
+ await this.serverLongPull();
+ }
+ });
}
sliderOpts = {
@@ -756,86 +767,93 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
centeredSlides: true
};
zoomActive = false;
-zoomScale = 1;
+ zoomScale = 1;
-sliderZoomOpts = {
- allowSlidePrev: false,
- allowSlideNext: false,
- zoom: {
- maxRatio: 5
- },
- on: {
- zoomChange: (scale, imageEl, slideEl) => {
- this.zoomActive = true;
- this.zoomScale = scale/5;
- this.changeDetectorRef.detectChanges();
+ sliderZoomOpts = {
+ allowSlidePrev: false,
+ allowSlideNext: false,
+ zoom: {
+ maxRatio: 5
+ },
+ on: {
+ zoomChange: (scale, imageEl, slideEl) => {
+ this.zoomActive = true;
+ this.zoomScale = scale / 5;
+ this.changeDetectorRef.detectChanges();
+ }
}
}
-}
-async touchEnd(zoomslides: IonSlides, card) {
- // Zoom back to normal
- const slider = await zoomslides.getSwiper();
- const zoom = slider.zoom;
- zoom.out();
+ async touchEnd(zoomslides: IonSlides, card) {
+ // Zoom back to normal
+ const slider = await zoomslides.getSwiper();
+ const zoom = slider.zoom;
+ zoom.out();
- // Card back to normal
- card.el.style['z-index'] = 9;
+ // Card back to normal
+ card.el.style['z-index'] = 9;
- this.zoomActive = false;
- this.changeDetectorRef.detectChanges();
-}
+ this.zoomActive = false;
+ this.changeDetectorRef.detectChanges();
+ }
-touchStart(card) {
- // Make card appear above backdrop
- card.el.style['z-index'] = 11;
-}
+ touchStart(card) {
+ // Make card appear above backdrop
+ card.el.style['z-index'] = 11;
+ }
-downloadFileMsg(msg) {
- console.log('FILE TYPE', msg.file.type)
- this.downloadFile = "";
- if (msg.file.type == "application/img") {
- this.AttachmentsService.downloadFile(msg.file.guid).subscribe(async (event) => {
- console.log('FILE TYPE 22', msg.file.guid)
- var name = msg.file.guid;
+ downloadFileMsg(msg) {
+ console.log('FILE TYPE', msg.file.type)
+ this.downloadFile = "";
+ // if (msg.file.type == "application/img") {
+ this.AttachmentsService.downloadFile(msg.file.guid).subscribe(async (event) => {
+ console.log('FILE TYPE 22', msg.file.guid)
+ var name = msg.file.guid;
- if (event.type === HttpEventType.DownloadProgress) {
- //this.downloadProgess = Math.round((100 * event.loaded) / event.total);
- console.log('FILE TYPE 33', msg.file.type)
- } else if (event.type === HttpEventType.Response) {
- this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
- console.log('FILE TYPE 44', this.downloadFile)
+ if (event.type === HttpEventType.DownloadProgress) {
+ //this.downloadProgess = Math.round((100 * event.loaded) / event.total);
+ console.log('FILE TYPE 33', msg.file.type)
+ } else if (event.type === HttpEventType.Response) {
+ if (msg.file.type == "application/img") {
+ this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
+ } else {
- msg.file = {
- guid: msg.file.guid,
- image_url: this.downloadFile,
- type: msg.file.type
+ this.downloadFile = event.body;
}
- this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
- }
- });
- console.log('FILE TYPE 44', this.downloadFile)
+
+ msg.attachments[0] = {
+ image_url: this.downloadFile,
+ name: msg.attachments[0].name,
+ title: msg.attachments[0].title,
+ title_link_download: msg.attachments[0].title_link_download,
+ ts: msg.attachments[0].ts
+ }
+ this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
+ }
+ });
+ console.log('FILE TYPE 44', this.downloadFile)
+ //}
+ }
+
+ async openPreview(msg) {
+
+ if (!msg.attachments[0].image_url ||msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
+ this.downloadFileMsg(msg)
+
+ } else {
+ const modal = await this.modalController.create({
+ component: ViewMediaPage,
+ cssClass: 'modal modal-desktop',
+ componentProps: {
+ image: msg.attachments[0].image_url,
+ type: msg.file.type,
+ username: msg.u.name,
+ _updatedAt: msg._updatedAt
+ }
+ });
+ modal.present();
+ }
+
}
}
-async openPreview(msg) {
-
- if (msg.attachments[0].image_url === null || msg.attachments[0].image_url === '' ) {
- this.downloadFileMsg(msg)
-
- } else {
- const modal = await this.modalController.create({
- component: ViewMediaPage,
- cssClass: 'modal modal-desktop',
- componentProps: {
- image: msg.attachments[0].image_url,
- username: msg.u.name,
- _updatedAt: msg._updatedAt
- }
- });
- modal.present();
- }
-
-}
-}
-
diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html
index c10e7c24c..f0b2e2eb0 100644
--- a/src/app/pages/chat/messages/messages.page.html
+++ b/src/app/pages/chat/messages/messages.page.html
@@ -88,7 +88,7 @@
-
+
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts
index 93b62cb43..023896572 100644
--- a/src/app/pages/chat/messages/messages.page.ts
+++ b/src/app/pages/chat/messages/messages.page.ts
@@ -40,9 +40,10 @@ import { SearchPage } from 'src/app/pages/search/search.page';
import { Storage } from '@ionic/storage';
import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service';
import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
- import {Plugins} from '@capacitor/core';
+import { Plugins } from '@capacitor/core';
+import { fromByteArray } from 'base64-js';
- const { Filesystem } = Plugins;
+const { Filesystem } = Plugins;
const IMAGE_DIR = 'stored-images';
@@ -93,6 +94,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
myAudio: any;
downloadfile: any;
downloadFile: any;
+ downloadProgess: number;
constructor(
public popoverController: PopoverController,
@@ -133,7 +135,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.wsChatMethodsService.getDmRoom(this.roomId).scrollDown = this.scrollToBottomClicked
this.wsChatMethodsService.openRoom(this.roomId)
- setTimeout(()=>{
+ setTimeout(() => {
this.scrollToBottomClicked()
}, 150)
@@ -374,7 +376,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
};
- console.log('WRITE',writeSecretFile);
+ console.log('WRITE', writeSecretFile);
const readSecretFile = async () => {
const contents = await Filesystem.readFile({
@@ -386,7 +388,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
console.log('secrets:', contents);
};
- console.log('READ',readSecretFile);
+ console.log('READ', readSecretFile);
} catch (e) {
console.error("Unable to write file", e);
@@ -557,7 +559,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
const image = await this.CameraService.takePicture();
await this.fileService.saveImage(image)
const lastphoto: any = await this.fileService.loadFiles();
- const { capturedImage, capturedImageTitle} = await this.fileService.loadFileData(lastphoto);
+ const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto);
const base64 = await fetch(capturedImage);
@@ -572,8 +574,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
"guid": ''
},
attachments: [{
- "image_url": capturedImage,
- "title": capturedImageTitle ,
+ "title": capturedImageTitle,
"text": "description",
"title_link_download": false,
}],
@@ -605,14 +606,14 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
});
await modal.present();
- modal.onDidDismiss().then(async res=>{
+ modal.onDidDismiss().then(async res => {
const data = res.data;
const roomId = this.roomId
- if(data.selected) {
+ if (data.selected) {
this.wsChatMethodsService.getDmRoom(roomId).send({
- file:{
+ file: {
"name": res.data.selected.Assunto,
"type": "application/webtrix",
"ApplicationId": res.data.selected.ApplicationType,
@@ -635,7 +636,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
});
}
- async addFileToChatMobile(types: typeof FileType[] ) {
+ async addFileToChatMobile(types: typeof FileType[]) {
const roomId = this.roomId
const file = await Camera.getPhoto({
@@ -648,7 +649,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
//const imageData = await this.fileToBase64Service.convert(file)
//console.log('ADDFILECHAT', imageData)
- const response = await fetch('data:image/jpeg;base64,'+ file.base64String!);
+ const response = await fetch('data:image/jpeg;base64,' + file.base64String!);
const blob = await response.blob();
const formData = new FormData();
@@ -661,8 +662,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
},
temporaryData: formData,
attachments: [{
- "title": file.path ,
- "image_url": 'data:image/jpeg;base64,' +file.base64String,
+ "title": file.path,
"text": "description",
"title_link_download": false,
}]
@@ -672,7 +672,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
- async addFileToChat(types: typeof FileType[] ) {
+ async addFileToChat(types: typeof FileType[]) {
const roomId = this.roomId
@@ -681,11 +681,14 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
/* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
console.log('Add file', filee)
}) */
- const blob = new Blob([file],{type: file.type})
- console.log('Add file', blob)
+ const response = await fetch(file);
+ const blob = await response.blob();
+ const blob2 = new Blob([blob])
+ console.log('Add file base64', file)
+ console.log('Add file blob', blob)
const formData = new FormData();
- formData.append("blobFile", blob);
+ formData.append("blobFile", blob2);
this.wsChatMethodsService.getDmRoom(roomId).send({
file: {
@@ -693,10 +696,9 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
"guid": '',
},
attachments: [{
- "title": file.name ,
- "name": file.name ,
+ "title": file.name,
+ "name": file.name,
// "text": "description",
- "image_url": file, // rocketchat
"title_link_download": false,
}],
temporaryData: formData
@@ -707,7 +709,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
async openChatOptions(ev?: any) {
const roomId = this.roomId
- console.log('MOBILE CHAT OPTION',this.members);
+ console.log('MOBILE CHAT OPTION', this.members);
const popover = await this.popoverController.create({
component: ChatOptionsPopoverPage,
@@ -721,7 +723,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
translucent: true
});
await popover.present();
- popover.onDidDismiss().then( async (res) => {
+ popover.onDidDismiss().then(async (res) => {
console.log(res['data']);
if (res['data'] == 'meeting') {
this.bookMeeting();
@@ -819,39 +821,58 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
+ testeDownload(msg: MessageService) {
+ this.downloadFile = "";
+ this.AttachmentsService.downloadFileAndStore(msg.file.guid);
+ }
+
downloadFileMsg(msg: MessageService) {
console.log('FILE TYPE', msg.file.type)
this.downloadFile = "";
- if (msg.file.type == "application/img") {
- this.AttachmentsService.downloadFile(msg.file.guid).subscribe(async (event) => {
- console.log('FILE TYPE 22', msg.file.guid)
- var name = msg.file.guid;
+ //if (msg.file.type == "application/img") {
+ this.AttachmentsService.downloadFile(msg.file.guid).subscribe(async (event) => {
+ console.log('FILE TYPE 22', msg.file.guid)
+ var name = msg.file.guid;
- if (event.type === HttpEventType.DownloadProgress) {
- //this.downloadProgess = Math.round((100 * event.loaded) / event.total);
- console.log('FILE TYPE 33', msg.file.type)
- } else if (event.type === HttpEventType.Response) {
+ if (event.type === HttpEventType.DownloadProgress) {
+ this.downloadProgess = Math.round((100 * event.loaded) / event.total);
+ console.log(this.downloadProgess)
+ console.log('FILE TYPE 33', msg.file.type)
+ } else if (event.type === HttpEventType.Response) {
+ if (msg.file.type == "application/img") {
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
-
- msg.file = {
- guid: msg.file.guid,
- image_url: this.downloadFile,
- type: msg.file.type
- }
- this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
+ } else {
+ //console.log('TRY THIS LIBRARY ',fromByteArray(event.body));
+ this.downloadFile = event.body;
}
- });
+ msg.attachments[0] = {
+ image_url: this.downloadFile,
+ name: msg.attachments[0].name,
+ title: msg.attachments[0].title,
+ title_link_download: msg.attachments[0].title_link_download,
+ ts: msg.attachments[0].ts
+ }
+ this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
+ }
- }
+ });
+
+ //}
}
- async openPreview(msg) {
+ testDownlod(msg: MessageService) {
+ this.AttachmentsService.downloadFileAndStore(msg.file.guid)
+ }
- if (msg.attachments[0].image_url === null || msg.attachments[0].image_url === '' ) {
- this.downloadFileMsg(msg)
+ async openPreview(msg) {
+ console.log(msg);
+
+ if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
+ this.downloadFile(msg)
+ //this.testDownlod(msg)
} else {
const modal = await this.modalController.create({
@@ -859,6 +880,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
cssClass: 'modal modal-desktop',
componentProps: {
image: msg.attachments[0].image_url,
+ type: msg.file.type,
username: msg.u.name,
_updatedAt: msg._updatedAt
}
diff --git a/src/app/services/attachments.service.ts b/src/app/services/attachments.service.ts
index 2beeaef61..3c2902df5 100644
--- a/src/app/services/attachments.service.ts
+++ b/src/app/services/attachments.service.ts
@@ -5,6 +5,8 @@ import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { environment } from 'src/environments/environment';
import { LoginUserRespose } from '../models/user.model';
import { SessionStore } from '../store/session.service';
+import { File } from '@ionic-native/file/ngx';
+import { Platform } from '@ionic/angular';
@Injectable({
providedIn: 'root'
@@ -14,7 +16,7 @@ export class AttachmentsService {
loggeduser: LoginUserRespose;
headers: HttpHeaders;
- constructor(private http: HttpClient) {
+ constructor(private http: HttpClient, private platform: Platform, private file: File) {
this.loggeduser = SessionStore.user
this.headers = new HttpHeaders();
this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey);
@@ -60,6 +62,29 @@ export class AttachmentsService {
})
}
+
+ downloadFileAndStore(guid:any) {
+ var name = new Date().getTime();
+ const downloadPath = (
+ this.platform.is('android')
+ ) ? this.file.externalDataDirectory : this.file.documentsDirectory;
+
+
+ let vm = this;
+
+ /** HttpClient - @angular/common/http */
+ this.http.get(
+ environment.apiURL +'objectserver/streamfiles?path='+guid,
+ {
+ responseType: 'arraybuffer',
+ }
+ ).subscribe((fileBlob: Uint8Array) => {
+ /** File - @ionic-native/file/ngx */
+ vm.file.writeFile(downloadPath, "YourFileName.pdf", fileBlob, {replace: true});
+ console.log(downloadPath +"/"+"YourFileName.pdf")
+ console.log(fileBlob)
+ });
+ }
getAttachmentsBySerial(serialNumber: string): Observable{
let geturl = environment.apiURL + 'attachments/GetAttachments';
diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html
index 515af253b..3550c16ad 100644
--- a/src/app/shared/chat/group-messages/group-messages.page.html
+++ b/src/app/shared/chat/group-messages/group-messages.page.html
@@ -83,7 +83,7 @@
-
+
diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts
index 3661c66d5..e16cb668f 100644
--- a/src/app/shared/chat/group-messages/group-messages.page.ts
+++ b/src/app/shared/chat/group-messages/group-messages.page.ts
@@ -699,29 +699,52 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
async addFileToChat(types: typeof FileType[] ) {
+
const roomId = this.roomId
const file: any = await this.fileService.getFileFromDevice(types);
- const imageData = await this.fileToBase64Service.convert(file)
+ console.log('Add file', file)
+ /* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
+ console.log('Add file', filee)
+ }) */
+ const blob = new Blob([file],{type: file.type})
+ console.log('Add file', blob)
const formData = new FormData();
- formData.append("blobFile", file);
+ formData.append("blobFile", blob);
+
+ let pdfBase64;
+ this.blobToBase64(blob).then(res => {
+ console.log('Base64 pdf', res);
+ this.wsChatMethodsService.getGroupRoom(roomId).send({
+ file: {
+ "type": file.type,
+ "guid": '',
+ },
+ attachments: [{
+ "title": file.name ,
+ "name": file.name ,
+ "image_url": res,
+ // "text": "description",
+ "title_link_download": false,
+ }],
+ temporaryData: formData
+ })
+ });
+
- this.wsChatMethodsService.getGroupRoom(roomId).send({
- file: {
- "type": "application/img",
- "guid": ''
- },
- temporaryData: formData,
- attachments: [{
- "title": file.name ,
- "image_url": imageData,
- "text": "description",
- "title_link_download": false,
- }]
- })
}
+ blobToBase64 = blob => {
+ const reader = new FileReader();
+ reader.readAsDataURL(blob);
+ return new Promise(resolve => {
+ reader.onloadend = () => {
+ resolve(reader.result);
+ };
+ });
+ };
+
bookMeeting() {
let data = {
roomId: this.roomId,
@@ -816,12 +839,19 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
//this.downloadProgess = Math.round((100 * event.loaded) / event.total);
console.log('FILE TYPE 33', msg.file.type)
} else if (event.type === HttpEventType.Response) {
- this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
-
- msg.file = {
- guid: msg.file.guid,
+ if (msg.file.type == "application/img") {
+ this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
+ } else if (msg.file.type === 'application/pdf') {
+
+ this.downloadFile = event.body;
+ }
+
+ msg.attachments[0] = {
image_url: this.downloadFile,
- type: msg.file.type
+ name: msg.attachments[0].name,
+ title: msg.attachments[0].title,
+ title_link_download: msg.attachments[0].title_link_download,
+ ts: msg.attachments[0].ts
}
await this.storage.set(msg.file.guid, this.downloadFile).then(() => {
@@ -837,7 +867,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
async openPreview(msg) {
- if (msg.attachments[0].image_url === null || msg.attachments[0].image_url === '' ) {
+ if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '' ) {
this.downloadFileMsg(msg)
} else {
@@ -846,6 +876,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
cssClass: 'modal modal-desktop',
componentProps: {
image: msg.attachments[0].image_url,
+ type: msg.file.type,
username: msg.u.name,
_updatedAt: msg._updatedAt
}
diff --git a/src/app/shared/chat/messages/messages.module.ts b/src/app/shared/chat/messages/messages.module.ts
index 5e072c254..aec854bf1 100644
--- a/src/app/shared/chat/messages/messages.module.ts
+++ b/src/app/shared/chat/messages/messages.module.ts
@@ -12,6 +12,7 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { MatButtonModule } from '@angular/material/button';
import {MatMenuModule} from '@angular/material/menu';
import { LettersAvatarModule } from "ngx-letters-avatar";
+import { PdfViewerModule } from 'ng2-pdf-viewer';
@NgModule({
imports: [
@@ -22,7 +23,8 @@ import { LettersAvatarModule } from "ngx-letters-avatar";
MessagesPageRoutingModule,
MatButtonModule,
MatMenuModule,
- LettersAvatarModule
+ LettersAvatarModule,
+ PdfViewerModule
],
exports: [MessagesPage],
diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html
index e48c02165..e5fba0df8 100644
--- a/src/app/shared/chat/messages/messages.page.html
+++ b/src/app/shared/chat/messages/messages.page.html
@@ -38,7 +38,8 @@
-
+
@@ -63,7 +64,8 @@
-
+
@@ -72,7 +74,7 @@
- {{msg.u.name}}
+ {{msg.u.name}}
{{msg.duration}}
@@ -88,16 +90,18 @@
-
+
-
+
+
-
-
+
+
+
+
{{file.title}}
@@ -106,8 +110,7 @@
{{file.description}}
•
- {{msg.displayType}}
+ {{msg.displayType}}