@chat21/chat21-ionic 3.0.58 → 3.0.59-rc15

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 (96) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +9 -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 +259 -55
  22. package/src/app/app.module.ts +16 -8
  23. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.html +1 -1
  24. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +4 -4
  25. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +8 -2
  26. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +6 -1
  27. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +7 -2
  28. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +47 -2
  29. package/src/app/chatlib/conversation-detail/message/image/image.component.html +7 -6
  30. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +20 -1
  31. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +39 -9
  32. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +8 -144
  33. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -17
  34. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.html +1 -1
  35. package/src/app/components/authentication/login/login.component.html +10 -10
  36. package/src/app/components/authentication/login/login.component.ts +2 -1
  37. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +1 -1
  38. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +1 -1
  39. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +17 -12
  40. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +12 -0
  41. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +21 -5
  42. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +3 -2
  43. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +22 -17
  44. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +46 -5
  45. package/src/app/components/ddp-header/ddp-header.component.html +1 -1
  46. package/src/app/components/ddp-header/ddp-header.component.ts +4 -2
  47. package/src/app/components/image-viewer/image-viewer.component.html +23 -0
  48. package/src/app/components/image-viewer/image-viewer.component.scss +107 -0
  49. package/src/app/components/image-viewer/image-viewer.component.spec.ts +24 -0
  50. package/src/app/components/image-viewer/image-viewer.component.ts +38 -0
  51. package/src/app/components/project-item/project-item.component.html +147 -0
  52. package/src/app/components/project-item/project-item.component.scss +669 -0
  53. package/src/app/components/project-item/project-item.component.spec.ts +24 -0
  54. package/src/app/components/project-item/project-item.component.ts +317 -0
  55. package/src/app/components/utils/avatar-profile/avatar-profile.component.html +7 -0
  56. package/src/app/components/utils/avatar-profile/avatar-profile.component.ts +22 -5
  57. package/src/app/pages/authentication/login/login.page.html +1 -2
  58. package/src/app/pages/authentication/login/login.page.ts +1 -1
  59. package/src/app/pages/conversation-detail/conversation-detail.page.html +5 -3
  60. package/src/app/pages/conversation-detail/conversation-detail.page.ts +122 -30
  61. package/src/app/pages/conversations-list/conversations-list.page.html +44 -23
  62. package/src/app/pages/conversations-list/conversations-list.page.scss +290 -127
  63. package/src/app/pages/conversations-list/conversations-list.page.ts +172 -12
  64. package/src/app/pages/unassigned-conversations/unassigned-conversations-routing.module.ts +17 -0
  65. package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +22 -0
  66. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +22 -0
  67. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +79 -0
  68. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.spec.ts +24 -0
  69. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +108 -0
  70. package/src/app/services/nav-proxy.service.ts +1 -1
  71. package/src/app/services/tiledesk/tiledesk.service.ts +22 -1
  72. package/src/app/services/websocket/websocket-js.ts +557 -0
  73. package/src/app/services/websocket/websocket.service.spec.ts +12 -0
  74. package/src/app/services/websocket/websocket.service.ts +274 -0
  75. package/src/app/shared/shared.module.ts +7 -1
  76. package/src/assets/i18n/en.json +9 -1
  77. package/src/assets/i18n/it.json +9 -1
  78. package/src/assets/js/chat21client.js +141 -67
  79. package/src/assets/transparent.png +0 -0
  80. package/src/chat-config-pre-test.json +3 -1
  81. package/src/chat-config-template.json +3 -1
  82. package/src/chat-config.json +3 -1
  83. package/src/chat21-core/providers/chat-manager.ts +3 -3
  84. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +1 -1
  85. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +6 -6
  86. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  87. package/src/chat21-core/providers/firebase/firebase-notifications.ts +1 -1
  88. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +2 -2
  89. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +1 -1
  90. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +1 -1
  91. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +27 -27
  92. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +13 -5
  93. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +101 -11
  94. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +13 -4
  95. package/src/chat21-core/utils/utils.ts +1 -1
  96. package/src/firebase-messaging-sw-template.js +1 -1
@@ -40,6 +40,7 @@ import { Subject } from 'rxjs';
40
40
  import { takeUntil } from 'rxjs/operators';
41
41
  import { TiledeskService } from '../../services/tiledesk/tiledesk.service';
42
42
  import { NetworkService } from '../../services/network-service/network.service';
43
+ import { EventsService } from '../../services/events-service';
43
44
 
