@chat21/chat21-ionic 3.0.85 → 3.0.86-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +121 -4
- package/README.md +2 -2
- package/package.json +4 -3
- package/src/app/app-routing.module.ts +7 -2
- package/src/app/app.component.html +7 -1
- package/src/app/app.component.scss +20 -2
- package/src/app/app.component.ts +131 -20
- package/src/app/app.module.ts +8 -3
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +11 -4
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +86 -23
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +188 -88
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +42 -3
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +11 -24
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +6 -10
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.spec.ts +2 -2
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +16 -26
- package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.html +5 -1
- package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +22 -15
- package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts +25 -5
- package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html +2 -1
- package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +14 -15
- package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.ts +24 -5
- package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.html +6 -1
- package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +12 -13
- package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.ts +26 -5
- package/src/app/chatlib/conversation-detail/message/frame/frame.component.html +8 -2
- package/src/app/chatlib/conversation-detail/message/frame/frame.component.scss +36 -0
- package/src/app/chatlib/conversation-detail/message/frame/frame.component.ts +2 -2
- package/src/app/chatlib/conversation-detail/message/html/html.component.ts +0 -1
- package/src/app/chatlib/conversation-detail/message/image/image.component.html +3 -2
- package/src/app/chatlib/conversation-detail/message/image/image.component.scss +17 -5
- package/src/app/chatlib/conversation-detail/message/image/image.component.ts +1 -1
- package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +3 -2
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +16 -6
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -3
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +2 -0
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +78 -52
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +63 -20
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -10
- package/src/app/components/canned-response/canned-response.component.html +9 -9
- package/src/app/components/canned-response/canned-response.component.scss +14 -7
- package/src/app/components/canned-response/canned-response.component.ts +5 -4
- package/src/app/components/contacts-directory/contacts-directory.component.html +22 -26
- package/src/app/components/contacts-directory/contacts-directory.component.scss +8 -6
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +64 -47
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +98 -61
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +24 -44
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +116 -0
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +39 -42
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +67 -4
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +82 -154
- package/src/app/components/conversation-info/info-content/info-content.component.html +23 -2
- package/src/app/components/conversation-info/info-content/info-content.component.ts +5 -6
- package/src/app/components/conversation-info/info-direct/info-direct.component.html +7 -14
- package/src/app/components/conversation-info/info-direct/info-direct.component.scss +23 -0
- package/src/app/components/conversation-info/info-direct/info-direct.component.ts +1 -6
- package/src/app/components/conversation-info/info-group/info-group.component.html +44 -108
- package/src/app/components/conversation-info/info-group/info-group.component.scss +101 -61
- package/src/app/components/conversation-info/info-group/info-group.component.ts +1 -0
- package/src/app/components/conversation-info/info-support-group/info-support-group.component.html +2 -1
- package/src/app/components/conversation-info/info-support-group/info-support-group.component.ts +0 -1
- package/src/app/components/{ddp-header/ddp-header.component.html → conversations-list/header-conversations-list/header-conversations-list.component.html} +3 -3
- package/src/app/components/{ddp-header/ddp-header.component.scss → conversations-list/header-conversations-list/header-conversations-list.component.scss} +16 -4
- package/src/app/components/{conversation-detail/bubble-my-message/bubble-my-message.component.spec.ts → conversations-list/header-conversations-list/header-conversations-list.component.spec.ts} +6 -6
- package/src/app/components/{ddp-header/ddp-header.component.ts → conversations-list/header-conversations-list/header-conversations-list.component.ts} +7 -16
- package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.html +12 -0
- package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.scss +14 -0
- package/src/app/components/{conversation-detail/option-header/option-header.component.spec.ts → conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.spec.ts} +5 -5
- package/src/app/components/{conversation-detail/option-header/option-header.component.ts → conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.ts} +5 -4
- package/src/app/components/navbar/navbar.component.html +103 -0
- package/src/app/components/navbar/navbar.component.scss +249 -0
- package/src/app/components/{ddp-header/ddp-header.component.spec.ts → navbar/navbar.component.spec.ts} +6 -6
- package/src/app/components/navbar/navbar.component.ts +195 -0
- package/src/app/components/project-item/project-item.component.html +98 -149
- package/src/app/components/project-item/project-item.component.scss +43 -35
- package/src/app/components/project-item/project-item.component.ts +16 -4
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +5 -5
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +24 -13
- package/src/app/components/utils/user-presence/user-presence.component.html +7 -2
- package/src/app/components/utils/user-presence/user-presence.component.scss +35 -18
- package/src/app/components/utils/user-presence/user-presence.component.ts +6 -10
- package/src/app/{pages → modals}/create-canned-response/create-canned-response-routing.module.ts +0 -0
- package/src/app/{pages → modals}/create-canned-response/create-canned-response.module.ts +0 -0
- package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.html +0 -0
- package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.scss +0 -0
- package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.spec.ts +0 -0
- package/src/app/{pages → modals}/create-canned-response/create-canned-response.page.ts +13 -13
- package/src/app/{pages → modals}/loader-preview/loader-preview-routing.module.ts +0 -0
- package/src/app/{pages → modals}/loader-preview/loader-preview.module.ts +0 -0
- package/src/app/{pages → modals}/loader-preview/loader-preview.page.html +1 -1
- package/src/app/{pages → modals}/loader-preview/loader-preview.page.scss +4 -0
- package/src/app/{pages → modals}/loader-preview/loader-preview.page.spec.ts +0 -0
- package/src/app/{pages → modals}/loader-preview/loader-preview.page.ts +1 -2
- package/src/app/modals/send-email/send-email-routing.module.ts +17 -0
- package/src/app/modals/send-email/send-email.module.ts +31 -0
- package/src/app/modals/send-email/send-email.page.html +46 -0
- package/src/app/modals/send-email/send-email.page.scss +161 -0
- package/src/app/modals/send-email/send-email.page.spec.ts +24 -0
- package/src/app/modals/send-email/send-email.page.ts +89 -0
- package/src/app/pages/contacts-directory/contacts-directory.page.html +1 -1
- package/src/app/pages/contacts-directory/contacts-directory.page.scss +47 -0
- package/src/app/pages/contacts-directory/contacts-directory.page.ts +2 -0
- package/src/app/pages/conversation-detail/conversation-detail.module.ts +0 -8
- package/src/app/pages/conversation-detail/conversation-detail.page.html +48 -27
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +45 -254
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +330 -138
- package/src/app/pages/conversations-list/conversations-list.page.html +11 -8
- package/src/app/pages/conversations-list/conversations-list.page.scss +18 -2
- package/src/app/pages/conversations-list/conversations-list.page.ts +26 -24
- package/src/app/pages/profile-info/profile-info.page.html +2 -4
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +1 -1
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +42 -0
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +1 -0
- package/src/app/services/canned-responses/canned-responses.service.ts +26 -0
- package/src/app/services/projects/projects.service.spec.ts +12 -0
- package/src/app/services/projects/projects.service.ts +43 -0
- package/src/app/services/tiledesk/tiledesk.service.ts +33 -17
- package/src/app/shared/shared.module.ts +24 -33
- package/src/app/utils/toast.spec.ts +7 -0
- package/src/app/utils/toast.ts +48 -0
- package/src/assets/i18n/ar.json +288 -265
- package/src/assets/i18n/az.json +24 -1
- package/src/assets/i18n/de.json +25 -2
- package/src/assets/i18n/en.json +25 -2
- package/src/assets/i18n/es.json +26 -3
- package/src/assets/i18n/fr.json +24 -1
- package/src/assets/i18n/it.json +24 -1
- package/src/assets/i18n/kk.json +25 -2
- package/src/assets/i18n/pt.json +25 -2
- package/src/assets/i18n/ru.json +24 -1
- package/src/assets/i18n/sr.json +287 -264
- package/src/assets/i18n/sv.json +25 -2
- package/src/assets/i18n/tr.json +25 -2
- package/src/assets/i18n/uk.json +25 -2
- package/src/assets/i18n/uz.json +24 -1
- package/src/assets/js/chat21client.js +1 -1
- package/src/assets/sounds/interface-start.mp3 +0 -0
- package/src/assets/sounds/wheep-wheep.mp3 +0 -0
- package/src/chat-config-mqtt-localhost.json +2 -2
- package/src/chat-config-native-mqtt.json +3 -0
- package/src/chat21-core/models/conversation.ts +0 -1
- package/src/chat21-core/models/projects.ts +27 -0
- package/src/chat21-core/providers/firebase/firebase-typing.service.ts +7 -9
- package/src/chat21-core/providers/logger/customLogger.ts +1 -1
- package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +7 -8
- package/src/chat21-core/utils/constants.ts +7 -1
- package/src/chat21-core/utils/convertRequestToConversation.ts +41 -0
- package/src/chat21-core/utils/user-typing/user-typing.component.html +8 -5
- package/src/chat21-core/utils/user-typing/user-typing.component.scss +87 -17
- package/src/chat21-core/utils/user-typing/user-typing.component.ts +12 -94
- package/src/chat21-core/utils/utils.ts +41 -11
- package/src/global.scss +59 -255
- package/src/index.html +0 -9
- package/src/variables.scss +30 -10
- package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.html +0 -3
- package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.scss +0 -21
- package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.spec.ts +0 -24
- package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.ts +0 -14
- package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.html +0 -54
- package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.scss +0 -98
- package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +0 -84
- package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.html +0 -30
- package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.scss +0 -83
- package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.spec.ts +0 -24
- package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +0 -68
- package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.html +0 -3
- package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.scss +0 -10
- package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.spec.ts +0 -24
- package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.ts +0 -14
- package/src/app/components/conversation-detail/option-header/option-header.component.html +0 -13
- package/src/app/components/conversation-detail/option-header/option-header.component.scss +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# chat21-ionic ver 3.0
|
|
2
2
|
|
|
3
|
+
### 3.0.86 in PROD
|
|
4
|
+
|
|
5
|
+
### 3.0.86-rc.2
|
|
6
|
+
- bug-fixed: undefined reading 'channel' while render email icon in ion-conversation-detail component
|
|
7
|
+
|
|
8
|
+
### 3.0.86-rc.1
|
|
9
|
+
- added: send-email modal on Email footer option click
|
|
10
|
+
- added: handle window['analytics'] error
|
|
11
|
+
- added: send Offline message email if lead is offline and conversation is still open
|
|
12
|
+
- changed: info-conversation width from 300px to 320px
|
|
13
|
+
- changed: z-index of element when canned-list is open
|
|
14
|
+
- changed: chat21client.js file to 1.12.3
|
|
15
|
+
- changed: disable email section for direct conversations
|
|
16
|
+
- changed: do not reload right side bar conversation-info component
|
|
17
|
+
- bug-fixed: canned element is not focused on arrowDown keyboard action
|
|
18
|
+
- bug-fixed: if scroll over canned element, focus on text-area is missed
|
|
19
|
+
- bug-fixed: on text-area change, scroll conversation-detail if needed
|
|
20
|
+
- removed: 'Resolve' conversation button from header-conversation detail component
|
|
21
|
+
|
|
3
22
|
## 3.0.85 in PROD
|
|
4
23
|
- bug-fixed: remove focus from last edited canned
|
|
5
24
|
- changed: do not cache right side-bar conversation-info component
|
|
@@ -16,19 +35,117 @@
|
|
|
16
35
|
- bug-fixed: do not disable textArea if is a direct archived conversation
|
|
17
36
|
- bug-fixed: canned item not fire click event on Firefox browser
|
|
18
37
|
|
|
19
|
-
|
|
38
|
+
### 3.0.82-rc.7
|
|
39
|
+
- bug-fixed: do not disable textArea if is a direct archived conversation
|
|
40
|
+
- bug-fixed: canned item not fire click event on Firefox browser
|
|
41
|
+
|
|
42
|
+
### 3.0.82-rc.6
|
|
43
|
+
- bug-fixed: axios is undefined in chat21Client.js
|
|
44
|
+
- bug-fixed: if userImage not exist in sidebar--user-detail, no info of fillColor exist
|
|
45
|
+
|
|
46
|
+
### 3.0.82-rc.3
|
|
47
|
+
- bug-fixed: incorrect dashboard urls in navbar
|
|
48
|
+
- changed: used logger in mqtt auth service
|
|
49
|
+
|
|
50
|
+
### 3.0.82-rc.2
|
|
51
|
+
- changed: 'force' parameter to /close post as body content
|
|
52
|
+
- changed: enabled MTT
|
|
53
|
+
- changed: position of 'LogOut' button in sidebar-user-detail component
|
|
54
|
+
- bug-fixed: removed scrollbar on firefox browser in conversation-list, contacts-directory pages
|
|
55
|
+
|
|
56
|
+
### 3.0.82-rc.1
|
|
57
|
+
- changed: forceArchive to force while calling /close API URL
|
|
58
|
+
- changed: chat21Client.js from 1.12.1 to 1.12.2
|
|
59
|
+
- changed: list conversations component with from 360px to 320px
|
|
60
|
+
|
|
61
|
+
### 3.0.81 in PROD
|
|
62
|
+
|
|
63
|
+
### 3.0.81-rc.3
|
|
64
|
+
- bug-fixed: if window width is less then 991px, move 'Close detail' icon to right
|
|
65
|
+
- changed: removed segment from index.html and loaded dynamically only if in not production
|
|
66
|
+
|
|
67
|
+
### 3.0.81-rc.2
|
|
68
|
+
- changed: canned loader
|
|
20
69
|
- bug-fixed: if search for a string that not correspond with an existing canned, was shown loader ever
|
|
21
70
|
|
|
22
|
-
|
|
71
|
+
### 3.0.81-rc.1
|
|
72
|
+
- added: remove bubble-message background if is image or iframe and no text is in message
|
|
73
|
+
- added: new sound if unassigned request arrive
|
|
74
|
+
- added: animation on hover an image
|
|
75
|
+
- added: parameter to /close to forse the closing of a conversation
|
|
76
|
+
- added: v.0.1.12.1 chatclient.js
|
|
77
|
+
- changed: info-message UI, image UI, frame UI
|
|
78
|
+
- bug-fixed: if click on canned icon, then close and clear '/' char, if click again on canned icon, '/' was not added to message text-area
|
|
79
|
+
|
|
80
|
+
### 3.0.80 in PROD
|
|
23
81
|
- bug-fixed: if search a canned response, after clicked it does not replaced into text-area
|
|
24
82
|
|
|
25
|
-
|
|
83
|
+
### 3.0.80-rc.1
|
|
84
|
+
- changed: moved sender_fullname inside bubble-message component
|
|
85
|
+
- changed: publish onConversationSelect event to stop audio after agent has clicked on it
|
|
86
|
+
- bug-fixed: /null loading flag_url in sidebar-user-detail
|
|
87
|
+
|
|
88
|
+
### 3.0.79 in PROD
|
|
26
89
|
- added: segment analytics events
|
|
27
90
|
|
|
28
|
-
|
|
91
|
+
### 3.0.79-rc.4
|
|
92
|
+
- bug-fixed: testsiteBaseUrl wrong value env property
|
|
93
|
+
|
|
94
|
+
### 3.0.79-rc.3
|
|
95
|
+
- added: segment analytics for SignIn-SignOut-Resolved-MsgAdded-ConvAdded
|
|
96
|
+
- added: navbar component if not mobile
|
|
97
|
+
- added: NAVBAR translations
|
|
98
|
+
- changed: minor improvements on UI
|
|
99
|
+
- changed: ion-split-pane UI if mobile
|
|
100
|
+
- changed: moved hover 'add canned' button from bubble-message to ion-conversation-detail component
|
|
101
|
+
- changed: moved addNewCanned to tiledesk service to canned-responses service
|
|
102
|
+
- bug-fixed: open/close detail icon not aligned correctly on click 'close'
|
|
103
|
+
|
|
104
|
+
### 3.0.79-rc.2
|
|
105
|
+
- added: new sound if new conversation is triggered in agent's chat
|
|
106
|
+
- changed: header UI of header-conversation-detail and unassigned-conversations components
|
|
107
|
+
|
|
108
|
+
### 3.0.79-rc.1
|
|
109
|
+
- added: LABEL_ONLINE, LABEL_OFFLINE translations
|
|
110
|
+
- changed: renamed ddp-header with conversations-list-header
|
|
111
|
+
- changed: unified control to mobile/desktop app
|
|
112
|
+
- changed: LABEL_AVAILABLE/NOT_AVAILABLE with LABEL_ONLINE/OFFLINE in user-presence component
|
|
113
|
+
- changed: icon to user-presence
|
|
114
|
+
- changed: UI for conversation-list, conversation-detail and info-group for desktop and mobile
|
|
115
|
+
- changed: renamed option-header component with header-conversations-list-archived
|
|
116
|
+
- changed: contacts-directory UI
|
|
117
|
+
- bug-fixed: if app is opened and user press width expand, move correctly the right position
|
|
118
|
+
|
|
119
|
+
## 3.0.78 in PROD
|
|
29
120
|
- bug-fixed: unassigned request not sound the if is the first at all
|
|
30
121
|
- bug-fixed: canned responses opens in incorrect mode
|
|
31
122
|
|
|
123
|
+
### 3.0.78-rc.4
|
|
124
|
+
- bug-fixed: unassigned request not sound the if is the first at all
|
|
125
|
+
- bug-fixed: translations missed
|
|
126
|
+
- bug-fixed: direct info not showed in conversation-header component
|
|
127
|
+
- removed: conversation-footer border top
|
|
128
|
+
- changed: colors to message-text-area icons and message-attachment components
|
|
129
|
+
|
|
130
|
+
### 3.0.78-rc.3
|
|
131
|
+
- changed: user-typing location moved from conversation-header to conversation-detail component
|
|
132
|
+
- changed: replace includes with startsWith for check what type of conversation is in project info conversation-list component
|
|
133
|
+
- added: styleMap integrations to some elements
|
|
134
|
+
- bug-fixed: no tooltip showed if no unserved request are present
|
|
135
|
+
|
|
136
|
+
### 3.0.78-rc.2
|
|
137
|
+
- changed: project item UI and tooltip msg
|
|
138
|
+
- changed: conversation UI in conversations list component
|
|
139
|
+
- changed: conversation detail header component
|
|
140
|
+
- added: open/close info-conversation moved from conversation-header to conversation detail component
|
|
141
|
+
- bug-fixed: canned responses opens in incorrect mode
|
|
142
|
+
|
|
143
|
+
### 3.0.78-rc.1
|
|
144
|
+
- changed: conversation-list page width increased
|
|
145
|
+
- changed: background changed in info-message component
|
|
146
|
+
- changed: project-item UI
|
|
147
|
+
- changed: conversation-list page UI
|
|
148
|
+
|
|
32
149
|
## 3.0.77 in PROD
|
|
33
150
|
|
|
34
151
|
### 3.0.77-rc.3
|
package/README.md
CHANGED
|
@@ -100,8 +100,8 @@ Use [Docker Compose Tiledesk installation guide](https://github.com/Tiledesk/til
|
|
|
100
100
|
},
|
|
101
101
|
"apiUrl": "https://<YOUR-TILEDESK-API-URL>",
|
|
102
102
|
"baseImageUrl": "https://<YOUR-BASE-IMAGE-URL>",
|
|
103
|
-
"dashboardUrl": "https://<YOUR-DASHBOARD-URL>"
|
|
104
|
-
"testsiteBaseUrl": "https:<YOUR-WIDGET-URL>/test_widget_page/index.html"
|
|
103
|
+
"dashboardUrl": "https://<YOUR-DASHBOARD-URL>"
|
|
104
|
+
"testsiteBaseUrl": "https:<YOUR-WIDGET-URL>/test_widget_page/index.html"
|
|
105
105
|
"wsUrl": 'ws://' + window.location.hostname + '/ws/',
|
|
106
106
|
}
|
|
107
107
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chat21/chat21-ionic",
|
|
3
3
|
"author": "Tiledesk SRL",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.86-rc.2",
|
|
5
5
|
"license": "MIT License",
|
|
6
6
|
"homepage": "https://tiledesk.com/",
|
|
7
7
|
"repository": {
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"@ng-select/ng-select": "^3.7.3",
|
|
43
43
|
"@ngx-translate/core": "^12.1.2",
|
|
44
44
|
"@ngx-translate/http-loader": "^4.0.0",
|
|
45
|
+
"@types/marked": "^1.1.0",
|
|
45
46
|
"angular2-moment": "^1.9.0",
|
|
46
47
|
"autolinker": "^3.14.2",
|
|
47
48
|
"cordova-android": "9.1.0",
|
|
@@ -59,7 +60,7 @@
|
|
|
59
60
|
"core-js": "^2.5.4",
|
|
60
61
|
"file-saver": "^2.0.5",
|
|
61
62
|
"firebase": "^8.6.7",
|
|
62
|
-
"marked": "^2.
|
|
63
|
+
"marked": "^2.1.3",
|
|
63
64
|
"material-icons": "^1.11.2",
|
|
64
65
|
"moment": "^2.24.0",
|
|
65
66
|
"moment-timezone": "^0.5.28",
|
|
@@ -119,4 +120,4 @@
|
|
|
119
120
|
"android"
|
|
120
121
|
]
|
|
121
122
|
}
|
|
122
|
-
}
|
|
123
|
+
}
|
|
@@ -43,7 +43,7 @@ const routes: Routes = [
|
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
path: 'loader-preview',
|
|
46
|
-
loadChildren: () => import('./
|
|
46
|
+
loadChildren: () => import('./modals/loader-preview/loader-preview.module').then( m => m.LoaderPreviewPageModule)
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
path: 'unassigned-conversations',
|
|
@@ -59,13 +59,18 @@ const routes: Routes = [
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
path: 'create-canned-response',
|
|
62
|
-
loadChildren: () => import('./
|
|
62
|
+
loadChildren: () => import('./modals/create-canned-response/create-canned-response.module').then( m => m.CreateCannedResponsePageModule)
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: 'send-email',
|
|
66
|
+
loadChildren: () => import('./modals/send-email/send-email.module').then( m => m.SendEmailModalModule)
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
|
|
66
70
|
|
|
67
71
|
|
|
68
72
|
|
|
73
|
+
|
|
69
74
|
// {
|
|
70
75
|
// path: 'conversation-detail/:IDConv',
|
|
71
76
|
// loadChildren: () => import('./pages/conversation-detail/conversation-detail.module').then( m => m.ConversationDetailPageModule)
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
<app-network-offline></app-network-offline>
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
<app-navbar *ngIf="!IS_ON_MOBILE_DEVICE"
|
|
10
|
+
[isSoundEnabled]="isSoundEnabled"
|
|
11
|
+
(onSoundChange)="onSoundChange($event)">
|
|
12
|
+
</app-navbar>
|
|
13
|
+
|
|
8
14
|
<div class="sidebar" [ngClass]="{'hide-sidebar': IS_ONLINE === false || IS_ON_MOBILE_DEVICE === true || SUPPORT_MODE === false}">
|
|
9
15
|
<app-sidebar></app-sidebar>
|
|
10
16
|
</div>
|
|
@@ -13,7 +19,7 @@
|
|
|
13
19
|
<app-sidebar-user-details> </app-sidebar-user-details>
|
|
14
20
|
</div>
|
|
15
21
|
|
|
16
|
-
<ion-split-pane when="md" contentId="main">
|
|
22
|
+
<ion-split-pane when="md" contentId="main" [ngClass]="{'mobile': IS_ON_MOBILE_DEVICE}">
|
|
17
23
|
<!-- 'sidebar-visible': IS_ONLINE === true && SUPPORT_MODE === true, -->
|
|
18
24
|
<ion-nav #sidebarNav [root]="sidebarPage" [ngClass]="{'sidebar-hidden': IS_ON_MOBILE_DEVICE === true || SUPPORT_MODE === false}"></ion-nav>
|
|
19
25
|
<!-- our side menu -->
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
@import '../variables.scss';
|
|
2
|
+
|
|
1
3
|
.split-pane-md.split-pane-visible > .split-pane-side {
|
|
2
|
-
min-width: 312px;
|
|
4
|
+
min-width: 320px; //360px; //312px;
|
|
3
5
|
display: block; // Safari bug fix
|
|
4
|
-
margin-left:
|
|
6
|
+
margin-left: var(--sidebar-width);
|
|
7
|
+
--border: 0px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.split-pane-md:not(.mobile){
|
|
11
|
+
height: calc( 100% - var(--nav-bar-heigth));
|
|
12
|
+
margin-top: var(--nav-bar-heigth);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.navbar{
|
|
16
|
+
display: flex;
|
|
17
|
+
position: fixed;
|
|
18
|
+
top: 0px;
|
|
5
19
|
}
|
|
6
20
|
|
|
7
21
|
.sidebar-visible {
|
|
@@ -20,6 +34,10 @@
|
|
|
20
34
|
left: 60px
|
|
21
35
|
}
|
|
22
36
|
|
|
37
|
+
// ion-nav {
|
|
38
|
+
// background-color: var(--list-bkg-color);
|
|
39
|
+
// }
|
|
40
|
+
|
|
23
41
|
// @media (min-width: 768px) {
|
|
24
42
|
// .split-pane-md.split-pane-visible > .split-pane-side {
|
|
25
43
|
// min-width: 312px;
|
package/src/app/app.component.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
|
|
2
|
+
import { TYPE_DIRECT, TYPE_SUPPORT_GROUP, URL_SOUND_CONVERSATION_UNASSIGNED } from 'src/chat21-core/utils/constants';
|
|
3
|
+
import { tranlatedLanguage, URL_SOUND_CONVERSATION_ADDED, URL_SOUND_LIST_CONVERSATION } from 'src/chat21-core/utils/constants';
|
|
3
4
|
import { ArchivedConversationsHandlerService } from 'src/chat21-core/providers/abstract/archivedconversations-handler.service';
|
|
4
5
|
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
5
6
|
|
|
@@ -38,8 +39,8 @@ import { LoginPage } from './pages/authentication/login/login.page';
|
|
|
38
39
|
import { ConversationListPage } from './pages/conversations-list/conversations-list.page';
|
|
39
40
|
|
|
40
41
|
// utils
|
|
41
|
-
import { checkPlatformIsMobile, isGroup, getParameterByName, searchIndexInArrayForUid, compareValues } from '
|
|
42
|
-
import { STORAGE_PREFIX, PLATFORM_MOBILE, PLATFORM_DESKTOP, CHAT_ENGINE_FIREBASE, AUTH_STATE_OFFLINE, AUTH_STATE_ONLINE } from '
|
|
42
|
+
import { checkPlatformIsMobile, isGroup, getParameterByName, searchIndexInArrayForUid, compareValues, stripTags } from 'src/chat21-core/utils/utils';
|
|
43
|
+
import { STORAGE_PREFIX, PLATFORM_MOBILE, PLATFORM_DESKTOP, CHAT_ENGINE_FIREBASE, AUTH_STATE_OFFLINE, AUTH_STATE_ONLINE } from 'src/chat21-core/utils/constants';
|
|
43
44
|
import { environment } from '../environments/environment';
|
|
44
45
|
import { UserModel } from '../chat21-core/models/user';
|
|
45
46
|
import { ConversationModel } from 'src/chat21-core/models/conversation';
|
|
@@ -87,11 +88,15 @@ export class AppComponent implements OnInit {
|
|
|
87
88
|
public authModal: any;
|
|
88
89
|
|
|
89
90
|
private audio: any;
|
|
91
|
+
private audio_NewConv: any;
|
|
92
|
+
private audio_Unassigned: any;
|
|
90
93
|
private setIntervalTime: any;
|
|
91
94
|
private setTimeoutSound: any;
|
|
92
95
|
private isTabVisible: boolean = true;
|
|
93
|
-
|
|
96
|
+
public isSoundEnabled: boolean;
|
|
94
97
|
private hasPlayed: boolean;
|
|
98
|
+
private hasPlayedConversation: boolean;
|
|
99
|
+
private hasPlayedConversationUnassigned: boolean;
|
|
95
100
|
private tabTitle: string;
|
|
96
101
|
private setTimeoutConversationsEvent: any;
|
|
97
102
|
private logger: LoggerService = LoggerInstance.getInstance();
|
|
@@ -335,6 +340,7 @@ export class AppComponent implements OnInit {
|
|
|
335
340
|
|
|
336
341
|
|
|
337
342
|
this.initializeApp('oninit');
|
|
343
|
+
this.initSegment()
|
|
338
344
|
this.listenToPostMsgs();
|
|
339
345
|
}
|
|
340
346
|
|
|
@@ -467,6 +473,7 @@ export class AppComponent implements OnInit {
|
|
|
467
473
|
this.statusBar.styleDefault();
|
|
468
474
|
this.navService.init(this.sidebarNav, this.detailNav);
|
|
469
475
|
// this.persistence = appconfig.authPersistence;
|
|
476
|
+
// this.appStorageService.initialize(environment.storage_prefix, this.persistence, '')
|
|
470
477
|
this.tiledeskAuthService.initialize(this.appConfigProvider.getConfig().apiUrl);
|
|
471
478
|
this.messagingAuthService.initialize();
|
|
472
479
|
|
|
@@ -830,6 +837,14 @@ export class AppComponent implements OnInit {
|
|
|
830
837
|
this.audio.src = chatBaseUrl + URL_SOUND_LIST_CONVERSATION;
|
|
831
838
|
this.audio.load();
|
|
832
839
|
|
|
840
|
+
this.audio_NewConv = new Audio();
|
|
841
|
+
this.audio_NewConv.src = chatBaseUrl + URL_SOUND_CONVERSATION_ADDED;
|
|
842
|
+
this.audio_NewConv.load();
|
|
843
|
+
|
|
844
|
+
this.audio_Unassigned = new Audio();
|
|
845
|
+
this.audio_Unassigned.src = chatBaseUrl + URL_SOUND_CONVERSATION_UNASSIGNED;
|
|
846
|
+
this.audio_Unassigned.load();
|
|
847
|
+
|
|
833
848
|
const sound_status = localStorage.getItem('dshbrd----sound')
|
|
834
849
|
if(sound_status && sound_status !== 'undefined'){
|
|
835
850
|
this.isSoundEnabled = sound_status === 'enabled'? true: false
|
|
@@ -839,7 +854,14 @@ export class AppComponent implements OnInit {
|
|
|
839
854
|
|
|
840
855
|
}
|
|
841
856
|
|
|
842
|
-
|
|
857
|
+
onSoundChange(event){
|
|
858
|
+
if(event && event !== undefined){
|
|
859
|
+
localStorage.setItem('dshbrd----sound', event)
|
|
860
|
+
this.isSoundEnabled = event === 'enabled'? true: false
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
private manageTabNotification(sound_type: string, badgeNotificationCount?: number) {
|
|
843
865
|
if (!this.isTabVisible) {
|
|
844
866
|
// TAB IS HIDDEN --> manage title and SOUND
|
|
845
867
|
let badgeNewConverstionNumber = badgeNotificationCount? badgeNotificationCount : this.conversationsHandlerService.countIsNew()
|
|
@@ -863,7 +885,26 @@ export class AppComponent implements OnInit {
|
|
|
863
885
|
this.isSoundEnabled = sound_status === 'enabled'? true: false
|
|
864
886
|
}
|
|
865
887
|
this.logger.debug('[APP-COMP] manageTabNotification can saund?', this.isInitialized, this.isSoundEnabled)
|
|
866
|
-
if(this.isInitialized && this.isSoundEnabled)
|
|
888
|
+
if(this.isInitialized && this.isSoundEnabled) {
|
|
889
|
+
switch(sound_type){
|
|
890
|
+
case 'conv_added': {
|
|
891
|
+
this.soundConversationAdded();
|
|
892
|
+
break;
|
|
893
|
+
}
|
|
894
|
+
case 'new_message': {
|
|
895
|
+
this.soundMessage();
|
|
896
|
+
break;
|
|
897
|
+
}
|
|
898
|
+
case 'conv_unassigned': {
|
|
899
|
+
this.soundConversationUnassigned();
|
|
900
|
+
break;
|
|
901
|
+
}
|
|
902
|
+
default:{
|
|
903
|
+
this.soundMessage();
|
|
904
|
+
break;
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
}
|
|
867
908
|
}
|
|
868
909
|
|
|
869
910
|
soundMessage() {
|
|
@@ -879,7 +920,7 @@ export class AppComponent implements OnInit {
|
|
|
879
920
|
// }, 4000);
|
|
880
921
|
|
|
881
922
|
//play sound every 4s from the fist time you receive a conversation added/changed
|
|
882
|
-
if(!this.hasPlayed){
|
|
923
|
+
if(!this.hasPlayed && !this.hasPlayedConversation){
|
|
883
924
|
that.audio.play().then(() => {
|
|
884
925
|
that.hasPlayed = true
|
|
885
926
|
that.logger.debug('[APP-COMP] ****** soundMessage played *****');
|
|
@@ -891,6 +932,36 @@ export class AppComponent implements OnInit {
|
|
|
891
932
|
});
|
|
892
933
|
}
|
|
893
934
|
}
|
|
935
|
+
|
|
936
|
+
soundConversationAdded(){
|
|
937
|
+
const that = this;
|
|
938
|
+
if(!this.hasPlayedConversation ){
|
|
939
|
+
that.audio_NewConv.play().then(() => {
|
|
940
|
+
that.hasPlayedConversation = true
|
|
941
|
+
that.logger.debug('[APP-COMP] ****** soundConversationAdded played *****');
|
|
942
|
+
setTimeout(() => {
|
|
943
|
+
that.hasPlayedConversation = false
|
|
944
|
+
}, 4000);
|
|
945
|
+
}).catch((error: any) => {
|
|
946
|
+
that.logger.error('[APP-COMP] ***soundConversationAdded error*', error);
|
|
947
|
+
});
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
soundConversationUnassigned(){
|
|
952
|
+
const that = this;
|
|
953
|
+
if(!this.hasPlayedConversationUnassigned ){
|
|
954
|
+
that.audio_Unassigned.play().then(() => {
|
|
955
|
+
that.hasPlayedConversationUnassigned = true
|
|
956
|
+
that.logger.debug('[APP-COMP] ****** soundConversationUnassigned played *****');
|
|
957
|
+
setTimeout(() => {
|
|
958
|
+
that.hasPlayedConversationUnassigned = false
|
|
959
|
+
}, 4000);
|
|
960
|
+
}).catch((error: any) => {
|
|
961
|
+
that.logger.error('[APP-COMP] ***soundConversationUnassigned error*', error);
|
|
962
|
+
});
|
|
963
|
+
}
|
|
964
|
+
}
|
|
894
965
|
/**---------------- SOUND FUNCTIONS --> END <--- +*/
|
|
895
966
|
/***************************************************+*/
|
|
896
967
|
|
|
@@ -938,11 +1009,11 @@ export class AppComponent implements OnInit {
|
|
|
938
1009
|
this.events.subscribe('uidConvSelected:changed', this.subscribeChangedConversationSelected);
|
|
939
1010
|
this.events.subscribe('profileInfoButtonClick:logout', this.subscribeProfileInfoButtonLogOut);
|
|
940
1011
|
this.events.subscribe('unservedRequest:count', this.subscribeUnservedRequestCount)
|
|
941
|
-
|
|
1012
|
+
this.events.subscribe('convList:onConversationSelected', this.subscribeConversationSelected)
|
|
942
1013
|
this.conversationsHandlerService.conversationAdded.subscribe((conversation: ConversationModel) => {
|
|
943
1014
|
// this.logger.log('[APP-COMP] ***** subscribeConversationAdded *****', conversation);
|
|
944
1015
|
if (conversation && conversation.is_new === true) {
|
|
945
|
-
this.manageTabNotification()
|
|
1016
|
+
this.manageTabNotification('conv_added')
|
|
946
1017
|
}
|
|
947
1018
|
if(conversation) this.updateConversationsOnStorage()
|
|
948
1019
|
});
|
|
@@ -960,7 +1031,7 @@ export class AppComponent implements OnInit {
|
|
|
960
1031
|
this.logger.log('[APP-COMP] ***** subscribeConversationChangedDetailed currentUser: ', currentUser);
|
|
961
1032
|
if (changes.value && changes.value.sender !== currentUser.uid) {
|
|
962
1033
|
if(changes.value.is_new === changes.previousValue.is_new){
|
|
963
|
-
this.manageTabNotification();
|
|
1034
|
+
this.manageTabNotification('new_message');
|
|
964
1035
|
}
|
|
965
1036
|
}
|
|
966
1037
|
}
|
|
@@ -972,7 +1043,6 @@ export class AppComponent implements OnInit {
|
|
|
972
1043
|
this.updateConversationsOnStorage();
|
|
973
1044
|
isDevMode()? null: this.segmentResolved(conversation)
|
|
974
1045
|
}
|
|
975
|
-
|
|
976
1046
|
});
|
|
977
1047
|
}
|
|
978
1048
|
|
|
@@ -1018,7 +1088,6 @@ export class AppComponent implements OnInit {
|
|
|
1018
1088
|
this.initConversationsHandler(currentUser.uid);
|
|
1019
1089
|
this.initArchivedConversationsHandler(currentUser.uid);
|
|
1020
1090
|
isDevMode()? null: this.segmentSignIn()
|
|
1021
|
-
|
|
1022
1091
|
}
|
|
1023
1092
|
this.checkPlatform();
|
|
1024
1093
|
try {
|
|
@@ -1059,7 +1128,7 @@ export class AppComponent implements OnInit {
|
|
|
1059
1128
|
|
|
1060
1129
|
// this.unsubscribe$.next();
|
|
1061
1130
|
// this.unsubscribe$.complete();
|
|
1062
|
-
|
|
1131
|
+
|
|
1063
1132
|
}
|
|
1064
1133
|
|
|
1065
1134
|
goToDashboardLogin(){
|
|
@@ -1120,7 +1189,7 @@ export class AppComponent implements OnInit {
|
|
|
1120
1189
|
}
|
|
1121
1190
|
|
|
1122
1191
|
subscribeProfileInfoButtonLogOut = (hasClickedLogout) => {
|
|
1123
|
-
this.logger.log('[APP-COMP] FIREBASE-NOTIFICATION >>>> subscribeProfileInfoButtonLogOut');
|
|
1192
|
+
this.logger.log('[APP-COMP] FIREBASE-NOTIFICATION >>>> subscribeProfileInfoButtonLogOut ');
|
|
1124
1193
|
// if (hasClickedLogout === true) {
|
|
1125
1194
|
// this.removePresenceAndLogout()
|
|
1126
1195
|
// }
|
|
@@ -1141,6 +1210,7 @@ export class AppComponent implements OnInit {
|
|
|
1141
1210
|
|
|
1142
1211
|
if (res === 'success') {
|
|
1143
1212
|
that.removePresenceAndLogout();
|
|
1213
|
+
|
|
1144
1214
|
} else {
|
|
1145
1215
|
that.removePresenceAndLogout();
|
|
1146
1216
|
// that.presentToast();
|
|
@@ -1154,13 +1224,19 @@ export class AppComponent implements OnInit {
|
|
|
1154
1224
|
|
|
1155
1225
|
subscribeUnservedRequestCount = (unservedRequestCount) => {
|
|
1156
1226
|
if(unservedRequestCount && unservedRequestCount > 0){
|
|
1157
|
-
this.logger.debug("
|
|
1227
|
+
this.logger.debug("subscribeUnservedRequestCount appIsInitialized::::",this.isInitialized)
|
|
1158
1228
|
if(this.isInitialized){
|
|
1159
|
-
this.manageTabNotification(unservedRequestCount) //sound and alternate title
|
|
1229
|
+
this.manageTabNotification('conv_unassigned', unservedRequestCount) //sound and alternate title
|
|
1160
1230
|
}
|
|
1161
1231
|
}
|
|
1162
1232
|
}
|
|
1163
1233
|
|
|
1234
|
+
subscribeConversationSelected= (conversation: ConversationModel) => {
|
|
1235
|
+
if(conversation && conversation.is_new){
|
|
1236
|
+
this.audio_NewConv.pause()
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1164
1240
|
private async presentModal(calledby): Promise<any> {
|
|
1165
1241
|
this.logger.log('[APP-COMP] presentModal calledby', calledby, '- hadBeenCalledOpenModal: ', this.hadBeenCalledOpenModal);
|
|
1166
1242
|
const attributes = { tenant: this.tenant, enableBackdropDismiss: false };
|
|
@@ -1268,8 +1344,21 @@ export class AppComponent implements OnInit {
|
|
|
1268
1344
|
}
|
|
1269
1345
|
}
|
|
1270
1346
|
|
|
1347
|
+
private initSegment(){
|
|
1348
|
+
if(!isDevMode()){
|
|
1349
|
+
var head = document.getElementsByTagName('head')[0];
|
|
1350
|
+
var script = document.createElement('script');
|
|
1351
|
+
script.type="text/javascript";
|
|
1352
|
+
script.text =`!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="qaTU0wG6VH6xPAhOzD2kneI70Txg1fTB";;analytics.SNIPPET_VERSION="4.15.3";
|
|
1353
|
+
analytics.load("qaTU0wG6VH6xPAhOzD2kneI70Txg1fTB");
|
|
1354
|
+
analytics.page();
|
|
1355
|
+
}}();`
|
|
1356
|
+
head.appendChild(script);
|
|
1357
|
+
}
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1271
1360
|
private segmentSignIn(){
|
|
1272
|
-
let user = this.tiledeskAuthService.getCurrentUser()
|
|
1361
|
+
let user = this.tiledeskAuthService.getCurrentUser()
|
|
1273
1362
|
if(window['analytics']){
|
|
1274
1363
|
try {
|
|
1275
1364
|
window['analytics'].page("Chat Auth Page, Signin", {});
|
|
@@ -1301,7 +1390,7 @@ export class AppComponent implements OnInit {
|
|
|
1301
1390
|
|
|
1302
1391
|
|
|
1303
1392
|
private segmentSignedOut(){
|
|
1304
|
-
let user = this.tiledeskAuthService.getCurrentUser()
|
|
1393
|
+
let user = this.tiledeskAuthService.getCurrentUser()
|
|
1305
1394
|
if(window['analytics']){
|
|
1306
1395
|
try {
|
|
1307
1396
|
window['analytics'].page("Chat Auth Page, Signed Out", {});
|
|
@@ -1341,7 +1430,7 @@ export class AppComponent implements OnInit {
|
|
|
1341
1430
|
|
|
1342
1431
|
private segmentResolved(conversation: ConversationModel){
|
|
1343
1432
|
let user = this.tiledeskAuthService.getCurrentUser();
|
|
1344
|
-
if(
|
|
1433
|
+
if(window['analytics']){
|
|
1345
1434
|
try {
|
|
1346
1435
|
window['analytics'].page("Chat List Conversations Page, Chat Resolved", {});
|
|
1347
1436
|
} catch (err) {
|
|
@@ -1390,6 +1479,7 @@ export class AppComponent implements OnInit {
|
|
|
1390
1479
|
}
|
|
1391
1480
|
}
|
|
1392
1481
|
|
|
1482
|
+
|
|
1393
1483
|
@HostListener('document:visibilitychange', [])
|
|
1394
1484
|
visibilitychange() {
|
|
1395
1485
|
// this.logger.debug("document TITLE", document.hidden, document.title);
|
|
@@ -1453,5 +1543,26 @@ export class AppComponent implements OnInit {
|
|
|
1453
1543
|
this.isSoundEnabled = event.newValue === 'enabled'? true: false
|
|
1454
1544
|
}
|
|
1455
1545
|
}
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
// @HostListener('mouseenter', ['$event'])
|
|
1549
|
+
// onMouseEnter(event: any) {
|
|
1550
|
+
// console.log('HostListener onMouseEnter-->', event)
|
|
1551
|
+
// }
|
|
1552
|
+
|
|
1553
|
+
// @HostListener('mouseleave', ['$event'])
|
|
1554
|
+
// onMouseLeave(event: any) {
|
|
1555
|
+
// console.log('HostListener onMouseLeave-->', event)
|
|
1556
|
+
// }
|
|
1557
|
+
|
|
1558
|
+
// @HostListener('focus', ['$event'])
|
|
1559
|
+
// onFocus(event: any) {
|
|
1560
|
+
// console.log('HostListener onFocus-->', event)
|
|
1561
|
+
// }
|
|
1562
|
+
|
|
1563
|
+
// @HostListener('blur', ['$event'])
|
|
1564
|
+
// onBlur(event: any) {
|
|
1565
|
+
// console.log('HostListener onBlur-->', event)
|
|
1566
|
+
// }
|
|
1456
1567
|
}
|
|
1457
1568
|
|
package/src/app/app.module.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { SendEmailModal } from './modals/send-email/send-email.page';
|
|
2
|
+
import { ConvertRequestToConversation } from './../chat21-core/utils/convertRequestToConversation';
|
|
1
3
|
import { LogLevel, PUSH_ENGINE_FIREBASE, PUSH_ENGINE_MQTT } from './../chat21-core/utils/constants';
|
|
2
4
|
import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
|
|
3
5
|
import { NgModule, ErrorHandler, APP_INITIALIZER } from '@angular/core';
|
|
@@ -81,10 +83,10 @@ import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storag
|
|
|
81
83
|
import { ConversationListPageModule } from './pages/conversations-list/conversations-list.module';
|
|
82
84
|
import { ConversationDetailPageModule } from './pages/conversation-detail/conversation-detail.module';
|
|
83
85
|
import { LoginPageModule } from './pages/authentication/login/login.module';
|
|
84
|
-
import { LoaderPreviewPageModule } from './
|
|
86
|
+
import { LoaderPreviewPageModule } from './modals/loader-preview/loader-preview.module';
|
|
85
87
|
import { CreateTicketPageModule } from './pages/create-ticket/create-ticket.module';
|
|
86
88
|
import { CreateRequesterPageModule } from './pages/create-requester/create-requester.module';
|
|
87
|
-
import { CreateCannedResponsePageModule } from './
|
|
89
|
+
import { CreateCannedResponsePageModule } from './modals/create-canned-response/create-canned-response.module';
|
|
88
90
|
// UTILS
|
|
89
91
|
import { ScrollbarThemeModule } from './utils/scrollbar-theme.directive';
|
|
90
92
|
import { SharedModule } from 'src/app/shared/shared.module';
|
|
@@ -101,6 +103,7 @@ import { ConnectionService } from 'ng-connection-service';
|
|
|
101
103
|
import { WebSocketJs } from './services/websocket/websocket-js';
|
|
102
104
|
import { UnassignedConversationsPageModule } from './pages/unassigned-conversations/unassigned-conversations.module';
|
|
103
105
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
106
|
+
import { SendEmailModalModule } from './modals/send-email/send-email.module';
|
|
104
107
|
|
|
105
108
|
// FACTORIES
|
|
106
109
|
export function createTranslateLoader(http: HttpClient) {
|
|
@@ -287,6 +290,7 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
|
|
|
287
290
|
ConversationInfoModule,
|
|
288
291
|
NgxLinkifyjsModule.forRoot(),
|
|
289
292
|
LoaderPreviewPageModule,
|
|
293
|
+
SendEmailModalModule,
|
|
290
294
|
CreateTicketPageModule,
|
|
291
295
|
CreateRequesterPageModule,
|
|
292
296
|
CreateCannedResponsePageModule
|
|
@@ -369,7 +373,8 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
|
|
|
369
373
|
EventsService,
|
|
370
374
|
Chooser,
|
|
371
375
|
Chat21Service,
|
|
372
|
-
WebSocketJs
|
|
376
|
+
WebSocketJs,
|
|
377
|
+
ConvertRequestToConversation
|
|
373
378
|
]
|
|
374
379
|
})
|
|
375
380
|
export class AppModule { }
|
package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { MessageModel } from '
|
|
3
|
-
import { isPopupUrl, popupUrl, stripTags } from '
|
|
4
|
-
import { MSG_STATUS_SENT, MSG_STATUS_RETURN_RECEIPT, MSG_STATUS_SENT_SERVER, MAX_WIDTH_IMAGES, MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from '
|
|
2
|
+
import { MessageModel } from 'src/chat21-core/models/message';
|
|
3
|
+
import { isPopupUrl, popupUrl, stripTags } from 'src/chat21-core/utils/utils';
|
|
4
|
+
import { MSG_STATUS_SENT, MSG_STATUS_RETURN_RECEIPT, MSG_STATUS_SENT_SERVER, MAX_WIDTH_IMAGES, MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
|
|
5
5
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
6
6
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
7
7
|
import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
|
|
@@ -17,11 +17,18 @@ export class ConversationContentComponent implements OnInit {
|
|
|
17
17
|
@Input() messages: MessageModel[]
|
|
18
18
|
@Input() senderId: string;
|
|
19
19
|
@Input() baseLocation: string;
|
|
20
|
+
@Input() isConversationArchived: boolean;
|
|
21
|
+
@Input() isTypings: boolean;
|
|
22
|
+
@Input() idUserTypingNow: string;
|
|
23
|
+
@Input() nameUserTypingNow: string;
|
|
24
|
+
@Input() typingLocation: string;
|
|
25
|
+
@Input() fullscreenMode: boolean;
|
|
20
26
|
@Input() translationMap: Map<string, string>;
|
|
21
27
|
@Input() stylesMap: Map<string, string>;
|
|
22
28
|
@Output() onBeforeMessageRender = new EventEmitter();
|
|
23
29
|
@Output() onAfterMessageRender = new EventEmitter();
|
|
24
|
-
@Output() onMenuOptionShow = new EventEmitter();
|
|
30
|
+
@Output() onMenuOptionShow = new EventEmitter<boolean>();
|
|
31
|
+
@Output() onEmojiiPickerShow = new EventEmitter<boolean>()
|
|
25
32
|
@Output() onAttachmentButtonClicked = new EventEmitter();
|
|
26
33
|
@Output() onScrollContent = new EventEmitter();
|
|
27
34
|
|