@chat21/chat21-ionic 3.0.5-8.1 → 3.0.6-2.1

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 (229) hide show
  1. package/CHANGELOG.md +300 -0
  2. package/LICENSE +661 -21
  3. package/README.md +21 -0
  4. package/angular.json +4 -0
  5. package/config.xml +6 -7
  6. package/deploy_pre.sh +44 -5
  7. package/deploy_prod.sh +36 -7
  8. package/env.sample +7 -3
  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/splash/drawable-land-hdpi-screen.png +0 -0
  18. package/resources/android/splash/drawable-land-ldpi-screen.png +0 -0
  19. package/resources/android/splash/drawable-land-mdpi-screen.png +0 -0
  20. package/resources/android/splash/drawable-land-xhdpi-screen.png +0 -0
  21. package/resources/android/splash/drawable-land-xxhdpi-screen.png +0 -0
  22. package/resources/android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  23. package/resources/android/splash/drawable-port-hdpi-screen.png +0 -0
  24. package/resources/android/splash/drawable-port-ldpi-screen.png +0 -0
  25. package/resources/android/splash/drawable-port-mdpi-screen.png +0 -0
  26. package/resources/android/splash/drawable-port-xhdpi-screen.png +0 -0
  27. package/resources/android/splash/drawable-port-xxhdpi-screen.png +0 -0
  28. package/resources/android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  29. package/resources/android/splash.png +0 -0
  30. package/src/app/app-routing.module.ts +36 -17
  31. package/src/app/app.component.html +18 -5
  32. package/src/app/app.component.scss +27 -5
  33. package/src/app/app.component.ts +526 -175
  34. package/src/app/app.module.ts +29 -12
  35. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.html +1 -1
  36. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +35 -24
  37. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +166 -50
  38. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +113 -18
  39. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +23 -33
  40. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +19 -7
  41. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +73 -7
  42. package/src/app/chatlib/conversation-detail/message/image/image.component.html +7 -6
  43. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +20 -1
  44. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -1
  45. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +46 -11
  46. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +8 -144
  47. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +149 -32
  48. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.html +1 -1
  49. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +13 -10
  50. package/src/app/components/authentication/login/login.component.html +10 -10
  51. package/src/app/components/authentication/login/login.component.ts +2 -1
  52. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +1 -1
  53. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +1 -1
  54. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +45 -39
  55. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +19 -1
  56. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +160 -54
  57. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +101 -38
  58. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +95 -19
  59. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +209 -98
  60. package/src/app/components/ddp-header/ddp-header.component.html +20 -6
  61. package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
  62. package/src/app/components/ddp-header/ddp-header.component.ts +107 -11
  63. package/src/app/components/image-viewer/image-viewer.component.html +23 -0
  64. package/src/app/components/image-viewer/image-viewer.component.scss +107 -0
  65. package/src/app/components/image-viewer/image-viewer.component.spec.ts +24 -0
  66. package/src/app/components/image-viewer/image-viewer.component.ts +38 -0
  67. package/src/app/components/project-item/project-item.component.html +170 -0
  68. package/src/app/components/project-item/project-item.component.scss +751 -0
  69. package/src/app/components/project-item/project-item.component.spec.ts +24 -0
  70. package/src/app/components/project-item/project-item.component.ts +384 -0
  71. package/src/app/components/sidebar/sidebar.component.html +275 -0
  72. package/src/app/components/sidebar/sidebar.component.scss +79 -0
  73. package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
  74. package/src/app/components/sidebar/sidebar.component.ts +541 -0
  75. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +121 -0
  76. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +343 -0
  77. package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
  78. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +502 -0
  79. package/src/app/components/utils/avatar-profile/avatar-profile.component.html +7 -0
  80. package/src/app/components/utils/avatar-profile/avatar-profile.component.ts +22 -5
  81. package/src/app/pages/authentication/login/login.page.html +1 -2
  82. package/src/app/pages/authentication/login/login.page.ts +1 -1
  83. package/src/app/pages/conversation-detail/conversation-detail.module.ts +9 -2
  84. package/src/app/pages/conversation-detail/conversation-detail.page.html +55 -49
  85. package/src/app/pages/conversation-detail/conversation-detail.page.scss +28 -0
  86. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1285 -688
  87. package/src/app/pages/conversations-list/conversations-list.module.ts +2 -1
  88. package/src/app/pages/conversations-list/conversations-list.page.html +55 -21
  89. package/src/app/pages/conversations-list/conversations-list.page.scss +309 -127
  90. package/src/app/pages/conversations-list/conversations-list.page.ts +833 -358
  91. package/src/app/pages/create-canned-response/create-canned-response-routing.module.ts +17 -0
  92. package/src/app/pages/create-canned-response/create-canned-response.module.ts +30 -0
  93. package/src/app/pages/create-canned-response/create-canned-response.page.html +150 -0
  94. package/src/app/pages/create-canned-response/create-canned-response.page.scss +55 -0
  95. package/src/app/pages/create-canned-response/create-canned-response.page.spec.ts +24 -0
  96. package/src/app/pages/create-canned-response/create-canned-response.page.ts +319 -0
  97. package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
  98. package/src/app/pages/create-requester/create-requester.module.ts +28 -0
  99. package/src/app/pages/create-requester/create-requester.page.html +67 -0
  100. package/src/app/pages/create-requester/create-requester.page.scss +30 -0
  101. package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
  102. package/src/app/pages/create-requester/create-requester.page.ts +138 -0
  103. package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
  104. package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
  105. package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
  106. package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
  107. package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
  108. package/src/app/pages/create-ticket/create-ticket.page.ts +432 -0
  109. package/src/app/pages/loader-preview/loader-preview.page.ts +226 -166
  110. package/src/app/pages/profile-info/profile-info.page.html +4 -4
  111. package/src/app/pages/profile-info/profile-info.page.scss +13 -2
  112. package/src/app/pages/profile-info/profile-info.page.ts +23 -21
  113. package/src/app/pages/unassigned-conversations/unassigned-conversations-routing.module.ts +17 -0
  114. package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +22 -0
  115. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +27 -0
  116. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +173 -0
  117. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.spec.ts +24 -0
  118. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +151 -0
  119. package/src/app/services/app-config.ts +77 -5
  120. package/src/app/services/nav-proxy.service.ts +1 -1
  121. package/src/app/services/tiledesk/tiledesk.service.ts +231 -1
  122. package/src/app/services/websocket/websocket-js.ts +560 -0
  123. package/src/app/services/websocket/websocket.service.spec.ts +12 -0
  124. package/src/app/services/websocket/websocket.service.ts +292 -0
  125. package/src/app/shared/shared.module.ts +28 -8
  126. package/src/app/utils/scrollbar-theme.directive.ts +58 -24
  127. package/src/assets/i18n/de.json +265 -0
  128. package/src/assets/i18n/en.json +89 -7
  129. package/src/assets/i18n/es.json +265 -0
  130. package/src/assets/i18n/fr.json +265 -0
  131. package/src/assets/i18n/it.json +108 -34
  132. package/src/assets/i18n/pt.json +265 -0
  133. package/src/assets/i18n/ru.json +265 -0
  134. package/src/assets/i18n/sr.json +265 -0
  135. package/src/assets/i18n/tr.json +265 -0
  136. package/src/assets/images/default-avatar-x-select.png +0 -0
  137. package/src/assets/images/language_flag/ar.png +0 -0
  138. package/src/assets/images/language_flag/bg.png +0 -0
  139. package/src/assets/images/language_flag/ca.png +0 -0
  140. package/src/assets/images/language_flag/cs.png +0 -0
  141. package/src/assets/images/language_flag/da.png +0 -0
  142. package/src/assets/images/language_flag/de.png +0 -0
  143. package/src/assets/images/language_flag/el.png +0 -0
  144. package/src/assets/images/language_flag/en.png +0 -0
  145. package/src/assets/images/language_flag/es.png +0 -0
  146. package/src/assets/images/language_flag/fa.png +0 -0
  147. package/src/assets/images/language_flag/fi.png +0 -0
  148. package/src/assets/images/language_flag/fr.png +0 -0
  149. package/src/assets/images/language_flag/he.png +0 -0
  150. package/src/assets/images/language_flag/hi.png +0 -0
  151. package/src/assets/images/language_flag/hr.png +0 -0
  152. package/src/assets/images/language_flag/hu.png +0 -0
  153. package/src/assets/images/language_flag/id.png +0 -0
  154. package/src/assets/images/language_flag/it.png +0 -0
  155. package/src/assets/images/language_flag/ja.png +0 -0
  156. package/src/assets/images/language_flag/ko.png +0 -0
  157. package/src/assets/images/language_flag/ml-IN.png +0 -0
  158. package/src/assets/images/language_flag/ne-NP.png +0 -0
  159. package/src/assets/images/language_flag/nl.png +0 -0
  160. package/src/assets/images/language_flag/no.png +0 -0
  161. package/src/assets/images/language_flag/pl.png +0 -0
  162. package/src/assets/images/language_flag/pt-BR.png +0 -0
  163. package/src/assets/images/language_flag/pt.png +0 -0
  164. package/src/assets/images/language_flag/ro.png +0 -0
  165. package/src/assets/images/language_flag/ru.png +0 -0
  166. package/src/assets/images/language_flag/sk.png +0 -0
  167. package/src/assets/images/language_flag/sl.png +0 -0
  168. package/src/assets/images/language_flag/sr.png +0 -0
  169. package/src/assets/images/language_flag/sv-SE.png +0 -0
  170. package/src/assets/images/language_flag/ta.png +0 -0
  171. package/src/assets/images/language_flag/th.png +0 -0
  172. package/src/assets/images/language_flag/tr.png +0 -0
  173. package/src/assets/images/language_flag/uk.png +0 -0
  174. package/src/assets/images/language_flag/vi.png +0 -0
  175. package/src/assets/images/language_flag/zh-CN.png +0 -0
  176. package/src/assets/images/language_flag/zh-TW.png +0 -0
  177. package/src/assets/images/no_image_user.png +0 -0
  178. package/src/assets/images/priority_icons/high.svg +3 -0
  179. package/src/assets/images/priority_icons/high_v2.svg +14 -0
  180. package/src/assets/images/priority_icons/low.svg +10 -0
  181. package/src/assets/images/priority_icons/low_v2.svg +14 -0
  182. package/src/assets/images/priority_icons/medium.svg +16 -0
  183. package/src/assets/images/priority_icons/medium_v2.svg +11 -0
  184. package/src/assets/images/priority_icons/urgent.svg +4 -0
  185. package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
  186. package/src/assets/js/chat21client.js +159 -84
  187. package/src/assets/logo.png +0 -0
  188. package/src/assets/tiledesk-solo-logo.png +0 -0
  189. package/src/assets/transparent.png +0 -0
  190. package/src/chat-config-mqtt.json +27 -17
  191. package/src/chat-config-pre-test.json +6 -2
  192. package/src/chat-config-template.json +8 -1
  193. package/src/chat-config.json +8 -1
  194. package/src/chat21-core/providers/chat-manager.ts +3 -3
  195. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +2 -2
  196. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +6 -6
  197. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +61 -45
  198. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +24 -1
  199. package/src/chat21-core/providers/firebase/firebase-notifications.ts +32 -24
  200. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +2 -2
  201. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +1 -1
  202. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +1 -1
  203. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -1
  204. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +3 -5
  205. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +13 -5
  206. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +101 -11
  207. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +13 -4
  208. package/src/chat21-core/utils/constants.ts +8 -1
  209. package/src/chat21-core/utils/utils-message.ts +21 -2
  210. package/src/chat21-core/utils/utils.ts +13 -2
  211. package/src/firebase-messaging-sw-template.js +1 -1
  212. package/src/global.scss +408 -2
  213. package/src/index.html +7 -0
  214. package/publish_pre.sh +0 -33
  215. package/publish_prod.sh +0 -33
  216. package/resources/Android/splash/drawable-land-hdpi-screen.png +0 -0
  217. package/resources/Android/splash/drawable-land-ldpi-screen.png +0 -0
  218. package/resources/Android/splash/drawable-land-mdpi-screen.png +0 -0
  219. package/resources/Android/splash/drawable-land-xhdpi-screen.png +0 -0
  220. package/resources/Android/splash/drawable-land-xxhdpi-screen.png +0 -0
  221. package/resources/Android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  222. package/resources/Android/splash/drawable-port-hdpi-screen.png +0 -0
  223. package/resources/Android/splash/drawable-port-ldpi-screen.png +0 -0
  224. package/resources/Android/splash/drawable-port-mdpi-screen.png +0 -0
  225. package/resources/Android/splash/drawable-port-xhdpi-screen.png +0 -0
  226. package/resources/Android/splash/drawable-port-xxhdpi-screen.png +0 -0
  227. package/resources/Android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  228. package/resources/Android/splash.png +0 -0
  229. package/src/assets/images/tiledesk_logo_50x50.png +0 -0
