@chat21/chat21-ionic 2.0.13 → 3.0.5-9.2

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 (716) 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 +637 -212
  4. package/Dockerfile +1 -2
  5. package/LICENSE +21 -661
  6. package/README.md +40 -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 +26 -6
  12. package/env.sample +28 -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 +90 -0
  40. package/src/app/app.component.html +26 -0
  41. package/src/app/app.component.scss +11 -0
  42. package/src/app/app.component.spec.ts +47 -0
  43. package/src/app/app.component.ts +1154 -128
  44. package/src/app/app.module.ts +314 -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 +199 -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 +97 -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 +76 -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 +215 -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 +10 -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 +78 -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 +154 -0
  98. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +222 -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 +113 -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 +174 -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 +71 -0
  130. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +161 -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 +133 -0
  133. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +64 -0
  134. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +124 -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 +685 -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 +33 -0
  166. package/src/app/components/image-viewer/image-viewer.component.html +23 -0
  167. package/src/app/components/image-viewer/image-viewer.component.scss +107 -0
  168. package/src/app/components/image-viewer/image-viewer.component.spec.ts +24 -0
  169. package/src/app/components/image-viewer/image-viewer.component.ts +38 -0
  170. package/src/app/components/project-item/project-item.component.html +147 -0
  171. package/src/app/components/project-item/project-item.component.scss +669 -0
  172. package/src/app/components/project-item/project-item.component.spec.ts +24 -0
  173. package/src/app/components/project-item/project-item.component.ts +350 -0
  174. package/src/app/components/utils/avatar-profile/avatar-profile.component.html +12 -0
  175. package/src/app/components/utils/avatar-profile/avatar-profile.component.scss +29 -0
  176. package/src/app/components/utils/avatar-profile/avatar-profile.component.spec.ts +24 -0
  177. package/src/app/components/utils/avatar-profile/avatar-profile.component.ts +41 -0
  178. package/src/app/components/utils/user-presence/user-presence.component.html +2 -0
  179. package/src/app/components/utils/user-presence/user-presence.component.scss +24 -0
  180. package/src/app/components/utils/user-presence/user-presence.component.spec.ts +24 -0
  181. package/src/app/components/utils/user-presence/user-presence.component.ts +159 -0
  182. package/src/app/directives/autofocus.directive.ts +41 -0
  183. package/src/app/directives/html-entities-encode.pipe.spec.ts +8 -0
  184. package/src/app/directives/html-entities-encode.pipe.ts +17 -0
  185. package/src/app/directives/marked.pipe.spec.ts +8 -0
  186. package/src/app/directives/marked.pipe.ts +27 -0
  187. package/src/app/directives/safe-html.pipe.ts +16 -0
  188. package/src/app/pages/authentication/login/login-routing.module.ts +17 -0
  189. package/src/app/pages/authentication/login/login.module.ts +39 -0
  190. package/src/app/pages/authentication/login/login.page.html +7 -0
  191. package/src/app/pages/authentication/login/login.page.scss +5 -0
  192. package/src/app/pages/authentication/login/login.page.spec.ts +24 -0
  193. package/src/app/pages/authentication/login/login.page.ts +187 -0
  194. package/src/app/pages/contacts-directory/contacts-directory-routing.module.ts +17 -0
  195. package/src/app/pages/contacts-directory/contacts-directory.module.ts +42 -0
  196. package/src/app/pages/contacts-directory/contacts-directory.page.html +19 -0
  197. package/src/app/pages/contacts-directory/contacts-directory.page.scss +0 -0
  198. package/src/app/pages/contacts-directory/contacts-directory.page.spec.ts +24 -0
  199. package/src/app/pages/contacts-directory/contacts-directory.page.ts +125 -0
  200. package/src/app/pages/conversation-detail/conversation-detail-routing.module.ts +17 -0
  201. package/src/app/pages/conversation-detail/conversation-detail.module.ts +69 -0
  202. package/src/app/pages/conversation-detail/conversation-detail.page.html +191 -0
  203. package/src/app/pages/conversation-detail/conversation-detail.page.scss +492 -0
  204. package/src/app/pages/conversation-detail/conversation-detail.page.spec.ts +24 -0
  205. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1525 -0
  206. package/src/app/pages/conversations-list/conversations-list-routing.module.ts +17 -0
  207. package/src/app/pages/conversations-list/conversations-list.module.ts +43 -0
  208. package/src/app/pages/conversations-list/conversations-list.page.html +112 -0
  209. package/src/app/pages/conversations-list/conversations-list.page.scss +302 -0
  210. package/src/app/pages/conversations-list/conversations-list.page.spec.ts +24 -0
  211. package/src/app/pages/conversations-list/conversations-list.page.ts +1032 -0
  212. package/src/app/pages/details/details-routing.module.ts +17 -0
  213. package/src/app/pages/details/details.module.ts +21 -0
  214. package/src/app/pages/details/details.page.html +28 -0
  215. package/src/app/pages/details/details.page.scss +23 -0
  216. package/src/app/pages/details/details.page.spec.ts +24 -0
  217. package/src/app/pages/details/details.page.ts +65 -0
  218. package/src/app/pages/loader-preview/loader-preview-routing.module.ts +17 -0
  219. package/src/app/pages/loader-preview/loader-preview.module.ts +29 -0
  220. package/src/app/pages/loader-preview/loader-preview.page.html +62 -0
  221. package/src/app/pages/loader-preview/loader-preview.page.scss +117 -0
  222. package/src/app/pages/loader-preview/loader-preview.page.spec.ts +24 -0
  223. package/src/app/pages/loader-preview/loader-preview.page.ts +353 -0
  224. package/src/app/pages/profile-info/profile-info-routing.module.ts +17 -0
  225. package/src/app/pages/profile-info/profile-info.module.ts +41 -0
  226. package/src/app/pages/profile-info/profile-info.page.html +86 -0
  227. package/src/app/pages/profile-info/profile-info.page.scss +264 -0
  228. package/src/app/pages/profile-info/profile-info.page.spec.ts +24 -0
  229. package/src/app/pages/profile-info/profile-info.page.ts +223 -0
  230. package/src/app/pages/unassigned-conversations/unassigned-conversations-routing.module.ts +17 -0
  231. package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +22 -0
  232. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +22 -0
  233. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +79 -0
  234. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.spec.ts +24 -0
  235. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +116 -0
  236. package/src/app/services/app-config.ts +107 -0
  237. package/src/app/services/canned-responses/canned-responses.service.spec.ts +12 -0
  238. package/src/app/services/canned-responses/canned-responses.service.ts +49 -0
  239. package/src/app/services/contacts/contacts.service.spec.ts +12 -0
  240. package/src/app/services/contacts/contacts.service.ts +172 -0
  241. package/src/app/services/events-service.ts +79 -0
  242. package/src/app/services/nav-proxy.service.spec.ts +12 -0
  243. package/src/app/services/nav-proxy.service.ts +80 -0
  244. package/src/app/services/network-service/network.service.spec.ts +12 -0
  245. package/src/app/services/network-service/network.service.ts +46 -0
  246. package/src/app/services/tiledesk/tiledesk.service.spec.ts +12 -0
  247. package/src/app/services/tiledesk/tiledesk.service.ts +99 -0
  248. package/src/app/services/websocket/websocket-js.ts +560 -0
  249. package/src/app/services/websocket/websocket.service.spec.ts +12 -0
  250. package/src/app/services/websocket/websocket.service.ts +292 -0
  251. package/src/app/shared/shared-conversation-info.module.ts +33 -0
  252. package/src/app/shared/shared.module.ts +130 -0
  253. package/src/{utils → app/utils}/constants.ts-e +0 -0
  254. package/src/app/utils/scrollbar-theme.directive.ts +63 -0
  255. package/src/assets/i18n/en.json +122 -38
  256. package/src/assets/i18n/it.json +101 -10
  257. package/src/assets/icon/favicon.ico +0 -0
  258. package/src/assets/icon/ionic_favicon.png +0 -0
  259. package/src/assets/images/f21ico-done.svg +1 -0
  260. package/src/assets/images/f21ico-done_all.svg +1 -0
  261. package/src/assets/images/f21ico-schedule.svg +1 -0
  262. package/src/assets/images/file-alt-solid.png +0 -0
  263. package/src/assets/images/no_conversation.jpg +0 -0
  264. package/src/assets/{img → images}/no_image.png +0 -0
  265. package/src/assets/js/chat21client.js +1027 -0
  266. package/src/assets/js/mqtt/4.1.0/mqtt.min.js +1 -0
  267. package/src/assets/js/mqtt/4.2.6/mqtt.min.js +1 -0
  268. package/src/assets/js/mqtt/4.2.8/mqtt.min.js +1 -0
  269. package/src/assets/logo.png +0 -0
  270. package/src/assets/shapes.svg +1 -0
  271. package/src/assets/sounds/pling.mp3 +0 -0
  272. package/src/assets/transparent.png +0 -0
  273. package/src/chat-config-mqtt-ver-uploaded.json +22 -0
  274. package/src/chat-config-mqtt.json +26 -0
  275. package/src/chat-config-pre-test.json +32 -0
  276. package/src/chat-config-pre.json +23 -0
  277. package/src/chat-config-template.json +20 -6
  278. package/src/chat-config.json +30 -0
  279. package/src/{models → chat21-core/models}/conversation.ts +6 -2
  280. package/src/{models → chat21-core/models}/group.ts +7 -5
  281. package/src/{models → chat21-core/models}/message.ts +8 -8
  282. package/src/{models → chat21-core/models}/upload.ts +5 -5
  283. package/src/{models → chat21-core/models}/user.ts +2 -1
  284. package/src/chat21-core/providers/abstract/app-storage.service.spec.ts +15 -0
  285. package/src/chat21-core/providers/abstract/app-storage.service.ts +17 -0
  286. package/src/chat21-core/providers/abstract/archivedconversations-handler.service.spec.ts +13 -0
  287. package/src/chat21-core/providers/abstract/archivedconversations-handler.service.ts +34 -0
  288. package/src/chat21-core/providers/abstract/conversation-handler-builder.service.spec.ts +12 -0
  289. package/src/chat21-core/providers/abstract/conversation-handler-builder.service.ts +11 -0
  290. package/src/chat21-core/providers/abstract/conversation-handler.service.spec.ts +12 -0
  291. package/src/chat21-core/providers/abstract/conversation-handler.service.ts +43 -0
  292. package/src/chat21-core/providers/abstract/conversations-handler.service.spec.ts +12 -0
  293. package/src/chat21-core/providers/abstract/conversations-handler.service.ts +42 -0
  294. package/src/chat21-core/providers/abstract/groups-handler.service.spec.ts +12 -0
  295. package/src/chat21-core/providers/abstract/groups-handler.service.ts +28 -0
  296. package/src/chat21-core/providers/abstract/image-repo.service.spec.ts +12 -0
  297. package/src/chat21-core/providers/abstract/image-repo.service.ts +26 -0
  298. package/src/chat21-core/providers/abstract/logger.service.spec.ts +12 -0
  299. package/src/chat21-core/providers/abstract/logger.service.ts +16 -0
  300. package/src/chat21-core/providers/abstract/messagingAuth.service.spec.ts +12 -0
  301. package/src/chat21-core/providers/abstract/messagingAuth.service.ts +54 -0
  302. package/src/chat21-core/providers/abstract/notifications.service.spec.ts +12 -0
  303. package/src/chat21-core/providers/abstract/notifications.service.ts +31 -0
  304. package/src/chat21-core/providers/abstract/presence.service.spec.ts +12 -0
  305. package/src/chat21-core/providers/abstract/presence.service.ts +34 -0
  306. package/src/chat21-core/providers/abstract/typing.service.spec.ts +12 -0
  307. package/src/chat21-core/providers/abstract/typing.service.ts +31 -0
  308. package/src/chat21-core/providers/abstract/upload.service.spec.ts +12 -0
  309. package/src/chat21-core/providers/abstract/upload.service.ts +39 -0
  310. package/src/chat21-core/providers/chat-manager.ts +282 -0
  311. package/src/chat21-core/providers/custom-translate.service.spec.ts +12 -0
  312. package/src/chat21-core/providers/custom-translate.service.ts +42 -0
  313. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +476 -0
  314. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +376 -0
  315. package/src/chat21-core/providers/firebase/firebase-conversation-handler-builder.service.ts +19 -0
  316. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +416 -0
  317. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +570 -0
  318. package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +303 -0
  319. package/src/chat21-core/providers/firebase/firebase-image-repo.ts +40 -0
  320. package/src/chat21-core/providers/firebase/firebase-init-service.ts +31 -0
  321. package/src/chat21-core/providers/firebase/firebase-notifications.ts +246 -0
  322. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +190 -0
  323. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +93 -0
  324. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +106 -0
  325. package/src/chat21-core/providers/localSessionStorage.ts +215 -0
  326. package/src/chat21-core/providers/logger/customLogger.ts +70 -0
  327. package/src/chat21-core/providers/logger/loggerInstance.ts +20 -0
  328. package/src/chat21-core/providers/mqtt/chat-service.ts +44 -0
  329. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +707 -0
  330. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +313 -0
  331. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler-builder.service.ts +25 -0
  332. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +446 -0
  333. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +601 -0
  334. package/src/chat21-core/providers/mqtt/mqtt-groups-handler.ts +139 -0
  335. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +122 -0
  336. package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +229 -0
  337. package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +93 -0
  338. package/src/chat21-core/providers/native/native-image-repo.ts +30 -0
  339. package/src/chat21-core/providers/native/native-upload-service.ts +85 -0
  340. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.spec.ts +12 -0
  341. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +211 -0
  342. package/src/chat21-core/utils/constants.ts +109 -0
  343. package/src/chat21-core/utils/user-typing/user-typing.component.html +6 -0
  344. package/src/chat21-core/utils/user-typing/user-typing.component.scss +62 -0
  345. package/src/chat21-core/utils/user-typing/user-typing.component.spec.ts +24 -0
  346. package/src/chat21-core/utils/user-typing/user-typing.component.ts +114 -0
  347. package/src/chat21-core/utils/utils-message.ts +117 -0
  348. package/src/chat21-core/utils/utils-user.ts +46 -0
  349. package/src/chat21-core/utils/utils.ts +893 -0
  350. package/src/firebase-messaging-sw-template.js +1 -1
  351. package/src/global.scss +585 -0
  352. package/src/index.html +71 -42
  353. package/src/main.ts +12 -0
  354. package/src/manifest.json +0 -11
  355. package/src/models/department.ts +12 -0
  356. package/src/polyfills.ts +73 -0
  357. package/src/test.ts +21 -0
  358. package/src/theme/variables.scss +236 -93
  359. package/src/variables.scss +30 -0
  360. package/src/zone-flags.ts +5 -0
  361. package/tsconfig.app.json +14 -0
  362. package/tsconfig.json +23 -18
  363. package/tsconfig.spec.json +19 -0
  364. package/tslint.json +84 -7
  365. package/app.json +0 -7
  366. package/curl +0 -1
  367. package/deploy_dev.sh +0 -28
  368. package/docs/changelog.html +0 -227
  369. package/docs/classes/ConversationModel.html +0 -1022
  370. package/docs/classes/GroupModel.html +0 -527
  371. package/docs/classes/MessageModel.html +0 -843
  372. package/docs/classes/UploadModel.html +0 -417
  373. package/docs/classes/UserModel.html +0 -728
  374. package/docs/classes/_DetailPage.html +0 -144
  375. package/docs/classes/_MasterPage.html +0 -144
  376. package/docs/components/ArchivedConversationsPage.html +0 -1024
  377. package/docs/components/ChatBubble.html +0 -327
  378. package/docs/components/DettaglioConversazionePage.html +0 -6060
  379. package/docs/components/ElasticTextarea.html +0 -619
  380. package/docs/components/InfoAdvancedPage.html +0 -656
  381. package/docs/components/InfoConversationPage.html +0 -5681
  382. package/docs/components/InfoMessagePage.html +0 -993
  383. package/docs/components/InfoUserPage.html +0 -1420
  384. package/docs/components/ListaConversazioniPage.html +0 -3576
  385. package/docs/components/LoginPage.html +0 -1457
  386. package/docs/components/MyApp.html +0 -1388
  387. package/docs/components/PlaceholderPage.html +0 -397
  388. package/docs/components/PopoverPage.html +0 -986
  389. package/docs/components/PopoverProfilePage.html +0 -639
  390. package/docs/components/ProfilePage.html +0 -1187
  391. package/docs/components/RegisterPage.html +0 -1271
  392. package/docs/components/ResetpwdPage.html +0 -1039
  393. package/docs/components/UpdateImageProfilePage.html +0 -997
  394. package/docs/components/UsersPage.html +0 -1297
  395. package/docs/coverage.html +0 -1421
  396. package/docs/dependencies.html +0 -210
  397. package/docs/directives/AutosizeDirective.html +0 -556
  398. package/docs/fonts/FontAwesome.otf +0 -0
  399. package/docs/fonts/fontawesome-webfont.eot +0 -0
  400. package/docs/fonts/fontawesome-webfont.svg +0 -685
  401. package/docs/fonts/fontawesome-webfont.ttf +0 -0
  402. package/docs/fonts/fontawesome-webfont.woff +0 -0
  403. package/docs/fonts/fontawesome-webfont.woff2 +0 -0
  404. package/docs/fonts/ionicons.eot +0 -0
  405. package/docs/fonts/ionicons.svg +0 -2090
  406. package/docs/fonts/ionicons.ttf +0 -0
  407. package/docs/fonts/ionicons.woff +0 -0
  408. package/docs/fonts/ionicons.woff2 +0 -0
  409. package/docs/fonts/roboto-v15-latin-300.eot +0 -0
  410. package/docs/fonts/roboto-v15-latin-300.svg +0 -314
  411. package/docs/fonts/roboto-v15-latin-300.ttf +0 -0
  412. package/docs/fonts/roboto-v15-latin-300.woff +0 -0
  413. package/docs/fonts/roboto-v15-latin-300.woff2 +0 -0
  414. package/docs/fonts/roboto-v15-latin-700.eot +0 -0
  415. package/docs/fonts/roboto-v15-latin-700.svg +0 -310
  416. package/docs/fonts/roboto-v15-latin-700.ttf +0 -0
  417. package/docs/fonts/roboto-v15-latin-700.woff +0 -0
  418. package/docs/fonts/roboto-v15-latin-700.woff2 +0 -0
  419. package/docs/fonts/roboto-v15-latin-italic.eot +0 -0
  420. package/docs/fonts/roboto-v15-latin-italic.svg +0 -323
  421. package/docs/fonts/roboto-v15-latin-italic.ttf +0 -0
  422. package/docs/fonts/roboto-v15-latin-italic.woff +0 -0
  423. package/docs/fonts/roboto-v15-latin-italic.woff2 +0 -0
  424. package/docs/fonts/roboto-v15-latin-regular.eot +0 -0
  425. package/docs/fonts/roboto-v15-latin-regular.svg +0 -308
  426. package/docs/fonts/roboto-v15-latin-regular.ttf +0 -0
  427. package/docs/fonts/roboto-v15-latin-regular.woff +0 -0
  428. package/docs/fonts/roboto-v15-latin-regular.woff2 +0 -0
  429. package/docs/graph/dependencies.svg +0 -870
  430. package/docs/images/compodoc-vectorise-inverted.png +0 -0
  431. package/docs/images/compodoc-vectorise-inverted.svg +0 -201
  432. package/docs/images/compodoc-vectorise.png +0 -0
  433. package/docs/images/compodoc-vectorise.svg +0 -201
  434. package/docs/images/coverage-badge-documentation.svg +0 -9
  435. package/docs/images/coverage-badge.svg +0 -9
  436. package/docs/images/favicon.ico +0 -0
  437. package/docs/index.html +0 -233
  438. package/docs/injectables/AppConfigProvider.html +0 -411
  439. package/docs/injectables/AuthService.html +0 -1016
  440. package/docs/injectables/ChatArchivedConversationsHandler.html +0 -1832
  441. package/docs/injectables/ChatContactsSynchronizer.html +0 -841
  442. package/docs/injectables/ChatConversationHandler.html +0 -1960
  443. package/docs/injectables/ChatConversationsHandler.html +0 -2584
  444. package/docs/injectables/ChatManager.html +0 -1779
  445. package/docs/injectables/ChatPresenceHandler.html +0 -1187
  446. package/docs/injectables/CustomTranslateService.html +0 -496
  447. package/docs/injectables/DatabaseProvider.html +0 -1444
  448. package/docs/injectables/GroupService.html +0 -1458
  449. package/docs/injectables/MessagingService.html +0 -1165
  450. package/docs/injectables/NavProxyService.html +0 -1028
  451. package/docs/injectables/TiledeskConversationProvider.html +0 -945
  452. package/docs/injectables/UploadService.html +0 -791
  453. package/docs/injectables/UserService.html +0 -1612
  454. package/docs/js/compodoc.js +0 -14
  455. package/docs/js/lazy-load-graphs.js +0 -44
  456. package/docs/js/libs/EventDispatcher.js +0 -5
  457. package/docs/js/libs/bootstrap-native.js +0 -2
  458. package/docs/js/libs/clipboard.min.js +0 -7
  459. package/docs/js/libs/custom-elements-es5-adapter.js +0 -15
  460. package/docs/js/libs/custom-elements.min.js +0 -38
  461. package/docs/js/libs/d3.v3.min.js +0 -2
  462. package/docs/js/libs/deep-iterator.js +0 -2
  463. package/docs/js/libs/es6-shim.min.js +0 -11
  464. package/docs/js/libs/htmlparser.js +0 -23
  465. package/docs/js/libs/innersvg.js +0 -9
  466. package/docs/js/libs/lit-html.js +0 -1
  467. package/docs/js/libs/prism.js +0 -14
  468. package/docs/js/libs/promise.min.js +0 -6
  469. package/docs/js/libs/svg-pan-zoom.min.js +0 -3
  470. package/docs/js/libs/tablesort.min.js +0 -6
  471. package/docs/js/libs/tablesort.number.min.js +0 -6
  472. package/docs/js/libs/vis.min.js +0 -46
  473. package/docs/js/libs/zepto.min.js +0 -2
  474. package/docs/js/menu-wc.js +0 -594
  475. package/docs/js/menu.js +0 -261
  476. package/docs/js/routes.js +0 -280
  477. package/docs/js/search/lunr.min.js +0 -6
  478. package/docs/js/search/search-lunr.js +0 -67
  479. package/docs/js/search/search.js +0 -268
  480. package/docs/js/search/search_index.js +0 -4
  481. package/docs/js/sourceCode.js +0 -58
  482. package/docs/js/svg-pan-zoom.controls.js +0 -53
  483. package/docs/js/tabs.js +0 -21
  484. package/docs/js/tree.js +0 -147
  485. package/docs/license.html +0 -664
  486. package/docs/miscellaneous/functions.html +0 -2417
  487. package/docs/miscellaneous/variables.html +0 -994
  488. package/docs/modules/AppModule/dependencies.svg +0 -454
  489. package/docs/modules/AppModule.html +0 -967
  490. package/docs/modules/ArchivedConversationsPageModule/dependencies.svg +0 -50
  491. package/docs/modules/ArchivedConversationsPageModule.html +0 -225
  492. package/docs/modules/DettaglioConversazionePageModule/dependencies.svg +0 -66
  493. package/docs/modules/DettaglioConversazionePageModule.html +0 -256
  494. package/docs/modules/InfoAdvancedPageModule/dependencies.svg +0 -50
  495. package/docs/modules/InfoAdvancedPageModule.html +0 -225
  496. package/docs/modules/InfoConversationPageModule/dependencies.svg +0 -50
  497. package/docs/modules/InfoConversationPageModule.html +0 -227
  498. package/docs/modules/InfoUserPageModule/dependencies.svg +0 -50
  499. package/docs/modules/InfoUserPageModule.html +0 -225
  500. package/docs/modules/ListaConversazioniPageModule/dependencies.svg +0 -66
  501. package/docs/modules/ListaConversazioniPageModule.html +0 -255
  502. package/docs/modules/LoginModule/dependencies.svg +0 -66
  503. package/docs/modules/LoginModule.html +0 -253
  504. package/docs/modules/PlaceholderPageModule/dependencies.svg +0 -66
  505. package/docs/modules/PlaceholderPageModule.html +0 -253
  506. package/docs/modules/PopoverPageModule/dependencies.svg +0 -66
  507. package/docs/modules/PopoverPageModule.html +0 -253
  508. package/docs/modules/PopoverProfilePageModule/dependencies.svg +0 -66
  509. package/docs/modules/PopoverProfilePageModule.html +0 -253
  510. package/docs/modules/ProfilePageModule/dependencies.svg +0 -66
  511. package/docs/modules/ProfilePageModule.html +0 -253
  512. package/docs/modules/RegisterModule/dependencies.svg +0 -66
  513. package/docs/modules/RegisterModule.html +0 -253
  514. package/docs/modules/ResetpwdModule/dependencies.svg +0 -66
  515. package/docs/modules/ResetpwdModule.html +0 -253
  516. package/docs/modules/UpdateImageProfilePageModule/dependencies.svg +0 -66
  517. package/docs/modules/UpdateImageProfilePageModule.html +0 -253
  518. package/docs/modules/UsersModule/dependencies.svg +0 -66
  519. package/docs/modules/UsersModule.html +0 -253
  520. package/docs/modules.html +0 -379
  521. package/docs/overview.html +0 -1033
  522. package/docs/styles/bootstrap-card.css +0 -219
  523. package/docs/styles/bootstrap.min.css +0 -5
  524. package/docs/styles/compodoc.css +0 -996
  525. package/docs/styles/font-awesome.min.css +0 -4
  526. package/docs/styles/ionicons.min.css +0 -11
  527. package/docs/styles/laravel.css +0 -69
  528. package/docs/styles/material.css +0 -109
  529. package/docs/styles/original.css +0 -47
  530. package/docs/styles/postmark.css +0 -224
  531. package/docs/styles/prism.css +0 -267
  532. package/docs/styles/readthedocs.css +0 -108
  533. package/docs/styles/reset.css +0 -48
  534. package/docs/styles/stripe.css +0 -65
  535. package/docs/styles/style.css +0 -7
  536. package/docs/styles/tablesort.css +0 -33
  537. package/docs/styles/vagrant.css +0 -96
  538. package/firebase-functions/.firebaserc +0 -5
  539. package/firebase-functions/firebase.json +0 -1
  540. package/firebase-functions/functions/index.js +0 -208
  541. package/firebase-functions/functions/package.json +0 -9
  542. package/google-services.json +0 -42
  543. package/hooks/README.md +0 -196
  544. package/resources/android/icon/drawable-hdpi-icon.png +0 -0
  545. package/resources/android/icon/drawable-ldpi-icon.png +0 -0
  546. package/resources/android/icon/drawable-mdpi-icon.png +0 -0
  547. package/resources/android/icon/drawable-xhdpi-icon.png +0 -0
  548. package/resources/android/icon/drawable-xxhdpi-icon.png +0 -0
  549. package/resources/android/icon/drawable-xxxhdpi-icon.png +0 -0
  550. package/resources/android/splash/drawable-land-hdpi-screen.png +0 -0
  551. package/resources/android/splash/drawable-land-ldpi-screen.png +0 -0
  552. package/resources/android/splash/drawable-land-mdpi-screen.png +0 -0
  553. package/resources/android/splash/drawable-land-xhdpi-screen.png +0 -0
  554. package/resources/android/splash/drawable-land-xxhdpi-screen.png +0 -0
  555. package/resources/android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  556. package/resources/android/splash/drawable-port-hdpi-screen.png +0 -0
  557. package/resources/android/splash/drawable-port-ldpi-screen.png +0 -0
  558. package/resources/android/splash/drawable-port-mdpi-screen.png +0 -0
  559. package/resources/android/splash/drawable-port-xhdpi-screen.png +0 -0
  560. package/resources/android/splash/drawable-port-xxhdpi-screen.png +0 -0
  561. package/resources/android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  562. package/resources/icon.png +0 -0
  563. package/resources/icon.png.md5 +0 -1
  564. package/resources/ios/icon/icon-1024.png +0 -0
  565. package/resources/ios/icon/icon-40.png +0 -0
  566. package/resources/ios/icon/icon-40@2x.png +0 -0
  567. package/resources/ios/icon/icon-40@3x.png +0 -0
  568. package/resources/ios/icon/icon-50.png +0 -0
  569. package/resources/ios/icon/icon-50@2x.png +0 -0
  570. package/resources/ios/icon/icon-60.png +0 -0
  571. package/resources/ios/icon/icon-60@2x.png +0 -0
  572. package/resources/ios/icon/icon-60@3x.png +0 -0
  573. package/resources/ios/icon/icon-72.png +0 -0
  574. package/resources/ios/icon/icon-72@2x.png +0 -0
  575. package/resources/ios/icon/icon-76.png +0 -0
  576. package/resources/ios/icon/icon-76@2x.png +0 -0
  577. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  578. package/resources/ios/icon/icon-small.png +0 -0
  579. package/resources/ios/icon/icon-small@2x.png +0 -0
  580. package/resources/ios/icon/icon-small@3x.png +0 -0
  581. package/resources/ios/icon/icon.png +0 -0
  582. package/resources/ios/icon/icon@2x.png +0 -0
  583. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  584. package/resources/ios/splash/Default-667h.png +0 -0
  585. package/resources/ios/splash/Default-736h.png +0 -0
  586. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  587. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  588. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  589. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  590. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  591. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  592. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  593. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  594. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  595. package/resources/ios/splash/Default~iphone.png +0 -0
  596. package/resources/splash.png +0 -0
  597. package/resources/splash.png.md5 +0 -1
  598. package/server.js +0 -7
  599. package/src/app/app.html +0 -56
  600. package/src/app/app.scss +0 -236
  601. package/src/app/main.ts +0 -9
  602. package/src/assets/chat-background.jpg +0 -0
  603. package/src/assets/chat21-ionic-pattern-2.svg +0 -5110
  604. package/src/assets/chat21-ionic-pattern.png +0 -0
  605. package/src/assets/chat21-ionic-pattern.svg +0 -1
  606. package/src/assets/download.svg +0 -1
  607. package/src/assets/dummyDump.sql +0 -1
  608. package/src/assets/icon/favicon_old.ico +0 -0
  609. package/src/assets/img/c21-down-gray.svg +0 -1
  610. package/src/assets/img/chat21-icon.png +0 -0
  611. package/src/assets/img/f21ico-attached.svg +0 -1
  612. package/src/assets/img/f21ico-close.svg +0 -1
  613. package/src/assets/img/f21ico-photo.svg +0 -1
  614. package/src/assets/img/ic_keyboard_arrow_down_black_24px.svg +0 -4
  615. package/src/assets/img/ic_keyboard_arrow_down_white_24px.svg +0 -4
  616. package/src/assets/img/icon.png +0 -0
  617. package/src/assets/message-mine.png +0 -0
  618. package/src/assets/message-other.png +0 -0
  619. package/src/assets/pling.mp3 +0 -0
  620. package/src/assets/splash.png +0 -0
  621. package/src/declarations.d.ts +0 -14
  622. package/src/directives/autosize/autosize.ts +0 -82
  623. package/src/environments/environment.pre.ts +0 -22
  624. package/src/environments/environment.prod.ts +0 -22
  625. package/src/environments/environment.ts +0 -21
  626. package/src/pages/_DetailPage.ts +0 -1
  627. package/src/pages/_MasterPage.ts +0 -1
  628. package/src/pages/archived-conversations/archived-conversations.html +0 -32
  629. package/src/pages/archived-conversations/archived-conversations.module.ts +0 -13
  630. package/src/pages/archived-conversations/archived-conversations.scss +0 -153
  631. package/src/pages/archived-conversations/archived-conversations.ts +0 -121
  632. package/src/pages/authentication/login/login.html +0 -58
  633. package/src/pages/authentication/login/login.module.ts +0 -16
  634. package/src/pages/authentication/login/login.scss +0 -121
  635. package/src/pages/authentication/login/login.ts +0 -221
  636. package/src/pages/authentication/register/register.html +0 -88
  637. package/src/pages/authentication/register/register.module.ts +0 -16
  638. package/src/pages/authentication/register/register.scss +0 -95
  639. package/src/pages/authentication/register/register.ts +0 -122
  640. package/src/pages/authentication/resetpwd/resetpwd.html +0 -40
  641. package/src/pages/authentication/resetpwd/resetpwd.module.ts +0 -16
  642. package/src/pages/authentication/resetpwd/resetpwd.scss +0 -102
  643. package/src/pages/authentication/resetpwd/resetpwd.ts +0 -93
  644. package/src/pages/components/chatBubble_old/chatBubble.scss +0 -83
  645. package/src/pages/components/chatBubble_old/chatBubble.ts +0 -30
  646. package/src/pages/components/elasticTextarea_old.ts +0 -46
  647. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.html +0 -261
  648. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.module.ts +0 -19
  649. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.scss +0 -701
  650. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.ts +0 -1395
  651. package/src/pages/index.ts +0 -5
  652. package/src/pages/info-advanced/info-advanced.html +0 -90
  653. package/src/pages/info-advanced/info-advanced.module.ts +0 -13
  654. package/src/pages/info-advanced/info-advanced.scss +0 -196
  655. package/src/pages/info-advanced/info-advanced.ts +0 -44
  656. package/src/pages/info-conversation/info-conversation.html +0 -225
  657. package/src/pages/info-conversation/info-conversation.module.ts +0 -15
  658. package/src/pages/info-conversation/info-conversation.scss +0 -444
  659. package/src/pages/info-conversation/info-conversation.ts +0 -1233
  660. package/src/pages/info-message/info-message.html +0 -74
  661. package/src/pages/info-message/info-message.module.ts +0 -13
  662. package/src/pages/info-message/info-message.scss +0 -216
  663. package/src/pages/info-message/info-message.ts +0 -89
  664. package/src/pages/info-user/info-user.html +0 -89
  665. package/src/pages/info-user/info-user.module.ts +0 -13
  666. package/src/pages/info-user/info-user.scss +0 -187
  667. package/src/pages/info-user/info-user.ts +0 -177
  668. package/src/pages/lista-conversazioni/lista-conversazioni.html +0 -88
  669. package/src/pages/lista-conversazioni/lista-conversazioni.module.ts +0 -18
  670. package/src/pages/lista-conversazioni/lista-conversazioni.scss +0 -245
  671. package/src/pages/lista-conversazioni/lista-conversazioni.ts +0 -736
  672. package/src/pages/placeholder/placeholder.html +0 -3
  673. package/src/pages/placeholder/placeholder.module.ts +0 -16
  674. package/src/pages/placeholder/placeholder.scss +0 -23
  675. package/src/pages/placeholder/placeholder.ts +0 -18
  676. package/src/pages/popover/popover.html +0 -27
  677. package/src/pages/popover/popover.module.ts +0 -16
  678. package/src/pages/popover/popover.scss +0 -23
  679. package/src/pages/popover/popover.ts +0 -95
  680. package/src/pages/popover-profile/popover-profile.html +0 -20
  681. package/src/pages/popover-profile/popover-profile.module.ts +0 -16
  682. package/src/pages/popover-profile/popover-profile.scss +0 -10
  683. package/src/pages/popover-profile/popover-profile.ts +0 -40
  684. package/src/pages/profile/profile.html +0 -54
  685. package/src/pages/profile/profile.module.ts +0 -16
  686. package/src/pages/profile/profile.scss +0 -45
  687. package/src/pages/profile/profile.ts +0 -108
  688. package/src/pages/update-image-profile/update-image-profile.html +0 -39
  689. package/src/pages/update-image-profile/update-image-profile.module.ts +0 -16
  690. package/src/pages/update-image-profile/update-image-profile.scss +0 -50
  691. package/src/pages/update-image-profile/update-image-profile.ts +0 -111
  692. package/src/pages/users/users.html +0 -55
  693. package/src/pages/users/users.module.ts +0 -16
  694. package/src/pages/users/users.scss +0 -10
  695. package/src/pages/users/users.ts +0 -222
  696. package/src/providers/app-config/app-config.ts +0 -33
  697. package/src/providers/auth-service.ts +0 -140
  698. package/src/providers/canned-responses-service/canned-responses-service.ts +0 -57
  699. package/src/providers/chat-archived-conversations-handler.ts +0 -283
  700. package/src/providers/chat-contacts-synchronizer.ts +0 -179
  701. package/src/providers/chat-conversation-handler.ts +0 -547
  702. package/src/providers/chat-conversations-handler.ts +0 -519
  703. package/src/providers/chat-manager/chat-manager.ts +0 -246
  704. package/src/providers/chat-presence-handler.ts +0 -188
  705. package/src/providers/database/database.ts +0 -214
  706. package/src/providers/group/group.ts +0 -243
  707. package/src/providers/messaging-service.ts +0 -267
  708. package/src/providers/nav-proxy.ts +0 -104
  709. package/src/providers/tiledesk-conversation/tiledesk-conversation.ts +0 -134
  710. package/src/providers/translate-service.ts +0 -61
  711. package/src/providers/upload-service/upload-service.ts +0 -117
  712. package/src/providers/user/user.ts +0 -320
  713. package/src/service-worker.js +0 -30
  714. package/src/utils/constants.ts +0 -73
  715. package/src/utils/utils.ts +0 -548
  716. package/src/videochat.php +0 -20
