@chat21/chat21-ionic 2.0.14 → 3.0.5-8.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 (699) hide show
  1. package/.github/workflows/docker-community-push-latest.yml +22 -0
  2. package/.github/workflows/docker-image-tag-community-tag-push.yml +21 -0
  3. package/CHANGELOG.md +531 -212
  4. package/Dockerfile +1 -2
  5. package/LICENSE +21 -661
  6. package/README.md +31 -9
  7. package/angular.json +230 -0
  8. package/browserslist +12 -0
  9. package/config.xml +60 -47
  10. package/deploy_pre.sh +14 -12
  11. package/deploy_prod.sh +13 -34
  12. package/env.sample +26 -9
  13. package/ionic.config.json +2 -2
  14. package/karma.conf.js +31 -0
  15. package/nginx.conf +1 -1
  16. package/package.json +91 -105
  17. package/publish_pre.sh +33 -0
  18. package/publish_prod.sh +33 -0
  19. package/resources/Android/icon/drawable-hdpi-icon.png +0 -0
  20. package/resources/Android/icon/drawable-ldpi-icon.png +0 -0
  21. package/resources/Android/icon/drawable-mdpi-icon.png +0 -0
  22. package/resources/Android/icon/drawable-xhdpi-icon.png +0 -0
  23. package/resources/Android/icon/drawable-xxhdpi-icon.png +0 -0
  24. package/resources/Android/icon/drawable-xxxhdpi-icon.png +0 -0
  25. package/resources/Android/icon.png +0 -0
  26. package/resources/Android/splash/drawable-land-hdpi-screen.png +0 -0
  27. package/resources/Android/splash/drawable-land-ldpi-screen.png +0 -0
  28. package/resources/Android/splash/drawable-land-mdpi-screen.png +0 -0
  29. package/resources/Android/splash/drawable-land-xhdpi-screen.png +0 -0
  30. package/resources/Android/splash/drawable-land-xxhdpi-screen.png +0 -0
  31. package/resources/Android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  32. package/resources/Android/splash/drawable-port-hdpi-screen.png +0 -0
  33. package/resources/Android/splash/drawable-port-ldpi-screen.png +0 -0
  34. package/resources/Android/splash/drawable-port-mdpi-screen.png +0 -0
  35. package/resources/Android/splash/drawable-port-xhdpi-screen.png +0 -0
  36. package/resources/Android/splash/drawable-port-xxhdpi-screen.png +0 -0
  37. package/resources/Android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  38. package/resources/Android/splash.png +0 -0
  39. package/src/app/app-routing.module.ts +86 -0
  40. package/src/app/app.component.html +23 -0
  41. package/src/app/app.component.scss +6 -0
  42. package/src/app/app.component.spec.ts +47 -0
  43. package/src/app/app.component.ts +865 -129
  44. package/src/app/app.module.ts +306 -135
  45. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.html +143 -0
  46. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +335 -0
  47. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.spec.ts +179 -0
  48. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +303 -0
  49. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +149 -0
  50. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +193 -0
  51. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.spec.ts +24 -0
  52. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +92 -0
  53. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +17 -0
  54. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.scss +83 -0
  55. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.spec.ts +27 -0
  56. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +43 -0
  57. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +71 -0
  58. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +51 -0
  59. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.spec.ts +84 -0
  60. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +170 -0
  61. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.html +3 -0
  62. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +83 -0
  63. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.spec.ts +25 -0
  64. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts +37 -0
  65. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html +24 -0
  66. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +61 -0
  67. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.spec.ts +25 -0
  68. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.ts +30 -0
  69. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.html +3 -0
  70. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +47 -0
  71. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.spec.ts +25 -0
  72. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.ts +29 -0
  73. package/src/app/chatlib/conversation-detail/message/frame/frame.component.html +3 -0
  74. package/{bin/chat21-ionic → src/app/chatlib/conversation-detail/message/frame/frame.component.scss} +0 -0
  75. package/src/app/chatlib/conversation-detail/message/frame/frame.component.spec.ts +25 -0
  76. package/src/app/chatlib/conversation-detail/message/frame/frame.component.ts +33 -0
  77. package/src/app/chatlib/conversation-detail/message/image/image.component.html +9 -0
  78. package/src/app/chatlib/conversation-detail/message/image/image.component.scss +34 -0
  79. package/src/app/chatlib/conversation-detail/message/image/image.component.spec.ts +35 -0
  80. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +59 -0
  81. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.html +2 -0
  82. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +15 -0
  83. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.spec.ts +27 -0
  84. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.ts +35 -0
  85. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +56 -0
  86. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +169 -0
  87. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.spec.ts +33 -0
  88. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +80 -0
  89. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.html +18 -0
  90. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +27 -0
  91. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.spec.ts +25 -0
  92. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.ts +24 -0
  93. package/src/app/chatlib/conversation-detail/message/text/text.component.html +5 -0
  94. package/src/app/chatlib/conversation-detail/message/text/text.component.scss +26 -0
  95. package/src/app/chatlib/conversation-detail/message/text/text.component.spec.ts +33 -0
  96. package/src/app/chatlib/conversation-detail/message/text/text.component.ts +56 -0
  97. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +124 -0
  98. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +358 -0
  99. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.spec.ts +24 -0
  100. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +116 -0
  101. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.html +46 -0
  102. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.scss +200 -0
  103. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.spec.ts +27 -0
  104. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +135 -0
  105. package/src/app/components/authentication/login/login.component.html +65 -0
  106. package/src/app/components/authentication/login/login.component.scss +85 -0
  107. package/src/app/components/authentication/login/login.component.spec.ts +24 -0
  108. package/src/app/components/authentication/login/login.component.ts +173 -0
  109. package/src/app/components/contacts-directory/contacts-directory.component.html +22 -0
  110. package/src/app/components/contacts-directory/contacts-directory.component.scss +123 -0
  111. package/src/app/components/contacts-directory/contacts-directory.component.spec.ts +24 -0
  112. package/src/app/components/contacts-directory/contacts-directory.component.ts +109 -0
  113. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.html +3 -0
  114. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.scss +21 -0
  115. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.spec.ts +24 -0
  116. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.ts +14 -0
  117. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.html +54 -0
  118. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.scss +98 -0
  119. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.spec.ts +24 -0
  120. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +84 -0
  121. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.html +30 -0
  122. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.scss +83 -0
  123. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.spec.ts +24 -0
  124. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +68 -0
  125. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.html +3 -0
  126. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.scss +10 -0
  127. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.spec.ts +24 -0
  128. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.ts +14 -0
  129. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +68 -0
  130. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +149 -0
  131. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.spec.ts +24 -0
  132. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +112 -0
  133. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +63 -0
  134. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +119 -0
  135. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.spec.ts +25 -0
  136. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +644 -0
  137. package/src/app/components/conversation-detail/option-header/option-header.component.html +13 -0
  138. package/src/app/components/conversation-detail/option-header/option-header.component.scss +0 -0
  139. package/src/app/components/conversation-detail/option-header/option-header.component.spec.ts +24 -0
  140. package/src/app/components/conversation-detail/option-header/option-header.component.ts +24 -0
  141. package/src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component.html +64 -0
  142. package/src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component.scss +135 -0
  143. package/src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component.spec.ts +24 -0
  144. package/src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component.ts +53 -0
  145. package/src/app/components/conversation-info/conversation-info.module.ts +13 -0
  146. package/src/app/components/conversation-info/info-content/info-content.component.html +18 -0
  147. package/src/app/components/conversation-info/info-content/info-content.component.scss +5 -0
  148. package/src/app/components/conversation-info/info-content/info-content.component.spec.ts +24 -0
  149. package/src/app/components/conversation-info/info-content/info-content.component.ts +395 -0
  150. package/src/app/components/conversation-info/info-direct/info-direct.component.html +57 -0
  151. package/src/app/components/conversation-info/info-direct/info-direct.component.scss +62 -0
  152. package/src/app/components/conversation-info/info-direct/info-direct.component.spec.ts +24 -0
  153. package/src/app/components/conversation-info/info-direct/info-direct.component.ts +67 -0
  154. package/src/app/components/conversation-info/info-group/info-group.component.html +115 -0
  155. package/src/app/components/conversation-info/info-group/info-group.component.scss +80 -0
  156. package/src/app/components/conversation-info/info-group/info-group.component.spec.ts +24 -0
  157. package/src/app/components/conversation-info/info-group/info-group.component.ts +218 -0
  158. package/src/app/components/conversation-info/info-support-group/info-support-group.component.html +6 -0
  159. package/src/app/components/conversation-info/info-support-group/info-support-group.component.scss +0 -0
  160. package/src/app/components/conversation-info/info-support-group/info-support-group.component.spec.ts +24 -0
  161. package/src/app/components/conversation-info/info-support-group/info-support-group.component.ts +29 -0
  162. package/src/app/components/ddp-header/ddp-header.component.html +31 -0
  163. package/src/app/components/ddp-header/ddp-header.component.scss +26 -0
  164. package/src/app/components/ddp-header/ddp-header.component.spec.ts +24 -0
  165. package/src/app/components/ddp-header/ddp-header.component.ts +31 -0
  166. package/src/app/components/utils/avatar-profile/avatar-profile.component.html +5 -0
  167. package/src/app/components/utils/avatar-profile/avatar-profile.component.scss +29 -0
  168. package/src/app/components/utils/avatar-profile/avatar-profile.component.spec.ts +24 -0
  169. package/src/app/components/utils/avatar-profile/avatar-profile.component.ts +24 -0
  170. package/src/app/components/utils/user-presence/user-presence.component.html +2 -0
  171. package/src/app/components/utils/user-presence/user-presence.component.scss +24 -0
  172. package/src/app/components/utils/user-presence/user-presence.component.spec.ts +24 -0
  173. package/src/app/components/utils/user-presence/user-presence.component.ts +159 -0
  174. package/src/app/directives/autofocus.directive.ts +41 -0
  175. package/src/app/directives/html-entities-encode.pipe.spec.ts +8 -0
  176. package/src/app/directives/html-entities-encode.pipe.ts +17 -0
  177. package/src/app/directives/marked.pipe.spec.ts +8 -0
  178. package/src/app/directives/marked.pipe.ts +27 -0
  179. package/src/app/directives/safe-html.pipe.ts +16 -0
  180. package/src/app/pages/authentication/login/login-routing.module.ts +17 -0
  181. package/src/app/pages/authentication/login/login.module.ts +39 -0
  182. package/src/app/pages/authentication/login/login.page.html +8 -0
  183. package/src/app/pages/authentication/login/login.page.scss +5 -0
  184. package/src/app/pages/authentication/login/login.page.spec.ts +24 -0
  185. package/src/app/pages/authentication/login/login.page.ts +187 -0
  186. package/src/app/pages/contacts-directory/contacts-directory-routing.module.ts +17 -0
  187. package/src/app/pages/contacts-directory/contacts-directory.module.ts +42 -0
  188. package/src/app/pages/contacts-directory/contacts-directory.page.html +19 -0
  189. package/src/app/pages/contacts-directory/contacts-directory.page.scss +0 -0
  190. package/src/app/pages/contacts-directory/contacts-directory.page.spec.ts +24 -0
  191. package/src/app/pages/contacts-directory/contacts-directory.page.ts +125 -0
  192. package/src/app/pages/conversation-detail/conversation-detail-routing.module.ts +17 -0
  193. package/src/app/pages/conversation-detail/conversation-detail.module.ts +69 -0
  194. package/src/app/pages/conversation-detail/conversation-detail.page.html +189 -0
  195. package/src/app/pages/conversation-detail/conversation-detail.page.scss +492 -0
  196. package/src/app/pages/conversation-detail/conversation-detail.page.spec.ts +24 -0
  197. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1431 -0
  198. package/src/app/pages/conversations-list/conversations-list-routing.module.ts +17 -0
  199. package/src/app/pages/conversations-list/conversations-list.module.ts +43 -0
  200. package/src/app/pages/conversations-list/conversations-list.page.html +91 -0
  201. package/src/app/pages/conversations-list/conversations-list.page.scss +139 -0
  202. package/src/app/pages/conversations-list/conversations-list.page.spec.ts +24 -0
  203. package/src/app/pages/conversations-list/conversations-list.page.ts +824 -0
  204. package/src/app/pages/details/details-routing.module.ts +17 -0
  205. package/src/app/pages/details/details.module.ts +21 -0
  206. package/src/app/pages/details/details.page.html +28 -0
  207. package/src/app/pages/details/details.page.scss +23 -0
  208. package/src/app/pages/details/details.page.spec.ts +24 -0
  209. package/src/app/pages/details/details.page.ts +65 -0
  210. package/src/app/pages/loader-preview/loader-preview-routing.module.ts +17 -0
  211. package/src/app/pages/loader-preview/loader-preview.module.ts +29 -0
  212. package/src/app/pages/loader-preview/loader-preview.page.html +62 -0
  213. package/src/app/pages/loader-preview/loader-preview.page.scss +117 -0
  214. package/src/app/pages/loader-preview/loader-preview.page.spec.ts +24 -0
  215. package/src/app/pages/loader-preview/loader-preview.page.ts +353 -0
  216. package/src/app/pages/profile-info/profile-info-routing.module.ts +17 -0
  217. package/src/app/pages/profile-info/profile-info.module.ts +41 -0
  218. package/src/app/pages/profile-info/profile-info.page.html +86 -0
  219. package/src/app/pages/profile-info/profile-info.page.scss +264 -0
  220. package/src/app/pages/profile-info/profile-info.page.spec.ts +24 -0
  221. package/src/app/pages/profile-info/profile-info.page.ts +223 -0
  222. package/src/app/services/app-config.ts +35 -0
  223. package/src/app/services/canned-responses/canned-responses.service.spec.ts +12 -0
  224. package/src/app/services/canned-responses/canned-responses.service.ts +49 -0
  225. package/src/app/services/contacts/contacts.service.spec.ts +12 -0
  226. package/src/app/services/contacts/contacts.service.ts +172 -0
  227. package/src/app/services/events-service.ts +79 -0
  228. package/src/app/services/nav-proxy.service.spec.ts +12 -0
  229. package/src/app/services/nav-proxy.service.ts +80 -0
  230. package/src/app/services/network-service/network.service.spec.ts +12 -0
  231. package/src/app/services/network-service/network.service.ts +46 -0
  232. package/src/app/services/tiledesk/tiledesk.service.spec.ts +12 -0
  233. package/src/app/services/tiledesk/tiledesk.service.ts +78 -0
  234. package/src/app/shared/shared-conversation-info.module.ts +33 -0
  235. package/src/app/shared/shared.module.ts +124 -0
  236. package/src/{utils → app/utils}/constants.ts-e +0 -0
  237. package/src/app/utils/scrollbar-theme.directive.ts +63 -0
  238. package/src/assets/i18n/en.json +114 -38
  239. package/src/assets/i18n/it.json +93 -10
  240. package/src/assets/icon/favicon.ico +0 -0
  241. package/src/assets/icon/ionic_favicon.png +0 -0
  242. package/src/assets/images/f21ico-done.svg +1 -0
  243. package/src/assets/images/f21ico-done_all.svg +1 -0
  244. package/src/assets/images/f21ico-schedule.svg +1 -0
  245. package/src/assets/images/file-alt-solid.png +0 -0
  246. package/src/assets/images/no_conversation.jpg +0 -0
  247. package/src/assets/{img → images}/no_image.png +0 -0
  248. package/src/assets/images/tiledesk_logo_50x50.png +0 -0
  249. package/src/assets/js/chat21client.js +965 -0
  250. package/src/assets/js/mqtt/4.1.0/mqtt.min.js +1 -0
  251. package/src/assets/js/mqtt/4.2.6/mqtt.min.js +1 -0
  252. package/src/assets/js/mqtt/4.2.8/mqtt.min.js +1 -0
  253. package/src/assets/shapes.svg +1 -0
  254. package/src/assets/sounds/pling.mp3 +0 -0
  255. package/src/chat-config-mqtt-ver-uploaded.json +22 -0
  256. package/src/chat-config-mqtt.json +26 -0
  257. package/src/chat-config-pre-test.json +32 -0
  258. package/src/chat-config-pre.json +23 -0
  259. package/src/chat-config-template.json +17 -6
  260. package/src/chat-config.json +27 -0
  261. package/src/{models → chat21-core/models}/conversation.ts +6 -2
  262. package/src/{models → chat21-core/models}/group.ts +7 -5
  263. package/src/{models → chat21-core/models}/message.ts +8 -8
  264. package/src/{models → chat21-core/models}/upload.ts +5 -5
  265. package/src/{models → chat21-core/models}/user.ts +2 -1
  266. package/src/chat21-core/providers/abstract/app-storage.service.spec.ts +15 -0
  267. package/src/chat21-core/providers/abstract/app-storage.service.ts +17 -0
  268. package/src/chat21-core/providers/abstract/archivedconversations-handler.service.spec.ts +13 -0
  269. package/src/chat21-core/providers/abstract/archivedconversations-handler.service.ts +34 -0
  270. package/src/chat21-core/providers/abstract/conversation-handler-builder.service.spec.ts +12 -0
  271. package/src/chat21-core/providers/abstract/conversation-handler-builder.service.ts +11 -0
  272. package/src/chat21-core/providers/abstract/conversation-handler.service.spec.ts +12 -0
  273. package/src/chat21-core/providers/abstract/conversation-handler.service.ts +43 -0
  274. package/src/chat21-core/providers/abstract/conversations-handler.service.spec.ts +12 -0
  275. package/src/chat21-core/providers/abstract/conversations-handler.service.ts +42 -0
  276. package/src/chat21-core/providers/abstract/groups-handler.service.spec.ts +12 -0
  277. package/src/chat21-core/providers/abstract/groups-handler.service.ts +28 -0
  278. package/src/chat21-core/providers/abstract/image-repo.service.spec.ts +12 -0
  279. package/src/chat21-core/providers/abstract/image-repo.service.ts +26 -0
  280. package/src/chat21-core/providers/abstract/logger.service.spec.ts +12 -0
  281. package/src/chat21-core/providers/abstract/logger.service.ts +16 -0
  282. package/src/chat21-core/providers/abstract/messagingAuth.service.spec.ts +12 -0
  283. package/src/chat21-core/providers/abstract/messagingAuth.service.ts +54 -0
  284. package/src/chat21-core/providers/abstract/notifications.service.spec.ts +12 -0
  285. package/src/chat21-core/providers/abstract/notifications.service.ts +31 -0
  286. package/src/chat21-core/providers/abstract/presence.service.spec.ts +12 -0
  287. package/src/chat21-core/providers/abstract/presence.service.ts +34 -0
  288. package/src/chat21-core/providers/abstract/typing.service.spec.ts +12 -0
  289. package/src/chat21-core/providers/abstract/typing.service.ts +31 -0
  290. package/src/chat21-core/providers/abstract/upload.service.spec.ts +12 -0
  291. package/src/chat21-core/providers/abstract/upload.service.ts +39 -0
  292. package/src/chat21-core/providers/chat-manager.ts +282 -0
  293. package/src/chat21-core/providers/custom-translate.service.spec.ts +12 -0
  294. package/src/chat21-core/providers/custom-translate.service.ts +42 -0
  295. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +476 -0
  296. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +376 -0
  297. package/src/chat21-core/providers/firebase/firebase-conversation-handler-builder.service.ts +19 -0
  298. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +416 -0
  299. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +570 -0
  300. package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +303 -0
  301. package/src/chat21-core/providers/firebase/firebase-image-repo.ts +40 -0
  302. package/src/chat21-core/providers/firebase/firebase-init-service.ts +31 -0
  303. package/src/chat21-core/providers/firebase/firebase-notifications.ts +238 -0
  304. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +190 -0
  305. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +93 -0
  306. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +106 -0
  307. package/src/chat21-core/providers/localSessionStorage.ts +215 -0
  308. package/src/chat21-core/providers/logger/customLogger.ts +70 -0
  309. package/src/chat21-core/providers/logger/loggerInstance.ts +20 -0
  310. package/src/chat21-core/providers/mqtt/chat-service.ts +44 -0
  311. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +707 -0
  312. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +313 -0
  313. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler-builder.service.ts +25 -0
  314. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +448 -0
  315. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +593 -0
  316. package/src/chat21-core/providers/mqtt/mqtt-groups-handler.ts +139 -0
  317. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +32 -0
  318. package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +229 -0
  319. package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +93 -0
  320. package/src/chat21-core/providers/native/native-image-repo.ts +30 -0
  321. package/src/chat21-core/providers/native/native-upload-service.ts +85 -0
  322. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.spec.ts +12 -0
  323. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +202 -0
  324. package/src/chat21-core/utils/constants.ts +109 -0
  325. package/src/chat21-core/utils/user-typing/user-typing.component.html +6 -0
  326. package/src/chat21-core/utils/user-typing/user-typing.component.scss +62 -0
  327. package/src/chat21-core/utils/user-typing/user-typing.component.spec.ts +24 -0
  328. package/src/chat21-core/utils/user-typing/user-typing.component.ts +114 -0
  329. package/src/chat21-core/utils/utils-message.ts +117 -0
  330. package/src/chat21-core/utils/utils-user.ts +46 -0
  331. package/src/chat21-core/utils/utils.ts +893 -0
  332. package/src/global.scss +585 -0
  333. package/src/index.html +71 -42
  334. package/src/main.ts +12 -0
  335. package/src/manifest.json +0 -11
  336. package/src/models/department.ts +12 -0
  337. package/src/polyfills.ts +73 -0
  338. package/src/test.ts +21 -0
  339. package/src/theme/variables.scss +236 -93
  340. package/src/variables.scss +30 -0
  341. package/src/zone-flags.ts +5 -0
  342. package/tsconfig.app.json +14 -0
  343. package/tsconfig.json +23 -18
  344. package/tsconfig.spec.json +19 -0
  345. package/tslint.json +84 -7
  346. package/app.json +0 -7
  347. package/build_prod.sh +0 -10
  348. package/curl +0 -1
  349. package/deploy_dev.sh +0 -28
  350. package/docs/changelog.html +0 -227
  351. package/docs/classes/ConversationModel.html +0 -1022
  352. package/docs/classes/GroupModel.html +0 -527
  353. package/docs/classes/MessageModel.html +0 -843
  354. package/docs/classes/UploadModel.html +0 -417
  355. package/docs/classes/UserModel.html +0 -728
  356. package/docs/classes/_DetailPage.html +0 -144
  357. package/docs/classes/_MasterPage.html +0 -144
  358. package/docs/components/ArchivedConversationsPage.html +0 -1024
  359. package/docs/components/ChatBubble.html +0 -327
  360. package/docs/components/DettaglioConversazionePage.html +0 -6060
  361. package/docs/components/ElasticTextarea.html +0 -619
  362. package/docs/components/InfoAdvancedPage.html +0 -656
  363. package/docs/components/InfoConversationPage.html +0 -5681
  364. package/docs/components/InfoMessagePage.html +0 -993
  365. package/docs/components/InfoUserPage.html +0 -1420
  366. package/docs/components/ListaConversazioniPage.html +0 -3576
  367. package/docs/components/LoginPage.html +0 -1457
  368. package/docs/components/MyApp.html +0 -1388
  369. package/docs/components/PlaceholderPage.html +0 -397
  370. package/docs/components/PopoverPage.html +0 -986
  371. package/docs/components/PopoverProfilePage.html +0 -639
  372. package/docs/components/ProfilePage.html +0 -1187
  373. package/docs/components/RegisterPage.html +0 -1271
  374. package/docs/components/ResetpwdPage.html +0 -1039
  375. package/docs/components/UpdateImageProfilePage.html +0 -997
  376. package/docs/components/UsersPage.html +0 -1297
  377. package/docs/coverage.html +0 -1421
  378. package/docs/dependencies.html +0 -210
  379. package/docs/directives/AutosizeDirective.html +0 -556
  380. package/docs/fonts/FontAwesome.otf +0 -0
  381. package/docs/fonts/fontawesome-webfont.eot +0 -0
  382. package/docs/fonts/fontawesome-webfont.svg +0 -685
  383. package/docs/fonts/fontawesome-webfont.ttf +0 -0
  384. package/docs/fonts/fontawesome-webfont.woff +0 -0
  385. package/docs/fonts/fontawesome-webfont.woff2 +0 -0
  386. package/docs/fonts/ionicons.eot +0 -0
  387. package/docs/fonts/ionicons.svg +0 -2090
  388. package/docs/fonts/ionicons.ttf +0 -0
  389. package/docs/fonts/ionicons.woff +0 -0
  390. package/docs/fonts/ionicons.woff2 +0 -0
  391. package/docs/fonts/roboto-v15-latin-300.eot +0 -0
  392. package/docs/fonts/roboto-v15-latin-300.svg +0 -314
  393. package/docs/fonts/roboto-v15-latin-300.ttf +0 -0
  394. package/docs/fonts/roboto-v15-latin-300.woff +0 -0
  395. package/docs/fonts/roboto-v15-latin-300.woff2 +0 -0
  396. package/docs/fonts/roboto-v15-latin-700.eot +0 -0
  397. package/docs/fonts/roboto-v15-latin-700.svg +0 -310
  398. package/docs/fonts/roboto-v15-latin-700.ttf +0 -0
  399. package/docs/fonts/roboto-v15-latin-700.woff +0 -0
  400. package/docs/fonts/roboto-v15-latin-700.woff2 +0 -0
  401. package/docs/fonts/roboto-v15-latin-italic.eot +0 -0
  402. package/docs/fonts/roboto-v15-latin-italic.svg +0 -323
  403. package/docs/fonts/roboto-v15-latin-italic.ttf +0 -0
  404. package/docs/fonts/roboto-v15-latin-italic.woff +0 -0
  405. package/docs/fonts/roboto-v15-latin-italic.woff2 +0 -0
  406. package/docs/fonts/roboto-v15-latin-regular.eot +0 -0
  407. package/docs/fonts/roboto-v15-latin-regular.svg +0 -308
  408. package/docs/fonts/roboto-v15-latin-regular.ttf +0 -0
  409. package/docs/fonts/roboto-v15-latin-regular.woff +0 -0
  410. package/docs/fonts/roboto-v15-latin-regular.woff2 +0 -0
  411. package/docs/graph/dependencies.svg +0 -870
  412. package/docs/images/compodoc-vectorise-inverted.png +0 -0
  413. package/docs/images/compodoc-vectorise-inverted.svg +0 -201
  414. package/docs/images/compodoc-vectorise.png +0 -0
  415. package/docs/images/compodoc-vectorise.svg +0 -201
  416. package/docs/images/coverage-badge-documentation.svg +0 -9
  417. package/docs/images/coverage-badge.svg +0 -9
  418. package/docs/images/favicon.ico +0 -0
  419. package/docs/index.html +0 -233
  420. package/docs/injectables/AppConfigProvider.html +0 -411
  421. package/docs/injectables/AuthService.html +0 -1016
  422. package/docs/injectables/ChatArchivedConversationsHandler.html +0 -1832
  423. package/docs/injectables/ChatContactsSynchronizer.html +0 -841
  424. package/docs/injectables/ChatConversationHandler.html +0 -1960
  425. package/docs/injectables/ChatConversationsHandler.html +0 -2584
  426. package/docs/injectables/ChatManager.html +0 -1779
  427. package/docs/injectables/ChatPresenceHandler.html +0 -1187
  428. package/docs/injectables/CustomTranslateService.html +0 -496
  429. package/docs/injectables/DatabaseProvider.html +0 -1444
  430. package/docs/injectables/GroupService.html +0 -1458
  431. package/docs/injectables/MessagingService.html +0 -1165
  432. package/docs/injectables/NavProxyService.html +0 -1028
  433. package/docs/injectables/TiledeskConversationProvider.html +0 -945
  434. package/docs/injectables/UploadService.html +0 -791
  435. package/docs/injectables/UserService.html +0 -1612
  436. package/docs/js/compodoc.js +0 -14
  437. package/docs/js/lazy-load-graphs.js +0 -44
  438. package/docs/js/libs/EventDispatcher.js +0 -5
  439. package/docs/js/libs/bootstrap-native.js +0 -2
  440. package/docs/js/libs/clipboard.min.js +0 -7
  441. package/docs/js/libs/custom-elements-es5-adapter.js +0 -15
  442. package/docs/js/libs/custom-elements.min.js +0 -38
  443. package/docs/js/libs/d3.v3.min.js +0 -2
  444. package/docs/js/libs/deep-iterator.js +0 -2
  445. package/docs/js/libs/es6-shim.min.js +0 -11
  446. package/docs/js/libs/htmlparser.js +0 -23
  447. package/docs/js/libs/innersvg.js +0 -9
  448. package/docs/js/libs/lit-html.js +0 -1
  449. package/docs/js/libs/prism.js +0 -14
  450. package/docs/js/libs/promise.min.js +0 -6
  451. package/docs/js/libs/svg-pan-zoom.min.js +0 -3
  452. package/docs/js/libs/tablesort.min.js +0 -6
  453. package/docs/js/libs/tablesort.number.min.js +0 -6
  454. package/docs/js/libs/vis.min.js +0 -46
  455. package/docs/js/libs/zepto.min.js +0 -2
  456. package/docs/js/menu-wc.js +0 -594
  457. package/docs/js/menu.js +0 -261
  458. package/docs/js/routes.js +0 -280
  459. package/docs/js/search/lunr.min.js +0 -6
  460. package/docs/js/search/search-lunr.js +0 -67
  461. package/docs/js/search/search.js +0 -268
  462. package/docs/js/search/search_index.js +0 -4
  463. package/docs/js/sourceCode.js +0 -58
  464. package/docs/js/svg-pan-zoom.controls.js +0 -53
  465. package/docs/js/tabs.js +0 -21
  466. package/docs/js/tree.js +0 -147
  467. package/docs/license.html +0 -664
  468. package/docs/miscellaneous/functions.html +0 -2417
  469. package/docs/miscellaneous/variables.html +0 -994
  470. package/docs/modules/AppModule/dependencies.svg +0 -454
  471. package/docs/modules/AppModule.html +0 -967
  472. package/docs/modules/ArchivedConversationsPageModule/dependencies.svg +0 -50
  473. package/docs/modules/ArchivedConversationsPageModule.html +0 -225
  474. package/docs/modules/DettaglioConversazionePageModule/dependencies.svg +0 -66
  475. package/docs/modules/DettaglioConversazionePageModule.html +0 -256
  476. package/docs/modules/InfoAdvancedPageModule/dependencies.svg +0 -50
  477. package/docs/modules/InfoAdvancedPageModule.html +0 -225
  478. package/docs/modules/InfoConversationPageModule/dependencies.svg +0 -50
  479. package/docs/modules/InfoConversationPageModule.html +0 -227
  480. package/docs/modules/InfoUserPageModule/dependencies.svg +0 -50
  481. package/docs/modules/InfoUserPageModule.html +0 -225
  482. package/docs/modules/ListaConversazioniPageModule/dependencies.svg +0 -66
  483. package/docs/modules/ListaConversazioniPageModule.html +0 -255
  484. package/docs/modules/LoginModule/dependencies.svg +0 -66
  485. package/docs/modules/LoginModule.html +0 -253
  486. package/docs/modules/PlaceholderPageModule/dependencies.svg +0 -66
  487. package/docs/modules/PlaceholderPageModule.html +0 -253
  488. package/docs/modules/PopoverPageModule/dependencies.svg +0 -66
  489. package/docs/modules/PopoverPageModule.html +0 -253
  490. package/docs/modules/PopoverProfilePageModule/dependencies.svg +0 -66
  491. package/docs/modules/PopoverProfilePageModule.html +0 -253
  492. package/docs/modules/ProfilePageModule/dependencies.svg +0 -66
  493. package/docs/modules/ProfilePageModule.html +0 -253
  494. package/docs/modules/RegisterModule/dependencies.svg +0 -66
  495. package/docs/modules/RegisterModule.html +0 -253
  496. package/docs/modules/ResetpwdModule/dependencies.svg +0 -66
  497. package/docs/modules/ResetpwdModule.html +0 -253
  498. package/docs/modules/UpdateImageProfilePageModule/dependencies.svg +0 -66
  499. package/docs/modules/UpdateImageProfilePageModule.html +0 -253
  500. package/docs/modules/UsersModule/dependencies.svg +0 -66
  501. package/docs/modules/UsersModule.html +0 -253
  502. package/docs/modules.html +0 -379
  503. package/docs/overview.html +0 -1033
  504. package/docs/styles/bootstrap-card.css +0 -219
  505. package/docs/styles/bootstrap.min.css +0 -5
  506. package/docs/styles/compodoc.css +0 -996
  507. package/docs/styles/font-awesome.min.css +0 -4
  508. package/docs/styles/ionicons.min.css +0 -11
  509. package/docs/styles/laravel.css +0 -69
  510. package/docs/styles/material.css +0 -109
  511. package/docs/styles/original.css +0 -47
  512. package/docs/styles/postmark.css +0 -224
  513. package/docs/styles/prism.css +0 -267
  514. package/docs/styles/readthedocs.css +0 -108
  515. package/docs/styles/reset.css +0 -48
  516. package/docs/styles/stripe.css +0 -65
  517. package/docs/styles/style.css +0 -7
  518. package/docs/styles/tablesort.css +0 -33
  519. package/docs/styles/vagrant.css +0 -96
  520. package/firebase-functions/.firebaserc +0 -5
  521. package/firebase-functions/firebase.json +0 -1
  522. package/firebase-functions/functions/index.js +0 -208
  523. package/firebase-functions/functions/package.json +0 -9
  524. package/google-services.json +0 -42
  525. package/hooks/README.md +0 -196
  526. package/resources/android/icon/drawable-hdpi-icon.png +0 -0
  527. package/resources/android/icon/drawable-ldpi-icon.png +0 -0
  528. package/resources/android/icon/drawable-mdpi-icon.png +0 -0
  529. package/resources/android/icon/drawable-xhdpi-icon.png +0 -0
  530. package/resources/android/icon/drawable-xxhdpi-icon.png +0 -0
  531. package/resources/android/icon/drawable-xxxhdpi-icon.png +0 -0
  532. package/resources/android/splash/drawable-land-hdpi-screen.png +0 -0
  533. package/resources/android/splash/drawable-land-ldpi-screen.png +0 -0
  534. package/resources/android/splash/drawable-land-mdpi-screen.png +0 -0
  535. package/resources/android/splash/drawable-land-xhdpi-screen.png +0 -0
  536. package/resources/android/splash/drawable-land-xxhdpi-screen.png +0 -0
  537. package/resources/android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  538. package/resources/android/splash/drawable-port-hdpi-screen.png +0 -0
  539. package/resources/android/splash/drawable-port-ldpi-screen.png +0 -0
  540. package/resources/android/splash/drawable-port-mdpi-screen.png +0 -0
  541. package/resources/android/splash/drawable-port-xhdpi-screen.png +0 -0
  542. package/resources/android/splash/drawable-port-xxhdpi-screen.png +0 -0
  543. package/resources/android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  544. package/resources/icon.png +0 -0
  545. package/resources/icon.png.md5 +0 -1
  546. package/resources/ios/icon/icon-1024.png +0 -0
  547. package/resources/ios/icon/icon-40.png +0 -0
  548. package/resources/ios/icon/icon-40@2x.png +0 -0
  549. package/resources/ios/icon/icon-40@3x.png +0 -0
  550. package/resources/ios/icon/icon-50.png +0 -0
  551. package/resources/ios/icon/icon-50@2x.png +0 -0
  552. package/resources/ios/icon/icon-60.png +0 -0
  553. package/resources/ios/icon/icon-60@2x.png +0 -0
  554. package/resources/ios/icon/icon-60@3x.png +0 -0
  555. package/resources/ios/icon/icon-72.png +0 -0
  556. package/resources/ios/icon/icon-72@2x.png +0 -0
  557. package/resources/ios/icon/icon-76.png +0 -0
  558. package/resources/ios/icon/icon-76@2x.png +0 -0
  559. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  560. package/resources/ios/icon/icon-small.png +0 -0
  561. package/resources/ios/icon/icon-small@2x.png +0 -0
  562. package/resources/ios/icon/icon-small@3x.png +0 -0
  563. package/resources/ios/icon/icon.png +0 -0
  564. package/resources/ios/icon/icon@2x.png +0 -0
  565. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  566. package/resources/ios/splash/Default-667h.png +0 -0
  567. package/resources/ios/splash/Default-736h.png +0 -0
  568. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  569. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  570. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  571. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  572. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  573. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  574. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  575. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  576. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  577. package/resources/ios/splash/Default~iphone.png +0 -0
  578. package/resources/splash.png +0 -0
  579. package/resources/splash.png.md5 +0 -1
  580. package/server.js +0 -7
  581. package/src/app/app.html +0 -56
  582. package/src/app/app.scss +0 -236
  583. package/src/app/main.ts +0 -9
  584. package/src/assets/chat-background.jpg +0 -0
  585. package/src/assets/chat21-ionic-pattern-2.svg +0 -5110
  586. package/src/assets/chat21-ionic-pattern.png +0 -0
  587. package/src/assets/chat21-ionic-pattern.svg +0 -1
  588. package/src/assets/download.svg +0 -1
  589. package/src/assets/dummyDump.sql +0 -1
  590. package/src/assets/icon/favicon_old.ico +0 -0
  591. package/src/assets/img/c21-down-gray.svg +0 -1
  592. package/src/assets/img/chat21-icon.png +0 -0
  593. package/src/assets/img/f21ico-attached.svg +0 -1
  594. package/src/assets/img/f21ico-close.svg +0 -1
  595. package/src/assets/img/f21ico-photo.svg +0 -1
  596. package/src/assets/img/ic_keyboard_arrow_down_black_24px.svg +0 -4
  597. package/src/assets/img/ic_keyboard_arrow_down_white_24px.svg +0 -4
  598. package/src/assets/img/icon.png +0 -0
  599. package/src/assets/message-mine.png +0 -0
  600. package/src/assets/message-other.png +0 -0
  601. package/src/assets/pling.mp3 +0 -0
  602. package/src/assets/splash.png +0 -0
  603. package/src/assets/transparent.png +0 -0
  604. package/src/declarations.d.ts +0 -14
  605. package/src/directives/autosize/autosize.ts +0 -82
  606. package/src/environments/environment.pre.ts +0 -22
  607. package/src/environments/environment.prod.ts +0 -22
  608. package/src/environments/environment.ts +0 -21
  609. package/src/pages/_DetailPage.ts +0 -1
  610. package/src/pages/_MasterPage.ts +0 -1
  611. package/src/pages/archived-conversations/archived-conversations.html +0 -32
  612. package/src/pages/archived-conversations/archived-conversations.module.ts +0 -13
  613. package/src/pages/archived-conversations/archived-conversations.scss +0 -153
  614. package/src/pages/archived-conversations/archived-conversations.ts +0 -121
  615. package/src/pages/authentication/login/login.html +0 -58
  616. package/src/pages/authentication/login/login.module.ts +0 -16
  617. package/src/pages/authentication/login/login.scss +0 -121
  618. package/src/pages/authentication/login/login.ts +0 -221
  619. package/src/pages/authentication/register/register.html +0 -88
  620. package/src/pages/authentication/register/register.module.ts +0 -16
  621. package/src/pages/authentication/register/register.scss +0 -95
  622. package/src/pages/authentication/register/register.ts +0 -122
  623. package/src/pages/authentication/resetpwd/resetpwd.html +0 -40
  624. package/src/pages/authentication/resetpwd/resetpwd.module.ts +0 -16
  625. package/src/pages/authentication/resetpwd/resetpwd.scss +0 -102
  626. package/src/pages/authentication/resetpwd/resetpwd.ts +0 -93
  627. package/src/pages/components/chatBubble_old/chatBubble.scss +0 -83
  628. package/src/pages/components/chatBubble_old/chatBubble.ts +0 -30
  629. package/src/pages/components/elasticTextarea_old.ts +0 -46
  630. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.html +0 -261
  631. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.module.ts +0 -19
  632. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.scss +0 -701
  633. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.ts +0 -1395
  634. package/src/pages/index.ts +0 -5
  635. package/src/pages/info-advanced/info-advanced.html +0 -90
  636. package/src/pages/info-advanced/info-advanced.module.ts +0 -13
  637. package/src/pages/info-advanced/info-advanced.scss +0 -196
  638. package/src/pages/info-advanced/info-advanced.ts +0 -44
  639. package/src/pages/info-conversation/info-conversation.html +0 -225
  640. package/src/pages/info-conversation/info-conversation.module.ts +0 -15
  641. package/src/pages/info-conversation/info-conversation.scss +0 -444
  642. package/src/pages/info-conversation/info-conversation.ts +0 -1233
  643. package/src/pages/info-message/info-message.html +0 -74
  644. package/src/pages/info-message/info-message.module.ts +0 -13
  645. package/src/pages/info-message/info-message.scss +0 -216
  646. package/src/pages/info-message/info-message.ts +0 -89
  647. package/src/pages/info-user/info-user.html +0 -89
  648. package/src/pages/info-user/info-user.module.ts +0 -13
  649. package/src/pages/info-user/info-user.scss +0 -187
  650. package/src/pages/info-user/info-user.ts +0 -177
  651. package/src/pages/lista-conversazioni/lista-conversazioni.html +0 -88
  652. package/src/pages/lista-conversazioni/lista-conversazioni.module.ts +0 -18
  653. package/src/pages/lista-conversazioni/lista-conversazioni.scss +0 -245
  654. package/src/pages/lista-conversazioni/lista-conversazioni.ts +0 -736
  655. package/src/pages/placeholder/placeholder.html +0 -3
  656. package/src/pages/placeholder/placeholder.module.ts +0 -16
  657. package/src/pages/placeholder/placeholder.scss +0 -23
  658. package/src/pages/placeholder/placeholder.ts +0 -18
  659. package/src/pages/popover/popover.html +0 -27
  660. package/src/pages/popover/popover.module.ts +0 -16
  661. package/src/pages/popover/popover.scss +0 -23
  662. package/src/pages/popover/popover.ts +0 -95
  663. package/src/pages/popover-profile/popover-profile.html +0 -20
  664. package/src/pages/popover-profile/popover-profile.module.ts +0 -16
  665. package/src/pages/popover-profile/popover-profile.scss +0 -10
  666. package/src/pages/popover-profile/popover-profile.ts +0 -40
  667. package/src/pages/profile/profile.html +0 -54
  668. package/src/pages/profile/profile.module.ts +0 -16
  669. package/src/pages/profile/profile.scss +0 -45
  670. package/src/pages/profile/profile.ts +0 -108
  671. package/src/pages/update-image-profile/update-image-profile.html +0 -39
  672. package/src/pages/update-image-profile/update-image-profile.module.ts +0 -16
  673. package/src/pages/update-image-profile/update-image-profile.scss +0 -50
  674. package/src/pages/update-image-profile/update-image-profile.ts +0 -111
  675. package/src/pages/users/users.html +0 -55
  676. package/src/pages/users/users.module.ts +0 -16
  677. package/src/pages/users/users.scss +0 -10
  678. package/src/pages/users/users.ts +0 -222
  679. package/src/providers/app-config/app-config.ts +0 -33
  680. package/src/providers/auth-service.ts +0 -140
  681. package/src/providers/canned-responses-service/canned-responses-service.ts +0 -57
  682. package/src/providers/chat-archived-conversations-handler.ts +0 -283
  683. package/src/providers/chat-contacts-synchronizer.ts +0 -179
  684. package/src/providers/chat-conversation-handler.ts +0 -547
  685. package/src/providers/chat-conversations-handler.ts +0 -519
  686. package/src/providers/chat-manager/chat-manager.ts +0 -246
  687. package/src/providers/chat-presence-handler.ts +0 -188
  688. package/src/providers/database/database.ts +0 -214
  689. package/src/providers/group/group.ts +0 -243
  690. package/src/providers/messaging-service.ts +0 -267
  691. package/src/providers/nav-proxy.ts +0 -104
  692. package/src/providers/tiledesk-conversation/tiledesk-conversation.ts +0 -134
  693. package/src/providers/translate-service.ts +0 -61
  694. package/src/providers/upload-service/upload-service.ts +0 -117
  695. package/src/providers/user/user.ts +0 -320
  696. package/src/service-worker.js +0 -30
  697. package/src/utils/constants.ts +0 -73
  698. package/src/utils/utils.ts +0 -548
  699. package/src/videochat.php +0 -20
