@chat21/chat21-ionic 3.0.5-9.2 → 3.0.6-2.3

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 (178) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/LICENSE +661 -21
  3. package/README.md +13 -1
  4. package/angular.json +4 -0
  5. package/config.xml +4 -5
  6. package/deploy_pre.sh +44 -5
  7. package/deploy_prod.sh +36 -7
  8. package/env.sample +4 -2
  9. package/package.json +12 -8
  10. package/resources/{Android → android}/icon/drawable-hdpi-icon.png +0 -0
  11. package/resources/{Android → android}/icon/drawable-ldpi-icon.png +0 -0
  12. package/resources/{Android → android}/icon/drawable-mdpi-icon.png +0 -0
  13. package/resources/{Android → android}/icon/drawable-xhdpi-icon.png +0 -0
  14. package/resources/{Android → android}/icon/drawable-xxhdpi-icon.png +0 -0
  15. package/resources/{Android → android}/icon/drawable-xxxhdpi-icon.png +0 -0
  16. package/resources/{Android → android}/icon.png +0 -0
  17. package/resources/{Android → android}/splash/drawable-land-hdpi-screen.png +0 -0
  18. package/resources/{Android → android}/splash/drawable-land-ldpi-screen.png +0 -0
  19. package/resources/{Android → android}/splash/drawable-land-mdpi-screen.png +0 -0
  20. package/resources/{Android → android}/splash/drawable-land-xhdpi-screen.png +0 -0
  21. package/resources/{Android → android}/splash/drawable-land-xxhdpi-screen.png +0 -0
  22. package/resources/{Android → android}/splash/drawable-land-xxxhdpi-screen.png +0 -0
  23. package/resources/{Android → android}/splash/drawable-port-hdpi-screen.png +0 -0
  24. package/resources/{Android → android}/splash/drawable-port-ldpi-screen.png +0 -0
  25. package/resources/{Android → android}/splash/drawable-port-mdpi-screen.png +0 -0
  26. package/resources/{Android → android}/splash/drawable-port-xhdpi-screen.png +0 -0
  27. package/resources/{Android → android}/splash/drawable-port-xxhdpi-screen.png +0 -0
  28. package/resources/{Android → android}/splash/drawable-port-xxxhdpi-screen.png +0 -0
  29. package/resources/{Android → android}/splash.png +0 -0
  30. package/src/app/app-routing.module.ts +15 -0
  31. package/src/app/app.component.html +14 -4
  32. package/src/app/app.component.scss +18 -1
  33. package/src/app/app.component.ts +98 -37
  34. package/src/app/app.module.ts +14 -5
  35. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +36 -25
  36. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +160 -50
  37. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +108 -18
  38. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +21 -36
  39. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +19 -7
  40. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +63 -42
  41. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -1
  42. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +7 -2
  43. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +141 -21
  44. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +13 -10
  45. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +39 -36
  46. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +7 -1
  47. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +148 -63
  48. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +101 -39
  49. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +73 -2
  50. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +168 -98
  51. package/src/app/components/ddp-header/ddp-header.component.html +20 -6
  52. package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
  53. package/src/app/components/ddp-header/ddp-header.component.ts +104 -10
  54. package/src/app/components/image-viewer/image-viewer.component.scss +2 -2
  55. package/src/app/components/project-item/project-item.component.html +141 -118
  56. package/src/app/components/project-item/project-item.component.scss +173 -91
  57. package/src/app/components/project-item/project-item.component.ts +59 -25
  58. package/src/app/components/sidebar/sidebar.component.html +275 -0
  59. package/src/app/components/sidebar/sidebar.component.scss +79 -0
  60. package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
  61. package/src/app/components/sidebar/sidebar.component.ts +541 -0
  62. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +137 -0
  63. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +389 -0
  64. package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
  65. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +530 -0
  66. package/src/app/pages/conversation-detail/conversation-detail.module.ts +9 -2
  67. package/src/app/pages/conversation-detail/conversation-detail.page.html +53 -49
  68. package/src/app/pages/conversation-detail/conversation-detail.page.scss +28 -0
  69. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1254 -753
  70. package/src/app/pages/conversations-list/conversations-list.module.ts +2 -1
  71. package/src/app/pages/conversations-list/conversations-list.page.html +24 -11
  72. package/src/app/pages/conversations-list/conversations-list.page.scss +20 -1
  73. package/src/app/pages/conversations-list/conversations-list.page.ts +687 -420
  74. package/src/app/pages/create-canned-response/create-canned-response-routing.module.ts +17 -0
  75. package/src/app/pages/create-canned-response/create-canned-response.module.ts +30 -0
  76. package/src/app/pages/create-canned-response/create-canned-response.page.html +150 -0
  77. package/src/app/pages/create-canned-response/create-canned-response.page.scss +55 -0
  78. package/src/app/pages/create-canned-response/create-canned-response.page.spec.ts +24 -0
  79. package/src/app/pages/create-canned-response/create-canned-response.page.ts +319 -0
  80. package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
  81. package/src/app/pages/create-requester/create-requester.module.ts +28 -0
  82. package/src/app/pages/create-requester/create-requester.page.html +67 -0
  83. package/src/app/pages/create-requester/create-requester.page.scss +30 -0
  84. package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
  85. package/src/app/pages/create-requester/create-requester.page.ts +138 -0
  86. package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
  87. package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
  88. package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
  89. package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
  90. package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
  91. package/src/app/pages/create-ticket/create-ticket.page.ts +432 -0
  92. package/src/app/pages/loader-preview/loader-preview.page.ts +226 -166
  93. package/src/app/pages/profile-info/profile-info.page.html +4 -4
  94. package/src/app/pages/profile-info/profile-info.page.scss +13 -2
  95. package/src/app/pages/profile-info/profile-info.page.ts +23 -21
  96. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +16 -11
  97. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +157 -63
  98. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +51 -16
  99. package/src/app/services/app-config.ts +14 -14
  100. package/src/app/services/tiledesk/tiledesk.service.ts +209 -0
  101. package/src/app/shared/shared.module.ts +21 -7
  102. package/src/app/utils/scrollbar-theme.directive.ts +58 -24
  103. package/src/assets/i18n/de.json +266 -0
  104. package/src/assets/i18n/en.json +85 -10
  105. package/src/assets/i18n/es.json +266 -0
  106. package/src/assets/i18n/fr.json +266 -0
  107. package/src/assets/i18n/it.json +104 -37
  108. package/src/assets/i18n/pt.json +266 -0
  109. package/src/assets/i18n/ru.json +266 -0
  110. package/src/assets/i18n/sr.json +266 -0
  111. package/src/assets/i18n/tr.json +266 -0
  112. package/src/assets/images/default-avatar-x-select.png +0 -0
  113. package/src/assets/images/language_flag/ar.png +0 -0
  114. package/src/assets/images/language_flag/bg.png +0 -0
  115. package/src/assets/images/language_flag/ca.png +0 -0
  116. package/src/assets/images/language_flag/cs.png +0 -0
  117. package/src/assets/images/language_flag/da.png +0 -0
  118. package/src/assets/images/language_flag/de.png +0 -0
  119. package/src/assets/images/language_flag/el.png +0 -0
  120. package/src/assets/images/language_flag/en.png +0 -0
  121. package/src/assets/images/language_flag/es.png +0 -0
  122. package/src/assets/images/language_flag/fa.png +0 -0
  123. package/src/assets/images/language_flag/fi.png +0 -0
  124. package/src/assets/images/language_flag/fr.png +0 -0
  125. package/src/assets/images/language_flag/he.png +0 -0
  126. package/src/assets/images/language_flag/hi.png +0 -0
  127. package/src/assets/images/language_flag/hr.png +0 -0
  128. package/src/assets/images/language_flag/hu.png +0 -0
  129. package/src/assets/images/language_flag/id.png +0 -0
  130. package/src/assets/images/language_flag/it.png +0 -0
  131. package/src/assets/images/language_flag/ja.png +0 -0
  132. package/src/assets/images/language_flag/ko.png +0 -0
  133. package/src/assets/images/language_flag/ml-IN.png +0 -0
  134. package/src/assets/images/language_flag/ne-NP.png +0 -0
  135. package/src/assets/images/language_flag/nl.png +0 -0
  136. package/src/assets/images/language_flag/no.png +0 -0
  137. package/src/assets/images/language_flag/pl.png +0 -0
  138. package/src/assets/images/language_flag/pt-BR.png +0 -0
  139. package/src/assets/images/language_flag/pt.png +0 -0
  140. package/src/assets/images/language_flag/ro.png +0 -0
  141. package/src/assets/images/language_flag/ru.png +0 -0
  142. package/src/assets/images/language_flag/sk.png +0 -0
  143. package/src/assets/images/language_flag/sl.png +0 -0
  144. package/src/assets/images/language_flag/sr.png +0 -0
  145. package/src/assets/images/language_flag/sv-SE.png +0 -0
  146. package/src/assets/images/language_flag/ta.png +0 -0
  147. package/src/assets/images/language_flag/th.png +0 -0
  148. package/src/assets/images/language_flag/tr.png +0 -0
  149. package/src/assets/images/language_flag/uk.png +0 -0
  150. package/src/assets/images/language_flag/vi.png +0 -0
  151. package/src/assets/images/language_flag/zh-CN.png +0 -0
  152. package/src/assets/images/language_flag/zh-TW.png +0 -0
  153. package/src/assets/images/no_image_user.png +0 -0
  154. package/src/assets/images/priority_icons/high.svg +3 -0
  155. package/src/assets/images/priority_icons/high_v2.svg +14 -0
  156. package/src/assets/images/priority_icons/low.svg +10 -0
  157. package/src/assets/images/priority_icons/low_v2.svg +14 -0
  158. package/src/assets/images/priority_icons/medium.svg +16 -0
  159. package/src/assets/images/priority_icons/medium_v2.svg +11 -0
  160. package/src/assets/images/priority_icons/urgent.svg +4 -0
  161. package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
  162. package/src/assets/js/chat21client.js +16 -3
  163. package/src/assets/tiledesk-solo-logo.png +0 -0
  164. package/src/chat-config-mqtt.json +27 -17
  165. package/src/chat-config-pre-test.json +5 -1
  166. package/src/chat-config-pre.json +15 -3
  167. package/src/chat-config-template.json +6 -2
  168. package/src/chat-config.json +5 -1
  169. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +61 -45
  170. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +23 -0
  171. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -1
  172. package/src/chat21-core/utils/constants.ts +8 -1
  173. package/src/chat21-core/utils/utils-message.ts +19 -0
  174. package/src/chat21-core/utils/utils.ts +12 -1
  175. package/src/global.scss +408 -2
  176. package/src/index.html +7 -0
  177. package/publish_pre.sh +0 -33
  178. package/publish_prod.sh +0 -33