@@ -1,29 +1,40 @@
1
1
  import { ConversationContentComponent } from '../conversation-content/conversation-content.component';
2
- import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter} from '@angular/core';
2
+ import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
3
3
 
4
4
 
5
5
  import { MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
6
6
  import { isChannelTypeGroup, isFirstMessage, isInfo, isMine, messageType } from 'src/chat21-core/utils/utils-message';
7
7
  import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
8
+ import { isFile, isFrame, isImage } from 'src/chat21-core/utils/utils-message';
8
9
 
9
10
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
10
11
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
11
-
12
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
13
+ import { TranslateService } from '@ngx-translate/core';
14
+ import * as moment from 'moment';
15
+ import { AppConfigProvider } from 'src/app/services/app-config';
12
16
  @Component({
13
17
  selector: 'ion-conversation-detail',
14
18
  templateUrl: './ion-conversation-detail.component.html',
15
19
  styleUrls: ['./ion-conversation-detail.component.scss'],
16
20
  })
17
21
  export class IonConversationDetailComponent extends ConversationContentComponent implements OnInit {
18
-
22
+
19
23
  @Input() senderId: string;
20
24
  @Input() channelType: string;
21
- @Output() onImageRendered = new EventEmitter<boolean>()
25
+ @Output() onImageRendered = new EventEmitter<boolean>()
22
26
  @Output() onAddUploadingBubble = new EventEmitter<boolean>();
23
-
24
27
 
28
+ public public_Key: any
29
+ public areVisibleCAR: boolean
30
+ public support_mode: boolean
25
31
  public uploadProgress: number = 100
26
32
  public fileType: any
33
+ public browserLang: string;
34
+ public addAsCannedResponseTooltipText: string;
35
+ isImage = isImage;
36
+ isFile = isFile;
37
+ isFrame = isFrame;
27
38
 
28
39
  isMine = isMine;
29
40
  isInfo = isInfo;
@@ -34,7 +45,7 @@ export class IonConversationDetailComponent extends ConversationContentComponent
34
45
  MESSAGE_TYPE_INFO = MESSAGE_TYPE_INFO;
35
46
  MESSAGE_TYPE_MINE = MESSAGE_TYPE_MINE;
36
47
  MESSAGE_TYPE_OTHERS = MESSAGE_TYPE_OTHERS;
37
-
48
+ logger: LoggerService = LoggerInstance.getInstance()
38
49
  /**
39
50
  * Constructor
40
51
  * @param cdref
@@ -42,38 +53,112 @@ export class IonConversationDetailComponent extends ConversationContentComponent
42
53
  */
43
54
  constructor(
44
55
  public cdref: ChangeDetectorRef,
45
- public uploadService: UploadService
56
+ public uploadService: UploadService,
57
+ public tiledeskAuthService: TiledeskAuthService,
58
+ private translate: TranslateService,
59
+ public appConfigProvider: AppConfigProvider,
46
60
  ) {
47
61
  super(cdref, uploadService)
48
-
62
+
49
63
  }
50
64
 
51
- ngOnInit() {
52
- this.listenToUploadFileProgress()
65
+ ngOnInit() {
66
+ this.getOSCODE()
67
+ this.listenToUploadFileProgress();
68
+ this.setMomentLocaleAndGetTranslation();
69
+ }
70
+
71
+ getOSCODE() {
72
+ this.support_mode = null
73
+ if( this.appConfigProvider.getConfig().supportMode === true || this.appConfigProvider.getConfig().supportMode === 'true') {
74
+ this.support_mode = true
75
+ } else if ( this.appConfigProvider.getConfig().supportMode === false || this.appConfigProvider.getConfig().supportMode === 'false') {
76
+ this.support_mode = false
77
+ } else if ( !this.appConfigProvider.getConfig().supportMode ) {
78
+ this.support_mode = false
79
+ }
80
+ this.public_Key = this.appConfigProvider.getConfig().t2y12PruGU9wUtEGzBJfolMIgK
81
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] AppConfigService getAppConfig public_Key', this.public_Key)
82
+
83
+ if (this.public_Key) {
84
+ let keys = this.public_Key.split('-')
85
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] PUBLIC-KEY - public_Key keys', keys)
86
+
87
+ keys.forEach((key) => {
88
+ if (key.includes('CAR')) {
89
+ let car = key.split(':')
90
+ if (car[1] === 'F') {
91
+ this.areVisibleCAR = false
92
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
93
+ } else {
94
+ this.areVisibleCAR = true
95
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
96
+ }
97
+ }
98
+ })
99
+
100
+ if (!this.public_Key.includes('CAR')) {
101
+ this.areVisibleCAR = false
102
+ // console.log('[CONVS-DETAIL][ION-CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
103
+ }
104
+ } else {
105
+ this.areVisibleCAR = false
106
+ }
107
+ }
108
+
109
+ setMomentLocaleAndGetTranslation() {
110
+ this.browserLang = this.translate.getBrowserLang();
111
+ const currentUser = this.tiledeskAuthService.getCurrentUser();
112
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - ngOnInit - currentUser ', currentUser)
113
+ let currentUserId = ''
114
+ if (currentUser) {
115
+ currentUserId = currentUser.uid
116
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL]] - ngOnInit - currentUserId ', currentUserId)
117
+ }
118
+
119
+ const stored_preferred_lang = localStorage.getItem(currentUserId + '_lang');
120
+ this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] stored_preferred_lang: ', stored_preferred_lang);
121
+
122
+
123
+ let chat_lang = ''
124
+ if (this.browserLang && !stored_preferred_lang) {
125
+ chat_lang = this.browserLang
126
+ } else if (this.browserLang && stored_preferred_lang) {
127
+ chat_lang = stored_preferred_lang
128
+ }
129
+ moment.locale(chat_lang)
130
+ // this.translate.getTranslation(chat_lang).subscribe((labels: string) => {
131
+ // console.log('[CONVS-DETAIL] translations: ', labels);
132
+ // });
133
+ this.translate.get('AddAsCannedResponse')
134
+ .subscribe((text: string) => {
135
+ // console.log('[CONVS-DETAIL] AddAsCannedResponse translated: ', text);
136
+ this.addAsCannedResponseTooltipText = text
137
+ })
53
138
  }