@@ -1,157 +1,893 @@
1
- import { Component, ViewChild, NgZone } from '@angular/core';
2
- import { Events, Platform, MenuController, Nav, AlertController } from 'ionic-angular';
3
- import * as firebase from 'firebase/app';
4
- import { ListaConversazioniPage } from '../pages/lista-conversazioni/lista-conversazioni';
5
- // import { StatusBar } from '@ionic-native/status-bar';
6
- // import { SplashScreen } from '@ionic-native/splash-screen';
1
+ import { URL_SOUND_LIST_CONVERSATION } from './../chat21-core/utils/constants';
2
+ import { ArchivedConversationsHandlerService } from 'src/chat21-core/providers/abstract/archivedconversations-handler.service';
3
+ import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
4
+
5
+ import { Component, ViewChild, NgZone, OnInit, HostListener, ElementRef, Renderer2, } from '@angular/core';
6
+ import { Config, Platform, IonRouterOutlet, IonSplitPane, NavController, MenuController, AlertController, IonNav, ToastController } from '@ionic/angular';
7
+ import { ActivatedRoute, NavigationStart, Router } from '@angular/router';
8
+ import { Subscription, VirtualTimeScheduler } from 'rxjs';
9
+ import { ModalController } from '@ionic/angular';
10
+
11
+ // import * as firebase from 'firebase/app';
12
+ import firebase from "firebase/app";
13
+ import 'firebase/auth'; // nk in watch connection status
14
+
7
15
  import { StatusBar } from '@ionic-native/status-bar/ngx';
