@chat21/chat21-ionic 3.0.59-rc1 → 3.0.59-rc10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +4 -0
  3. package/config.xml +11 -2
  4. package/env.sample +2 -0
  5. package/package.json +1 -1
  6. package/resources/Android/splash/drawable-land-hdpi-screen.png +0 -0
  7. package/resources/Android/splash/drawable-land-ldpi-screen.png +0 -0
  8. package/resources/Android/splash/drawable-land-mdpi-screen.png +0 -0
  9. package/resources/Android/splash/drawable-land-xhdpi-screen.png +0 -0
  10. package/resources/Android/splash/drawable-land-xxhdpi-screen.png +0 -0
  11. package/resources/Android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  12. package/resources/Android/splash/drawable-port-hdpi-screen.png +0 -0
  13. package/resources/Android/splash/drawable-port-ldpi-screen.png +0 -0
  14. package/resources/Android/splash/drawable-port-mdpi-screen.png +0 -0
  15. package/resources/Android/splash/drawable-port-xhdpi-screen.png +0 -0
  16. package/resources/Android/splash/drawable-port-xxhdpi-screen.png +0 -0
  17. package/resources/Android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  18. package/resources/Android/splash.png +0 -0
  19. package/src/app/app-routing.module.ts +21 -17
  20. package/src/app/app.component.html +6 -3
  21. package/src/app/app.component.ts +242 -51
  22. package/src/app/app.module.ts +16 -8
  23. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +4 -4
  24. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +8 -2
  25. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +6 -1
  26. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +1 -1
  27. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +1 -1
  28. package/src/app/chatlib/conversation-detail/message/image/image.component.html +7 -6
  29. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +20 -1
  30. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +39 -9
  31. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +8 -144
  32. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -17
  33. package/src/app/components/authentication/login/login.component.html +2 -2
  34. package/src/app/components/authentication/login/login.component.ts +2 -1
  35. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +1 -1
  36. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +3 -2
  37. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +3 -3
  38. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +46 -5
  39. package/src/app/components/ddp-header/ddp-header.component.html +1 -1
  40. package/src/app/components/ddp-header/ddp-header.component.ts +4 -2
  41. package/src/app/components/image-viewer/image-viewer.component.html +23 -0
  42. package/src/app/components/image-viewer/image-viewer.component.scss +107 -0
  43. package/src/app/components/image-viewer/image-viewer.component.spec.ts +24 -0
  44. package/src/app/components/image-viewer/image-viewer.component.ts +38 -0
  45. package/src/app/components/project-item/project-item.component.html +147 -0
  46. package/src/app/components/project-item/project-item.component.scss +669 -0
  47. package/src/app/components/project-item/project-item.component.spec.ts +24 -0
  48. package/src/app/components/project-item/project-item.component.ts +316 -0
  49. package/src/app/components/utils/avatar-profile/avatar-profile.component.html +9 -3
  50. package/src/app/components/utils/avatar-profile/avatar-profile.component.ts +6 -4
  51. package/src/app/pages/authentication/login/login.page.ts +1 -1
  52. package/src/app/pages/conversation-detail/conversation-detail.page.html +5 -3
  53. package/src/app/pages/conversation-detail/conversation-detail.page.ts +122 -30
  54. package/src/app/pages/conversations-list/conversations-list.page.html +40 -24
  55. package/src/app/pages/conversations-list/conversations-list.page.scss +146 -1
  56. package/src/app/pages/conversations-list/conversations-list.page.ts +87 -6
  57. package/src/app/pages/unassigned-conversations/unassigned-conversations-routing.module.ts +17 -0
  58. package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +22 -0
  59. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +22 -0
  60. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +79 -0
  61. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.spec.ts +24 -0
  62. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +108 -0
  63. package/src/app/services/nav-proxy.service.ts +1 -1
  64. package/src/app/services/tiledesk/tiledesk.service.ts +22 -1
  65. package/src/app/services/websocket/websocket-js.ts +559 -0
  66. package/src/app/services/websocket/websocket.service.spec.ts +12 -0
  67. package/src/app/services/websocket/websocket.service.ts +274 -0
  68. package/src/app/shared/shared.module.ts +7 -1
  69. package/src/assets/i18n/en.json +9 -1
  70. package/src/assets/i18n/it.json +9 -1
  71. package/src/assets/js/chat21client.js +141 -67
  72. package/src/assets/transparent.png +0 -0
  73. package/src/chat-config-pre-test.json +3 -1
  74. package/src/chat-config-template.json +3 -1
  75. package/src/chat-config.json +3 -1
  76. package/src/chat21-core/providers/chat-manager.ts +3 -3
  77. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +1 -1
  78. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +3 -3
  79. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  80. package/src/chat21-core/providers/firebase/firebase-notifications.ts +1 -1
  81. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +2 -2
  82. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +1 -1
  83. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +1 -1
  84. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +27 -27
  85. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +13 -5
  86. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +101 -11
  87. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +1 -1
  88. package/src/chat21-core/utils/utils.ts +1 -1