54
139
 
55
140
  listenToUploadFileProgress() {
56
141
  this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - calling BSStateUpload ');
57
142
  this.uploadService.BSStateUpload.subscribe((data: any) => {
58
143
  this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - BSStateUpload data', data);
59
-
144
+
60
145
  if (data) {
61
146
  this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - BSStateUpload data.upload', data.upload);
62
147
  this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - BSStateUpload data.upload typeof', typeof data.upload);
63
148
  this.uploadProgress = data.upload
64
149
 
65
- if (isNaN(data.upload)) {
150
+ if (isNaN(data.upload)) {
66
151
  this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - BSStateUpload data.upload IS NaN (e.g. file size is 0)');
67
152
  this.uploadProgress = 100
68
153
  }
69
154
  // if (data.type.startsWith("application")) {
70
155
  // if (!data.type.startsWith("image")) {
71
-
72
- // this.fileType = 'file'
73
156
 
74
- this.addUploadingBubblePlaceholder(true)
157
+ // this.fileType = 'file'
158
+
159
+ this.addUploadingBubblePlaceholder(true)
75
160
 
76
- // this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - BSStateUpload this.fileType', this.fileType);
161
+ // this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] FIREBASE-UPLOAD - BSStateUpload this.fileType', this.fileType);
77
162
  // }
78
163
  }
79
164
  });
@@ -83,10 +168,20 @@ export class IonConversationDetailComponent extends ConversationContentComponent
83
168
  this.onAddUploadingBubble.emit(value);
84
169
  }
85
170
 
86
- onImageRenderedFN(event){
171
+ onImageRenderedFN(event) {
87
172
  this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - onImageRenderedFN:::ionic', event)
88
173
  this.onImageRendered.emit(event)
89
174
  }
90
175
 
91
-
176
+ /**
177
+ * Track by function for ngFor loops
178
+ *
179
+ * @param index
180
+ * @param item
181
+ */
182
+ trackByFn(index: number, item: any): any {
183
+ // console.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - trackByFn index', index)
184
+ // console.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - trackByFn item', item)
185
+ return item.uid || index;
186
+ }
92
187
  }
@@ -1,9 +1,9 @@
1
1
  <!-- [ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}" -->
2
2
  <!-- [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0px':'0 8px'}" -->
3
3
  <!-- isImage >{{isImage(message) }} message.metadata.width {{message?.metadata?.width }} -->
4
- <div [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0px':'0 8px', 'width': (isImage(message) || isFrame(message))? message?.metadata?.width + 'px' : null }"
5
- class="messages primary-color"
6
- [class.emoticon]="message?.emoticon">
4
+ <div id="bubble-message"
5
+ [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0px':'0 8px', 'width': (isImage(message) || isFrame(message))? message?.metadata?.width + 'px' : null }"
6
+ class="messages primary-color" [class.emoticon]="message?.emoticon">
7
7
 
8
8
 
9
9
  <div>
@@ -18,19 +18,13 @@
18
18
 
19
19
  <!-- [width]="getMetadataSize(message.metadata).width"
20
20
  [height]="getMetadataSize(message.metadata).height" -->
21
- <chat-image *ngIf="isImage(message)"
22
- [metadata]="message.metadata"
23
-
24
- [width]="message.metadata.width"
25
- [height]="message.metadata.height"
26
- (onImageRendered)="onImageRenderedFN($event)">
21
+ <chat-image *ngIf="isImage(message)" [metadata]="message.metadata" [width]="message.metadata.width"
22
+ [height]="message.metadata.height" (onImageRendered)="onImageRenderedFN($event)">
27
23
  </chat-image>
28
24
 
29
25
  <!-- [width]="getMetadataSize(message.metadata).width" -->
30
26
  <!-- [height]="getMetadataSize(message.metadata).height"> -->
31
- <chat-frame *ngIf="isFrame(message)"
32
- [metadata]="message.metadata"
33
- [width]="message.metadata.width"
27
+ <chat-frame *ngIf="isFrame(message)" [metadata]="message.metadata" [width]="message.metadata.width"
34
28
  [height]="message.metadata.height">
35
29
  </chat-frame>
36
30
 
@@ -40,31 +34,27 @@
40
34
  [height]="message.metadata.height">
41
35
  </chat-frame> -->
42
36
 
43
- <!-- message type:: text -->
44
- <!-- <div *ngIf="message.type == 'text'"> -->
45
- <div *ngIf="message?.text" [tooltip]="timeTooltipLeft" [options]="tooltipOptions" placement="left"
46
- content-type="template" (click)="handleTooltipEvents($event)">
47
- <ng-template #timeTooltipLeft>
48
- <span>{{message.timestamp | amTimeAgo}}</span>
49
- </ng-template>
50
37
 
51
- <chat-text
52
- [text]="message?.text"
53
- [color]="textColor"
54
- [message]="message"
38
+ <!-- [tooltip]="timeTooltipLeft" [options]="tooltipOptions" placement="left" content-type="template" (click)="handleTooltipEvents($event)" -->
39
+ <div *ngIf="message?.text">
40
+ <span class="message-date"> {{message.timestamp | date:'HH:mm' }} </span>
41
+ <!-- <ng-template #timeTooltipLeft>
42
+ <span> {{message.timestamp | amCalendar }} </span>
43
+ </ng-template> -->
44
+
45
+ <chat-text [text]="message?.text" [color]="textColor" [message]="message"
46
+ [class.chat-text-emoticon]="message?.emoticon"
55
47
  (onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
56
48
  (onAfterMessageRender)="returnOnAfterMessageRender($event)">
57
49
  </chat-text>
58
- <!-- <p #messageEl class="message_innerhtml marked" [innerHTML]="printMessage(message, messageEl, this) | marked"></p> -->
59
- <!-- <div *ngIf="isPopupUrl(message.text); then contentPopup else contentNewTab">here
60
- is ignored</div>
61
- <ng-template #contentPopup>
62
- <p style="text-decoration: underline; padding:8px; cursor: pointer;"
63
- (click)="popupUrl(g.windowContext, message.text,'windowName')">{{strip_tags(message.text)}}</p>
64
- </ng-template>
65
- <ng-template #contentNewTab>
66
- <p #messageEl [innerHTML]="printMessage(message, messageEl, this) | linky"></p>
67
- </ng-template> -->
50
+
51
+ <ng-container *ngIf="areVisibleCAR && support_mode === true">
52
+ <ion-button shape="round" size="small" class="btn-add-msg-as-canned-response" ion-button fill="clear"
53
+ (click)="presentCreateCannedResponseModal()" tooltip="{{addAsCannedResponseTooltipText}}"
54
+ [options]="tooltipOptions" placement="bottom">
55
+ <ion-icon slot="icon-only" name="flash-outline" style="font-size: 1em;"> </ion-icon>
56
+ </ion-button>
57
+ </ng-container>
68
58
  </div>
69
59
  </div>
70
60
 
@@ -21,7 +21,6 @@
21
21
  font-variant: normal;
22
22
  font-weight: 300;
23
23
  overflow: hidden;
24
-
25
24
  }
26
25
  img {
27
26
  border-radius: 8px;
@@ -32,20 +31,33 @@
32
31
  height: auto;
33
32
  object-fit: cover;
34
33
  }
34
+
35
35
  .message_innerhtml {
36
36
  margin: 0px;
37
37
  // padding: 0px 14px;
38
- &.marked{
39
- padding:8px;
40
- margin-block-start: -1em!important;
41
- margin-block-end: -1em!important;
38
+ &.marked {
39
+ padding: 8px;
40
+ margin-block-start: -1em !important;
41
+ margin-block-end: -1em !important;
42
42
  }
43
-
43
+
44
44
  .text-message {
45
45
  padding-top: 14px;
46
46
  }
47
47
  }
48
-
49
48
  }
49
+ // > .button-native
50
+ .btn-add-msg-as-canned-response {
51
+ // padding-left: 5px ;
52
+ // padding-right: 5px ;
53
+ border-radius: 50%;
54
+ --padding-end: 7px;
55
+ --padding-start: 7px;
56
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 6%);
57
+ }
58
+
59
+ // .emoticon {
60
+ // padding: 35px 0px !important;
61
+ // }
50
62
 
51
63
 
@@ -5,6 +5,11 @@ import { MAX_WIDTH_IMAGES } from 'src/chat21-core/utils/constants';
5
5
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
6
6
  import { isFile, isFrame, isImage } from 'src/chat21-core/utils/utils-message';
7
7
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
8
+ import { TranslateService } from '@ngx-translate/core';
9
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
10
+ import * as moment from 'moment';
11
+ import { CreateCannedResponsePage } from 'src/app/pages/create-canned-response/create-canned-response.page'
12
+ import { ModalController } from '@ionic/angular';
8
13
  @Component({
9
14
  selector: 'chat-bubble-message',
10
15
  templateUrl: './bubble-message.component.html',
@@ -14,12 +19,16 @@ export class BubbleMessageComponent implements OnInit, OnChanges {
14
19
 
15
20
  @Input() message: MessageModel;
16
21
  @Input() textColor: string;
22
+ @Input() areVisibleCAR: boolean;
23
+ @Input() support_mode: boolean;
17
24
  @Output() onBeforeMessageRender = new EventEmitter();
18
25
  @Output() onAfterMessageRender = new EventEmitter();
19
26
  @Output() onImageRendered = new EventEmitter<boolean>()
20
27
  isImage = isImage;
21
28
  isFile = isFile;
22
29
  isFrame = isFrame;
30
+ @Input() addAsCannedResponseTooltipText : string;
31
+ public browserLang: string;
23
32
 
24
33
  tooltipOptions = {
25
34
  'show-delay': 500,
@@ -32,21 +41,58 @@ export class BubbleMessageComponent implements OnInit, OnChanges {
32
41
  };
33
42
 
34
43
  private logger: LoggerService = LoggerInstance.getInstance()
35
- constructor(public sanitizer: DomSanitizer) {
44
+
45
+ constructor(
46
+ public sanitizer: DomSanitizer,
47
+ private translate: TranslateService,
48
+ public tiledeskAuthService: TiledeskAuthService,
49
+ public modalController: ModalController,
50
+ ) {
36
51
  // console.log('BUBBLE-MSG Hello !!!!')
37
52
  }
38
53
 
39
54
  ngOnInit() {
55
+ this.setMomentLocale()
56
+ }
57
+
58
+
59
+ setMomentLocale() {
60
+ this.browserLang = this.translate.getBrowserLang();
61
+ const currentUser = this.tiledeskAuthService.getCurrentUser();
62
+ this.logger.log('[BUBBLE-MESSAGE] - ngOnInit - currentUser ', currentUser)
63
+ let currentUserId = ''
64
+ if (currentUser) {
65
+ currentUserId = currentUser.uid
66
+ this.logger.log('[BUBBLE-MESSAGE] - ngOnInit - currentUserId ', currentUserId)
67
+ }
40
68
 
69
+ const stored_preferred_lang = localStorage.getItem(currentUserId + '_lang');
70
+ this.logger.log('[BUBBLE-MESSAGE] stored_preferred_lang: ', stored_preferred_lang);
71
+
72
+
73
+ let chat_lang = ''
74
+ if (this.browserLang && !stored_preferred_lang) {
75
+ chat_lang = this.browserLang
76
+ } else if (this.browserLang && stored_preferred_lang) {
77
+ chat_lang = stored_preferred_lang
78
+ }
79
+ moment.locale(chat_lang , {
80
+ calendar: {
81
+ sameElse: 'LLLL'
82
+ }
83
+ });
84
+ // this.translate.getTranslation(chat_lang).subscribe((labels: string) => {
85
+ // console.log('[BUBBLE-MESSAGE] translations: ', labels);
86
+ // });
41
87
  }
42
88
 
43
89
  ngOnChanges() {
44
- // console.log('BUBBLE-MSG Hello !!!! this.message ', this.message)
45
- if (this.message && this.message.metadata) {
90
+ this.logger.log('BUBBLE-MSG Hello !!!! this.message ', this.message)
91
+ this.logger.log('BUBBLE-MSG ngOnChanges areVisibleCAR', this.areVisibleCAR)
92
+ this.logger.log('BUBBLE-MSG ngOnChanges support_mode', this.support_mode)
93
+ if (this.message && this.message.metadata && typeof this.message.metadata === 'object') {
46
94
  this.getMetadataSize(this.message.metadata)
47
- // console.log('BUBBLE-MSG ngOnChanges message > metadata', this.message.metadata)
48
95
  }
49
-
50
96
  }
51
97
 
52
98
 
@@ -113,11 +159,11 @@ export class BubbleMessageComponent implements OnInit, OnChanges {
113
159
  const domRepresentation = document.getElementsByClassName('chat-tooltip');
114
160
  if (domRepresentation) {
115
161
  const item = domRepresentation[0] as HTMLInputElement;
116
- if (!item.classList.contains('tooltip-show')) {
162
+ if (item && !item.classList.contains('tooltip-show')) {
117
163
  item.classList.add('tooltip-show');
118
164
  }
119
165
  setTimeout(function () {
120
- if (item.classList.contains('tooltip-show')) {
166
+ if (item && item.classList.contains('tooltip-show')) {
121
167
  item.classList.remove('tooltip-show');
122
168
  }
123
169
  }, that.tooltipOptions['hideDelayAfterClick']);
@@ -153,6 +199,26 @@ export class BubbleMessageComponent implements OnInit, OnChanges {
153
199
  this.onImageRendered.emit(event)
154
200
  }
155
201
 
202
+ async presentCreateCannedResponseModal(): Promise<any> {
203
+ this.logger.log('[BUBBLE-MESSAGE] PRESENT CREATE CANNED RESPONSE MODAL ')
204
+ const attributes = {
205
+ message: this.message,
206
+ }
207
+ const modal: HTMLIonModalElement = await this.modalController.create({
208
+ component: CreateCannedResponsePage,
209
+ componentProps: attributes,
210
+ swipeToClose: false,
211
+ backdropDismiss: false,
212
+ })
213
+ modal.onDidDismiss().then((dataReturned: any) => {
214
+ //
215
+ this.logger.log('[BUBBLE-MESSAGE] ', dataReturned.data)
216
+ })
217
+
218
+ return await modal.present()
219
+ }
220
+
221
+
156
222
  // printMessage(message, messageEl, component) {
157
223
  // const messageOBJ = { message: message, sanitizer: this.sanitizer, messageEl: messageEl, component: component}
158
224
  // this.onBeforeMessageRender.emit(messageOBJ)
@@ -1,9 +1,10 @@
1
1
  <div [ngStyle]="{ 'max-width': width +'px', 'max-height': height +'px' }" style="position: relative; ">
2
2
  <div *ngIf="loading" class="loader" [ngStyle]="{ 'width': width +'px', 'height': height +'px' }"></div>
3
- <img [ngStyle]="{ 'width': width +'px', 'height': height +'px' }" style="cursor:pointer" [tooltip]="timeTooltipRight" [options]="tooltipOptions" placement="bottom"
4
- content-type="template" class="message-contentX message-content-imageX" [ngClass]="{'isLoadingImage': loading}"
5
- [src]="metadata.src" (load)="onLoaded($event)" (click)="downloadImage(metadata.src, metadata.name)" />
6
- <ng-template #timeTooltipRight>
3
+ <!-- [tooltip]="timeTooltipRight" [options]="tooltipOptions" placement="bottom" content-type="template" -->
4
+ <img id="myImg" [ngStyle]="{ 'width': width +'px', 'height': height +'px' }" style="cursor:pointer"
5
+ class="message-contentX message-content-imageX" [ngClass]="{'isLoadingImage': loading}"
6
+ [src]="metadata.src" (load)="onLoaded($event)" (click)="openImageViewerModal(metadata.src, metadata.name)" />
7
+ <!-- <ng-template #timeTooltipRight>
7
8
  <span>{{ tooltipMessage }}</span>
8
- </ng-template>
9
- </div>
9
+ </ng-template> -->
10
+ </div>
@@ -14,6 +14,8 @@ export class ImageComponent implements OnInit {
14
14
 
15
15
  loading: boolean = true
16
16
  tooltipMessage: string;
17
+ modal: any
18
+ span: any
17
19
 
18
20
  tooltipOptions = {
19
21
  'show-delay': 0,
@@ -45,7 +47,7 @@ export class ImageComponent implements OnInit {
45
47
  this.onImageRendered.emit(true)
46
48
  }
47
49
 
48
- downloadImage(url: string, fileName: string) {
50
+ _downloadImage(url: string, fileName: string) {
49
51
  // console.log('Image COMP - IMAGE URL ', url)
50
52
  // console.log('Image COMP - IMAGE FILENAME ', fileName)
51
53
  const a: any = document.createElement('a');
@@ -56,4 +58,21 @@ export class ImageComponent implements OnInit {
56
58
  a.click();
57
59
  a.remove();
58
60
  }
61
+
62
+ openImageViewerModal(url: string, fileName: string) {
63
+ this.modal = document.getElementById("image-viewer-modal");
64
+ // console.log('has clicked open image-viewer modal ', this.modal)
65
+ this.modal.style.display = "block";
66
+ var modalImg = <HTMLImageElement>document.getElementById("image-viewer-img");
67
+ var captionText = document.getElementById("caption");
68
+ modalImg.src = url
69
+ captionText.innerHTML = fileName;
70
+
71
+ }
72
+
73
+
74
+
75
+
59
76
  }
77
+
78
+
@@ -4,7 +4,7 @@
4
4
  margin-top: -6px;
5
5
  margin-bottom: 5px;
6
6
  height: auto;
7
-
7
+ padding-left: 8px;
8
8
 
9
9
  .div-button {
10
10
  display: inline-block;
@@ -25,7 +25,8 @@
25
25
  <!-- -------------------------------------------------------------------------- -->
26
26
  <!-- New <ion-spinner class="spinner-middle" style="margin-left: 19px;"></ion-spinner> -->
27
27
  <!-- -------------------------------------------------------------------------- -->
28
- <ion-item *ngIf="isOnline === false" button="true" lines="none" class="ion-no-padding waiting-for-connection">
28
+ <!-- <ion-item *ngIf="isOnline === false" button="true" lines="none" class="ion-no-padding waiting-for-connection">
29
+ <div tabindex="0"></div>
29
30
  <ion-avatar item-start>
30
31
  <div class="sk-fading-circle">
31
32
  <div class="sk-circle1 sk-circle"></div>
@@ -43,10 +44,39 @@
43
44
  </div>
44
45
  </ion-avatar>
45
46
  <ion-label part="message-text" class="waiting-for-network-msg"> Waiting for network</ion-label>
46
- </ion-item>
47
+ </ion-item> -->
47
48
 
48
- <ion-item button="true" lines="none" class="ion-no-padding" [class.ion-selected]="conversation.uid === uidConvSelected"
49
- *ngFor="let conversation of listConversations" (click)="openConversationByID(conversation)">
49
+ <!-- <ion-item>
50
+ <div tabindex="0"></div>
51
+ <iframe loading="lazy" width="100%" height="70px" style="border: unset;" [src]="PROJECT_FOR_PANEL"></iframe>
52
+ </ion-item> -->
53
+ <!-- <ion-item button="true" (click)="openUnsevedConversationIframe()">
54
+ <app-project-item
55
+ (projectIdEvent)="getLastProjectId($event)"></app-project-item>
56
+ </ion-item> -->
57
+
58
+
59
+ <!-- <ion-item-sliding disabled>
60
+ <ion-item>
61
+ <ion-label>
62
+ Sliding Item, Icons Start
63
+ </ion-label>
64
+ </ion-item>
65
+ <ion-item-options>
66
+ <ion-item-option color="primary">
67
+ <ion-icon slot="start" ios="ellipsis-horizontal" md="ellipsis-vertical"></ion-icon>
68
+ More
69
+ </ion-item-option>
70
+ <ion-item-option color="secondary">
71
+ <ion-icon slot="start" name="archive"></ion-icon>
72
+ Archive
73
+ </ion-item-option>
74
+ </ion-item-options>
75
+ </ion-item-sliding> -->
76
+
77
+
78
+ <ion-item button="true" lines="none" class="ion-no-padding" [class.ion-selected]="conversation?.uid === uidConvSelected"
79
+ *ngFor="let conversation of listConversations" (click)="openConversationByID(conversation)" detail=false>
50
80
  <div tabindex="0"></div>
51
81
 
52
82
  <!-- <div [class.selected]="conversation.uid === uidConvSelected"></div> -->
@@ -88,11 +118,17 @@
88
118
  <ion-note *ngIf="!conversation.archived" class="conversation_time">{{conversation.timestamp | amTimeAgo}}</ion-note>
89
119
 
90
120
  <ion-buttons slot="end">
91
- <ion-button *ngIf="!conversation.archived" [ngClass]="{'hide': !isApp, 'button-on-desktop': !isApp }"
121
+ <ion-button *ngIf="!conversation.archived" [tooltip]="archiveTooltip" [options]="tooltip_options" placement="bottom" content-type="template"
122
+ [ngClass]="{'hide': !isApp, 'button-on-desktop': !isApp, 'button-on-mobile': isApp }"
92
123
  id="{{ 'close_conversation_button' + conversation.uid }}" class="close-conversation-button" ion-button clear
93
124
  item-end (click)="closeConversation(conversation);$event.stopPropagation();" padding>
94
125
  <ion-icon slot="icon-only" style="display:block;" id="{{ 'close_button_icon' + conversation.uid }}"
95
126
  color="close-conversation" name="archive-outline" item-end></ion-icon>
127
+
128
+ <ng-template #archiveTooltip>
129
+ <span *ngIf="conversation?.recipient.startsWith('support-group')"> {{ resolve_btn_tooltip}} </span>
130
+ <span *ngIf="!conversation?.recipient.startsWith('support-group')"> {{ archive_btn_tooltip }} </span>
131
+ </ng-template>
96
132
  </ion-button>
97
133
  <!-- <ion-button *ngIf="conversation.archived" class="close-conversation-button" ion-button clear item-end disabled padding>
98
134
  <!- - <ion-icon style="display:block;" id="{{ 'close_button_icon' + conversation.uid }}" color="close-conversation" name="archive-outline" item-end></ion-icon> - ->
@@ -103,21 +139,20 @@
103
139
 
104
140
  <div item-end *ngIf="conversation?.archived" class="achived-icon-wpr">
105
141
  <span *ngIf="(conversation.timestamp | amDateFormat:'YYYY') === currentYear" class="time-in-archived">
106
- {{browserLang === 'it' ? (conversation.timestamp| amDateFormat:'DD MMM') : (conversation.timestamp |
107
- amDateFormat:'MMM DD')}}
142
+ {{browserLang === 'en' ? (conversation.timestamp | amDateFormat:'MMM DD') : (conversation.timestamp| amDateFormat:'DD MMM')}}
108
143
 
109
144
  <!-- {{conversation.timestamp | amDateFormat:'DD MMM'}} -->
110
145
  </span>
111
146
  <span *ngIf="(conversation.timestamp | amDateFormat:'YYYY') !== currentYear" class="time-in-archived">
112
- {{browserLang === 'it' ? (conversation.timestamp| amDateFormat:'DD MMM') : (conversation.timestamp |
113
- amDateFormat:'MMM DD YYYY')}}
147
+ {{browserLang === 'en' ? (conversation.timestamp | amDateFormat:'MMM DD YYYY') : (conversation.timestamp| amDateFormat:'DD MMM YYYY') }}
114
148
  <!-- {{conversation.timestamp | amDateFormat:'DD MMM YYYY'}} -->
115
149
  </span>
116
- <i class="material-icons" item-end style="font-size: 15px;font-weight: 400;color: #666666;"> history </i>
150
+ <!-- <i class="material-icons" item-end style="font-size: 15px;font-weight: 400;color: #666666;"> history </i> -->
117
151
  </div>
118
152
 
119
153
  <!-- && !conversation?.archived -->
120
- <div item-end class="notification_point" [ngClass]="{'notification_point-on-desktop': !isApp }"
154
+ <div item-end class="notification_point"
155
+ [ngClass]="{'notification_point-on-desktop': !isApp, 'notification_point-on-mobile': isApp }"
121
156
  *ngIf="conversation.is_new">
122
157
  </div>
123
158