@chat21/chat21-ionic 2.0.13-beta.0 → 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 (698) 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 -209
  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/curl +0 -1
  348. package/deploy_dev.sh +0 -28
  349. package/docs/changelog.html +0 -227
  350. package/docs/classes/ConversationModel.html +0 -1022
  351. package/docs/classes/GroupModel.html +0 -527
  352. package/docs/classes/MessageModel.html +0 -843
  353. package/docs/classes/UploadModel.html +0 -417
  354. package/docs/classes/UserModel.html +0 -728
  355. package/docs/classes/_DetailPage.html +0 -144
  356. package/docs/classes/_MasterPage.html +0 -144
  357. package/docs/components/ArchivedConversationsPage.html +0 -1024
  358. package/docs/components/ChatBubble.html +0 -327
  359. package/docs/components/DettaglioConversazionePage.html +0 -6060
  360. package/docs/components/ElasticTextarea.html +0 -619
  361. package/docs/components/InfoAdvancedPage.html +0 -656
  362. package/docs/components/InfoConversationPage.html +0 -5681
  363. package/docs/components/InfoMessagePage.html +0 -993
  364. package/docs/components/InfoUserPage.html +0 -1420
  365. package/docs/components/ListaConversazioniPage.html +0 -3576
  366. package/docs/components/LoginPage.html +0 -1457
  367. package/docs/components/MyApp.html +0 -1388
  368. package/docs/components/PlaceholderPage.html +0 -397
  369. package/docs/components/PopoverPage.html +0 -986
  370. package/docs/components/PopoverProfilePage.html +0 -639
  371. package/docs/components/ProfilePage.html +0 -1187
  372. package/docs/components/RegisterPage.html +0 -1271
  373. package/docs/components/ResetpwdPage.html +0 -1039
  374. package/docs/components/UpdateImageProfilePage.html +0 -997
  375. package/docs/components/UsersPage.html +0 -1297
  376. package/docs/coverage.html +0 -1421
  377. package/docs/dependencies.html +0 -210
  378. package/docs/directives/AutosizeDirective.html +0 -556
  379. package/docs/fonts/FontAwesome.otf +0 -0
  380. package/docs/fonts/fontawesome-webfont.eot +0 -0
  381. package/docs/fonts/fontawesome-webfont.svg +0 -685
  382. package/docs/fonts/fontawesome-webfont.ttf +0 -0
  383. package/docs/fonts/fontawesome-webfont.woff +0 -0
  384. package/docs/fonts/fontawesome-webfont.woff2 +0 -0
  385. package/docs/fonts/ionicons.eot +0 -0
  386. package/docs/fonts/ionicons.svg +0 -2090
  387. package/docs/fonts/ionicons.ttf +0 -0
  388. package/docs/fonts/ionicons.woff +0 -0
  389. package/docs/fonts/ionicons.woff2 +0 -0
  390. package/docs/fonts/roboto-v15-latin-300.eot +0 -0
  391. package/docs/fonts/roboto-v15-latin-300.svg +0 -314
  392. package/docs/fonts/roboto-v15-latin-300.ttf +0 -0
  393. package/docs/fonts/roboto-v15-latin-300.woff +0 -0
  394. package/docs/fonts/roboto-v15-latin-300.woff2 +0 -0
  395. package/docs/fonts/roboto-v15-latin-700.eot +0 -0
  396. package/docs/fonts/roboto-v15-latin-700.svg +0 -310
  397. package/docs/fonts/roboto-v15-latin-700.ttf +0 -0
  398. package/docs/fonts/roboto-v15-latin-700.woff +0 -0
  399. package/docs/fonts/roboto-v15-latin-700.woff2 +0 -0
  400. package/docs/fonts/roboto-v15-latin-italic.eot +0 -0
  401. package/docs/fonts/roboto-v15-latin-italic.svg +0 -323
  402. package/docs/fonts/roboto-v15-latin-italic.ttf +0 -0
  403. package/docs/fonts/roboto-v15-latin-italic.woff +0 -0
  404. package/docs/fonts/roboto-v15-latin-italic.woff2 +0 -0
  405. package/docs/fonts/roboto-v15-latin-regular.eot +0 -0
  406. package/docs/fonts/roboto-v15-latin-regular.svg +0 -308
  407. package/docs/fonts/roboto-v15-latin-regular.ttf +0 -0
  408. package/docs/fonts/roboto-v15-latin-regular.woff +0 -0
  409. package/docs/fonts/roboto-v15-latin-regular.woff2 +0 -0
  410. package/docs/graph/dependencies.svg +0 -870
  411. package/docs/images/compodoc-vectorise-inverted.png +0 -0
  412. package/docs/images/compodoc-vectorise-inverted.svg +0 -201
  413. package/docs/images/compodoc-vectorise.png +0 -0
  414. package/docs/images/compodoc-vectorise.svg +0 -201
  415. package/docs/images/coverage-badge-documentation.svg +0 -9
  416. package/docs/images/coverage-badge.svg +0 -9
  417. package/docs/images/favicon.ico +0 -0
  418. package/docs/index.html +0 -233
  419. package/docs/injectables/AppConfigProvider.html +0 -411
  420. package/docs/injectables/AuthService.html +0 -1016
  421. package/docs/injectables/ChatArchivedConversationsHandler.html +0 -1832
  422. package/docs/injectables/ChatContactsSynchronizer.html +0 -841
  423. package/docs/injectables/ChatConversationHandler.html +0 -1960
  424. package/docs/injectables/ChatConversationsHandler.html +0 -2584
  425. package/docs/injectables/ChatManager.html +0 -1779
  426. package/docs/injectables/ChatPresenceHandler.html +0 -1187
  427. package/docs/injectables/CustomTranslateService.html +0 -496
  428. package/docs/injectables/DatabaseProvider.html +0 -1444
  429. package/docs/injectables/GroupService.html +0 -1458
  430. package/docs/injectables/MessagingService.html +0 -1165
  431. package/docs/injectables/NavProxyService.html +0 -1028
  432. package/docs/injectables/TiledeskConversationProvider.html +0 -945
  433. package/docs/injectables/UploadService.html +0 -791
  434. package/docs/injectables/UserService.html +0 -1612
  435. package/docs/js/compodoc.js +0 -14
  436. package/docs/js/lazy-load-graphs.js +0 -44
  437. package/docs/js/libs/EventDispatcher.js +0 -5
  438. package/docs/js/libs/bootstrap-native.js +0 -2
  439. package/docs/js/libs/clipboard.min.js +0 -7
  440. package/docs/js/libs/custom-elements-es5-adapter.js +0 -15
  441. package/docs/js/libs/custom-elements.min.js +0 -38
  442. package/docs/js/libs/d3.v3.min.js +0 -2
  443. package/docs/js/libs/deep-iterator.js +0 -2
  444. package/docs/js/libs/es6-shim.min.js +0 -11
  445. package/docs/js/libs/htmlparser.js +0 -23
  446. package/docs/js/libs/innersvg.js +0 -9
  447. package/docs/js/libs/lit-html.js +0 -1
  448. package/docs/js/libs/prism.js +0 -14
  449. package/docs/js/libs/promise.min.js +0 -6
  450. package/docs/js/libs/svg-pan-zoom.min.js +0 -3
  451. package/docs/js/libs/tablesort.min.js +0 -6
  452. package/docs/js/libs/tablesort.number.min.js +0 -6
  453. package/docs/js/libs/vis.min.js +0 -46
  454. package/docs/js/libs/zepto.min.js +0 -2
  455. package/docs/js/menu-wc.js +0 -594
  456. package/docs/js/menu.js +0 -261
  457. package/docs/js/routes.js +0 -280
  458. package/docs/js/search/lunr.min.js +0 -6
  459. package/docs/js/search/search-lunr.js +0 -67
  460. package/docs/js/search/search.js +0 -268
  461. package/docs/js/search/search_index.js +0 -4
  462. package/docs/js/sourceCode.js +0 -58
  463. package/docs/js/svg-pan-zoom.controls.js +0 -53
  464. package/docs/js/tabs.js +0 -21
  465. package/docs/js/tree.js +0 -147
  466. package/docs/license.html +0 -664
  467. package/docs/miscellaneous/functions.html +0 -2417
  468. package/docs/miscellaneous/variables.html +0 -994
  469. package/docs/modules/AppModule/dependencies.svg +0 -454
  470. package/docs/modules/AppModule.html +0 -967
  471. package/docs/modules/ArchivedConversationsPageModule/dependencies.svg +0 -50
  472. package/docs/modules/ArchivedConversationsPageModule.html +0 -225
  473. package/docs/modules/DettaglioConversazionePageModule/dependencies.svg +0 -66
  474. package/docs/modules/DettaglioConversazionePageModule.html +0 -256
  475. package/docs/modules/InfoAdvancedPageModule/dependencies.svg +0 -50
  476. package/docs/modules/InfoAdvancedPageModule.html +0 -225
  477. package/docs/modules/InfoConversationPageModule/dependencies.svg +0 -50
  478. package/docs/modules/InfoConversationPageModule.html +0 -227
  479. package/docs/modules/InfoUserPageModule/dependencies.svg +0 -50
  480. package/docs/modules/InfoUserPageModule.html +0 -225
  481. package/docs/modules/ListaConversazioniPageModule/dependencies.svg +0 -66
  482. package/docs/modules/ListaConversazioniPageModule.html +0 -255
  483. package/docs/modules/LoginModule/dependencies.svg +0 -66
  484. package/docs/modules/LoginModule.html +0 -253
  485. package/docs/modules/PlaceholderPageModule/dependencies.svg +0 -66
  486. package/docs/modules/PlaceholderPageModule.html +0 -253
  487. package/docs/modules/PopoverPageModule/dependencies.svg +0 -66
  488. package/docs/modules/PopoverPageModule.html +0 -253
  489. package/docs/modules/PopoverProfilePageModule/dependencies.svg +0 -66
  490. package/docs/modules/PopoverProfilePageModule.html +0 -253
  491. package/docs/modules/ProfilePageModule/dependencies.svg +0 -66
  492. package/docs/modules/ProfilePageModule.html +0 -253
  493. package/docs/modules/RegisterModule/dependencies.svg +0 -66
  494. package/docs/modules/RegisterModule.html +0 -253
  495. package/docs/modules/ResetpwdModule/dependencies.svg +0 -66
  496. package/docs/modules/ResetpwdModule.html +0 -253
  497. package/docs/modules/UpdateImageProfilePageModule/dependencies.svg +0 -66
  498. package/docs/modules/UpdateImageProfilePageModule.html +0 -253
  499. package/docs/modules/UsersModule/dependencies.svg +0 -66
  500. package/docs/modules/UsersModule.html +0 -253
  501. package/docs/modules.html +0 -379
  502. package/docs/overview.html +0 -1033
  503. package/docs/styles/bootstrap-card.css +0 -219
  504. package/docs/styles/bootstrap.min.css +0 -5
  505. package/docs/styles/compodoc.css +0 -996
  506. package/docs/styles/font-awesome.min.css +0 -4
  507. package/docs/styles/ionicons.min.css +0 -11
  508. package/docs/styles/laravel.css +0 -69
  509. package/docs/styles/material.css +0 -109
  510. package/docs/styles/original.css +0 -47
  511. package/docs/styles/postmark.css +0 -224
  512. package/docs/styles/prism.css +0 -267
  513. package/docs/styles/readthedocs.css +0 -108
  514. package/docs/styles/reset.css +0 -48
  515. package/docs/styles/stripe.css +0 -65
  516. package/docs/styles/style.css +0 -7
  517. package/docs/styles/tablesort.css +0 -33
  518. package/docs/styles/vagrant.css +0 -96
  519. package/firebase-functions/.firebaserc +0 -5
  520. package/firebase-functions/firebase.json +0 -1
  521. package/firebase-functions/functions/index.js +0 -208
  522. package/firebase-functions/functions/package.json +0 -9
  523. package/google-services.json +0 -42
  524. package/hooks/README.md +0 -196
  525. package/resources/android/icon/drawable-hdpi-icon.png +0 -0
  526. package/resources/android/icon/drawable-ldpi-icon.png +0 -0
  527. package/resources/android/icon/drawable-mdpi-icon.png +0 -0
  528. package/resources/android/icon/drawable-xhdpi-icon.png +0 -0
  529. package/resources/android/icon/drawable-xxhdpi-icon.png +0 -0
  530. package/resources/android/icon/drawable-xxxhdpi-icon.png +0 -0
  531. package/resources/android/splash/drawable-land-hdpi-screen.png +0 -0
  532. package/resources/android/splash/drawable-land-ldpi-screen.png +0 -0
  533. package/resources/android/splash/drawable-land-mdpi-screen.png +0 -0
  534. package/resources/android/splash/drawable-land-xhdpi-screen.png +0 -0
  535. package/resources/android/splash/drawable-land-xxhdpi-screen.png +0 -0
  536. package/resources/android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  537. package/resources/android/splash/drawable-port-hdpi-screen.png +0 -0
  538. package/resources/android/splash/drawable-port-ldpi-screen.png +0 -0
  539. package/resources/android/splash/drawable-port-mdpi-screen.png +0 -0
  540. package/resources/android/splash/drawable-port-xhdpi-screen.png +0 -0
  541. package/resources/android/splash/drawable-port-xxhdpi-screen.png +0 -0
  542. package/resources/android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  543. package/resources/icon.png +0 -0
  544. package/resources/icon.png.md5 +0 -1
  545. package/resources/ios/icon/icon-1024.png +0 -0
  546. package/resources/ios/icon/icon-40.png +0 -0
  547. package/resources/ios/icon/icon-40@2x.png +0 -0
  548. package/resources/ios/icon/icon-40@3x.png +0 -0
  549. package/resources/ios/icon/icon-50.png +0 -0
  550. package/resources/ios/icon/icon-50@2x.png +0 -0
  551. package/resources/ios/icon/icon-60.png +0 -0
  552. package/resources/ios/icon/icon-60@2x.png +0 -0
  553. package/resources/ios/icon/icon-60@3x.png +0 -0
  554. package/resources/ios/icon/icon-72.png +0 -0
  555. package/resources/ios/icon/icon-72@2x.png +0 -0
  556. package/resources/ios/icon/icon-76.png +0 -0
  557. package/resources/ios/icon/icon-76@2x.png +0 -0
  558. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  559. package/resources/ios/icon/icon-small.png +0 -0
  560. package/resources/ios/icon/icon-small@2x.png +0 -0
  561. package/resources/ios/icon/icon-small@3x.png +0 -0
  562. package/resources/ios/icon/icon.png +0 -0
  563. package/resources/ios/icon/icon@2x.png +0 -0
  564. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  565. package/resources/ios/splash/Default-667h.png +0 -0
  566. package/resources/ios/splash/Default-736h.png +0 -0
  567. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  568. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  569. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  570. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  571. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  572. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  573. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  574. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  575. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  576. package/resources/ios/splash/Default~iphone.png +0 -0
  577. package/resources/splash.png +0 -0
  578. package/resources/splash.png.md5 +0 -1
  579. package/server.js +0 -7
  580. package/src/app/app.html +0 -56
  581. package/src/app/app.scss +0 -236
  582. package/src/app/main.ts +0 -9
  583. package/src/assets/chat-background.jpg +0 -0
  584. package/src/assets/chat21-ionic-pattern-2.svg +0 -5110
  585. package/src/assets/chat21-ionic-pattern.png +0 -0
  586. package/src/assets/chat21-ionic-pattern.svg +0 -1
  587. package/src/assets/download.svg +0 -1
  588. package/src/assets/dummyDump.sql +0 -1
  589. package/src/assets/icon/favicon_old.ico +0 -0
  590. package/src/assets/img/c21-down-gray.svg +0 -1
  591. package/src/assets/img/chat21-icon.png +0 -0
  592. package/src/assets/img/f21ico-attached.svg +0 -1
  593. package/src/assets/img/f21ico-close.svg +0 -1
  594. package/src/assets/img/f21ico-photo.svg +0 -1
  595. package/src/assets/img/ic_keyboard_arrow_down_black_24px.svg +0 -4
  596. package/src/assets/img/ic_keyboard_arrow_down_white_24px.svg +0 -4
  597. package/src/assets/img/icon.png +0 -0
  598. package/src/assets/message-mine.png +0 -0
  599. package/src/assets/message-other.png +0 -0
  600. package/src/assets/pling.mp3 +0 -0
  601. package/src/assets/splash.png +0 -0
  602. package/src/assets/transparent.png +0 -0
  603. package/src/declarations.d.ts +0 -14
  604. package/src/directives/autosize/autosize.ts +0 -82
  605. package/src/environments/environment.pre.ts +0 -22
  606. package/src/environments/environment.prod.ts +0 -22
  607. package/src/environments/environment.ts +0 -21
  608. package/src/pages/_DetailPage.ts +0 -1
  609. package/src/pages/_MasterPage.ts +0 -1
  610. package/src/pages/archived-conversations/archived-conversations.html +0 -32
  611. package/src/pages/archived-conversations/archived-conversations.module.ts +0 -13
  612. package/src/pages/archived-conversations/archived-conversations.scss +0 -153
  613. package/src/pages/archived-conversations/archived-conversations.ts +0 -121
  614. package/src/pages/authentication/login/login.html +0 -58
  615. package/src/pages/authentication/login/login.module.ts +0 -16
  616. package/src/pages/authentication/login/login.scss +0 -121
  617. package/src/pages/authentication/login/login.ts +0 -221
  618. package/src/pages/authentication/register/register.html +0 -88
  619. package/src/pages/authentication/register/register.module.ts +0 -16
  620. package/src/pages/authentication/register/register.scss +0 -95
  621. package/src/pages/authentication/register/register.ts +0 -122
  622. package/src/pages/authentication/resetpwd/resetpwd.html +0 -40
  623. package/src/pages/authentication/resetpwd/resetpwd.module.ts +0 -16
  624. package/src/pages/authentication/resetpwd/resetpwd.scss +0 -102
  625. package/src/pages/authentication/resetpwd/resetpwd.ts +0 -93
  626. package/src/pages/components/chatBubble_old/chatBubble.scss +0 -83
  627. package/src/pages/components/chatBubble_old/chatBubble.ts +0 -30
  628. package/src/pages/components/elasticTextarea_old.ts +0 -46
  629. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.html +0 -261
  630. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.module.ts +0 -19
  631. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.scss +0 -701
  632. package/src/pages/dettaglio-conversazione/dettaglio-conversazione.ts +0 -1395
  633. package/src/pages/index.ts +0 -5
  634. package/src/pages/info-advanced/info-advanced.html +0 -90
  635. package/src/pages/info-advanced/info-advanced.module.ts +0 -13
  636. package/src/pages/info-advanced/info-advanced.scss +0 -196
  637. package/src/pages/info-advanced/info-advanced.ts +0 -44
  638. package/src/pages/info-conversation/info-conversation.html +0 -225
  639. package/src/pages/info-conversation/info-conversation.module.ts +0 -15
  640. package/src/pages/info-conversation/info-conversation.scss +0 -444
  641. package/src/pages/info-conversation/info-conversation.ts +0 -1233
  642. package/src/pages/info-message/info-message.html +0 -74
  643. package/src/pages/info-message/info-message.module.ts +0 -13
  644. package/src/pages/info-message/info-message.scss +0 -216
  645. package/src/pages/info-message/info-message.ts +0 -89
  646. package/src/pages/info-user/info-user.html +0 -89
  647. package/src/pages/info-user/info-user.module.ts +0 -13
  648. package/src/pages/info-user/info-user.scss +0 -187
  649. package/src/pages/info-user/info-user.ts +0 -177
  650. package/src/pages/lista-conversazioni/lista-conversazioni.html +0 -88
  651. package/src/pages/lista-conversazioni/lista-conversazioni.module.ts +0 -18
  652. package/src/pages/lista-conversazioni/lista-conversazioni.scss +0 -245
  653. package/src/pages/lista-conversazioni/lista-conversazioni.ts +0 -736
  654. package/src/pages/placeholder/placeholder.html +0 -3
  655. package/src/pages/placeholder/placeholder.module.ts +0 -16
  656. package/src/pages/placeholder/placeholder.scss +0 -23
  657. package/src/pages/placeholder/placeholder.ts +0 -18
  658. package/src/pages/popover/popover.html +0 -27
  659. package/src/pages/popover/popover.module.ts +0 -16
  660. package/src/pages/popover/popover.scss +0 -23
  661. package/src/pages/popover/popover.ts +0 -95
  662. package/src/pages/popover-profile/popover-profile.html +0 -20
  663. package/src/pages/popover-profile/popover-profile.module.ts +0 -16
  664. package/src/pages/popover-profile/popover-profile.scss +0 -10
  665. package/src/pages/popover-profile/popover-profile.ts +0 -40
  666. package/src/pages/profile/profile.html +0 -54
  667. package/src/pages/profile/profile.module.ts +0 -16
  668. package/src/pages/profile/profile.scss +0 -45
  669. package/src/pages/profile/profile.ts +0 -108
  670. package/src/pages/update-image-profile/update-image-profile.html +0 -39
  671. package/src/pages/update-image-profile/update-image-profile.module.ts +0 -16
  672. package/src/pages/update-image-profile/update-image-profile.scss +0 -50
  673. package/src/pages/update-image-profile/update-image-profile.ts +0 -111
  674. package/src/pages/users/users.html +0 -55
  675. package/src/pages/users/users.module.ts +0 -16
  676. package/src/pages/users/users.scss +0 -10
  677. package/src/pages/users/users.ts +0 -222
  678. package/src/providers/app-config/app-config.ts +0 -33
  679. package/src/providers/auth-service.ts +0 -140
  680. package/src/providers/canned-responses-service/canned-responses-service.ts +0 -57
  681. package/src/providers/chat-archived-conversations-handler.ts +0 -283
  682. package/src/providers/chat-contacts-synchronizer.ts +0 -179
  683. package/src/providers/chat-conversation-handler.ts +0 -547
  684. package/src/providers/chat-conversations-handler.ts +0 -519
  685. package/src/providers/chat-manager/chat-manager.ts +0 -246
  686. package/src/providers/chat-presence-handler.ts +0 -188
  687. package/src/providers/database/database.ts +0 -214
  688. package/src/providers/group/group.ts +0 -243
  689. package/src/providers/messaging-service.ts +0 -267
  690. package/src/providers/nav-proxy.ts +0 -104
  691. package/src/providers/tiledesk-conversation/tiledesk-conversation.ts +0 -134
  692. package/src/providers/translate-service.ts +0 -61
  693. package/src/providers/upload-service/upload-service.ts +0 -117
  694. package/src/providers/user/user.ts +0 -320
  695. package/src/service-worker.js +0 -30
  696. package/src/utils/constants.ts +0 -73
  697. package/src/utils/utils.ts +0 -548
  698. 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
+ }