@@ -0,0 +1,893 @@
1
+
2
+ import * as moment from 'moment/moment';
3
+ // import * as moment from 'moment-timezone';
4
+ import 'moment/locale/it.js';
5
+
6
+ import { FIREBASESTORAGE_BASE_URL_IMAGE, STORAGE_PREFIX, TYPE_GROUP } from './constants';
7
+ import { environment } from '../../environments/environment'; // ?????
8
+ import { HttpClient } from '@angular/common/http';
9
+ import { TranslateHttpLoader } from '@ngx-translate/http-loader';
10
+ import { AngularDelegate, ModalController } from '@ionic/angular';
11
+ import { ConversationModel } from '../models/conversation';
12
+
13
+ import { MAX_WIDTH_IMAGES, TYPE_DIRECT, TYPE_SUPPORT_GROUP } from './constants';
14
+
15
+ import { avatarPlaceholder, getColorBck, getImageUrlThumbFromFirebasestorage } from './utils-user';
16
+
17
+
18
+ /**
19
+ * Shortest description for phone and tablet
20
+ * Nota: eseguendo un test su desktop in realtà lo switch avviene a 921px 767px
21
+ */
22
+ export function windowsMatchMedia() {
23
+
24
+ const mq = window.matchMedia('(max-width: 767px)');
25
+ if (mq.matches) {
26
+ // console.log('window width is less than 767px ');
27
+ return false;
28
+ } else {
29
+ // console.log('window width is at least 767px');
30
+ return true;
31
+ }
32
+ }
33
+
34
+ /**
35
+ * chiamata da ChatConversationsHandler
36
+ * restituisce url '/conversations'
37
+ * @param tenant
38
+ */
39
+ export function conversationsPathForUserId(tenant, userId) {
40
+ const urlNodeConversations = '/apps/' + tenant + '/users/' + userId + '/conversations';
41
+ return urlNodeConversations;
42
+ }
43
+
44
+ /**
45
+ * chiamata da ArchivedConversationsHandler
46
+ * restituisce url '/archived_conversations'
47
+ * @param tenant
48
+ */
49
+ export function archivedConversationsPathForUserId(tenant, userId) {
50
+ const urlNodeConversations = '/apps/' + tenant + '/users/' + userId + '/archived_conversations';
51
+ return urlNodeConversations;
52
+ }
53
+
54
+ /**
55
+ * chiamata da GroupHandler
56
+ * restituisce url '/group'
57
+ * @param tenant
58
+ */
59
+ export function groupsPathForUserId(tenant, userId) {
60
+ const urlNodeConversations = '/apps/' + tenant + '/users/' + userId + '/groups';
61
+ return urlNodeConversations;
62
+ }
63
+
64
+ /**
65
+ * chiamata da ChatConversationHandler
66
+ * restituisce url '/messages'
67
+ */
68
+ export function conversationMessagesRef(tenant, userId) {
69
+ const urlNode = '/apps/' + tenant + '/users/' + userId + '/messages/';
70
+ return urlNode;
71
+ }
72
+
73
+ /**
74
+ * chiamata da ChatContactsSynchronizer
75
+ * restituisce url '/contacts'
76
+ */
77
+ export function contactsRef(tenant) {
78
+ const urlNodeContacts = '/apps/' + tenant + '/contacts/';
79
+ return urlNodeContacts;
80
+ }
81
+
82
+
83
+ /**
84
+ * chiamata da ChatConversationsHandler
85
+ * restituisce url '/conversations'
86
+ * @param tenant
87
+ */
88
+ export function nodeTypingsPath(tenant, conversationWith) {
89
+ const urlNodeConversations = '/apps/' + tenant + '/typings/' + conversationWith;
90
+ return urlNodeConversations;
91
+ }
92
+
93
+ /**
94
+ * restituiso indice item nell'array con uid == key
95
+ * @param items
96
+ * @param key
97
+ */
98
+ export function searchIndexInArrayForUid(items, key) {
99
+ return items.findIndex(i => i.uid === key);
100
+ }
101
+ /**
102
+ * trasforma url contenuti nel testo passato in tag <a>
103
+ */
104
+ export function urlify(text?, name?) {
105
+ if (!text) return name;
106
+ //https://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-check-if-a-string-is-a-valid-url
107
+ var regex = /(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,63}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?/;
108
+ return text.replace(regex, function (url) {
109
+ if (url.match(/^[/]/)) { return; }
110
+ var label = url;
111
+ if (name) {
112
+ label = name;
113
+ }
114
+ if (url.indexOf('@') !== -1) {
115
+ return '<a href=\"mailto:' + url + '\">' + label + '</a>';
116
+ } else if (!url.match(/^[a-zA-Z]+:\/\//)) {
117
+ url = 'http://' + url;
118
+ }
119
+ let link = '<a href=\"' + url + '\" target=\"_blank\">' + label + '</a>';
120
+ return link
121
+ })
122
+ }
123
+
124
+ /**
125
+ * rimuove il tag html dal testo
126
+ * ATTUALMENTE NON USATA
127
+ */
128
+ export function removeHtmlTags(text) {
129
+ return text.replace(/(<([^>]+)>)/ig, "");
130
+ }
131
+
132
+ /**
133
+ * calcolo il tempo trascorso tra due date
134
+ * e lo formatto come segue:
135
+ * gg/mm/aaaa;
136
+ * oggi;
137
+ * ieri;
138
+ * giorno della settimana (lunedì, martedì, ecc)
139
+ */
140
+ export function setHeaderDate_old(translate, timestamp, lastDate?): string {
141
+ var date = new Date(timestamp);
142
+ let now: Date = new Date();
143
+ var LABEL_TODAY;// = translate.get('LABEL_TODAY')['value'];
144
+ var LABEL_TOMORROW;// = translate.get('LABEL_TOMORROW')['value'];
145
+ translate.get('LABEL_TODAY').subscribe((res: string) => {
146
+ LABEL_TODAY = res;
147
+ });
148
+ translate.get('LABEL_TOMORROW').subscribe((res: string) => {
149
+ LABEL_TOMORROW = res;
150
+ });
151
+ var labelDays: string = LABEL_TODAY;
152
+ var _MS_PER_DAY = 1000 * 60 * 60 * 24;
153
+ // Esclude l'ora ed il fuso orario
154
+ var utc1 = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
155
+ var utc2 = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
156
+ const days = Math.floor((utc2 - utc1) / _MS_PER_DAY);
157
+ // console.log('setHeaderDate days: ********************',days);
158
+ if (days > 6) {
159
+ labelDays = date.toLocaleDateString();//date.getDate()+"/"+(date.getMonth()+1)+"/"+date.getFullYear();
160
+ }
161
+ else if (days == 0) {
162
+ labelDays = LABEL_TODAY;
163
+ } else if (days == 1) {
164
+ labelDays = LABEL_TOMORROW;
165
+ } else {
166
+ labelDays = convertDayToString(translate, date.getDay());
167
+ }
168
+ // console.log('setHeaderDate labelDays: ********************',labelDays);
169
+ // se le date sono diverse o la data di riferimento non è impostata
170
+ // ritorna la data calcolata
171
+ // altrimenti torna null
172
+ if (lastDate != labelDays || lastDate == null || lastDate == '') {
173
+ return labelDays;
174
+ } else {
175
+ return null;
176
+ }
177
+ }
178
+
179
+ export function setHeaderDate(translate, timestamp): string {
180
+ // const LABEL_TODAY = translate.get('LABEL_TODAY');
181
+ // const LABEL_TOMORROW = translate.get('LABEL_TOMORROW');
182
+
183
+ const date = new Date(timestamp);
184
+ const now: Date = new Date();
185
+ let labelDays = '';
186
+ if (now.getFullYear() !== date.getFullYear()) {
187
+ // quest'anno: data esatta
188
+ const month = date.getMonth() + 1;
189
+ labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();
190
+ } else if (now.getMonth() !== date.getMonth()) {
191
+ // questo mese: data esatta
192
+ const month = date.getMonth() + 1;
193
+ labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();
194
+ } else if (now.getDay() === date.getDay()) {
195
+ // oggi: oggi
196
+ labelDays = moment().calendar(timestamp).split(' ')[0].toLocaleLowerCase();
197
+ // labelDays = LABEL_TODAY;
198
+ } else if (now.getDay() - date.getDay() === 1) {
199
+ // ieri: ieri
200
+ labelDays = moment().calendar(timestamp).split(' ')[0].toLocaleLowerCase();
201
+ // labelDays = LABEL_TOMORROW;
202
+ } else {
203
+ // questa settimana: giorno
204
+ labelDays = convertDayToString(translate, date.getDay());
205
+ }
206
+ // se le date sono diverse o la data di riferimento non è impostata
207
+ // ritorna la data calcolata
208
+ // altrimenti torna null
209
+ return labelDays;
210
+ }
211
+
212
+
213
+
214
+ /**
215
+ * calcolo il tempo trascorso tra la data passata e adesso
216
+ * utilizzata per calcolare data ultimo accesso utente
217
+ * @param timestamp
218
+ */
219
+ export function setLastDate(translate, timestamp): string {
220
+
221
+ const LABEL_TODAY = translate.get('LABEL_TODAY');
222
+ const LABEL_TOMORROW = translate.get('LABEL_TOMORROW');
223
+ const LABEL_TO = translate.get('LABEL_TO');
224
+ const LABEL_LAST_ACCESS = translate.get('LABEL_LAST_ACCESS');
225
+
226
+ var date = new Date(timestamp);
227
+ let now: Date = new Date();
228
+ var labelDays = '';
229
+ if (now.getFullYear() !== date.getFullYear()) {
230
+ const month = date.getMonth() + 1;
231
+ labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();
232
+ } else if (now.getMonth() !== date.getMonth()) {
233
+ const month = date.getMonth() + 1;
234
+ labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();
235
+ } else if (now.getDay() === date.getDay()) {
236
+ labelDays = LABEL_TODAY;
237
+ } else if (now.getDay() - date.getDay() === 1) {
238
+ labelDays = LABEL_TOMORROW;
239
+ } else {
240
+ labelDays = convertDayToString(translate, date.getDay());
241
+ }
242
+ // aggiungo orario
243
+ const orario = date.getHours() + ':' + (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
244
+ return LABEL_LAST_ACCESS + ' ' + labelDays + ' ' + LABEL_TO + ' ' + orario;
245
+ }
246
+
247
+ /**
248
+ *
249
+ * @param Map
250
+ * @param timestamp
251
+ */
252
+ export function setLastDateWithLabels(translationMap: Map<string, string>, timestamp: string): string {
253
+ const date = new Date(timestamp);
254
+ const now: Date = new Date();
255
+ let labelDays = '';
256
+ if (now.getFullYear() !== date.getFullYear()) {
257
+ const month = date.getMonth() + 1;
258
+ labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();
259
+ } else if (now.getMonth() !== date.getMonth()) {
260
+ const month = date.getMonth() + 1;
261
+ labelDays = date.getDay() + '/' + month + '/' + date.getFullYear();
262
+ } else if (now.getDay() === date.getDay()) {
263
+ labelDays = translationMap.get('LABEL_TODAY');
264
+ } else if (now.getDay() - date.getDay() === 1) {
265
+ labelDays = translationMap.get('LABEL_TOMORROW');
266
+ } else {
267
+ const days = translationMap.get('ARRAY_DAYS');
268
+ labelDays = days[date.getDay()];
269
+ }
270
+ const orario = date.getHours() + ':' + (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
271
+ return translationMap.get('LABEL_LAST_ACCESS') + ' ' + labelDays + ' ' + translationMap.get('LABEL_TO') + ' ' + orario;
272
+ }
273
+
274
+ /**
275
+ *
276
+ * @param translate
277
+ * @param day
278
+ */
279
+ export function convertDayToString(translate, day) {
280
+ const ARRAY_DAYS = translate.get('ARRAY_DAYS');
281
+ return ARRAY_DAYS[day];
282
+ }
283
+
284
+ export function supports_html5_storage() {
285
+ try {
286
+ return 'localStorage' in window && window['localStorage'] !== null;
287
+ } catch (e) {
288
+ this.g.wdLog(['> Error :' + e]);
289
+ return false;
290
+ }
291
+ }
292
+
293
+ export function supports_html5_session() {
294
+ try {
295
+ return 'sessionStorage' in window && window['sessionStorage'] !== null;
296
+ } catch (e) {
297
+
298
+ return false;
299
+ }
300
+ }
301
+
302
+ export function setStoragePrefix(): string {
303
+ let prefix = STORAGE_PREFIX;
304
+ try {
305
+ prefix = environment.storage_prefix + '_';
306
+ } catch (e) {
307
+
308
+ }
309
+ return prefix + this.g.projectid + '_';
310
+ }
311
+
312
+ // function for dynamic sorting
313
+ export function compareValues(key, order = 'asc') {
314
+ return function (a, b) {
315
+ if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
316
+ // property doesn't exist on either object
317
+ return 0;
318
+ }
319
+ const varA = (typeof a[key] === 'string') ?
320
+ a[key].toUpperCase() : a[key];
321
+ const varB = (typeof b[key] === 'string') ?
322
+ b[key].toUpperCase() : b[key];
323
+
324
+ let comparison = 0;
325
+ if (varA > varB) {
326
+ comparison = 1;
327
+ } else if (varA < varB) {
328
+ comparison = -1;
329
+ }
330
+ return (
331
+ (order == 'desc') ? (comparison * -1) : comparison
332
+ );
333
+ };
334
+ }
335
+
336
+ /** */
337
+ export function getNowTimestamp() {
338
+ //console.log("timestamp:", moment().valueOf());
339
+ return moment().valueOf();
340
+ }
341
+
342
+ export function getFormatData(timestamp): string {
343
+ var dateString = moment.unix(timestamp / 1000).format('L');
344
+ // const date = new Date(timestamp);
345
+ // const labelDays = date.getDay()+"/"+date.getMonth()+"/"+date.getFullYear();
346
+ return dateString;
347
+ }
348
+
349
+ export function getTimeLastMessage(timestamp: string) {
350
+ const timestampNumber = parseInt(timestamp, null) / 1000;
351
+ const time = getFromNow(timestampNumber);
352
+ return time;
353
+ }
354
+
355
+ export function getFromNow(timestamp): string {
356
+ // var fullDate = new Date(this.news.date.$date)
357
+ // console.log('FULL DATE: ', fullDate);
358
+ // var month = '' + (fullDate.getMonth() + 1)
359
+ // var day = '' + fullDate.getDate()
360
+ // var year = fullDate.getFullYear()
361
+ // var hour = '' + fullDate.getHours()
362
+ // var min = fullDate.getMinutes()
363
+ // var sec = fullDate.getSeconds()
364
+ // if (month.length < 2) month = '0' + month;
365
+ // if (day.length < 2) day = '0' + day;
366
+ // if (hour.length < 2) hour = '0' + hour;
367
+ // console.log('Giorno ', day)
368
+ // console.log('Mese ', month)
369
+ // console.log('Anno ', year)
370
+ // console.log('Ora ', hour)
371
+ // console.log('Min ', min)
372
+ // console.log('Sec', sec)
373
+
374
+ // this.dateFromNow = moment(year + month + day, "YYYYMMDD").fromNow()
375
+ // let date_as_string = moment(year + month + day, "YYYYMMDD").fromNow()
376
+
377
+ // let date_as_string = moment(year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec).fromNow()
378
+ // let date_as_string = moment("2017-07-03 08:33:37").fromNow()
379
+ //var day = new Date(2017, 8, 16);
380
+ //let date_as_string = moment(day);
381
+
382
+ // var dateString = moment.unix(timestamp).format("MM/DD/YYYY");
383
+ // console.log(moment(dateString).fromNow(), dateString);
384
+ // var date = "Thu Aug 19 2017 19:58:03 GMT+0000 (GMT)";
385
+ // console.log(moment(date).fromNow()); // 1 hour ago
386
+ // console.log(moment.unix(1483228800).fromNow());
387
+ // console.log(moment.unix(1501545600).fromNow());
388
+ //console.log("timestamp: ",timestamp, " - 1483228800 - ", moment.unix(1483228800).fromNow());
389
+ // console.log();
390
+
391
+ //console.log("window.navigator.language: ", window.navigator.language);
392
+
393
+ moment.locale(window.navigator.language);
394
+ let date_as_string = moment.unix(timestamp).fromNow();
395
+ return date_as_string;
396
+ }
397
+
398
+
399
+
400
+ export function popupUrl(html, title) {
401
+ const url = this.stripTags(html);
402
+ const w = 600;
403
+ const h = screen.height - 40;
404
+ const left = (screen.width / 2) - (w / 2);
405
+ const top = (screen.height / 2) - (h / 2);
406
+
407
+ const newWindow = window.open(url, '_blank', 'fullscreen=1, titlebar=0, toolbar=no, location=0, status=0, menubar=0, scrollbars=0, resizable=0, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
408
+ if (window.focus) {
409
+ newWindow.focus()
410
+ }
411
+ }
412
+
413
+ export function isPopupUrl(url) {
414
+ let TEMP = url.split('popup=')[1];
415
+ // può essere seguito da & oppure "
416
+ if (TEMP) {
417
+ if (TEMP.startsWith('true')) {
418
+ //console.log('isPopupUrl::::: ', TEMP.startsWith('true'));
419
+ return true;
420
+ }
421
+ else {
422
+ return false;
423
+ }
424
+ }
425
+ else {
426
+ return false;
427
+ }
428
+ }
429
+
430
+ export function stripTags(html) {
431
+ return (html.replace(/<.*?>/g, '')).trim();
432
+ }
433
+
434
+ export function htmlEntities(str) {
435
+ return String(str)
436
+ .replace(/&/g, '&amp;')
437
+ .replace(/</g, '&lt;')
438
+ .replace(/>/g, '&gt;')
439
+ .replace(/"/g, '&quot;')
440
+ // .replace(/\n/g, '<br>')
441
+ }
442
+
443
+ export function htmlEntitiesDecode(str) {
444
+ return String(str)
445
+ .replace(/&lt;/g, '<')
446
+ .replace(/&gt;/g, '>')
447
+ // .replace(/\n/g, '<br>')
448
+ }
449
+
450
+ export function replaceEndOfLine(text) {
451
+ // const newText = text.replace(/\n/g, '<br>')
452
+ const newText = text.replace(/[\n\r]/g, '<br>');
453
+ // const newText = text.replace(/<br\s*[\/]?>/gi, '\n')
454
+ return newText;
455
+ }
456
+
457
+
458
+
459
+
460
+
461
+
462
+ export function isExistInArray(members, currentUid) {
463
+ return members.includes(currentUid);
464
+ }
465
+
466
+ export function isInArray(key: string, array: Array<string>) {
467
+ if (array && array !== undefined && array.indexOf(key) > -1) {
468
+ return true;
469
+ }
470
+ return false;
471
+ }
472
+
473
+ export function createConfirm(translate, alertCtrl, events, title, message, action, onlyOkButton) {
474
+
475
+ var LABEL_ANNULLA;// = translate.get('CLOSE_ALERT_CANCEL_LABEL')['value'];
476
+ var LABEL_OK;// = translate.get('CLOSE_ALERT_CONFIRM_LABEL')['value'];
477
+ translate.get('LABEL_ANNULLA').subscribe((res: string) => {
478
+ LABEL_ANNULLA = res;
479
+ });
480
+ translate.get('LABEL_OK').subscribe((res: string) => {
481
+ LABEL_OK = res;
482
+ });
483
+ var buttons;
484
+ if (onlyOkButton) {
485
+ buttons = [
486
+ {
487
+ text: LABEL_OK,
488
+ handler: () => {
489
+ events.publish('PopupConfirmation', LABEL_OK, action);
490
+ // console.log('Agree clicked');
491
+ }
492
+ }
493
+ ]
494
+ } else {
495
+ buttons = [
496
+ {
497
+ text: LABEL_ANNULLA,
498
+ handler: () => {
499
+ events.publish('PopupConfirmation', LABEL_ANNULLA, action);
500
+ // console.log('Disagree clicked');
501
+ }
502
+ },
503
+ {
504
+ text: LABEL_OK,
505
+ handler: () => {
506
+ events.publish('PopupConfirmation', LABEL_OK, action);
507
+ // console.log('Agree clicked');
508
+ }
509
+ }
510
+ ]
511
+ }
512
+
513
+ let confirm = alertCtrl.create({
514
+ title: title,
515
+ message: message,
516
+ buttons,
517
+ });
518
+ // confirm.present();
519
+ return confirm;
520
+ }
521
+
522
+ export function createLoading(loadinController, message) {
523
+ let loading = loadinController.create({
524
+ spinner: 'circles',
525
+ content: message,
526
+ });
527
+ // this.loading.present();
528
+ return loading;
529
+ }
530
+
531
+
532
+ export function convertMessageAndUrlify(messageText) {
533
+ //messageText = convert(messageText);
534
+ messageText = urlify(messageText);
535
+ return messageText;
536
+ }
537
+
538
+ export function convertMessage(messageText) {
539
+ messageText = convert(messageText);
540
+ return messageText;
541
+ }
542
+
543
+ function convert(str) {
544
+ str = str.replace(/&/g, '&amp;');
545
+ str = str.replace(/>/g, '&gt;');
546
+ str = str.replace(/</g, '&lt;');
547
+ str = str.replace(/"/g, '&quot;');
548
+ str = str.replace(/'/g, '&#039;');
549
+ return str;
550
+ }
551
+
552
+
553
+
554
+
555
+
556
+ /**
557
+ *
558
+ * @param conversationWith
559
+ * @param conversationWithFullname
560
+ * @param conversationChannelType
561
+ * @param width
562
+ * @param height
563
+ */
564
+ export function setConversationAvatar(
565
+ conversationWith: string,
566
+ conversationWithFullname: string,
567
+ conversationChannelType: string,
568
+ width?: string,
569
+ height?: string
570
+ ): any {
571
+ const conversationWidth = (width) ? width : '40px';
572
+ const conversationHeight = (height) ? height : '40px';
573
+ const conversationAvatar = {
574
+ uid: conversationWith,
575
+ conversation_with_fullname: conversationWithFullname,
576
+ conversation_with: conversationWith,
577
+ channelType: conversationChannelType,
578
+ avatar: avatarPlaceholder(conversationWithFullname),
579
+ color: getColorBck(conversationWithFullname),
580
+ width: conversationWidth,
581
+ height: conversationHeight
582
+ };
583
+ return conversationAvatar;
584
+ }
585
+
586
+ /** */
587
+ export function setChannelType(conversationWith: string): string {
588
+ let channelType = TYPE_DIRECT;
589
+ if (conversationWith.includes(TYPE_GROUP + '-')) {
590
+ channelType = TYPE_GROUP;
591
+ }
592
+ return channelType;
593
+ }
594
+
595
+ export function getImageUrlThumb(FIREBASESTORAGE_BASE_URL_IMAGE: string, uid: string) {
596
+ let imageurl = FIREBASESTORAGE_BASE_URL_IMAGE + environment['firebaseConfig'].storageBucket + '/o/profiles%2F' + uid + '%2Fthumb_photo.jpg?alt=media';
597
+ return imageurl;
598
+ }
599
+
600
+
601
+ // /** */
602
+ // export function getImageUrlThumbFromFirebasestorage(uid: string) {
603
+ // const FIREBASESTORAGE_BASE_URL_IMAGE = environment.FIREBASESTORAGE_BASE_URL_IMAGE;
604
+ // const urlStorageBucket = environment.firebaseConfig.storageBucket + '/o/profiles%2F';
605
+ // const imageurl = FIREBASESTORAGE_BASE_URL_IMAGE + urlStorageBucket + uid + '%2Fthumb_photo.jpg?alt=media';
606
+ // return imageurl;
607
+ // }
608
+
609
+
610
+ /** */
611
+ export function bypassSecurityTrustResourceUrl(url: string) {
612
+ return this.Dom.bypassSecurityTrustResourceUrl(url);
613
+ }
614
+
615
+ // getImageUrlThumb(uid: string){
616
+ // try {
617
+ // let imageurl = this.appConfig.getConfig().FIREBASESTORAGE_BASE_URL_IMAGE + environment['firebaseConfig'].storageBucket + '/o/profiles%2F' + uid + '%2Fthumb_photo.jpg?alt=media';
618
+ // return imageurl;
619
+ // }
620
+ //
621
+ // }
622
+ // export function urlExists(url) {
623
+ // console.log("imageExists::::::"+url);
624
+ // url = "https://firebasestorage.googleapis.com/v0/b/chat-v2-dev.appspot.com/o/profiles%2F5ad5bd40c975820014ba9009%2Fthumb_photo.jpg?alt=media";
625
+ // return false;
626
+ // }
627
+
628
+
629
+ export function jsonToArray(json) {
630
+ var array = [];
631
+ Object.keys(json).forEach(e => {
632
+ //var item = {key: "+e+", val: "+json[e]+"};
633
+ var item = json[e];
634
+ array.push(item);
635
+ //console.log('key='+key +'item='+item+array);
636
+ //console.log(`key=${e} value=${this.member.decoded[e]}`)
637
+ });
638
+ return array;
639
+ }
640
+
641
+
642
+ export function validateEmail(email) {
643
+ var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
644
+ return re.test(email);
645
+ }
646
+
647
+ export function searchEmailOrUrlInString(item) {
648
+ item = item.toString();
649
+ if (validateEmail(item)) {
650
+ return "<a href='mailto:" + item + "'>" + item + "</a>";
651
+ } else {
652
+ return urlify(item);
653
+ }
654
+ }
655
+
656
+
657
+ export function isURL(str: string) {
658
+ var pattern = new RegExp('^(https?:\/\/)?' + // protocol
659
+ '((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|' + // domain name
660
+ '((\d{1,3}\.){3}\d{1,3}))' + // OR ip (v4) address
661
+ '(\:\d+)?(\/[-a-z\d%_.~+]*)*' + // port and path
662
+ '(\?[;&a-z\d%_.~+=-]*)?' + // query string
663
+ '(\#[-a-z\d_]*)?$', 'i'); // fragment locater
664
+ // console.log('pattern: ', pattern);
665
+ if (!pattern.test(str)) {
666
+ return false;
667
+ } else {
668
+ return true;
669
+ }
670
+ }
671
+
672
+ // export function isHostname() {
673
+
674
+
675
+ // if (environment.supportMode === true) {
676
+
677
+ // return true
678
+ // }
679
+ // return false
680
+ // }
681
+
682
+ export function getParameterByName(name: string) {
683
+ var url = window.location.href;
684
+ name = name.replace(/[\[\]]/g, '\\$&');
685
+ var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'),
686
+ results = regex.exec(url);
687
+ if (!results) return null;
688
+ if (!results[2]) return '';
689
+ return decodeURIComponent(results[2].replace(/\+/g, ' '));
690
+ }
691
+
692
+ // export function emailValidator(str) {
693
+ // let EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
694
+ // if (str != "" && (str.length > 5 || EMAIL_REGEXP.test(str))) {
695
+ // return true;
696
+ // } else {
697
+ // return false;
698
+ // }
699
+ // }
700
+
701
+
702
+ export async function presentModal(modalController, page, attributes) {
703
+ // console.log('UTILS - presentModal');
704
+ const modal: HTMLIonModalElement =
705
+ await modalController.create({
706
+ component: page,
707
+ componentProps: attributes,
708
+ swipeToClose: false,
709
+ backdropDismiss: false
710
+ });
711
+ await modal.present();
712
+ modal.onDidDismiss().then((detail: any) => {
713
+ if (detail !== null) {
714
+ // console.log('UTILS - presentModal - detail.data:', detail.data);
715
+ return 'CLOSE!!!!!';
716
+ }
717
+ });
718
+ }
719
+
720
+
721
+ export async function closeModal(modalController: ModalController) {
722
+ // console.log('UTILS - closeModal', modalController);
723
+ await modalController.getTop();
724
+ await modalController.dismiss({ confirmed: true });
725
+ // try {
726
+ // modalController.dismiss({ dismissed: true, animate: false, duration: 0 });
727
+ // } catch (err) {
728
+ // console.log('error closeModal', err);
729
+ // }
730
+ }
731
+
732
+ export function createTranslateLoader(http: HttpClient) {
733
+ return new TranslateHttpLoader(http, '../../../assets/i18n/', '.json');
734
+ }
735
+
736
+ export function redirect2(router, IDConv, conversationSelected) {
737
+ if (window.innerWidth < 768) {
738
+ // mobile
739
+ // console.log('mobile::::', window.innerWidth, IDConv, conversationSelected, router);
740
+ if (!IDConv) {
741
+ router.navigateByUrl('/conversations-list');
742
+ }
743
+ } else {
744
+ // desktop
745
+ // console.log('desktop::::', window.innerWidth, IDConv, conversationSelected, router);
746
+ if (IDConv) {
747
+ let navigationExtras = {
748
+ state: {
749
+ conversationSelected: this.conversationSelected
750
+ }
751
+ };
752
+ router.navigate(['conversation-detail/' + conversationSelected.uid], navigationExtras);
753
+ //this.router.navigateByUrl('/conversation-detail/'+this.IDConv);
754
+ }
755
+ }
756
+ }
757
+
758
+
759
+
760
+
761
+ // https://liftcodeplay.com/2020/02/09/how-to-check-for-file-existance-in-firebase-storage/
762
+ // export async function imageExists(urlImage: string ) {
763
+ // //Using async/await
764
+ // const ref = firebase.storage().refFromURL(urlImage)
765
+ // try {
766
+ // return await ref.getDownloadURL()
767
+ // } catch(e) {
768
+ // // console.log(e);
769
+ // }
770
+ // // const listRef = firebase.storage()
771
+ // // .refFromURL(imageurl)
772
+ // // .getDownloadURL()
773
+ // // .then((response) => {
774
+ // // // Found it. Do whatever
775
+ // // console.log('ok imageurl', imageurl);
776
+ // // return imageurl
777
+ // // })
778
+ // // .catch((err) => {
779
+ // // console.log('ERROR imageurl', imageurl);
780
+ // // return
781
+ // // // Didn't exist... or some other error
782
+ // // })
783
+ // }
784
+
785
+ /** */
786
+ export function checkPlatformIsMobile() {
787
+ // console.log('UTILS - checkPlatformIsMobile:: ', window.innerWidth);
788
+ if (window.innerWidth < 768) {
789
+ return true;
790
+ }
791
+ return false;
792
+ }
793
+
794
+
795
+ export function checkWindowWidthIsLessThan991px() {
796
+ // console.log('UTILS - checkWindowWidthIsLessThan991px:: ', window.innerWidth);
797
+ if (window.innerWidth < 991) {
798
+ return true;
799
+ }
800
+ return false;
801
+ }
802
+
803
+
804
+ // export function toggleSidebar() {
805
+ // const element = document.getElementById('tld-sidebar');
806
+ // element.classList.toggle('open');
807
+ // const elementApp = document.getElementsByTagName('app-root')[0];
808
+ // if (elementApp.classList.contains('open')) {
809
+ // elementApp.classList.remove('open');
810
+ // elementApp.classList.add('close');
811
+ // } else {
812
+ // elementApp.classList.remove('close');
813
+ // elementApp.classList.add('open');
814
+ // }
815
+ // }
816
+
817
+
818
+ export function createExternalSidebar(renderer, srcIframe?, urlIcons?) {
819
+ if (!urlIcons) {
820
+ urlIcons = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css';
821
+ }
822
+ // <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
823
+ document.head.innerHTML += '<link rel="stylesheet" type="text/css" href="' + urlIcons + '" />';
824
+
825
+ if (!srcIframe || srcIframe === '') {
826
+ srcIframe = 'https://support-pre.tiledesk.com/dashboard/';
827
+ }
828
+
829
+ const elementApp = document.getElementsByTagName('app-root')[0];
830
+ elementApp.classList.add('close');
831
+
832
+
833
+ // aggiungo js alla pagina
834
+ let sidebarFunctions = '';
835
+ sidebarFunctions += 'function toggleSidebar() {';
836
+ sidebarFunctions += 'var element = document.getElementById("tld-sidebar");';
837
+ sidebarFunctions += 'element.classList.toggle("open");';
838
+ sidebarFunctions += 'var elementApp = document.getElementsByTagName("app-root")[0];';
839
+ // sidebarFunctions += 'elementApp.classList.toggle("open");';
840
+ sidebarFunctions += 'if(elementApp.classList.contains("open")){';
841
+ sidebarFunctions += 'elementApp.classList.remove("open");';
842
+ sidebarFunctions += 'elementApp.classList.add("close");';
843
+ sidebarFunctions += '} else {';
844
+ sidebarFunctions += 'elementApp.classList.remove("close");';
845
+ sidebarFunctions += 'elementApp.classList.add("open");';
846
+ sidebarFunctions += '}';
847
+ sidebarFunctions += '}';
848
+ sidebarFunctions += 'function openSidebar() {';
849
+ sidebarFunctions += 'var element = document.getElementById("tld-sidebar");';
850
+ sidebarFunctions += 'element.classList.add("open");';
851
+ sidebarFunctions += 'var elementApp = document.getElementsByTagName("app-root")[0];';
852
+ sidebarFunctions += 'elementApp.classList.remove("close");';
853
+ sidebarFunctions += 'elementApp.classList.add("open");';
854
+ sidebarFunctions += '}';
855
+ sidebarFunctions += 'window.onmessage = function(e){';
856
+ // sidebarFunctions += 'window.addEventListener("message", (e) => {';
857
+ // sidebarFunctions += 'alert("It works!", e);';
858
+ sidebarFunctions += 'if (e.data === "open") {';
859
+ sidebarFunctions += 'openSidebar();';
860
+ sidebarFunctions += '}';
861
+ sidebarFunctions += '};';
862
+
863
+ const divScript = renderer.createElement('script');
864
+ divScript.innerHTML = sidebarFunctions;
865
+ renderer.appendChild(document.body, divScript);
866
+
867
+ let dataString = '<div class="tld-button">';
868
+ dataString += '<button class="btn btn-open" onclick="toggleSidebar()"><i class="fa fa-angle-right"></i></button>';
869
+ dataString += '<button class="btn btn-close" onclick="toggleSidebar()"><i class="fa fa-close"></i> Close</button>';
870
+ dataString += '</div>';
871
+ dataString += '<div class="tld-iframe">';
872
+ // tslint:disable-next-line: max-line-length
873
+ dataString += '<iframe src="' + srcIframe + '#/projects-for-panel" width="300" height="100%" marginwidth="0" marginheight="0" frameborder="no" scrolling="yes" style="border-width:1px; border-color:#00000013; background:#FFF; border-style:solid;"></iframe>';
874
+ dataString += '</div>';
875
+ dataString += '</div>';
876
+
877
+ // Use Angular's Renderer2 to create the div element
878
+ const divSidebar = renderer.createElement('div');
879
+ divSidebar.innerHTML = dataString;
880
+ renderer.setProperty(divSidebar, 'id', 'tld-sidebar');
881
+ renderer.appendChild(document.body, divSidebar);
882
+ }
883
+
884
+
885
+ export function isGroup(conv: ConversationModel) {
886
+ // console.log('isGroup conv', conv)
887
+ // console.log('isGroup conv recipient', conv.recipient)
888
+ if (conv.recipient && conv.recipient.startsWith('group-') || conv.recipient && conv.recipient.startsWith('support-group')) {
889
+ // console.log('isGroup conv HERE Y conv.recipient', conv.recipient)
890
+ return true
891
+ };
892
+ return false
893
+ }