8
16
  import { SplashScreen } from '@ionic-native/splash-screen/ngx';
9
-
10
- import { Config } from 'ionic-angular';
11
- import {NavProxyService} from '../providers/nav-proxy';
12
- //import {PlaceholderPage} from '../pages/placeholder/placeholder';
13
- import { MessagingService } from '../providers/messaging-service';
14
- import { ChatManager } from '../providers/chat-manager/chat-manager';
15
17
  import { TranslateService } from '@ngx-translate/core';
16
18
 
19
+ // services
20
+ import { AppConfigProvider } from './services/app-config';
21
+ // import { UserService } from './services/user.service';
22
+ // import { CurrentUserService } from './services/current-user/current-user.service';
23
+ import { EventsService } from './services/events-service';
24
+ import { MessagingAuthService } from '../chat21-core/providers/abstract/messagingAuth.service';
25
+ import { PresenceService } from '../chat21-core/providers/abstract/presence.service';
26
+ import { TypingService } from '../chat21-core/providers/abstract/typing.service';
27
+ import { UploadService } from '../chat21-core/providers/abstract/upload.service';
28
+ // import { ChatPresenceHandler} from './services/chat-presence-handler';
29
+ import { NavProxyService } from './services/nav-proxy.service';
30
+ import { ChatManager } from 'src/chat21-core/providers/chat-manager';
31
+ // import { ChatConversationsHandler } from './services/chat-conversations-handler';
32
+ import { ConversationsHandlerService } from 'src/chat21-core/providers/abstract/conversations-handler.service';
33
+ import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
34
+
35
+ // pages
36
+ import { LoginPage } from './pages/authentication/login/login.page';
37
+ import { ConversationListPage } from './pages/conversations-list/conversations-list.page';
38
+
39
+ // utils
40
+ import { createExternalSidebar, checkPlatformIsMobile, isGroup, getParameterByName } from '../chat21-core/utils/utils';
41
+ import { STORAGE_PREFIX, PLATFORM_MOBILE, PLATFORM_DESKTOP, CHAT_ENGINE_FIREBASE, AUTH_STATE_OFFLINE, AUTH_STATE_ONLINE } from '../chat21-core/utils/constants';
17
42
  import { environment } from '../environments/environment';