@@ -86,16 +86,18 @@ export class ProfileInfoPage implements OnInit {
86
86
  private setUser() {
87
87
  // width and height NON sono obbligatori
88
88
  this.loggedUser = this.chatManager.getCurrentUser();
89
- this.itemAvatar = {
90
- imageurl: this.imageRepo.getImagePhotoUrl(this.loggedUser.uid),
91
- avatar: this.loggedUser.avatar,
92
- color: this.loggedUser.color,
93
- online: this.loggedUser.online,
94
- lastConnection: this.loggedUser.lastConnection,
95
- status: '',
96
- width: '100px',
97
- height: '100px'
98
- };
89
+ if (this.loggedUser) {
90
+ this.itemAvatar = {
91
+ imageurl: this.imageRepo.getImagePhotoUrl(this.loggedUser.uid),
92
+ avatar: this.loggedUser.avatar,
93
+ color: this.loggedUser.color,
94
+ online: this.loggedUser.online,
95
+ lastConnection: this.loggedUser.lastConnection,
96
+ status: '',
97
+ width: '100px',
98
+ height: '100px'
99
+ };
100
+ }
99
101
  }
100
102
 
101
103
 
@@ -121,10 +123,10 @@ export class ProfileInfoPage implements OnInit {
121
123
  private setSubscriptions() {
122
124
  this.presenceService.userIsOnline(this.loggedUser.uid);
123
125
  this.presenceService.lastOnlineForUser(this.loggedUser.uid);
124
-
125
-
126
+
127
+
126
128
  const subscribeBSIsOnline = this.presenceService.BSIsOnline.subscribe((data: any) => {
127
- this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSIsOnline - data' , data);
129
+ this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSIsOnline - data', data);
128
130
  if (data) {
129
131
  const userId = data.uid;
130
132
  const isOnline = data.isOnline;
@@ -135,7 +137,7 @@ export class ProfileInfoPage implements OnInit {
135
137
  });
136
138
 
137
139
  const subscribeBSLastOnline = this.presenceService.BSLastOnline.subscribe((data: any) => {
138
- this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSLastOnline - data' , data);
140
+ this.logger.log('[PROFILE-INFO-PAGE] setSubscriptions $ubscribe to BSLastOnline - data', data);
139
141
  if (data) {
140
142
  const userId = data.uid;
141
143
  const timestamp = data.lastOnline;
@@ -150,7 +152,7 @@ export class ProfileInfoPage implements OnInit {
150
152
 
151
153
 
152
154
  userIsOnLine = (userId: string, isOnline: boolean) => {
153
- this.logger.log('[PROFILE-INFO-PAGE] userIsOnLine - userId ', userId, ' - isOnline ', isOnline);
155
+ this.logger.log('[PROFILE-INFO-PAGE] userIsOnLine - userId ', userId, ' - isOnline ', isOnline);
154
156
  this.itemAvatar.online = isOnline;
155
157
  if (isOnline) {
156
158
  this.itemAvatar.status = this.translationMap.get('LABEL_AVAILABLE');
@@ -180,9 +182,9 @@ export class ProfileInfoPage implements OnInit {
180
182
 
181
183
  /** */
182
184
  private unsubescribeAll() {
183
- this.logger.log('unsubescribeAll: ', this.subscriptions);
185
+ this.logger.log('unsubescribeAll: ', this.subscriptions);
184
186
  this.subscriptions.forEach((subscription: any) => {
185
- this.logger.log('unsubescribe: ', subscription);
187
+ this.logger.log('unsubescribe: ', subscription);
186
188
  // this.events.unsubscribe(subscription, null);
187
189
  });
188
190
  this.subscriptions = [];
@@ -207,15 +209,15 @@ export class ProfileInfoPage implements OnInit {
207
209
  }
208
210
 
209
211
  copyLoggedUserUID() {
210
- var copyText = document.createElement("input");
212
+ var copyText = document.createElement("input");
211
213
  copyText.setAttribute("type", "text");
212
214
  copyText.setAttribute("value", this.loggedUser.uid);
213
-
214
- document.body.appendChild(copyText);
215
+
216
+ document.body.appendChild(copyText);
215
217
  copyText.select();
216
218
  copyText.setSelectionRange(0, 99999); /*For mobile devices*/
217
219
  document.execCommand("copy");
218
- this.logger.log("Copied the text: " + copyText.value);
220
+ this.logger.log("Copied the text: " + copyText.value);
219
221
  const tootipElem = <HTMLElement>document.querySelector('.chat-tooltip');
220
222
  this.renderer.appendChild(tootipElem, this.renderer.createText('Copied!'))
221
223
 
@@ -1,6 +1,11 @@
1
1
  <ion-header>
2
2
  <ion-toolbar>
3
- <ion-title>{{translationMap?.get('NewConversations') }}</ion-title>
3
+ <ion-title *ngIf="callerBtn !== 'pinbtn'" style="font-size: 16px;">
4
+ {{translationMap?.get('UnassignedConversations') }}
5
+ </ion-title>
6
+ <ion-title *ngIf="callerBtn === 'pinbtn'" style="font-size: 16px;">
7
+ {{translationMap?.get('PIN_A_PROJECT') }}
8
+ </ion-title>
4
9
  <ion-buttons slot="end">
5
10
  <ion-button ion-button fill="clear" (click)="onClose()">
6
11
  <ion-icon slot="icon-only" name="close"></ion-icon>
@@ -9,14 +14,14 @@
9
14
  </ion-toolbar>
10
15
  </ion-header>
11
16
 
12
- <ion-content overflow-scroll="true" id="iframe-ion-content"
13
- [ngClass]="{'ion-content-black-background' : isProjectsForPanel === true}">
17
+ <ion-content overflow-scroll="true" id="iframe-ion-content"
18
+ [ngClass]="{'ion-content-black-background' : isProjectsForPanel === true}">
14
19
  <!-- <iframe id="i_frame" style="width:100%; height:99%" frameBorder="0" allowfullscreen [src]="unassigned_convs_url_sanitized"></iframe> -->
15
- <!-- <div class="stretchspinner-unassigned-convs">
16
- <div class="rect1"></div>
17
- <div class="rect2"></div>
18
- <div class="rect3"></div>
19
- <div class="rect4"></div>
20
- <div class="rect5"></div>
21
- </div> -->
22
- </ion-content>
20
+ <div class="loader-spinner-wpr">
21
+ <div id="loader" class="loader">
22
+ <svg class="circular" viewBox="25 25 50 50">
23
+ <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10" />
24
+ </svg>
25
+ </div>
26
+ </div>
27
+ </ion-content>
@@ -1,79 +1,173 @@
1
1
  .ion-content-black-background {
2
- --background: #2d323e
2
+ --background: #2d323e;
3
3
  }
4
4
 
5
5
  // -------------------------------------------------
6
6
  // stretch spinner https://tobiasahlin.com/spinkit/
7
7
  // -------------------------------------------------
8
8
  .stretchspinner-unassigned-convs {
9
- margin: 100px auto;
10
- width: 50px;
11
- height: 40px;
12
- text-align: center;
13
- font-size: 10px;
14
- position: absolute;
15
- margin: auto;
16
- top: 0;
17
- left: 0;
18
- bottom: 0;
19
- right: 0;
9
+ // margin: 100px auto;
10
+ width: 50px;
11
+ height: 40px;
12
+ text-align: center;
13
+ font-size: 10px;
14
+ position: absolute;
15
+ margin: auto;
16
+ top: 0;
17
+ left: 0;
18
+ bottom: 0;
19
+ right: 0;
20
+ }
21
+
22
+ .stretchspinner-unassigned-convs > div {
23
+ background-color: #3ea9f5;
24
+ height: 100%;
25
+ width: 6px;
26
+ display: inline-block;
27
+
28
+ -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
29
+ animation: sk-stretchdelay 1.2s infinite ease-in-out;
30
+ }
31
+
32
+ .stretchspinner-unassigned-convs .rect2 {
33
+ -webkit-animation-delay: -1.1s;
34
+ animation-delay: -1.1s;
35
+ }
36
+
37
+ .stretchspinner-unassigned-convs .rect3 {
38
+ -webkit-animation-delay: -1s;
39
+ animation-delay: -1s;
40
+ }
41
+
42
+ .stretchspinner-unassigned-convs .rect4 {
43
+ -webkit-animation-delay: -0.9s;
44
+ animation-delay: -0.9s;
45
+ }
46
+
47
+ .stretchspinner-unassigned-convs .rect5 {
48
+ -webkit-animation-delay: -0.8s;
49
+ animation-delay: -0.8s;
50
+ }
51
+
52
+ @-webkit-keyframes sk-stretchdelay {
53
+ 0%,
54
+ 40%,
55
+ 100% {
56
+ -webkit-transform: scaleY(0.4);
57
+ }
58
+ 20% {
59
+ -webkit-transform: scaleY(1);
60
+ }
61
+ }
62
+
63
+ @keyframes sk-stretchdelay {
64
+ 0%,
65
+ 40%,
66
+ 100% {
67
+ transform: scaleY(0.4);
68
+ -webkit-transform: scaleY(0.4);
69
+ }
70
+ 20% {
71
+ transform: scaleY(1);
72
+ -webkit-transform: scaleY(1);
73
+ }
74
+ }
75
+
76
+ // -------------------------------------------------
77
+ // Loader as in dashboard
78
+ // -------------------------------------------------
79
+ .loader {
80
+ margin: 0 auto;
81
+ width: 60px;
82
+ position: absolute;
83
+ display: block;
84
+ left: 0;
85
+ right: 0;
86
+ z-index: 1;
87
+ // @include transform-translate-y(-50%);
88
+ -webkit-transform: translateY(-50%);
89
+ -moz-transform: translateY(-50%);
90
+ -ms-transform: translateY(-50%);
91
+ transform: translateY(-50%);
92
+ text-align: center;
93
+ top: 50%;
94
+
95
+ &:before {
96
+ content: "";
97
+ display: block;
98
+ padding-top: 100%;
20
99
  }
21
-
22
- .stretchspinner-unassigned-convs > div {
23
- background-color: #3ea9f5;
24
- height: 100%;
25
- width: 6px;
26
- display: inline-block;
27
-
28
- -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
29
- animation: sk-stretchdelay 1.2s infinite ease-in-out;
100
+ }
101
+
102
+ .circular {
103
+ animation: rotate 2s linear infinite;
104
+ height: 100%;
105
+ transform-origin: center center;
106
+ width: 100%;
107
+ position: absolute;
108
+ top: 0;
109
+ bottom: 0;
110
+ left: 0;
111
+ right: 0;
112
+ margin: auto;
113
+ }
114
+
115
+ .path {
116
+ stroke-dasharray: 1, 200;
117
+ stroke-dashoffset: 0;
118
+ animation: dash 1.5s ease-in-out infinite, color 2s ease-in-out infinite;
119
+ stroke-linecap: round;
120
+ }
121
+
122
+ @keyframes rotate {
123
+ 100% {
124
+ transform: rotate(360deg);
30
125
  }
31
-
32
- .stretchspinner-unassigned-convs .rect2 {
33
- -webkit-animation-delay: -1.1s;
34
- animation-delay: -1.1s;
126
+ }
127
+
128
+ @keyframes dash {
129
+ 0% {
130
+ stroke-dasharray: 1, 200;
131
+ stroke-dashoffset: 0;
35
132
  }
36
-
37
- .stretchspinner-unassigned-convs .rect3 {
38
- -webkit-animation-delay: -1s;
39
- animation-delay: -1s;
133
+ 50% {
134
+ stroke-dasharray: 89, 200;
135
+ stroke-dashoffset: -35px;
40
136
  }
41
-
42
- .stretchspinner-unassigned-convs .rect4 {
43
- -webkit-animation-delay: -0.9s;
44
- animation-delay: -0.9s;
137
+ 100% {
138
+ stroke-dasharray: 89, 200;
139
+ stroke-dashoffset: -124px;
45
140
  }
46
-
47
- .stretchspinner-unassigned-convs .rect5 {
48
- -webkit-animation-delay: -0.8s;
49
- animation-delay: -0.8s;
141
+ }
142
+
143
+ @keyframes color {
144
+ 100%,
145
+ 0% {
146
+ stroke: #3ea9f5;
50
147
  }
51
-
52
- @-webkit-keyframes sk-stretchdelay {
53
- 0%,
54
- 40%,
55
- 100% {
56
- -webkit-transform: scaleY(0.4);
57
- }
58
- 20% {
59
- -webkit-transform: scaleY(1);
60
- }
148
+ 50% {
149
+ stroke: #ff5722;
61
150
  }
62
-
63
- @keyframes sk-stretchdelay {
64
- 0%,
65
- 40%,
66
- 100% {
67
- transform: scaleY(0.4);
68
- -webkit-transform: scaleY(0.4);
69
- }
70
- 20% {
71
- transform: scaleY(1);
72
- -webkit-transform: scaleY(1);
73
- }
151
+ 100% {
152
+ stroke: #3ea9f5;
74
153
  }
75
-
154
+ }
155
+
156
+ // -------------------------------------
157
+ // Loader spinner wpr
158
+ // -------------------------------------
159
+ .loader-spinner-wpr {
160
+ text-align: center;
161
+ // font-size: 10px;
162
+ position: absolute;
163
+ margin: auto;
164
+ top: 0;
165
+ left: 0;
166
+ bottom: 0;
167
+ right: 0;
168
+ background: #fff;
169
+ }
76
170
 
77
- .hide-stretchspinner {
78
- display: none;
79
- }
171
+ .hide-stretchspinner {
172
+ display: none;
173
+ }
@@ -14,8 +14,12 @@ import { CustomTranslateService } from 'src/chat21-core/providers/custom-transla
14
14
  })
15
15
  export class UnassignedConversationsPage implements OnInit {
16
16
 
17
- @Input() unassigned_convs_url: any;
18
- unassigned_convs_url_sanitized: any;
17
+ @Input() iframe_URL: any;
18
+ @Input() callerBtn: string;
19
+ // @Input() prjctsxpanel_url: any;
20
+ // @Input() unassigned_convs_url: any;
21
+
22
+ iframe_url_sanitized: any;
19
23
  private logger: LoggerService = LoggerInstance.getInstance();
20
24
  // has_loaded: boolean;
21
25
  ion_content: any;
@@ -32,7 +36,11 @@ export class UnassignedConversationsPage implements OnInit {
32
36
  ) { }
33
37
 
34
38
  ngOnInit() {
35
- const keys = ['UnassignedConversations', 'NewConversations'];
39
+ const keys = [
40
+ 'UnassignedConversations',
41
+ 'NewConversations',
42
+ 'PIN_A_PROJECT'
43
+ ];
36
44
  this.translationMap = this.translateService.translateLanguage(keys);
37
45
  this.buildIFRAME();
38
46
  this.listenToPostMsg();
@@ -47,14 +55,16 @@ export class UnassignedConversationsPage implements OnInit {
47
55
  }
48
56
 
49
57
  buildIFRAME() {
50
- this.logger.log('[UNASSIGNED-CONVS-PAGE] - UNASSIGNED CONVS URL (ngOnInit)', this.unassigned_convs_url);
51
- this.unassigned_convs_url_sanitized = this.sanitizer.sanitize(SecurityContext.URL, this.unassigned_convs_url)
52
- this.logger.log('[UNASSIGNED-CONVS-PAGE] - UNASSIGNED CONVS URL SANITIZED (ngOnInit)', this.unassigned_convs_url_sanitized);
58
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] - iframe_URL (ngOnInit)', this.iframe_URL);
59
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] - callerBtn (ngOnInit)', this.callerBtn);
60
+
61
+ this.iframe_url_sanitized = this.sanitizer.sanitize(SecurityContext.URL, this.iframe_URL)
62
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] - UNASSIGNED CONVS URL SANITIZED (ngOnInit)', this.iframe_url_sanitized);
53
63
  // this.has_loaded = false
54
64
 
55
65
  this.ion_content = document.getElementById("iframe-ion-content");
56
66
  this.iframe = document.createElement("iframe");
57
- this.iframe.src = this.unassigned_convs_url_sanitized;
67
+ this.iframe.src = this.iframe_url_sanitized;
58
68
  this.iframe.width = "100%";
59
69
  this.iframe.height = "99%";
60
70
  this.iframe.id = "unassigned-convs-iframe"
@@ -63,23 +73,35 @@ export class UnassignedConversationsPage implements OnInit {
63
73
  this.iframe.style.background = "white";
64
74
  this.ion_content.appendChild(this.iframe);
65
75
 
66
- // this.getIframeHaLoaded()
76
+ this.getIframeHaLoaded()
77
+
67
78
  }
68
79
 
69
80
  getIframeHaLoaded() {
70
81
  var self = this;
71
- var iframe = document.getElementById('unassigned-convs-iframe') as HTMLIFrameElement;;
72
- this.logger.log('[APP-STORE-INSTALL] GET iframe ', iframe)
73
- if (iframe) {
74
- iframe.addEventListener("load", function () {
75
- self.logger.log("[APP-STORE-INSTALL] GET - Finish");
76
- let spinnerElem = <HTMLElement>document.querySelector('.stretchspinner-unassigned-convs')
82
+ var iframeWin = document.getElementById('unassigned-convs-iframe') as HTMLIFrameElement;;
83
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] GET iframe ', iframeWin)
84
+ if (iframeWin) {
85
+ iframeWin.addEventListener("load", function () {
86
+ self.logger.log("[UNASSIGNED-CONVS-PAGE] GET - Finish");
87
+
88
+ const isIFrame = (input: HTMLElement | null): input is HTMLIFrameElement =>
89
+ input !== null && input.tagName === 'IFRAME';
90
+
91
+ if (isIFrame(iframeWin) && iframeWin.contentWindow) {
92
+ const msg = { action: "hidewidget", calledBy: 'unassigned-convs' }
93
+ iframeWin.contentWindow.postMessage(msg, '*');
94
+ }
95
+
96
+
97
+ let spinnerElem = <HTMLElement>document.querySelector('.loader-spinner-wpr')
77
98
 
78
99
  self.logger.log('[APP-STORE-INSTALL] GET iframeDoc readyState spinnerElem', spinnerElem)
79
100
  spinnerElem.classList.add("hide-stretchspinner")
80
101
 
81
102
  });
82
103
  }
104
+
83
105
  }
84
106
 
85
107
  listenToPostMsg() {
@@ -94,18 +116,31 @@ export class UnassignedConversationsPage implements OnInit {
94
116
  this.isProjectsForPanel = false;
95
117
  }
96
118
  }
119
+
120
+ if (event.data === 'hasChangedProject') {
121
+ this.closemodal()
122
+ }
97
123
  });
98
124
  }
99
125
 
126
+ public async closemodal() {
127
+ // const modal = await this.modalController.getTop();
128
+ // modal.dismiss({
129
+ // confirmed: true
130
+ // });
131
+ // await this.modalController.dismiss({ confirmed: true });
132
+ this.onClose()
133
+
134
+ }
135
+
100
136
 
101
137
  async onClose() {
102
138
  this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL')
103
139
  this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', await this.modalController.getTop())
104
140
  const isModalOpened = await this.modalController.getTop();
105
-
141
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', isModalOpened)
106
142
  if (isModalOpened) {
107
143
  this.modalController.dismiss({
108
-
109
144
  confirmed: true
110
145
  });
111
146
  } else {
@@ -29,9 +29,9 @@ export class AppConfigProvider {
29
29
 
30
30
 
31
31
  return this.http.get(this.appConfig.remoteConfigUrl)
32
- .toPromise().then((data: any ) => {
32
+ .toPromise().then((data: any) => {
33
33
  // console.log('AppConfigService loadAppConfig data: ', data);
34
-
34
+
35
35
  const allconfig = data
36
36
  // console.log('[APP-CONFIG-SERVICE] - loadAppConfig allconfig: ', allconfig);
37
37
 
@@ -59,22 +59,22 @@ export class AppConfigProvider {
59
59
 
60
60
  // // console.log('AppConfigService loadAppConfig allconfig !!!! exist - SERVER_BASE_URL protocol is HTTPS - wsUrl', ws_url);
61
61
  // } else {
62
-
63
-
64
- // console.log('AppConfigService loadAppConfig allconfig !!!! exist - SERVER_BASE_URL !!! IS RELATIVE - window.location ', window.location);
65
62
 
66
- // console.log(window.location)
67
63
 
68
- if (window.location.protocol === 'http:') {
69
- allconfig.wsUrl = 'ws://' + window.location.hostname + allconfig.wsUrlRel
64
+ // console.log('AppConfigService loadAppConfig allconfig !!!! exist - SERVER_BASE_URL !!! IS RELATIVE - window.location ', window.location);
65
+
66
+ // console.log(window.location)
70
67
 
71
- } else if (window.location.protocol === 'https:') {
68
+ if (window.location.protocol === 'http:') {
69
+ allconfig.wsUrl = 'ws://' + window.location.hostname + ':' + window.location.port + allconfig.wsUrlRel
72
70
 
73
- allconfig.wsUrl = 'wss://' + window.location.hostname + allconfig.wsUrlRel
74
- } else {
71
+ } else if (window.location.protocol === 'https:') {
75
72
 
76
- allconfig.wsUrl = 'ws://' + window.location.hostname + allconfig.wsUrlRel
77
- }
73
+ allconfig.wsUrl = 'wss://' + window.location.hostname + ':' + window.location.port + allconfig.wsUrlRel
74
+ } else {
75
+
76
+ allconfig.wsUrl = 'ws://' + window.location.hostname + ':' + window.location.port + allconfig.wsUrlRel
77
+ }
78
78
  // }
79
79
 
80
80
  } else {
@@ -87,7 +87,7 @@ export class AppConfigProvider {
87
87
  }
88
88
 
89
89
  this.appConfig = allconfig;
90
-
90
+
91
91
 
92
92
  }).catch(err => {
93
93
  console.error('error loadAppConfig' + err);