44
45
  @Component({
45
46
  selector: 'app-conversation-detail',
@@ -51,6 +52,8 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
51
52
  @ViewChild('ionContentChatArea', { static: false }) ionContentChatArea: IonContent;
52
53
  @ViewChild('rowMessageTextArea', { static: false }) rowTextArea: ElementRef;
53
54
 
55
+
56
+
54
57
  // @ViewChild('info_content', { static: false }) info_content_child : InfoContentComponent;
55
58
 
56
59
  showButtonToBottom = false; // indica lo stato del pulsante per scrollare la chat (showed/hidden)
@@ -90,6 +93,8 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
90
93
 
91
94
  public tagsCanned: any = [];
92
95
  public tagsCannedFilter: any = [];
96
+ public HIDE_CANNED_RESPONSES: boolean = false;
97
+
93
98
 
94
99
  public window: any = window;
95
100
  public styleMap: Map<string, string> = new Map();
@@ -164,7 +169,8 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
164
169
  public presenceService: PresenceService,
165
170
  public toastController: ToastController,
166
171
  public tiledeskService: TiledeskService,
167
- private networkService: NetworkService
172
+ private networkService: NetworkService,
173
+ private events: EventsService
168
174
  ) {
169
175
 
170
176
  // Change list on date change
@@ -533,23 +539,27 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
533
539
  if (this.conversationWith && this.conversationsHandlerService && this.conv_type === 'active') {
534
540
  this.logger.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail CALLING')
535
541
  this.conversationsHandlerService.getConversationDetail(this.conversationWith, (conv) => {
536
- this.logger.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail (active)', this.conversationWith, conv)
537
- this.conversationAvatar = setConversationAvatar(
538
- conv.conversation_with,
539
- conv.conversation_with_fullname,
540
- conv.channel_type
541
- );
542
+ if (conv) {
543
+ this.logger.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail (active)', this.conversationWith, conv)
544
+ this.conversationAvatar = setConversationAvatar(
545
+ conv.conversation_with,
546
+ conv.conversation_with_fullname,
547
+ conv.channel_type
548
+ );
549
+ }
542
550
  this.logger.log('[CONVS-DETAIL] - setHeaderContent > conversationAvatar: ', this.conversationAvatar);
543
551
  })
544
552
  }
545
553
  else { //get conversation from 'conversations' firebase node
546
554
  this.archivedConversationsHandlerService.getConversationDetail(this.conversationWith, (conv) => {
547
- this.logger.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail (archived)', this.conversationWith, conv)
548
- this.conversationAvatar = setConversationAvatar(
549
- conv.conversation_with,
550
- conv.conversation_with_fullname,
551
- conv.channel_type
552
- );
555
+ if (conv) {
556
+ this.logger.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail (archived)', this.conversationWith, conv)
557
+ this.conversationAvatar = setConversationAvatar(
558
+ conv.conversation_with,
559
+ conv.conversation_with_fullname,
560
+ conv.channel_type
561
+ );
562
+ }
553
563
  })
554
564
  }
555
565
 
@@ -628,23 +638,23 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
628
638
  msg = `[${metadata.name}](${metadata.src})`
629
639
  }
630
640
  }
631
-
641
+
632
642
  // else if (type === 'image') {
633
643
  // if (msg) {
634
644
  // // msg = msg + '<br>' + 'File: ' + metadata.src;
635
645
  // msg = metadata.name + '\n' + msg
636
646
 
637
647
  // } else {
638
-
648
+
639
649
  // msg = metadata.name
640
650
  // }
641
-
651
+
642
652
  // }
643
-
653
+
644
654
 
645
655
  (metadata) ? metadata = metadata : metadata = '';
646
656
  this.logger.log('[CONVS-DETAIL] - SEND MESSAGE msg: ', msg, ' - messages: ', this.messages, ' - loggedUser: ', this.loggedUser);
