@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
@@ -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
+ }