18
- import { AppConfigProvider } from '../providers/app-config/app-config';
43
+ import { UserModel } from '../chat21-core/models/user';
44
+ import { ConversationModel } from 'src/chat21-core/models/conversation';
45
+ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
46
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
47
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
48
+ // FCM
49
+ import { NotificationsService } from 'src/chat21-core/providers/abstract/notifications.service';
50
+ import { getImageUrlThumbFromFirebasestorage } from 'src/chat21-core/utils/utils-user';
51
+
52
+ // import { Network } from '@ionic-native/network/ngx';
53
+ // import { Observable, Observer, fromEvent, merge, of } from 'rxjs';
54
+ // import { mapTo } from 'rxjs/operators';
55
+ import { TiledeskService } from './services/tiledesk/tiledesk.service';
56
+ import { NetworkService } from './services/network-service/network.service';
57
+ import * as PACKAGE from 'package.json';
58
+
59
+ import { Subject } from 'rxjs';
60
+ import { filter, takeUntil } from 'rxjs/operators'
61
+
62
+ // import { filter } from 'rxjs/operators';
19
63
 
20
64
  @Component({
21
- templateUrl: 'app.html'
65
+ selector: 'app-root',
66
+ templateUrl: 'app.component.html',
67
+ styleUrls: ['app.component.scss']
22
68
  })
