diff --git a/package-lock.json b/package-lock.json index 134d4fac0..8ad2bef5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6732,10 +6732,13 @@ } } }, - "@pdftron/pdfjs-express": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@pdftron/pdfjs-express/-/pdfjs-express-8.0.1.tgz", - "integrity": "sha512-zSX8i2CwouW3bjrRHm7i1oeYPYWKQpUs3sprGm0qYcvMytpGJ2F2nKJ3iQLlUxyfgUJB3akolAmjlQuPjEwk2g==" + "@rkusa/linebreak": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rkusa/linebreak/-/linebreak-1.0.0.tgz", + "integrity": "sha512-yCSm87XA1aYMgfcABSxcIkk3JtCw3AihNceHY+DnZGLvVP/g2z3UWZbi0xIoYpZWAJEVPr5Zt3QE37Q80wF1pA==", + "requires": { + "unicode-trie": "^0.3.0" + } }, "@scarf/scarf": { "version": "1.1.0", @@ -22262,6 +22265,15 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" }, + "opentype.js": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.3.tgz", + "integrity": "sha512-/qIY/+WnKGlPIIPhbeNjynfD2PO15G9lA/xqlX2bDH+4lc3Xz5GCQ68mqxj3DdUv6AJqCeaPvuAoH8mVL0zcuA==", + "requires": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.3" + } + }, "openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", @@ -22638,6 +22650,41 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "pdfjs": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/pdfjs/-/pdfjs-2.4.6.tgz", + "integrity": "sha512-bVANz4AmxgNdKd9kjAuJj/KgINaV7ZMDsRjDe6VgwQMpu9lcQMh6QjyaajSx0IGlAwAD59K8kbJA3wuVHNicwQ==", + "requires": { + "@rkusa/linebreak": "^1.0.0", + "opentype.js": "^1.3.3", + "pako": "^2.0.3", + "readable-stream": "^3.6.0", + "unorm": "^1.6.0", + "uuid": "^8.3.1" + }, + "dependencies": { + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, "pdfjs-dist": { "version": "2.9.359", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz", @@ -27058,8 +27105,7 @@ "string.prototype.codepointat": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", - "dev": true + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" }, "string.prototype.trimend": { "version": "1.0.3", @@ -27603,6 +27649,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -29068,6 +29119,22 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + } + } + }, "union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -29132,8 +29199,7 @@ "unorm": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", - "dev": true + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" }, "unpipe": { "version": "1.0.0", diff --git a/package.json b/package.json index 2751a1b2a..47abcdd67 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "moment": "^2.29.1", "ng2-pdf-viewer": "^7.0.1", "ngx-socket-io": "^3.2.0", - "pdfjs-dist": "^2.9.359", + "pdfjs": "^2.4.6", "puppeteer": "^10.1.0", "rxjs": "~6.6.3", "rxjs-compat": "^6.6.7", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index ea7ce1aef..0f7eca23f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -88,7 +88,7 @@ import { PdfViewerModule } from 'ng2-pdf-viewer'; MatSelectModule, MatDialogModule, // - PdfViewerModule + PdfViewerModule, ], providers: [ { provide: MAT_DATE_LOCALE, useValue: 'pt' }, diff --git a/src/app/modals/chat-options-features/chat-options-features.page.html b/src/app/modals/chat-options-features/chat-options-features.page.html index d21bc3f28..40c40b512 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.html +++ b/src/app/modals/chat-options-features/chat-options-features.page.html @@ -5,12 +5,12 @@
- - - + + +
- +
diff --git a/src/app/modals/chat-options-features/chat-options-features.page.ts b/src/app/modals/chat-options-features/chat-options-features.page.ts index 3951f5120..f10cc16cc 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.ts +++ b/src/app/modals/chat-options-features/chat-options-features.page.ts @@ -68,8 +68,21 @@ export class ChatOptionsFeaturesPage implements OnInit { } - anexarFoto(){ - this.modalController.dismiss('picture'); + addDocument(){ + this.modalController.dismiss('add-document'); + } + + takePicture(){ + if( window.innerWidth < 701){ + this.popoverController.dismiss('take-picture'); + } + else{ + this.modalController.dismiss('take-picture'); + } + } + + addPicture(){ + this.modalController.dismiss('add-picture'); } addDocGestaoDocumental(){ diff --git a/src/app/models/fileType.ts b/src/app/models/fileType.ts index 2a7fdf744..f232cc228 100644 --- a/src/app/models/fileType.ts +++ b/src/app/models/fileType.ts @@ -8,4 +8,7 @@ export let FileType: "image/svg+xml" | "image/tiff" | "image/webp" | -"image/x-icon" \ No newline at end of file +"image/x-icon" | +".doc" | +".docx" | +".pdf" diff --git a/src/app/pages/chat/chat.module.ts b/src/app/pages/chat/chat.module.ts index 957e1967a..596e53b7a 100644 --- a/src/app/pages/chat/chat.module.ts +++ b/src/app/pages/chat/chat.module.ts @@ -28,13 +28,14 @@ import { EmptyChatPageModule } from 'src/app/shared/chat/empty-chat/empty-chat.m import { HeaderPageModule } from 'src/app/shared/header/header.module'; import { NewEventPageModule } from 'src/app/shared/agenda/new-event/new-event.module'; import { AttendeeModalPageModule } from 'src/app/shared/event/attendee-modal/attendee-modal.module'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, - + FontAwesomeModule, PipesModule, ChatPageRoutingModule, RouterModule, diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index 897f6b8df..efccca931 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -67,6 +67,16 @@
{{dm.lastMessage.msg}} + + + {{dm.lastMessage.file.name}} + + +
+ + Fotografia +
+
@@ -88,8 +98,18 @@
{{showDateDuration(group._updatedAt)}}
-
- {{group.lastMessage.u.name}}: {{group.lastMessage.msg}} +
+
{{group.lastMessage.u.name}}: {{group.lastMessage.msg}}
+
+ + {{group.lastMessage.file.name}} +
+
+
+ + Fotografia +
+
diff --git a/src/app/pages/chat/chat.page.scss b/src/app/pages/chat/chat.page.scss index fba37f381..db2fff810 100644 --- a/src/app/pages/chat/chat.page.scss +++ b/src/app/pages/chat/chat.page.scss @@ -86,7 +86,7 @@ ion-content{ } } .item-content{ - width: 317px; + //width: 317px; float:right; } @@ -96,7 +96,7 @@ ion-content{ margin-top: 10px; } .item-title{ - width: 80%; + width: calc(100% - 75px); float: left; font-size: 15px; color: #0d89d1; @@ -105,7 +105,7 @@ ion-content{ color: #fff; } .item-date{ - width: 20%; + width: 75px; float: right; font-size: 13px; color: #797979; @@ -114,9 +114,19 @@ ion-content{ .item-date-active{ color: #fff; } + .item-description{ font-size: 13px; color: #000; + overflow: auto; + + .item-message{ + float: left; + padding-right: 5px; + } + .item-files{ + float: left; + } } .item-description-active{ color: #fff; @@ -130,7 +140,6 @@ ion-content{ @media only screen and (min-width: 701px) { .main-content{ - .aside-wrapper{ width: 35%; border-right: 1px solid #d8d8d8; diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 7aebfece6..195225832 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -280,8 +280,6 @@ hideRefreshButton(){ } openGroupMessagesPage(rid) { - console.log(rid); - if( window.innerWidth < 701){ this.openGroupMessagesModal(rid); } @@ -392,21 +390,21 @@ hideRefreshButton(){ var dateB = new Date(b._updatedAt).getTime(); return dateB - dateA; }); - console.log(this.userDirectMessages); + //console.log(this.userDirectMessages); if(this.route.url != "/home/chat"){ - console.log("Timer message stop") + //console.log("Timer message stop") } else { - console.log('TIMER'); + //console.log('TIMER'); //Check if modal is opened if(this.segment == "Contactos" && this.showMessages != true){ await new Promise(resolve => setTimeout(resolve, 2000)); await this.getDirectMessages(); - console.log('Timer contactos list running') + //console.log('Timer contactos list running') } else{ - console.log('No timer!'); + //console.log('No timer!'); } } @@ -445,7 +443,7 @@ hideRefreshButton(){ var dateB = new Date(b._updatedAt).getTime(); return dateB - dateA; }); - console.log(this.allGroups); + //console.log(this.allGroups); /* }); */ if(this.route.url != "/home/chat"){ console.log("Timer message stop") @@ -455,7 +453,7 @@ hideRefreshButton(){ if(this.segment == "Grupos" && this.showGroupMessages != true){ await new Promise(resolve => setTimeout(resolve, 2000)); await this.getGroups(); - console.log('Timer groups list running') + //console.log('Timer groups list running') } } diff --git a/src/app/pages/chat/group-messages/group-messages.module.ts b/src/app/pages/chat/group-messages/group-messages.module.ts index c0e419c06..a799129af 100644 --- a/src/app/pages/chat/group-messages/group-messages.module.ts +++ b/src/app/pages/chat/group-messages/group-messages.module.ts @@ -21,7 +21,6 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; FormsModule, FontAwesomeModule, IonicModule, - GroupMessagesPageRoutingModule, ChatPopoverPageModule, BtnModalDismissPageModule, diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html index 5e699a578..17c526c67 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -17,7 +17,7 @@
- + {{member.name}},
@@ -50,15 +50,26 @@
image -
-
- - image - - -

{{file.title}}

-

{{file.text}}

-
+
+
+
+ + + + + + + {{file.title}} + + +
+
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
@@ -88,6 +99,11 @@
+ + + + + + + + + + + {{file.title}} + + + +
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
+ + + + {{last ? scrollToBottom() : ''}} + + + + + diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 0408cc09e..08fd37bac 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -2,16 +2,20 @@ import { AfterViewChecked, AfterViewInit, Component, ElementRef, OnDestroy, OnIn import {ActivatedRoute, Router} from '@angular/router' import { ModalController, NavParams, PopoverController } from '@ionic/angular'; import { map } from 'rxjs/operators'; +import { EventPerson } from 'src/app/models/eventperson.model'; import { ContactsPage } from 'src/app/pages/chat/messages/contacts/contacts.page'; import { AlertService } from 'src/app/services/alert.service'; import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; +import { FileService } from 'src/app/services/functions/file.service'; import { synchro } from 'src/app/services/socket/synchro.service'; import { ToastService } from 'src/app/services/toast.service'; +import { NewEventPage } from 'src/app/shared/agenda/new-event/new-event.page'; import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; import { MessagesOptionsPage } from 'src/app/shared/popover/messages-options/messages-options.page'; import { ChatMessageStore } from 'src/app/store/chat/chat-message.service'; import { ChatUserStorage } from 'src/app/store/chat/chat-user.service'; +import { environment } from 'src/environments/environment'; @Component({ selector: 'app-messages', @@ -41,6 +45,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { private scrollChangeCallback: () => void; currentPosition: any; startPosition: number; + scrollToBottomBtn = false; + attendees: EventPerson[] = []; constructor( public popoverController: PopoverController, @@ -52,6 +58,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { private toastService: ToastService, private route: Router, private activatedRoute: ActivatedRoute, + private fileService: FileService, ) { /* this.activatedRoute.paramMap.subscribe(params => { if(params["params"].SerialNumber) { @@ -116,23 +123,37 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { } catch(err) { } } + scrollToBottomClicked(): void { + try { + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + } catch(err) { } + } + ngAfterViewInit() { this.scrollChangeCallback = () => this.onContentScrolled(event); window.addEventListener('scroll', this.scrollChangeCallback, true); } - onContentScrolled(e) { + onContentScrolled(e) { this.startPosition = e.srcElement.scrollTop; let scroll = e.srcElement.scrollTop; + let windowHeight = e.srcElement.scrollHeight; + let containerHeight = windowHeight - e.srcElement.clientHeight; + if (scroll > this.currentPosition) { - //this.showButton = false; //alert('BOTTOM'); } else { - //this.showButton = true; //alert('UP'); this.scrollingOnce = false; } + if((containerHeight - 100) > scroll){ + this.scrollToBottomBtn = true; + } + else{ + this.scrollToBottomBtn = false; + } this.currentPosition = scroll; + } ngOnDestroy() { @@ -157,7 +178,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { loadMessages() { this.showLoader = true; - const roomId = this.roomId + const roomId = this.roomId; this.chatService.getRoomMessages(this.roomId).subscribe(res => { /* console.log(res); */ @@ -167,6 +188,11 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { this.showLoader = false; }) } + + viewDocument(url:string){ + this.fileService.viewDocumentByUrl(url); + } + getChatMembers() { this.showLoader = true; this.chatService.getMembers(this.roomId).subscribe(res=> { @@ -241,6 +267,34 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { modal.onDidDismiss(); } + async bookMeeting() { + this.attendees = this.members.map((val)=>{ + return { + Name: val.name, + EmailAddress: val.username+"@"+environment.domain, + IsRequired: "true", + } + }); + console.log(this.attendees); + this.popoverController.dismiss(); + if( window.innerWidth <= 1024){ + const modal = await this.modalController.create({ + component: NewEventPage, + componentProps:{ + attendees: this.attendees, + }, + cssClass: 'modal modal-desktop', + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss().then((data) => { + if(data){ + + } + }); + } + } + async openChatOptions(ev?: any) { console.log(this.members); @@ -255,7 +309,32 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }, translucent: true }); - return await popover.present(); + await popover.present(); + popover.onDidDismiss().then((res)=>{ + console.log(res['data']); + if(res['data'] == 'meeting'){ + this.bookMeeting(); + } + else if(res['data'] == 'take-picture'){ + this.fileService.addCameraPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-picture'){ + this.fileService.addPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-document'){ + this.fileService.addDocumentToChat(this.roomId); + //this.loadDocument(); + } + else if(res['data'] == 'documentoGestaoDocumental'){ + + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + //this.addDocGestaoDocumental(); + } + this.loadMessages(); + + }); } async serverLongPull() { @@ -276,7 +355,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { // happens when the synchro was pending for too long // let's reconnect await this.serverLongPull(); - } else if (res != 200) { + } + else if (res != 200) { // Show Error //showMessage(response.statusText); //this.loadMessages() diff --git a/src/app/services/functions/file.service.ts b/src/app/services/functions/file.service.ts index 172e87ba4..037f7031a 100644 --- a/src/app/services/functions/file.service.ts +++ b/src/app/services/functions/file.service.ts @@ -4,6 +4,12 @@ import { FileToBase64Service } from '../file/file-to-base64.service'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; //Cordova import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; +import { ChatService } from '../chat.service'; +import { ModalController } from '@ionic/angular'; +import { SearchPage } from 'src/app/pages/search/search.page'; +import { SearchList } from 'src/app/models/search-document'; +import { ProcessesService } from '../processes.service'; +import { ToastService } from '../toast.service'; @Injectable({ providedIn: 'root' @@ -12,12 +18,18 @@ export class FileService { capturedImage:any; capturedImageTitle:any; + documents:SearchList[] = []; + showLoader: boolean; constructor( private camera: Camera, private fileLoaderService: FileLoaderService, private fileToBase64Service: FileToBase64Service, private iab: InAppBrowser, + private chatService: ChatService, + private modalController: ModalController, + private processesService: ProcessesService, + private toastService: ToastService, ) { } takePicture() { @@ -71,6 +83,174 @@ export class FileService { }; } + addCameraPictureToChat(roomId){ + let data = this.takePicture(); + if(data.name != null){ + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + "title": data.name, + "title_link_download": false, + "image_url": data.image, + }] + } + } + this.chatService.sendMessage(body).subscribe(res=> { + console.log(res); + },(error) => { + + }); + } + else{ + this.toastService.badRequest("Não foi possível adicionar a fotografia!"); + } + } + + addPictureToChat(roomId:string) { + const input = this.fileLoaderService.createInput({ + accept: ['image/apng', 'image/jpeg', 'image/png'] + }) + + input.onchange = async () => { + + const file = this.fileLoaderService.getFirstFile(input) + + console.log(file); + const loader = this.toastService.loading(); + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name; + + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + //"title": this.capturedImageTitle , + //"text": "description", + "title_link_download": false, + "image_url": this.capturedImage, + }] + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + //console.log(res); + },(error) => { + loader.remove(); + }); + //console.log(this.capturedImage) + }; + } + + addDocumentToChat(roomId:string) { + const input = this.fileLoaderService.createInput({ + accept: ['.doc', '.docx', '.pdf'] + }) + + input.onchange = async () => { + const loader = this.toastService.loading(); + const file = this.fileLoaderService.getFirstFile(input) + + console.log(file); + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name; + + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + "title": this.capturedImageTitle, + "text": "", + "title_link": this.capturedImage, + "title_link_download": true, + "thumb_url": "https://static.ichimura.ed.jp/uploads/2017/10/pdf-icon.png", + "message_link": this.capturedImage, + }], + "file":{ + "name": this.capturedImageTitle, + "type": "application/pdf", + } + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + //console.log(res); + },(error) => { + loader.remove(); + }); + //console.log(this.capturedImage) + }; + } + + async addDocGestaoDocumentalToChat(roomId:string){ + const modal = await this.modalController.create({ + component: SearchPage, + cssClass: 'group-messages modal-desktop search-modal search-modal-to-desktop', + componentProps: { + type: 'AccoesPresidenciais & ArquivoDespachoElect', + select: true, + showSearchInput: true, + } + }); + await modal.present(); + modal.onDidDismiss().then(async res=>{ + const data = res.data; + + if(data.selected){ + const loader = this.toastService.loading(); + + this.documents.push(data.selected); + console.log(res.data.selected); + console.log(res.data.selected.Id); + console.log(res.data.selected.ApplicationType); + + let url = await this.processesService.GetDocumentUrl(res.data.selected.Id, res.data.selected.ApplicationType).toPromise(); + let url_no_options: string = url.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1"); + console.log(url_no_options); + console.log('Oie'); + + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + "title": res.data.selected.Assunto, + "description": res.data.selected.DocTypeDesc, + "title_link": url_no_options, + "title_link_download": true, + //"thumb_url": "assets/images/webtrix-logo.png", + "message_link": url_no_options, + }], + "file":{ + "name": res.data.selected.Assunto, + "type": "application/webtrix" + } + } + } + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + console.log(res); + },(error) => { + loader.remove(); + }); + loader.remove(); + } + }); + } + viewDocumentByUrl(url) { const browser = this.iab.create(url,"_blank"); browser.show(); diff --git a/src/app/shared/chat/group-messages/group-messages.module.ts b/src/app/shared/chat/group-messages/group-messages.module.ts index da3bacc59..5bb1d5128 100644 --- a/src/app/shared/chat/group-messages/group-messages.module.ts +++ b/src/app/shared/chat/group-messages/group-messages.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; @@ -12,18 +12,21 @@ import { SharedModule } from 'src/app/shared/shared.module'; import { ChatPopoverPageModule } from '../../popover/chat-popover/chat-popover.module'; import { NewEventPageModule } from '../../agenda/new-event/new-event.module'; import { PdfViewerModule } from 'ng2-pdf-viewer'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, + FontAwesomeModule, + PdfViewerModule, ChatPopoverPageModule, GroupMessagesPageRoutingModule, // - PdfViewerModule ], exports: [GroupMessagesPage], + schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: [GroupMessagesPage] }) export class GroupMessagesPageModule {} 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 93e2c0972..8f0f48428 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.html +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -16,7 +16,7 @@
- + {{member.name}},
@@ -25,7 +25,6 @@ - @@ -38,6 +37,7 @@ Esta conversa passou a grupo
A conversa original mantêm-se como chat individual +
@@ -49,15 +49,26 @@
image -
-
- - image - - -

{{file.title}}

-

{{file.text}}

-
+
+
+
+ + + + + + + {{file.title}} + + +
+
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
@@ -87,6 +98,22 @@
+ + + + + + diff --git a/src/app/shared/chat/group-messages/group-messages.page.scss b/src/app/shared/chat/group-messages/group-messages.page.scss index dbc4127ba..cfe8a412a 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.scss +++ b/src/app/shared/chat/group-messages/group-messages.page.scss @@ -1,4 +1,7 @@ @import '~src/function.scss'; + div{ + overflow: auto; + } .header-toolbar{ --background:transparent; --opacity: 1; @@ -31,7 +34,7 @@ } } .header-bottom{ - width: 95%; + width: 98%; overflow: auto; .header-bottom-icon{ @@ -42,6 +45,7 @@ } .header-bottom-contacts{ + width: calc(100% - 40px); font-size: 15px; color: #797979; white-space: nowrap; @@ -50,6 +54,12 @@ float: left; padding: 5px; margin: 1px; + + .contacts-list{ + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } } } 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 c75650f5a..56849526b 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -18,6 +18,15 @@ import { SearchList } from 'src/app/models/search-document'; import { ProcessesService } from 'src/app/services/processes.service'; import { FileService } from 'src/app/services/functions/file.service'; + +/* +import * as pdfjsLib from 'pdfjs-dist'; +if( pdfjsLib !== undefined ){ + console.log( "set worker..."); + pdfjsLib.GlobalWorkerOptions.workerSrc = "https://npmcdn.com/pdfjs-dist@2.4.456/build/pdf.worker.js"; +} +*/ + @Component({ selector: 'app-group-messages', templateUrl: './group-messages.page.html', @@ -45,6 +54,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe private scrollChangeCallback: () => void; currentPosition: any; startPosition: number; + scrollToBottomBtn = false; @Input() roomId:string; @Output() closeAllDesktopComponents:EventEmitter = new EventEmitter(); @@ -56,6 +66,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe @ViewChild('scrollMe') private myScrollContainer: ElementRef; + pdfurl = "http://www.africau.edu/images/default/sample.pdf"; + constructor( private menu: MenuController, private modalController: ModalController, @@ -74,6 +86,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe ) { this.loggedUserChat = authService.ValidatedUserChat['data']; this.isGroupCreated = true; + } ngOnChanges(changes: SimpleChanges): void { //this.getRoomInfo(); @@ -87,15 +100,54 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe console.log(this.roomId); this.setStatus('online'); this.getChatMembers(); + + /* pdfjs.Lib.getDocument('sample.pdf').promise.then((doc)=>{ + console.log(doc); + + }) */ + //this.loadPDF(); } + /* loadPDF() { + const loadingTask = pdfjsLib.getDocument( this.pdfurl ); + loadingTask.promise.then((pdf) => { + console.log( "pdf: ", pdf ); + console.log('PDF loaded'); + + // Fetch the first page + var pageNumber = 1; + pdf.getPage(pageNumber).then(function(page) { + console.log('Page loaded'); + + var scale = 1.5; + var viewport = page.getViewport({scale: scale}); + + // Prepare canvas using PDF page dimensions + var canvas: any = document.getElementById('pdf_canvas'); + var context = canvas.getContext('2d'); + canvas.height = viewport.height; + canvas.width = viewport.width; + + // Render PDF page into canvas context + var renderContext = { + canvasContext: context, + viewport: viewport + }; + var renderTask = page.render(renderContext); + renderTask.promise.then(function () { + console.log('Page rendered'); + }); + }); + }); + } */ + setStatus(status:string){ let body = { message: '', status: status, } this.chatService.setUserStatus(body).subscribe(res => { - console.log(res); + //console.log(res); }) } @@ -107,20 +159,35 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } catch(err) { } } + scrollToBottomClicked(): void { + try { + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + } catch(err) { } + } + ngAfterViewInit() { this.scrollChangeCallback = () => this.onContentScrolled(event); window.addEventListener('scroll', this.scrollChangeCallback, true); } - onContentScrolled(e) { + onContentScrolled(e) { this.startPosition = e.srcElement.scrollTop; let scroll = e.srcElement.scrollTop; + let windowHeight = e.srcElement.scrollHeight; + let containerHeight = windowHeight - e.srcElement.clientHeight; + if (scroll > this.currentPosition) { - //this.showButton = false; + //alert('BOTTOM'); } else { - //this.showButton = true; + //alert('UP'); this.scrollingOnce = false; } + if((containerHeight - 100) > scroll){ + this.scrollToBottomBtn = true; + } + else{ + this.scrollToBottomBtn = false; + } this.currentPosition = scroll; } @@ -132,10 +199,10 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe async getChatMembers(){ //return await this.chatService.getMembers(roomId).toPromise(); this.chatService.getAllUsers().subscribe(res=> { - console.log(res); + //console.log(res); this.allUsers = res['users'].filter(data => data.username != this.loggedUserChat.me.username); - console.log(this.allUsers); + //console.log(this.allUsers); }); } @@ -187,7 +254,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe //If group is private call getGroupMembers if(room.t === 'p'){ this.chatService.getGroupMembers(this.roomId).subscribe(res=>{ - console.log(res); + //console.log(res); this.members = res['members']; this.showLoader = false; }); @@ -214,7 +281,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe console.log(res); let msgOnly = res['messages'].filter(data => data.t != 'au'); this.messages = msgOnly.reverse(); - console.log(res); + //console.log(res); this.showLoader = false; }); @@ -438,6 +505,49 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe }; } + loadDocument() { + const input = this.fileLoaderService.createInput({ + accept: ['.doc', '.docx', '.pdf'] + }) + + input.onchange = async () => { + const file = this.fileLoaderService.getFirstFile(input) + + console.log(file); + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name; + + let body = { + "message": + { + "rid": this.roomId, + "msg": "", + "attachments": [{ + "title": this.capturedImageTitle, + "text": "", + "title_link": this.capturedImage, + "title_link_download": true, + "thumb_url": "https://static.ichimura.ed.jp/uploads/2017/10/pdf-icon.png", + "message_link": this.capturedImage, + }], + "file":{ + "name": this.capturedImageTitle, + "type": "application/pdf", + } + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + //console.log(res); + },(error) => { + + }); + //console.log(this.capturedImage) + }; + } + async addDocGestaoDocumental(){ const modal = await this.modalController.create({ component: SearchPage, @@ -529,7 +639,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe await modal.present(); modal.onDidDismiss().then((res)=>{ - console.log(res['data']); + //console.log(res['data']); if(res['data'] == 'meeting'){ //this.closeAllDesktopComponents.emit(); let data = { @@ -538,54 +648,68 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } this.openNewEventPage.emit(data); } - else if(res['data'] == 'picture'){ - this.loadPicture(); + else if(res['data'] == 'take-picture'){ + this.fileService.addCameraPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-picture'){ + this.fileService.addPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-document'){ + this.loadDocument(); } else if(res['data'] == 'documentoGestaoDocumental'){ - this.addDocGestaoDocumental(); + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + //this.addDocGestaoDocumental(); } + this.loadGroupMessages(this.roomId); }); } 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(this.messages); - // Reconnect in one second - if(this.route.url != "/home/chat"){ - console.log("Timer message stop") - } else { - if(document.querySelector('app-group-messages')){ - await new Promise(resolve => setTimeout(resolve,3000)); - await this.serverLongPull(); - this.getGroups.emit(); - console.log('Timer message running') - } - else{ - - } - } - - } else { - // Got message - //let message = await response.text(); - //this.loadMessages() - await this.serverLongPull(); + if(this.route.url != "/home/chat" && document.querySelector('app-group-messages')){ + console.log("Timer message stop") + } + else + { + + this.chatService.getPrivateGroupMessages(this.roomId).subscribe(async res => + { + if(res['success'] == true) { + // Show Error + //showMessage(response.statusText); + //this.loadMessages() + let msgOnly = res['messages'].filter(data => data.t != 'au'); + this.messages = msgOnly.reverse(); + console.log(this.messages); + // Reconnect in one second + + if(document.querySelector('app-group-messages')){ + await new Promise(resolve => setTimeout(resolve,5000)); + this.getGroups.emit(); + console.log('Timer message running') + await this.serverLongPull(); + } + + } + else { + alert('HEY2') + // Got message + //let message = await response.text(); + //this.loadMessages() + await this.serverLongPull(); + } + }, (error)=>{ + console.log(error); + this.serverLongPull(); + }); } - }); } + + } diff --git a/src/app/shared/chat/messages/messages.module.ts b/src/app/shared/chat/messages/messages.module.ts index 209edd0a0..c30940c65 100644 --- a/src/app/shared/chat/messages/messages.module.ts +++ b/src/app/shared/chat/messages/messages.module.ts @@ -8,12 +8,14 @@ import { MessagesPageRoutingModule } from './messages-routing.module'; import { MessagesPage } from './messages.page'; import { SharedModule } from 'src/app/shared/shared.module'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, + FontAwesomeModule, MessagesPageRoutingModule ], exports: [MessagesPage], diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 14bbc4c1a..6ef6bbcb5 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -31,19 +31,70 @@
-
-
+
+
+
+ + + + +
{{msg.u.name}} {{showDateDuration(msg._updatedAt)}}
{{msg.msg}} +
+
+ image +
+
+ + + + + + + {{file.title}} + + +
+
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
+
+
+
{{last ? scrollToBottom() : ''}}
+ + + + + + diff --git a/src/app/shared/chat/messages/messages.page.scss b/src/app/shared/chat/messages/messages.page.scss index 657d5510a..127bf4a5c 100644 --- a/src/app/shared/chat/messages/messages.page.scss +++ b/src/app/shared/chat/messages/messages.page.scss @@ -151,7 +151,29 @@ margin-left: 10px; float: right; } - } + } + .message{ + .message-attachments{ + .file{ + align-items: center; + + .file-details{ + width: 100%; + + .file-title{ + color: #000; + text-decoration: underline; + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } + .file-title:hover{ + color: #0782c9; + } + } + } + } + } } ion-footer{ diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 3e8bccfc4..525080d49 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -13,6 +13,7 @@ import { ChatOptionsFeaturesPage } from 'src/app/modals/chat-options-features/ch import { ChatMessageStore } from 'src/app/store/chat/chat-message.service'; import { ChatUserStorage } from 'src/app/store/chat/chat-user.service'; import { TimeService } from 'src/app/services/functions/time.service'; +import { FileService } from 'src/app/services/functions/file.service'; @Component({ selector: 'app-messages', @@ -49,6 +50,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy private scrollChangeCallback: () => void; currentPosition: any; startPosition: number; + mesageItemDropdownOptions: boolean = false; + scrollToBottomBtn = false; constructor( public popoverController: PopoverController, @@ -61,6 +64,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy private toastService: ToastService, private route: Router, private timeService: TimeService, + private fileService: FileService, ) { this.loggedUser = authService.ValidatedUserChat['data']; @@ -120,6 +124,13 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } catch(err) { } } + scrollToBottomClicked(): void { + try { + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + //this.scrollingOnce = false; + } catch(err) { } + } + ngAfterViewInit() { this.scrollChangeCallback = () => this.onContentScrolled(event); window.addEventListener('scroll', this.scrollChangeCallback, true); @@ -128,14 +139,21 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy onContentScrolled(e) { this.startPosition = e.srcElement.scrollTop; let scroll = e.srcElement.scrollTop; + let windowHeight = e.srcElement.scrollHeight; + let containerHeight = windowHeight - e.srcElement.clientHeight; + if (scroll > this.currentPosition) { - //this.showButton = false; //alert('BOTTOM'); } else { - //this.showButton = true; //alert('UP'); this.scrollingOnce = false; } + if((containerHeight - 100) > scroll){ + this.scrollToBottomBtn = true; + } + else{ + this.scrollToBottomBtn = false; + } this.currentPosition = scroll; } @@ -191,6 +209,10 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy }) } + viewDocument(url:string){ + this.fileService.viewDocumentByUrl(url); + } + getChatMembers() { console.log(this.roomId); @@ -350,44 +372,67 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } this.openNewEventPage.emit(data); } + else if(res['data'] == 'take-picture'){ + this.fileService.addCameraPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-picture'){ + this.fileService.addPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-document'){ + this.fileService.addDocumentToChat(this.roomId); + //this.loadDocument(); + } + else if(res['data'] == 'documentoGestaoDocumental'){ + + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + this.showLoader = false; + //this.addDocGestaoDocumental(); + } + this.loadMessages(); }); } async serverLongPull() { - const roomId = this.roomId - this.chatService.getRoomMessages(this.roomId).subscribe(async res => { + const roomId = this.roomId; - if (res == 502) { - // Connection timeout - // happens when the connection was pending for too long - // let's reconnect - await this.serverLongPull(); - } else if (res != 200) { + this.chatService.getRoomMessages(this.roomId).subscribe(async res => { + console.log(res['success']); + + + if (res['success'] == true) { // Show Error //showMessage(response.statusText); //this.loadMessages() this.messages = res['messages'].reverse(); this.chatMessageStore.add(roomId, this.messages) + console.log(this.messages); // Reconnect in one second if(this.route.url != "/home/chat"){ console.log("Timer message stop") - } else { - if(document.querySelector('app-messages')){ - await new Promise(resolve => setTimeout(resolve, 5000)); - await this.serverLongPull(); - this.getDirectMessages.emit(); - console.log('Timer message running') - } } - } else { + else{ + if(document.querySelector('app-messages')){ + await new Promise(resolve => setTimeout(resolve, 5000)); + await this.serverLongPull(); + this.getDirectMessages.emit(); + console.log('Timer message running') + } + } + } /* else { // Got message //let message = await response.text(); //this.loadMessages() await this.serverLongPull(); - } + } */ + }, (error)=>{ + console.log(error); + this.serverLongPull(); + }); } diff --git a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html index 733469865..9a1c3a09a 100644 --- a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html +++ b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html @@ -8,9 +8,9 @@ - +
- +
diff --git a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts index ef47957ae..7aea36628 100644 --- a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts +++ b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts @@ -47,19 +47,28 @@ export class ChatOptionsPopoverPage implements OnInit { takePicture(){ if( window.innerWidth < 701){ - this.popoverController.dismiss('takePicture'); + this.popoverController.dismiss('take-picture'); } else{ - this.modalController.dismiss('takePicture'); + this.modalController.dismiss('take-picture'); } } anexarFoto(){ if( window.innerWidth < 701){ - this.popoverController.dismiss('loadPicture'); + this.popoverController.dismiss('add-picture'); } else{ - this.modalController.dismiss('loadPicture'); + this.modalController.dismiss('add-picture'); + } + } + + addDocGestaoDocumental(){ + if( window.innerWidth < 701){ + this.popoverController.dismiss('documentoGestaoDocumental'); + } + else{ + this.modalController.dismiss('documentoGestaoDocumental'); } } @@ -97,6 +106,7 @@ export class ChatOptionsPopoverPage implements OnInit { } } */ + async getDoc(){ const modal = await this.modalController.create({ component: SearchPage, diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.ts b/src/app/shared/popover/chat-popover/chat-popover.page.ts index ca1d0742b..20ee26e35 100644 --- a/src/app/shared/popover/chat-popover/chat-popover.page.ts +++ b/src/app/shared/popover/chat-popover/chat-popover.page.ts @@ -111,8 +111,12 @@ export class ChatPopoverPage implements OnInit { } async openChangeGroupName(){ - this.popoverController.dismiss('edit'); - this.modalController.dismiss('edit'); + if( window.innerWidth < 701){ + this.popoverController.dismiss('edit'); + } + else{ + this.modalController.dismiss('edit'); + } } } diff --git a/src/assets/icon/webtrix.svg b/src/assets/icon/webtrix.svg new file mode 100644 index 000000000..fcf80f480 --- /dev/null +++ b/src/assets/icon/webtrix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/pdf.png b/src/assets/images/pdf.png new file mode 100644 index 000000000..c556019cb Binary files /dev/null and b/src/assets/images/pdf.png differ diff --git a/src/assets/images/webtrix-logo.png b/src/assets/images/webtrix-logo.png new file mode 100644 index 000000000..94498f472 Binary files /dev/null and b/src/assets/images/webtrix-logo.png differ diff --git a/src/global.scss b/src/global.scss index 2a84f519e..39e43b04a 100644 --- a/src/global.scss +++ b/src/global.scss @@ -1072,6 +1072,95 @@ ngx-mat-datetime-content{ } } +.messages{ + .messages-list-item-wrapper{ + .message-item{ + .message-item-options{ + .message-options-icon{ + display: none; + padding-left: 10px; + padding-right: 0px; + position: absolute; + //background-color: red; + + //box-shadow: rgba(0, 30, 0, 0.15) 1.95px 1.95px 2.6px; + } + .mesage-item-dropdown-options{ + display: none; + margin-top: 15px; + position: absolute; + border: 1px solid red; + } + } + + .title{ + //border: 1px solid blue; + } + } + .incoming-true:hover{ + .message-options-icon{ + display: block; + background-color: #ebebeb; + } + } + .incoming-false:hover{ + .message-options-icon{ + display: block; + background-color: #e4f4fe; + } + } + } +} + +.message-attachments{ + border-radius: 5px; + background-color: #42b9fe13; + padding: 1px; + .file{ + ion-thumbnail{ + --size: 20px; + } + .file-details{ + max-width: calc(100% - 20px); + padding-left: 5px; + + .file-title:hover{ + color: #0782c9; + text-decoration: underline; + } + + span{ + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } + } + } + .file-details-optional{ + font-size: xx-small; + padding-left: 5px; + } +} + +.file-icon{ + color: #b2b2b2; +} +.set-active-item-font-to-white{ + color: #fff; +} +.pdf-icon{ + color: #a40404; +} +.word-icon{ + color: #295497; +} +.excel-icon{ + color: #1f7244; +} +.powerpoint-icon{ + color: #d24726; +} + @media only screen and (min-width: 665px) { .loading-blocker { diff --git a/src/index.html b/src/index.html index af50de71c..fb77a3f7a 100644 --- a/src/index.html +++ b/src/index.html @@ -9,6 +9,7 @@ + @@ -47,7 +48,7 @@ - + @@ -56,7 +57,7 @@ - +