@@ -0,0 +1,107 @@
1
+ // --- MODAL PREVIEW IMAGE
2
+ .modal {
3
+ display: none; /* Hidden by default */
4
+ position: fixed; /* Stay in place */
5
+ z-index: 1050; /* Sit on top */
6
+ padding-top: 100px; /* Location of the box */
7
+ left: 0;
8
+ top: 0;
9
+ width: 100%; /* Full width */
10
+ height: 100%; /* Full height */
11
+ overflow: auto; /* Enable scroll if needed */
12
+ background-color: rgb(0,0,0); /* Fallback color */
13
+ background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
14
+ }
15
+
16
+ /* Modal Content (Image) */
17
+ .modal-content {
18
+ margin: auto;
19
+ display: block;
20
+ // width: 80%;
21
+ // max-width: 700px;
22
+ padding: 0px 5px;
23
+ }
24
+
25
+ /* Caption of Modal Image (Image Text) - Same Width as the Image */
26
+ #caption {
27
+ margin: auto;
28
+ display: block;
29
+ width: 80%;
30
+ max-width: 700px;
31
+ text-align: center;
32
+ color: #ccc;
33
+ padding: 10px 0;
34
+ height: 150px;
35
+ }
36
+
37
+ /* Add Animation - Zoom in the Modal */
38
+ .modal-content, #caption {
39
+ animation-name: zoom;
40
+ // animation-duration: 0.6s;
41
+ }
42
+
43
+ @keyframes zoom {
44
+ from {transform:scale(0)}
45
+ to {transform:scale(1)}
46
+ }
47
+
48
+ /* The Close Button */
49
+ .close {
50
+ position: absolute;
51
+ top: 15px;
52
+ right: 35px;
53
+ // color: #f1f1f1;
54
+ // font-size: 40px;
55
+ // font-weight: bold;
56
+ transition: 0.3s;
57
+ border-radius: 50px;
58
+ padding:7px 8.5px
59
+ }
60
+
61
+ .close svg {
62
+ background-color: transparent;
63
+ fill: rgba(255,255,255,.5);
64
+ }
65
+
66
+ .close:hover,
67
+ .close:focus {
68
+ // color: #bbb;
69
+ background-color: rgba(255,255,255,.3);
70
+ text-decoration: none;
71
+ cursor: pointer;
72
+ svg {
73
+ fill: rgba(255,255,255);
74
+ }
75
+ }
76
+
77
+ .download-image {
78
+ position: absolute;
79
+ top: 15px;
80
+ right: 78px;
81
+ transition: 0.3s;
82
+ border-radius: 50px;
83
+ padding:7px 8.5px
84
+ }
85
+
86
+ .download-image svg {
87
+ background-color: transparent;
88
+ fill: rgba(255,255,255,.5);
89
+ }
90
+
91
+ .download-image:hover,
92
+ .download-image:focus {
93
+
94
+ background-color: rgba(255,255,255,.3);
95
+ text-decoration: none;
96
+ cursor: pointer;
97
+ svg {
98
+ fill: rgba(255,255,255);
99
+ }
100
+ }
101
+
102
+ /* 100% Image Width on Smaller Screens */
103
+ @media only screen and (max-width: 700px){
104
+ .modal-content {
105
+ // width: 100%;
106
+ }
107
+ }
@@ -0,0 +1,24 @@
1
+ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { IonicModule } from '@ionic/angular';
3
+
4
+ import { ImageViewerComponent } from './image-viewer.component';
5
+
6
+ describe('ImageViewerComponent', () => {
7
+ let component: ImageViewerComponent;
8
+ let fixture: ComponentFixture<ImageViewerComponent>;
9
+
10
+ beforeEach(async(() => {
11
+ TestBed.configureTestingModule({
12
+ declarations: [ ImageViewerComponent ],
13
+ imports: [IonicModule.forRoot()]
14
+ }).compileComponents();
15
+
16
+ fixture = TestBed.createComponent(ImageViewerComponent);
17
+ component = fixture.componentInstance;
18
+ fixture.detectChanges();
19
+ }));
20
+
21
+ it('should create', () => {
22
+ expect(component).toBeTruthy();
23
+ });
24
+ });
@@ -0,0 +1,38 @@
1
+ import { Component, OnInit } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'app-image-viewer',
5
+ templateUrl: './image-viewer.component.html',
6
+ styleUrls: ['./image-viewer.component.scss'],
7
+ })
8
+ export class ImageViewerComponent implements OnInit {
9
+
10
+ constructor() { }
11
+
12
+ ngOnInit() {}
13
+
14
+ closeImageViewerModal() {
15
+ // console.log('HAS CLICKED CLOSE MODAL')
16
+ var modal = document.getElementById("image-viewer-modal");
17
+ // var span = document.getElementsByClassName("close")[0];
18
+ modal.style.display = "none";
19
+ }
20
+
21
+ downloadImage() {
22
+ var modalImg = <HTMLImageElement>document.getElementById("image-viewer-img")
23
+ // console.log('HAS CLICKED CLOSE DWNLD IMG modalImg ', modalImg)
24
+ var modalImgURL = modalImg.src;
25
+ // console.log('HAS CLICKED CLOSE DWNLD IMG modalImgURL ', modalImgURL)
26
+ var captionText = document.getElementById("caption").innerHTML;
27
+ // console.log('HAS CLICKED CLOSE DWNLD IMG captionText ', captionText)
28
+
29
+ const a: any = document.createElement('a');
30
+ a.href = modalImgURL;
31
+ a.download = captionText;
32
+ document.body.appendChild(a);
33
+ a.style = 'display: none';
34
+ a.click();
35
+ a.remove();
36
+ }
37
+
38
+ }
@@ -0,0 +1,147 @@
1
+ <div class="main-content main-content-project-for-panel">
2
+ <div class="container-fluid container-project-for-panel">
3
+
4
+ <div class="left-sidebar">
5
+
6
+ <!-- <loading-spinner *ngIf="showSpinner"></loading-spinner> -->
7
+ <!-- *ngIf="!showSpinner" -->
8
+ <div class="left-sidebar-project" style="margin-right: -10px;">
9
+
10
+ <!-- *ngFor="let project of projects; let i = index" -->
11
+ <div style="cursor:pointer">
12
+ <!-- (click)='goToUnservedRequests(project?.id_project?._id, project?.id_project?.name, project?.id_project?.profile?.name, project?.id_project?.trialExpired, project?.id_project?.trialDaysLeft, project?.id_project?.status)' -->
13
+ <div class="small-projects-sidebar">
14
+ <div *ngIf="project?.id_project?.status !== 0" class="flex-container-project-for-panel project-row">
15
+ <div class="flex-child-left">
16
+ <!-- padding:6px; background: rgb(31,107,192); -->
17
+ <div class="unassigned-notifications-icon-wpr">
18
+ <!-- <svg viewBox="0 0 28 28" alt="" class="a8c37x1j ms05siws hwsy1cff b7h9ocf4 fzdkajry" height="40"
19
+ width="40"
20
+ style="vertical-align: middle;border-radius: 50%;">
21
+ <style type="text/css">
22
+ .notifications-icons {
23
+ fill: #050505;
24
+ }
25
+ </style>
26
+ <path class="notifications-icons"
27
+ d="M7.847 23.488C9.207 23.488 11.443 23.363 14.467 22.806 13.944 24.228 12.581 25.247 10.98 25.247 9.649 25.247 8.483 24.542 7.825 23.488L7.847 23.488ZM24.923 15.73C25.17 17.002 24.278 18.127 22.27 19.076 21.17 19.595 18.724 20.583 14.684 21.369 11.568 21.974 9.285 22.113 7.848 22.113 7.421 22.113 7.068 22.101 6.79 22.085 4.574 21.958 3.324 21.248 3.077 19.976 2.702 18.049 3.295 17.305 4.278 16.073L4.537 15.748C5.2 14.907 5.459 14.081 5.035 11.902 4.086 7.022 6.284 3.687 11.064 2.753 15.846 1.83 19.134 4.096 20.083 8.977 20.506 11.156 21.056 11.824 21.986 12.355L21.986 12.356 22.348 12.561C23.72 13.335 24.548 13.802 24.923 15.73Z">
28
+ </path>
29
+ </svg> -->
30
+
31
+ <!-- <svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="bell"
32
+ class="svg-inline--fa fa-bell fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg"
33
+ viewBox="0 0 448 512" height="auto" width="24px">
34
+ <path fill="currentColor"
35
+ d="M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z">
36
+ </path>
37
+ </svg> -->
38
+
39
+ <svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false"
40
+ class="style-scope yt-icon"
41
+ style="pointer-events: none; width: 37px; height:auto; fill: rgb(107,107,107);margin-left:4px">
42
+ <g class="style-scope yt-icon">
43
+ <path
44
+ d="M10,20h4c0,1.1-0.9,2-2,2S10,21.1,10,20z M20,17.35V19H4v-1.65l2-1.88v-5.15c0-2.92,1.56-5.22,4-5.98V3.96 c0-1.42,1.49-2.5,2.99-1.76C13.64,2.52,14,3.23,14,3.96l0,0.39c2.44,0.75,4,3.06,4,5.98v5.15L20,17.35z M19,17.77l-2-1.88v-5.47 c0-2.47-1.19-4.36-3.13-5.1c-1.26-0.53-2.64-0.5-3.84,0.03C8.15,6.11,7,7.99,7,10.42v5.47l-2,1.88V18h14V17.77z"
45
+ class="style-scope yt-icon"></path>
46
+ </g>
47
+ </svg>
48
+
49
+ </div>
50
+ <div class="unassigned-notifications-badge">
51
+ <!-- || currentUserRequestCount > 0 -->
52
+ <!-- <span *ngIf="unservedRequestCount > 0 "> -->
53
+ <!-- + currentUserRequestCount -->
54
+ <span class="notification-count">{{ unservedRequestCount }}</span>
55
+ <!-- </span> -->
56
+
57
+ </div>
58
+
59
+ </div>
60
+
61
+
62
+ <div class="flex-child-right" *ngIf="!window_width_is_60">
63
+ <div class="project-name-project-for-panel">
64
+ {{ project?.id_project?.name }}
65
+ </div>
66
+
67
+ <!-- <div class="status--text"
68
+ (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)"
69
+ [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
70
+ <span *ngIf="project?.ws_projct_user_available === true">
71
+ Online
72
+ </span>
73
+ <span *ngIf="project?.ws_projct_user_available === false">
74
+ Offline
75
+ </span>
76
+ <span class="status--icon-project-for-panel"
77
+ [ngStyle]="{ 'background-color':(project?.ws_projct_user_available)?'#4caf50':'#f44336' }">
78
+ </span>
79
+ <span class="status--icon-project-for-panel busy--icon"
80
+ *ngIf="project?.ws_projct_user_isBusy === true">
81
+ </span>
82
+ </div> -->
83
+ <div class="availabily-and-busy-wpr">
84
+ <!-- <div class="onoffswitch"
85
+ (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
86
+ <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch"
87
+ tabindex="0" [checked]="project?.ws_projct_user_available">
88
+ <label class="onoffswitch-label" for="myonoffswitch"></label>
89
+ </div> -->
90
+ <div class="availabily---wpr">
91
+ <!-- <div class="i_onoffswitch"
92
+ (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
93
+ <input type="checkbox" name="i_onoffswitch" class="i_onoffswitch-checkbox"
94
+ id="i_switch_availability" tabindex="0" [checked]="project?.ws_projct_user_available">
95
+ <label style="margin-bottom: 0px" class="i_onoffswitch-label" for="i_switch_availability"></label>
96
+ </div> -->
97
+
98
+
99
+ <div class="onoffswitch"
100
+ (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
101
+ <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch"
102
+ tabindex="0" [checked]="project?.ws_projct_user_available">
103
+ <label class="onoffswitch-label" for="myonoffswitch"></label>
104
+ </div>
105
+ </div>
106
+
107
+ <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
108
+ <span *ngIf="project?.ws_projct_user_available === true" class="availibility-status-text"
109
+ [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
110
+ {{translationMap?.get('Available') }}
111
+ </span>
112
+ <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
113
+ <span *ngIf="project?.ws_projct_user_available === false" class="availibility-status-text"
114
+ [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
115
+ {{translationMap?.get('Unavailable')}}
116
+ </span>
117
+ <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true">
118
+ <!-- <span class="material-icons project-item--isBusy-icon">
119
+ access_time
120
+ </span> -->
121
+ <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="16px"
122
+ viewBox="0 0 24 24" width="16px" fill="#FEB92C">
123
+ <g>
124
+ <path d="M0,0h24v24H0V0z" fill="none" />
125
+ </g>
126
+ <g>
127
+ <path
128
+ d="M11.99,2C6.47,2,2,6.48,2,12s4.47,10,9.99,10C17.52,22,22,17.52,22,12S17.52,2,11.99,2z M15.29,16.71L11,12.41V7h2v4.59 l3.71,3.71L15.29,16.71z" />
129
+ </g>
130
+ </svg>
131
+ </div>
132
+ <span *ngIf="project?.ws_projct_user_isBusy === true" class="project-item--isBusy-busy-text text-pulse-animation">
133
+ {{translationMap.get('Busy')}}
134
+ </span>
135
+ </div>
136
+
137
+ </div>
138
+
139
+ </div>
140
+ </div>
141
+
142
+ </div>
143
+
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>