647
-
657
+
648
658
  if (msg && msg.trim() !== '' || type !== TYPE_MSG_TEXT) {
649
659
  this.conversationHandlerService.sendMessage(
650
660
  msg,
@@ -835,12 +845,12 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
835
845
 
836
846
  logScrolling(event: any) {
837
847
  // EVENTO IONIC-NATIVE: SCATTA SEMPRE, QUINDI DECIDO SE MOSTRARE O MENO IL BADGE
838
- this.logger.log('[CONVS-DETAIL] logScrolling: ', event);
848
+ // this.logger.log('[CONVS-DETAIL] logScrolling: ', event);
839
849
  this.detectBottom()
840
850
  }
841
851
 
842
852
  logScrollEnd(event: any) {
843
- this.logger.log('[CONVS-DETAIL] logScrollEnd: ', event);
853
+ // this.logger.log('[CONVS-DETAIL] logScrollEnd: ', event);
844
854
  }
845
855
 
846
856
 
@@ -882,17 +892,83 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
882
892
  // ----------------------------------------------------------
883
893
  setTimeout(() => {
884
894
  if (this.conversationWith.startsWith("support-group")) {
885
- var pos = message.lastIndexOf("/");
886
- this.logger.log("[CONVS-DETAIL] - returnChangeTextArea - canned responses pos of / ", pos);
887
- this.logger.log("[CONVS-DETAIL] - returnChangeTextArea - pos:: ", pos);
895
+
896
+ const pos = message.lastIndexOf("/");
897
+ // console.log("[CONVS-DETAIL] - returnChangeTextArea - canned responses pos of / (using lastIndexOf) ", pos);
898
+
899
+ // test
900
+ // var rest = message.substring(0, message.lastIndexOf("/") + 1);
901
+ // var last = message.substring(message.lastIndexOf("/") + 1, message.length);
902
+ // console.log('[CONVS-DETAIL] - returnChangeTextArea rest', rest);
903
+ // console.log('[CONVS-DETAIL] - returnChangeTextArea last', last);
904
+ // console.log('[CONVS-DETAIL] - returnChangeTextArea last', last.length);
905
+ // if (last.length === 1 && last.trim() === '') {
906
+ // console.log('[CONVS-DETAIL] - returnChangeTextArea last is a white space ');
907
+ // } else if (last.length === 1 && last.trim() !== '') {
908
+ // console.log('[CONVS-DETAIL] - returnChangeTextArea last is NOT space ');
909
+ // }
910
+
888
911
 
889
912
  if (pos >= 0) {
890
- // if (pos === 0) {
891
- // && that.tagsCanned.length > 0
892
913
  var strSearch = message.substr(pos + 1);
893
914
  this.logger.log("[CONVS-DETAIL] - returnChangeTextArea - canned responses strSearch ", strSearch);
915
+
916
+ // --------------------------------------------
917
+ // Load canned responses
918
+ // --------------------------------------------
894
919
  this.loadTagsCanned(strSearch, this.conversationWith);
895
920
 
921
+ // ------------------------------------------------------------------------------------------------------------------------------------------
922
+ // Hide / display Canned when the SLASH has POSITION POS 0 and checking if there is a space after the SLASH (in this case it will be hidden)
923
+ // ------------------------------------------------------------------------------------------------------------------------------------------
924
+
925
+ var after_slash = message.substring(message.lastIndexOf("/") + 1, message.length);
926
+ if (pos === 0 && after_slash.length === 1 && after_slash.trim() === '') {
927
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea after_slash --> there is a white space after ');
928
+ this.HIDE_CANNED_RESPONSES = true
929
+ this.tagsCannedFilter = []
930
+ } else if (pos === 0 && after_slash.length === 0) {
931
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea after_slash --> there is NOT a white space after');
932
+ this.HIDE_CANNED_RESPONSES = false
933
+ }
934
+
935
+
936
+ if (pos > 0) {
937
+
938
+ // ------------------------------------------------------------------------------------------------------------------------------------------
939
+ // Hide / display Canned when the SLASH has POSITION POS > and checking if there is a space after the SLASH (in this case they it be hidden)
940
+ // and if there is not a space before the SLASH (in this it will be hidden)
941
+ // ------------------------------------------------------------------------------------------------------------------------------------------
942
+
943
+ let beforeSlash = message.substr(pos - 1)
944
+ let afterSlash = message.substr(pos + 1)
945
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea * POS ', pos);
946
+
947
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash', beforeSlash);
948
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> afterSlash', afterSlash);
949
+ var afterSlashParts = afterSlash.split("/")
950
+ var beforeSlashParts = beforeSlash.split("/")
951
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> afterSlash parts', afterSlashParts);
952
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash parts', beforeSlashParts);
953
+
954
+ if (beforeSlashParts.length === 2) {
955
+ if (beforeSlashParts[0].indexOf(' ') >= 0 && afterSlashParts[0] === '') {
956
+ this.HIDE_CANNED_RESPONSES = false
957
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash there is a white space After Not');
958
+ // if (beforeSlashParts[0].indexOf(' ') >= 0 && afterSlashParts[0].indexOf(' ') >= 0)
959
+ } else if (beforeSlashParts[0].indexOf(' ') < 0 && afterSlashParts[0] === '') {
960
+ this.HIDE_CANNED_RESPONSES = true;
961
+ this.tagsCannedFilter = []
962
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash not thete is a white space After Not');
963
+ } else if (beforeSlashParts[0].indexOf(' ') >= 0 && afterSlashParts[0] === ' ') {
964
+ this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash not thete is a white space After YES');
965
+ this.HIDE_CANNED_RESPONSES = true;
966
+ this.tagsCannedFilter = []
967
+ }
968
+ }
969
+ }
970
+
971
+
896
972
  } else {
897
973
  this.tagsCannedFilter = [];
898
974
  }
@@ -974,7 +1050,10 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
974
1050
  this.logger.log('[CONVS-DETAIL] - loadTagsCanned getCannedResponses RES', res);
975
1051
 
976
1052
  this.tagsCanned = res
977
- this.showTagsCanned(strSearch);
1053
+
1054
+ if (this.HIDE_CANNED_RESPONSES === false) {
1055
+ this.showTagsCanned(strSearch);
1056
+ }
978
1057
 
979
1058
  }, (error) => {
980
1059
  this.logger.error('[CONVS-DETAIL] - loadTagsCanned getCannedResponses - ERROR ', error);
@@ -1030,12 +1109,20 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
1030
1109
  return str;
1031
1110
  }
1032
1111
 
1033
- replaceTagInMessage(canned) {
1112
+ replaceTagInMessage(canned, event) {
1113
+ this.logger.log("[CONVS-DETAIL] replaceTagInMessage event ", event);
1034
1114
  const elTextArea = this.rowTextArea['el'];
1035
1115
  const textArea = elTextArea.getElementsByTagName('ion-textarea')[0];
1116
+
1036
1117
  this.logger.log("[CONVS-DETAIL] replaceTagInMessage textArea ", textArea);
1037
1118
  this.logger.log("[CONVS-DETAIL] replaceTagInMessage textArea value", textArea.value)
1038
1119
 
1120
+ // var lastChar = textArea.value.substr(-1); // Selects the last character
1121
+ // if (lastChar === '/') {
1122
+ // textArea.value = textArea.value.substring(0, textArea.value.length() - 1);
1123
+ // }
1124
+ // this.insertAtCursor(this.textArea, textArea.value)
1125
+
1039
1126
 
1040
1127
  this.arrowkeyLocation = -1
1041
1128
  this.tagsCannedFilter = [];
@@ -1051,12 +1138,14 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
1051
1138
 
1052
1139
  var strTEMP = textArea.value.replace(strSearch, canned.text);
1053
1140
  strTEMP = this.replacePlaceholderInCanned(strTEMP);
1141
+ this.logger.log("[CONVS-DETAIL] replaceTagInMessage strSearch ", strTEMP);
1054
1142
  // strTEMP = this.replacePlaceholderInCanned(strTEMP);
1055
1143
  // textArea.value = '';
1056
1144
  // that.messageString = strTEMP;
1057
1145
  textArea.value = strTEMP;
1058
1146
  setTimeout(() => {
1059
- textArea.focus();
1147
+ // textArea.focus();
1148
+ textArea.setFocus();
1060
1149
  this.resizeTextArea();
1061
1150
  }, 200);
1062
1151
  }
@@ -1088,9 +1177,12 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
1088
1177
 
1089
1178
  if (event.key === 'Enter') {
1090
1179
  const canned_selected = this.tagsCannedFilter[this.arrowkeyLocation]
1091
-
1180
+ this.logger.log('[CONVS-DETAIL] replaceTagInMessage canned_selected ', canned_selected)
1092
1181
  if (canned_selected) {
1093
- this.replaceTagInMessage(canned_selected)
1182
+
1183
+ this.replaceTagInMessage(canned_selected, 'enter')
1184
+ // event.preventDefault();
1185
+ // return false;
1094
1186
  }
1095
1187
  }
1096
1188
  }
@@ -1,10 +1,6 @@
1
-
2
1
  <ion-header no-border class="ion-no-border">
3
- <app-ddp-header *ngIf="conversationType ==='active'"
4
- [numberOpenConv]="numberOpenConv"
5
- [supportMode]="supportMode"
6
- (openContactsDirectory)=openContactsDirectory($event)
7
- (openProfileInfo)=openProfileInfo($event)>
2
+ <app-ddp-header *ngIf="conversationType ==='active'" [numberOpenConv]="numberOpenConv" [supportMode]="supportMode"
3
+ (openContactsDirectory)=openContactsDirectory($event) (openProfileInfo)=openProfileInfo($event)>
8
4
  </app-ddp-header>
9
5
 
10
6
  <app-option-header *ngIf="conversationType !=='active'" [headerTitle]=headerTitle
@@ -17,35 +13,60 @@
17
13
  <div id="scrollbar2">
18
14
  <ion-list>
19
15
 
16
+ <!-- -------------------------------------------------------------------------- -->
17
+ <!-- New <ion-spinner class="spinner-middle" style="margin-left: 19px;"></ion-spinner> -->
18
+ <!-- -------------------------------------------------------------------------- -->
19
+ <ion-item *ngIf="isOnline === false" style="padding-left:0px!important ;padding-right:0px!important" button="true" lines="none" class="ion-no-padding waiting-for-connection">
20
+ <div tabindex="0"></div>
21
+ <ion-avatar item-start>
22
+ <div class="sk-fading-circle">
23
+ <div class="sk-circle1 sk-circle"></div>
24
+ <div class="sk-circle2 sk-circle"></div>
25
+ <div class="sk-circle3 sk-circle"></div>
26
+ <div class="sk-circle4 sk-circle"></div>
27
+ <div class="sk-circle5 sk-circle"></div>
28
+ <div class="sk-circle6 sk-circle"></div>
29
+ <div class="sk-circle7 sk-circle"></div>
30
+ <div class="sk-circle8 sk-circle"></div>
31
+ <div class="sk-circle9 sk-circle"></div>
32
+ <div class="sk-circle10 sk-circle"></div>
33
+ <div class="sk-circle11 sk-circle"></div>
34
+ <div class="sk-circle12 sk-circle"></div>
35
+ </div>
36
+ </ion-avatar>
37
+ <ion-label part="message-text" class="waiting-for-network-msg"> Waiting for network</ion-label>
38
+ </ion-item>
39
+
40
+ <ion-item *ngIf="supportMode && displayNewConvsItem" class="ion-no-padding open-iframe-item"
41
+ button="true"
42
+ (click)="openUnsevedConversationIframe()">
43
+ <div tabindex="0"></div>
44
+ <app-project-item (projectIdEvent)="getLastProjectId($event)"></app-project-item>
45
+ </ion-item>
46
+
20
47
  <span
21
48
  *ngIf="(conversations.length > 0 && conversationType ==='active') || (archivedConversations.length > 0 && conversationType ==='archived');then contentConversations else contentMessageWelcome">
22
49
  here is ignored
23
50
  </span>
24
51
 
52
+
53
+
25
54
  <ng-template #contentConversations>
26
55
  <!-- ---------------------------------- -->
27
56
  <!-- ACTIVE CONVERSATION LIST -->
28
57
  <!-- ---------------------------------- -->
29
- <ion-list-conversations *ngIf="conversationType ==='active'"
30
- [uidConvSelected]="uidConvSelected"
31
- [listConversations]="conversations"
32
- [stylesMap]="stylesMap"
33
- [translationMap]="translationMapConversation"
34
- (onConversationSelected)=onConversationSelected($event)
35
- (onImageLoaded)="onImageLoaded($event)"
36
- (onConversationLoaded)="onConversationLoaded($event)"
37
- (onCloseConversation)="onCloseConversation($event)">
58
+ <ion-list-conversations *ngIf="conversationType ==='active'" [uidConvSelected]="uidConvSelected"
59
+ [listConversations]="conversations" [stylesMap]="stylesMap" [translationMap]="translationMapConversation"
60
+ (onConversationSelected)=onConversationSelected($event) (onImageLoaded)="onImageLoaded($event)"
61
+ (onConversationLoaded)="onConversationLoaded($event)" (onCloseConversation)="onCloseConversation($event)">
38
62
  </ion-list-conversations>
39
63
 
40
64
  <!-- ---------------------------------- -->
41
65
  <!-- ARCHIVED CONVERSATION LIST -->
42
66
  <!-- ---------------------------------- -->
43
- <ion-list-conversations *ngIf="conversationType ==='archived'"
44
- [listConversations]="archivedConversations"
45
- [stylesMap]="stylesMap"
46
- [translationMap]="translationMapConversation"
47
- (onConversationSelected)=onConversationSelected($event)
48
- (onImageLoaded)="onImageLoaded($event)"
67
+ <ion-list-conversations *ngIf="conversationType ==='archived'" [listConversations]="archivedConversations"
68
+ [stylesMap]="stylesMap" [translationMap]="translationMapConversation"
69
+ (onConversationSelected)=onConversationSelected($event) (onImageLoaded)="onImageLoaded($event)"
49
70
  (onConversationLoaded)="onConversationLoaded($event)">
50
71
  </ion-list-conversations>
51
72
  </ng-template>
@@ -84,8 +105,8 @@
84
105
  </ion-label>
85
106
  </ion-item>
86
107
  </div>
87
-
108
+
88
109
  </ng-template>
89
110
  </ion-list>
90
111
  </div>
91
- </ion-content>
112
+ </ion-content>