23
- export class MyApp {
24
- // new branch v2.0
25
- // Grab References to our 2 NavControllers...
26
- @ViewChild('detailNav') detailNav: Nav;
27
- @ViewChild('masterNav') masterNav: Nav;
28
- // Empty placeholders for the 'master/detail' pages...
29
- masterPage: any = null;
30
- detailPage: any = null;
69
+
70
+ export class AppComponent implements OnInit {
71
+ @ViewChild('sidebarNav', { static: false }) sidebarNav: IonNav;
72
+ @ViewChild('detailNav', { static: false }) detailNav: IonRouterOutlet;
73
+
74
+ // public appIsOnline$: Observable<boolean> = undefined;
75
+ checkInternet: boolean;
76
+
77
+ private BSAuthStateChangedSubscriptionRef: Subscription;
78
+ public sidebarPage: any;
79
+ public notificationsEnabled: boolean;
31
80
  public zone: NgZone;
32
- public user:any;
33
- pages: Array<{title: string, component: any}>;
34
- isNavBar: string;
35
- notificationsEnabled: boolean;
36
- //firebaseConfig = environment.firebaseConfig;
37
-
38
- /**
39
- * 1 - init firebase
40
- * 2 - quando
41
- * @param platform
42
- * @param menu
43
- * @param statusBar
44
- * @param splashScreen
45
- * @param config
46
- * @param navProxy
47
- * @param alertCtrl
48
- * @param msgService
49
- * @param chatManager
50
- */
81
+ private platformIs: string;
82
+ private doitResize: any;
83
+ private timeModalLogin: any;
84
+ public tenant: string;
85
+ public persistence: string;
86
+ public authModal: any;
87
+
88
+ private audio: any;
89
+ private setIntervalTime: any;
90
+ private setTimeoutSound: any;
91
+ private isTabVisible: boolean = true;
92
+ private tabTitle: string;
93
+ private logger: LoggerService = LoggerInstance.getInstance();
94
+ public toastMsgErrorWhileUnsubscribingFromNotifications: string;
95
+ public toastMsgCloseToast: string;
96
+ public toastMsgWaitingForNetwork: string;
97
+ private modalOpen: boolean = false;
98
+ private hadBeenCalledOpenModal: boolean = false;
99
+ public missingConnectionToast: any
100
+ public executedInitializeAppByWatchConnection: boolean = false;
101
+ private version: string;
102
+ private unsubscribe$: Subject<any> = new Subject<any>();
103
+ // private isOnline: boolean = false;
104
+
51
105
  constructor(
52
- public platform: Platform,
53
- public menu: MenuController,
54
- public statusBar: StatusBar,
55
- public splashScreen: SplashScreen,
106
+ private platform: Platform,
107
+ private splashScreen: SplashScreen,
108
+ private statusBar: StatusBar,
109
+ private appConfigProvider: AppConfigProvider,
110
+ private events: EventsService,
56
111
  public config: Config,
57
- public events: Events,
58
- private navProxy: NavProxyService,
59
- public alertCtrl: AlertController,
60
- public msgService: MessagingService,
61
112
  public chatManager: ChatManager,
62
113
  public translate: TranslateService,
63
- public appConfigProvider: AppConfigProvider
114
+ public alertController: AlertController,
115
+ public navCtrl: NavController,
116
+ // public userService: UserService,
117
+ // public currentUserService: CurrentUserService,
118
+ public modalController: ModalController,
119
+ public messagingAuthService: MessagingAuthService,
120
+ public tiledeskAuthService: TiledeskAuthService,
121
+ public presenceService: PresenceService,
122
+ private router: Router,
123
+ private route: ActivatedRoute,
124
+ private renderer: Renderer2,
125
+ private navService: NavProxyService,
126
+ // public chatPresenceHandler: ChatPresenceHandler,
127
+ public typingService: TypingService,
128
+ public uploadService: UploadService,
129
+ public appStorageService: AppStorageService,
130
+
131
+ // public chatConversationsHandler: ChatConversationsHandler,
132
+ public conversationsHandlerService: ConversationsHandlerService,
133
+ public archivedConversationsHandlerService: ArchivedConversationsHandlerService,
134
+ private translateService: CustomTranslateService,
135
+ public notificationsService: NotificationsService,
136
+ public toastController: ToastController,
137
+ // private network: Network,
138
+ // private tiledeskService: TiledeskService,
139
+ private networkService: NetworkService
64
140
  ) {
65
- this.notificationsEnabled = true;
66
- this.zone = new NgZone({});
67
- //this.isNavBar = (location.search.split('navBar=')[1]).split('&')[0];
68
- let TEMP = location.search.split('navBar=')[1];
69
- if (TEMP) { this.isNavBar = TEMP.split('&')[0]; }
70
- //console.log('isNavBar: ', this.isNavBar);
71
- //this.isNavBar = 'http://support.chat21.org/dashboard/';
72
-
73
- // this language will be used as a fallback when a translation isn't found in the current language
74
- //translate.setDefaultLang('it');
75
-
76
-
77
- //firebase.initializeApp(config.get("firebaseConfig"));
78
- //firebase.initializeApp(this.firebaseConfig);
79
-
80
- if (!appConfigProvider.getConfig().firebaseConfig || appConfigProvider.getConfig().firebaseConfig.apiKey === 'CHANGEIT') {
81
- // tslint:disable-next-line:max-line-length
82
- throw new Error('firebase config is not defined. Please create your firebase-config.json. See the Chat21-Web_widget Installation Page');
141
+ this.logger.log('[APP-COMP] HELLO Constuctor !!!!!!!')
142
+ // HACK: fix toast not presented when offline, due to lazy loading the toast controller.
143
+ // this.toastController.create({ animated: false }).then(t => {
144
+ // console.log('[APP-COMP] toastController create')
145
+ // t.present();
146
+ // t.dismiss();
147
+ // });
148
+ }
149
+
150
+ param() {
151
+ // PARAM
152
+ const url: URL = new URL(window.top.location.href);
153
+ const params: URLSearchParams = url.searchParams;
154
+ return params;
155
+ }
156
+ /**
157
+ */
158
+ ngOnInit() {
159
+ const appconfig = this.appConfigProvider.getConfig();
160
+ this.persistence = appconfig.authPersistence;
161
+ this.appStorageService.initialize(environment.storage_prefix, this.persistence, '')
162
+ this.logger.log('[APP-COMP] HELLO ngOnInit !!!!!!!')
163
+ this.logger.info('[APP-COMP] ngOnInit this.route.snapshot.params -->', this.route.snapshot.params);
164
+ // this.initializeApp('oninit');
165
+ const token = getParameterByName('jwt')
166
+ this.logger.info('[APP-COMP] ngOnInit AUTOLOGIN token get with getParameterByName -->', token);
167
+
168
+ if (token) {
169
+ // this.isOnline = false;
170
+ // this.logger.log('[APP-COMP] ngOnInit AUTOLOGIN token get with this.isOnline ', this.isOnline)
171
+ this.logger.log('[APP-COMP] ngOnInit AUTOLOGIN token get with getParameterByName ', token)
172
+ // save token in local storage then
173
+
174
+ const storedToken = this.appStorageService.getItem('tiledeskToken');
175
+ this.logger.log('[APP-COMP] ngOnInit AUTOLOGIN storedToken ', storedToken)
176
+ this.logger.log('[APP-COMP] ngOnInit AUTOLOGIN SAVE THE PARAMS TOKEN ', token)
177
+ if (storedToken !== token) {
178
+ this.appStorageService.setItem('tiledeskToken', token);
179
+ } else {
180
+ this.logger.log('[APP-COMP] ngOnInit AUTOLOGIN the current user already exist DON\'T SAVE ')
181
+ }
83
182
  }
84
- firebase.initializeApp(appConfigProvider.getConfig().firebaseConfig); // here shows the error
85
- console.log('firebase', firebase);
86
-
87
- platform.ready().then(() => {
88
- this.events.subscribe('requestPermission', this.callbackRequestPermission);
89
- // Okay, so the platform is ready and our plugins are available.
90
- // Here you can do any higher level native things you might need.
91
- statusBar.styleDefault();
92
- splashScreen.hide();
93
-
94
- // alert(" navProxy.masterNav: ");
95
- // Add our nav controllers to
96
- // the nav proxy service...
97
- navProxy.masterNav = this.masterNav;
98
- navProxy.detailNav = this.detailNav;
99
- this.masterNav.setRoot(ListaConversazioniPage, { detailNavCtrl: this.detailNav });
100
- // this.detailNav.setRoot(PlaceholderPage);
101
- this.msgService.initMessage();
102
- this.msgService.getPermission();
103
- // set tenant
104
- let appConfig = config.get("appConfig");
105
- const tenant = appConfig.tenant;
106
- // init chat manager
107
- this.chatManager.configureWithAppId(tenant);
108
-
109
- // const language = document.documentElement.lang;
110
- // let language = window.navigator.language; // detect browser language
111
- // if (language == null || language == undefined) {
112
- // language = "en";
113
- // }
114
- // console.log('language: ', language);
115
- this.translate.setDefaultLang('en');
116
- this.translate.use('en');
117
-
118
- console.log('navigator.language: ', navigator.language);
119
- var language;
120
- if(navigator.language.indexOf('-') != -1){
121
- language = navigator.language.substring(0, navigator.language.indexOf('-'));
122
- } else if(navigator.language.indexOf('_') != -1){
123
- language = navigator.language.substring(0, navigator.language.indexOf('_'));
183
+ this.initializeApp('oninit');
184
+
185
+ }
186
+
187
+
188
+ signInWithCustomToken(token) {
189
+ // this.isOnline = false;
190
+ this.logger.log('[APP-COMP] SIGNINWITHCUSTOMTOKEN token', token)
191
+ this.tiledeskAuthService.signInWithCustomToken(token)
192
+ .then((user: any) => {
193
+ this.logger.log('[APP-COMP] SIGNINWITHCUSTOMTOKEN AUTLOGIN user', user)
194
+ this.messagingAuthService.createCustomToken(token)
195
+ })
196
+ .catch(error => {
197
+ this.logger.error('[APP-COMP] SIGNINWITHCUSTOMTOKEN error::', error)
198
+ })
199
+ }
200
+
201
+ /** */
202
+ initializeApp(calledby: string) {
203
+ this.logger.log('[APP-COMP] - X - initializeApp !!! CALLED-BY: ', calledby);
204
+ this.logger.log('[APP-COMP] appconfig platform is cordova: ', this.platform.is('cordova'))
205
+
206
+ if (!this.platform.is('cordova')) {
207
+ this.splashScreen.show();
208
+ }
209
+ this.tabTitle = document.title;
210
+
211
+ this.getRouteParamsAndSetLoggerConfig();
212
+
213
+ const appconfig = this.appConfigProvider.getConfig();
214
+ this.logger.info('[APP-COMP] appconfig: ', appconfig)
215
+ this.version = PACKAGE.version;
216
+ this.logger.info('[APP-COMP] version: ', this.version)
217
+
218
+ this.logger.setLoggerConfig(true, appconfig.logLevel)
219
+ this.logger.info('[APP-COMP] logLevel: ', appconfig.logLevel);
220
+
221
+ this.tenant = appconfig.firebaseConfig.tenant;
222
+ this.logger.info('[APP-COMP] appconfig firebaseConfig tenant: ', this.tenant);
223
+ this.notificationsEnabled = true;
224
+ this.zone = new NgZone({}); // a cosa serve?
225
+
226
+ this.platform.ready().then(() => {
227
+ this.setLanguage();
228
+
229
+ if (this.splashScreen) {
230
+ this.splashScreen.hide();
231
+ }
232
+ this.statusBar.styleDefault();
233
+ this.navService.init(this.sidebarNav, this.detailNav);
234
+ // this.persistence = appconfig.authPersistence;
235
+ // this.appStorageService.initialize(environment.storage_prefix, this.persistence, '')
236
+ this.tiledeskAuthService.initialize(this.appConfigProvider.getConfig().apiUrl);
237
+ this.messagingAuthService.initialize();
238
+
239
+ // this.currentUserService.initialize();
240
+ this.chatManager.initialize();
241
+ this.presenceService.initialize(this.tenant);
242
+ this.typingService.initialize(this.tenant);
243
+
244
+ const pushEngine = this.appConfigProvider.getConfig().pushEngine
245
+ const vap_id_Key = this.appConfigProvider.getConfig().firebaseConfig.vapidKey
246
+
247
+ if (pushEngine && pushEngine !== 'none') {
248
+ this.notificationsService.initialize(this.tenant, vap_id_Key)
249
+ }
250
+ this.uploadService.initialize();
251
+
252
+ this.initAuthentication();
253
+ this.initSubscriptions();
254
+ this.initAudio();
255
+
256
+ this.logger.debug('[APP-COMP] initializeApp:: ', this.sidebarNav, this.detailNav);
257
+
258
+ this.translateToastMsgs();
259
+
260
+ // ---------------------------------------
261
+ // Watch to network status
262
+ // ---------------------------------------
263
+ this.watchToConnectionStatus();
264
+ });
265
+ }
266
+
267
+
268
+ watchToConnectionStatus() {
269
+ this.networkService.checkInternetFunc().subscribe(isOnline => {
270
+ this.checkInternet = isOnline
271
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - isOnline', this.checkInternet)
272
+
273
+ // checking internet connection
274
+ if (this.checkInternet == true) {
275
+ // this.events.publish('internetisonline', true);
276
+ // show success alert if internet is working
277
+ // alert('Internet is working.')
278
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - Internet is working.')
279
+ // this.logger.log('[APP-COMP] - watchToConnectionStatus - this.missingConnectionToast', this.missingConnectionToast)
280
+ if (!checkPlatformIsMobile()) {
281
+ const elemIonNav = <HTMLElement>document.querySelector('ion-nav');
282
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - desktop * elemIonNav *', elemIonNav)
283
+
284
+ if (this.executedInitializeAppByWatchConnection === false) {
285
+ setTimeout(() => {
286
+ const elemIonNavchildNodes = elemIonNav.childNodes;
287
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - elemIonNavchildNodes ', elemIonNavchildNodes);
288
+
289
+ if (elemIonNavchildNodes.length === 0) {
290
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - elemIonNavchildNodes HERE YES', elemIonNavchildNodes);
291
+
292
+ // this.initializeApp('checkinternet');
293
+ this.executedInitializeAppByWatchConnection = true;
294
+ }
295
+ }, 2000);
296
+ }
297
+ } else if (checkPlatformIsMobile()) {
298
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - mobile ')
299
+ const elemIonRouterOutlet = <HTMLElement>document.querySelector('ion-router-outlet');
300
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - mobile * elemIonRouterOutlet *', elemIonRouterOutlet)
301
+ if (this.executedInitializeAppByWatchConnection === false) {
302
+ setTimeout(() => {
303
+ const childElementCount = elemIonRouterOutlet.childElementCount;
304
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - mobile * childElementCount *', childElementCount)
305
+ if (childElementCount === 1) {
306
+ // this.initializeApp('checkinternet');
307
+ this.executedInitializeAppByWatchConnection = true;
308
+ }
309
+ }, 2000);
310
+ }
311
+ }
312
+ }
313
+ else {
314
+ this.logger.log('[APP-COMP] - watchToConnectionStatus - Internet is slow or not working.');
315
+ }
316
+ });
317
+ }
318
+
319
+
320
+ getRouteParamsAndSetLoggerConfig() {
321
+ const appconfig = this.appConfigProvider.getConfig();
322
+ this.route.queryParams.subscribe(params => {
323
+ this.logger.info('[APP-COMP] getRouteParamsAndSetLoggerConfig - queryParams params: ', params)
324
+ if (params.logLevel) {
325
+ this.logger.info('[APP-COMP] getRouteParamsAndSetLoggerConfig - log level get from queryParams: ', params.logLevel)
326
+ this.logger.setLoggerConfig(true, params.logLevel)
124
327
  } else {
125
- language = navigator.language;
328
+ this.logger.info('[APP-COMP] getRouteParamsAndSetLoggerConfig - log level get from appconfig: ', appconfig.logLevel)
329
+ this.logger.setLoggerConfig(true, appconfig.logLevel)
330
+ }
331
+ });
332
+ }
333
+
334
+
335
+ translateToastMsgs() {
336
+ this.translate.get('AnErrorOccurredWhileUnsubscribingFromNotifications')
337
+ .subscribe((text: string) => {
338
+ this.toastMsgErrorWhileUnsubscribingFromNotifications = text;
339
+ });
340
+ this.translate.get('CLOSE_TOAST')
341
+ .subscribe((text: string) => {
342
+ this.toastMsgCloseToast = text;
343
+ });
344
+ this.translate.get('WAITING_FOR_NETWORK')
345
+ .subscribe((text: string) => {
346
+ this.toastMsgWaitingForNetwork = text;
347
+ });
348
+ }
349
+
350
+
351
+ /***************************************************+*/
352
+ /**------- AUTHENTICATION FUNCTIONS --> START <--- +*/
353
+ private initAuthentication() {
354
+ const tiledeskToken = this.appStorageService.getItem('tiledeskToken')
355
+ this.logger.log('[APP-COMP] >>> INIT-AUTHENTICATION !!! ')
356
+ this.logger.log('[APP-COMP] >>> initAuthentication tiledeskToken ', tiledeskToken)
357
+ // const currentUser = JSON.parse(this.appStorageService.getItem('currentUser'));
358
+ // this.logger.log('[APP-COMP] >>> initAuthentication currentUser ', currentUser)
359
+ if (tiledeskToken) {
360
+ this.logger.log('[APP-COMP] >>> initAuthentication I LOG IN WITH A TOKEN EXISTING IN THE LOCAL STORAGE OR WITH A TOKEN PASSED IN THE URL PARAMETERS <<<')
361
+ this.tiledeskAuthService.signInWithCustomToken(tiledeskToken).then(user => {
362
+ this.logger.log('[APP-COMP] >>> initAuthentication user ', user)
363
+ this.messagingAuthService.createCustomToken(tiledeskToken)
364
+ }).catch(error => {
365
+ this.logger.error('[APP-COMP] initAuthentication SIGNINWITHCUSTOMTOKEN error::', error)
366
+ })
367
+ } else {
368
+ this.logger.warn('[APP-COMP] >>> I AM NOT LOGGED IN <<<')
369
+
370
+ // clearTimeout(this.timeModalLogin);
371
+ // this.timeModalLogin = setTimeout(() => {
372
+ if (!this.hadBeenCalledOpenModal) {
373
+ this.authModal = this.presentModal('initAuthentication');
374
+ this.hadBeenCalledOpenModal = true;
375
+ }
376
+ // }, 1000);
377
+ }
378
+ }
379
+
380
+ // checkTokenAndGoOffline() {
381
+ // let token = this.appStorageService.getItem('tiledeskToken');
382
+ // this.logger.info('[APP-COMP] ***** checkTokenAndGoOffline - stored token *****', token);
383
+ // if (!token) {
384
+ // this.goOffLine()
385
+ // }
386
+ // }
387
+
388
+ /**
389
+ * goOnLine:
390
+ * 1 - nascondo splashscreen
391
+ * 2 - recupero il tiledeskToken e lo salvo in chat manager
392
+ * 3 - carico in d
393
+ * @param user
394
+ */
395
+ goOnLine = () => {
396
+ // this.isOnline = true;
397
+ // this.logger.info('initialize FROM [APP-COMP] - [APP-COMP] - GO-ONLINE isOnline ', this.isOnline);
398
+
399
+ clearTimeout(this.timeModalLogin);
400
+ const tiledeskToken = this.tiledeskAuthService.getTiledeskToken();
401
+ const currentUser = this.tiledeskAuthService.getCurrentUser();
402
+ // this.logger.printDebug('APP-COMP - goOnLine****', currentUser);
403
+ this.logger.log('[APP-COMP] - GO-ONLINE - currentUser ', currentUser);
404
+ this.chatManager.setTiledeskToken(tiledeskToken);
405
+ this.chatManager.setCurrentUser(currentUser);
406
+ // ----------------------------------------------
407
+ // PUSH NOTIFICATIONS
408
+ // ----------------------------------------------
409
+ const pushEngine = this.appConfigProvider.getConfig().pushEngine
410
+
411
+ if (currentUser) {
412
+ if (pushEngine && pushEngine !== 'none') {
413
+ this.notificationsService.getNotificationPermissionAndSaveToken(currentUser.uid);
414
+ }
415
+ this.presenceService.setPresence(currentUser.uid);
416
+
417
+ this.initConversationsHandler(currentUser.uid);
418
+ this.initArchivedConversationsHandler(currentUser.uid);
419
+ }
420
+ this.checkPlatform();
421
+ try {
422
+ this.logger.debug('[APP-COMP] ************** closeModal', this.authModal);
423
+ if (this.authModal) {
424
+ this.closeModal();
425
+ }
426
+ } catch (err) {
427
+ this.logger.error('[APP-COMP] -> error:', err);
428
+ }
429
+ this.chatManager.startApp();
430
+ }
431
+
432
+ goOffLine = () => {
433
+ this.logger.log('[APP-COMP] - GO-OFFLINE');
434
+ // this.isOnline = false;
435
+ // this.conversationsHandlerService.conversations = [];
436
+
437
+ this.chatManager.setTiledeskToken(null);
438
+ this.chatManager.setCurrentUser(null);
439
+ this.chatManager.goOffLine();
440
+
441
+ this.router.navigateByUrl('conversation-detail/'); //redirect to basePage
442
+
443
+ // clearTimeout(this.timeModalLogin);
444
+ // this.timeModalLogin = setTimeout(() => {
445
+ if (!this.hadBeenCalledOpenModal) {
446
+ this.authModal = this.presentModal('goOffLine');
447
+ this.hadBeenCalledOpenModal = true
448
+ }
449
+ // }, 1000);
450
+
451
+ // this.unsubscribe$.next();
452
+ // this.unsubscribe$.complete();
453
+
454
+ }
455
+ /**------- AUTHENTICATION FUNCTIONS --> END <--- +*/
456
+ /***************************************************+*/
457
+
458
+ /** */
459
+ setLanguage() {
460
+ this.translate.setDefaultLang('en');
461
+ this.translate.use('en');
462
+ this.logger.debug('[APP-COMP] navigator.language: ', navigator.language);
463
+ let language;
464
+ if (navigator.language.indexOf('-') !== -1) {
465
+ language = navigator.language.substring(0, navigator.language.indexOf('-'));
466
+ } else if (navigator.language.indexOf('_') !== -1) {
467
+ language = navigator.language.substring(0, navigator.language.indexOf('_'));
468
+ } else {
469
+ language = navigator.language;
470
+ }
471
+ this.translate.use(language);
472
+ }
473
+
474
+ checkPlatform() {
475
+ this.logger.debug('[APP-COMP] checkPlatform');
476
+ // let pageUrl = '';
477
+ // try {
478
+ // const pathPage = this.route.snapshot.firstChild.routeConfig.path;
479
+ // this.route.snapshot.firstChild.url.forEach(element => {
480
+ // pageUrl += '/' + element.path;
481
+ // });
482
+ // } catch (error) {
483
+ // this.logger.debug('error', error);
484
+ // }
485
+ // this.logger.debug('checkPlatform pathPage: ', pageUrl);
486
+ // if (!pageUrl || pageUrl === '') {
487
+ // pageUrl = '/conversations-list';
488
+ // }
489
+
490
+ if (checkPlatformIsMobile()) {
491
+ this.platformIs = PLATFORM_MOBILE;
492
+ const IDConv = this.route.snapshot.firstChild.paramMap.get('IDConv');
493
+ this.logger.log('[APP-COMP] PLATFORM_MOBILE2 navigateByUrl', PLATFORM_MOBILE, this.route.snapshot);
494
+ if (!IDConv) {
495
+ this.router.navigateByUrl('conversations-list')
126
496
  }
127
- //let language = (navigator.language.indexOf('-') != -1) ? navigator.language.substring(0, navigator.language.indexOf('-')) : navigator.language;
128
- this.translate.use(language);
129
- console.log('language: ', language);
497
+ // this.router.navigateByUrl(pageUrl);
498
+ // this.navService.setRoot(ConversationListPage, {});
499
+ } else {
500
+ this.platformIs = PLATFORM_DESKTOP;
501
+ this.logger.log('[APP-COMP] PLATFORM_DESKTOP ', this.navService);
130
502
 
503
+ this.navService.setRoot(ConversationListPage, {});
504
+
505
+ const IDConv = this.route.snapshot.firstChild.paramMap.get('IDConv');
506
+ const FullNameConv = this.route.snapshot.firstChild.paramMap.get('FullNameConv');
507
+ const Convtype = this.route.snapshot.firstChild.paramMap.get('Convtype');
508
+
509
+
510
+ let pageUrl = 'conversation-detail/'
511
+ if (IDConv && FullNameConv) {
512
+ pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
513
+ }
514
+
515
+ this.router.navigateByUrl(pageUrl);
516
+
517
+
518
+ // const DASHBOARD_URL = this.appConfigProvider.getConfig().DASHBOARD_URL;
519
+ // createExternalSidebar(this.renderer, DASHBOARD_URL);
520
+
521
+ // // FOR REALTIME TESTING
522
+ // createExternalSidebar(this.renderer, 'http://localhost:4204');
523
+
524
+ }
525
+ }
526
+
527
+ /** */
528
+ // showNavbar() {
529
+ // let TEMP = location.search.split('navBar=')[1];
530
+ // if (TEMP) { this.isNavBar = TEMP.split('&')[0]; }
531
+ // }
532
+
533
+ /** */
534
+ hideAlert() {
535
+ this.logger.debug('[APP-COMP] hideAlert');
536
+ this.notificationsEnabled = true;
537
+ }
538
+
539
+ private initAudio() {
540
+ // SET AUDIO
541
+ this.audio = new Audio();
542
+ this.audio.src = URL_SOUND_LIST_CONVERSATION;
543
+ this.audio.load();
544
+ }
545
+
546
+ private manageTabNotification() {
547
+ if (!this.isTabVisible) {
548
+ // TAB IS HIDDEN --> manage title and SOUND
549
+
550
+ let badgeNewConverstionNumber = this.conversationsHandlerService.countIsNew()
551
+ badgeNewConverstionNumber > 0 ? badgeNewConverstionNumber : badgeNewConverstionNumber = 1
552
+ document.title = "(" + badgeNewConverstionNumber + ") " + this.tabTitle
553
+
554
+ clearInterval(this.setIntervalTime)
555
+ const that = this
556
+ this.setIntervalTime = setInterval(function () {
557
+ if (document.title.charAt(0) === '(') {
558
+ document.title = that.tabTitle
559
+ } else {
560
+ document.title = "(" + badgeNewConverstionNumber + ") " + that.tabTitle;
561
+ }
562
+ }, 1000);
563
+ this.soundMessage()
564
+ }
565
+ }
566
+
567
+ soundMessage() {
568
+ const that = this;
569
+ // this.audio = new Audio();
570
+ // // this.audio.src = '/assets/sounds/pling.mp3';
571
+ // this.audio.src = URL_SOUND_LIST_CONVERSATION;
572
+ // this.audio.load();
573
+ this.logger.debug('[APP-COMP] conversation play', this.audio);
574
+ clearTimeout(this.setTimeoutSound);
575
+ this.setTimeoutSound = setTimeout(function () {
576
+ that.audio.play().then(() => {
577
+ that.logger.debug('[APP-COMP] ****** soundMessage played *****');
578
+ }).catch((error: any) => {
579
+ that.logger.debug('[APP-COMP] ***soundMessage error*', error);
580
+ });
581
+ }, 1000);
582
+ }
583
+ /**---------------- SOUND FUNCTIONS --> END <--- +*/
584
+ /***************************************************+*/
585
+
586
+
587
+ // BEGIN SUBSCRIPTIONS //
588
+ /** .pipe(
589
+ takeUntil(this.unsubscribe$)
590
+ ) */
591
+ initSubscriptions() {
592
+ this.logger.log('initialize FROM [APP-COMP] - initSubscriptions');
593
+
594
+
595
+ // ---------------------------------------------------------------------------------------------------
596
+ // Protecting from multiple subsciptions due to multiple app initializations (call to initializeApp())
597
+ // Only one subscriber x application allowed
598
+ // ---------------------------------------------------------------------------------------------------
599
+ if (this.BSAuthStateChangedSubscriptionRef) {
600
+ this.logger.log('initialize FROM [APP-COMP] - BSAuthStateChanged ALREADY SUBSCRIBED');
601
+ return;
602
+ }
603
+
604
+ this.BSAuthStateChangedSubscriptionRef = this.messagingAuthService.BSAuthStateChanged
605
+
606
+ // .pipe(takeUntil(this.unsubscribe$))
607
+ .pipe(filter((state) => state !== null))
608
+ .subscribe((state: any) => {
609
+ this.logger.log('initialize FROM [APP-COMP] - [APP-COMP] ***** BSAuthStateChanged state', state);
610
+ // this.logger.info('initialize FROM [APP-COMP] - [APP-COMP] ***** BSAuthStateChanged isOnline', this.isOnline);
611
+ if (state && state === AUTH_STATE_ONLINE) {
612
+ // const user = this.tiledeskAuthService.getCurrentUser();
613
+ // if (this.isOnline === false) {
614
+ // if (AUTH_STATE_ONLINE) {
615
+ this.goOnLine();
616
+ // }
617
+ } else if (state === AUTH_STATE_OFFLINE) {
618
+ // this.checkTokenAndGoOffline() //se c'è un tiledeskToken salvato, allora aspetta, altrimenti vai offline
619
+ this.goOffLine()
620
+ }
621
+ }, error => {
622
+ this.logger.error('initialize FROM [APP-COMP] - [APP-COMP] ***** BSAuthStateChanged * error * ', error)
623
+ }, () => {
624
+ this.logger.log('initialize FROM [APP-COMP] - [APP-COMP] ***** BSAuthStateChanged *** complete *** ')
625
+ });
626
+
627
+
628
+ this.events.subscribe('uidConvSelected:changed', this.subscribeChangedConversationSelected);
629
+ this.events.subscribe('profileInfoButtonClick:logout', this.subscribeProfileInfoButtonLogOut);
630
+
631
+
632
+ this.conversationsHandlerService.conversationAdded.subscribe((conversation: ConversationModel) => {
633
+ // this.logger.log('[APP-COMP] ***** conversationsAdded *****', conversation);
634
+ // that.conversationsChanged(conversations);
635
+ if (conversation && conversation.is_new === true) {
636
+ this.manageTabNotification()
637
+ }
131
638
  });
132
639
 
133
- // // solve the issue : "Cannot read property 'myID' of undefined"
134
- // // source :
135
- // // https://github.com/firebase/angularfire/issues/970
136
- // if (getLocalStorage()) {
137
- // getLocalStorage().removeItem('firebase:previous_websocket_failure');
640
+ this.conversationsHandlerService.conversationChanged.subscribe((conversation: ConversationModel) => {
641
+
642
+ this.logger.log('[APP-COMP] ***** subscribeConversationChanged conversation: ', conversation);
643
+ const currentUser = JSON.parse(this.appStorageService.getItem('currentUser'));
644
+ this.logger.log('[APP-COMP] ***** subscribeConversationChanged current_user: ', currentUser);
645
+
646
+ if (currentUser) {
647
+ this.logger.log('[APP-COMP] ***** subscribeConversationChanged current_user uid: ', currentUser.uid);
648
+ if (conversation && conversation.sender !== currentUser.uid) {
649
+ this.manageTabNotification();
650
+ }
651
+ }
652
+ });
653
+ }
654
+
655
+ /**
656
+ * ::: subscribeChangedConversationSelected :::
657
+ * evento richiamato quando si seleziona un utente nell'elenco degli user
658
+ * apro dettaglio conversazione
659
+ */
660
+ subscribeChangedConversationSelected = (user: UserModel, type: string) => {
661
+ this.logger.info('[APP-COMP] subscribeUidConvSelectedChanged navigateByUrl', user, type);
662
+ // this.router.navigateByUrl('conversation-detail/' + user.uid + '?conversationWithFullname=' + user.fullname);
663
+ this.router.navigateByUrl('conversation-detail/' + user.uid + '/' + user.fullname + '/' + type);
664
+ }
665
+
666
+ subscribeProfileInfoButtonLogOut = (hasClickedLogout) => {
667
+ this.logger.log('[APP-COMP] FIREBASE-NOTIFICATION >>>> subscribeProfileInfoButtonLogOut ');
668
+ // if (hasClickedLogout === true) {
669
+ // this.removePresenceAndLogout()
138
670
  // }
139
671
 
140
- localStorage.removeItem('firebase:previous_websocket_failure');
672
+
673
+ if (hasClickedLogout === true) {
674
+ // ----------------------------------------------
675
+ // PUSH NOTIFICATIONS
676
+ // ----------------------------------------------
677
+ const that = this;
678
+ const pushEngine = this.appConfigProvider.getConfig().pushEngine
679
+ if (pushEngine && pushEngine !== 'none') {
680
+ this.notificationsService.removeNotificationsInstance(function (res) {
681
+ that.logger.log('[APP-COMP] FIREBASE-NOTIFICATION >>>> removeNotificationsInstance > CALLBACK RES', res);
682
+
683
+ if (res === 'success') {
684
+ that.removePresenceAndLogout();
685
+ } else {
686
+ that.removePresenceAndLogout();
687
+ // that.presentToast();
688
+ }
689
+ })
690
+ }
691
+
692
+ }
693
+ }
694
+
695
+ private async presentModal(calledby): Promise<any> {
696
+ this.logger.log('[APP-COMP] presentModal calledby', calledby, '- hadBeenCalledOpenModal: ', this.hadBeenCalledOpenModal);
697
+ const attributes = { tenant: this.tenant, enableBackdropDismiss: false };
698
+ const modal: HTMLIonModalElement =
699
+ await this.modalController.create({
700
+ component: LoginPage,
701
+ componentProps: attributes,
702
+ swipeToClose: false,
703
+ backdropDismiss: false
704
+ });
705
+ modal.onDidDismiss().then((detail: any) => {
706
+ this.hadBeenCalledOpenModal = false
707
+ this.logger.log('[APP-COMP] presentModal onDidDismiss detail.data ', detail.data);
708
+ // this.checkPlatform();
709
+ if (detail !== null) {
710
+ // this.logger.debug('The result: CHIUDI!!!!!', detail.data);
711
+ }
712
+ });
713
+ // await modal.present();
714
+ // modal.onDidDismiss().then((detail: any) => {
715
+ // this.logger.debug('The result: CHIUDI!!!!!', detail.data);
716
+ // // this.checkPlatform();
717
+ // if (detail !== null) {
718
+ // // this.logger.debug('The result: CHIUDI!!!!!', detail.data);
719
+ // }
720
+ // });
721
+ return await modal.present();
141
722
  }
142
723
 
143
- callbackRequestPermission: any = (permission) => {
144
- console.log("callbackRequestPermission", permission);
145
- this.notificationsEnabled = permission;
146
- this.msgService.getToken();
724
+ private async closeModal() {
725
+ this.logger.debug('[APP-COMP] closeModal', this.modalController);
726
+ this.logger.debug('[APP-COMP] closeModal .getTop()', this.modalController.getTop());
727
+ await this.modalController.getTop();
728
+ this.modalController.dismiss({ confirmed: true });
147
729
  }
148
- hideAlert(){
149
- console.log("hideAlert");
150
- this.notificationsEnabled = true;
730
+
731
+
732
+ // listenToLogoutEvent() {
733
+ // this.events.subscribe('profileInfoButtonClick:logout', (hasclickedlogout) => {
734
+ // this.logger.debug('[APP-COMP] hasclickedlogout', hasclickedlogout);
735
+ // if (hasclickedlogout === true) {
736
+ // // ----------------------------------------------
737
+ // // PUSH NOTIFICATIONS
738
+ // // ----------------------------------------------
739
+ // const that = this;
740
+ // const pushEngine = this.appConfigProvider.getConfig().pushEngine
741
+ // if( pushEngine && pushEngine !== 'none'){
742
+ // this.notificationsService.removeNotificationsInstance(function (res) {
743
+ // that.logger.debug('[APP-COMP] FIREBASE-NOTIFICATION >>>> removeNotificationsInstance > CALLBACK RES', res);
744
+
745
+ // if (res === 'success') {
746
+ // that.removePresenceAndLogout();
747
+ // } else {
748
+ // that.removePresenceAndLogout();
749
+ // that.presentToast();
750
+ // }
751
+ // })
752
+ // }
753
+
754
+ // }
755
+ // });
756
+ // }
757
+
758
+
759
+ async presentToast() {
760
+ const toast = await this.toastController.create({
761
+ message: this.toastMsgErrorWhileUnsubscribingFromNotifications,
762
+ duration: 2000
763
+ });
764
+ toast.present();
151
765
  }
152
766
 
153
- }
767
+ removePresenceAndLogout() {
768
+ this.logger.debug('[APP-COMP] FIREBASE-NOTIFICATION >>>> calling removePresenceAndLogout');
769
+ this.presenceService.removePresence();
770
+ this.tiledeskAuthService.logOut()
771
+ this.messagingAuthService.logout()
772
+ }
773
+
774
+ private initConversationsHandler(userId: string) {
775
+ const keys = ['YOU'];
776
+ const translationMap = this.translateService.translateLanguage(keys);
777
+
778
+ this.logger.log('[APP-COMP] initConversationsHandler ------------->', userId, this.tenant);
779
+ // 1 - init chatConversationsHandler and archviedConversationsHandler
780
+ this.conversationsHandlerService.initialize(this.tenant, userId, translationMap);
781
+
782
+ // this.subscribeToConvs()
783
+ this.conversationsHandlerService.subscribeToConversations(() => {
784
+ this.logger.log('[APP-COMP] - CONVS - INIT CONV')
785
+
786
+ const conversations = this.conversationsHandlerService.conversations;
787
+ this.logger.info('initialize FROM [APP-COMP] - [APP-COMP]-CONVS - INIT CONV CONVS', conversations)
788
+
789
+ // this.logger.printDebug('SubscribeToConversations (convs-list-page) - conversations')
790
+ if (!conversations || conversations.length === 0) {
791
+ // that.showPlaceholder = true;
792
+ this.logger.debug('[APP-COMP]-CONVS - INIT CONV CONVS 2', conversations)
793
+ this.events.publish('appcompSubscribeToConvs:loadingIsActive', false);
794
+ }
795
+ });
796
+
797
+ }
798
+
799
+ private initArchivedConversationsHandler(userId: string) {
800
+ const keys = ['YOU'];
801
+
802
+ const translationMap = this.translateService.translateLanguage(keys);
154
803
 
155
- // export function getLocalStorage() {
156
- // return (typeof window !== "undefined") ? window.localStorage : null;
157
- // }
804
+ this.logger.debug('[APP-COMP] initArchivedConversationsHandler ------------->', userId, this.tenant);
805
+ // 1 - init archviedConversationsHandler
806
+ this.archivedConversationsHandlerService.initialize(this.tenant, userId, translationMap);
807
+ }
808
+
809
+ // BEGIN RESIZE FUNCTIONS //
810
+ @HostListener('window:resize', ['$event'])
811
+ onResize(event: any) {
812
+ const that = this;
813
+ // this.logger.debug('this.doitResize)', this.doitResize)
814
+ clearTimeout(this.doitResize);
815
+ this.doitResize = setTimeout(() => {
816
+ let platformIsNow = PLATFORM_DESKTOP;
817
+ if (checkPlatformIsMobile()) {
818
+ platformIsNow = PLATFORM_MOBILE;
819
+ }
820
+ if (!this.platformIs || this.platformIs === '') {
821
+ this.platformIs = platformIsNow;
822
+ }
823
+ this.logger.debug('[APP-COMP] onResize width::::', window.innerWidth);
824
+ this.logger.debug('[APP-COMP] onResize width:::: platformIsNow', platformIsNow);
825
+ this.logger.debug('[APP-COMP] onResize width:::: platformIsNow this.platformIs', this.platformIs);
826
+ if (platformIsNow !== this.platformIs) {
827
+ window.location.reload();
828
+ }
829
+ }, 500);
830
+ }
831
+ // END RESIZE FUNCTIONS //
832
+
833
+ @HostListener('document:visibilitychange', [])
834
+ visibilitychange() {
835
+ // this.logger.debug("document TITLE", document.hidden, document.title);
836
+ if (document.hidden) {
837
+ this.isTabVisible = false
838
+ } else {
839
+ // TAB IS ACTIVE --> restore title and DO NOT SOUND
840
+ clearInterval(this.setIntervalTime)
841
+ this.isTabVisible = true;
842
+ document.title = this.tabTitle;
843
+ }
844
+ }
845
+
846
+ // Storage event not firing: This won't work on the same page that is making the changes
847
+ // https://stackoverflow.com/questions/35865481/storage-event-not-firing
848
+ // https://developer.mozilla.org/en-US/docs/Web/API/Window/storage_event
849
+ @HostListener('window:storage', ['$event'])
850
+ onStorageChanged(event: any) {
851
+ // console.log('[APP-COMP] - onStorageChanged event ', event)
852
+ if (event.key !== 'chat_sv5__tiledeskToken') {
853
+ return;
854
+ }
855
+
856
+ if (this.appStorageService.getItem('tiledeskToken') === null) {
857
+ // console.log('[APP-COMP] - onStorageChanged tiledeskToken is null - RUN LOGOUT')
858
+ this.tiledeskAuthService.logOut()
859
+ this.messagingAuthService.logout();
860
+ this.events.publish('profileInfoButtonClick:logout', true);
861
+ // this.isOnline = false;
862
+ }
863
+ else {
864
+ const currentUser = this.tiledeskAuthService.getCurrentUser();
865
+ // console.log('[APP-COMP] - X - onStorageChanged currentUser', currentUser)
866
+
867
+ const currentToken = this.tiledeskAuthService.getTiledeskToken();
868
+ // console.log('[APP-COMP] - onStorageChanged currentToken', currentToken)
869
+ if (this.appStorageService.getItem('tiledeskToken') !== null && currentToken !== this.appStorageService.getItem('tiledeskToken')) {
870
+
871
+ // console.log('[APP-COMP] - onStorageChanged wentOnline 2')
872
+ // DEALLOCO RISORSE OCCUPATE
873
+ this.messagingAuthService.logout();
874
+ this.appStorageService.removeItem('currentUser')
875
+ this.tiledeskAuthService.setCurrentUser(null);
876
+ // this.unsubscribe$.next();
877
+ // this.unsubscribe$.complete();
878
+ this.initializeApp('onstoragechanged');
879
+
880
+
881
+
882
+ // console.log('[APP-COMP] onAuthStateChanged HERE !!! ')
883
+ // firebase.auth().onAuthStateChanged(user => {
884
+ // console.log('[APP-COMP] onAuthStateChanged', user)
885
+ // })
886
+
887
+ }
888
+ }
889
+ }
890
+
891
+
892
+
893
+ }