@chat21/chat21-ionic 3.0.76-rc.2 → 3.0.76-rc.4
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/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/custom.md +10 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/src/app/app.component.html +2 -0
- package/src/app/components/canned-response/canned-response.component.html +15 -8
- package/src/app/components/canned-response/canned-response.component.scss +83 -0
- package/src/app/components/canned-response/canned-response.component.ts +33 -11
- package/src/app/components/image-viewer/image-viewer.component.html +22 -16
- package/src/app/components/image-viewer/image-viewer.component.scss +40 -56
- package/src/app/components/network-offline/network-offline.component.html +5 -0
- package/src/app/components/network-offline/network-offline.component.scss +30 -0
- package/src/app/components/network-offline/network-offline.component.spec.ts +24 -0
- package/src/app/components/network-offline/network-offline.component.ts +43 -0
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +22 -18
- package/src/app/pages/conversations-list/conversations-list.page.html +0 -23
- package/src/app/pages/conversations-list/conversations-list.page.ts +3 -21
- package/src/app/shared/shared.module.ts +4 -2
- package/src/assets/i18n/ar.json +2 -0
- package/src/assets/i18n/az.json +2 -0
- package/src/assets/i18n/de.json +2 -0
- package/src/assets/i18n/en.json +2 -0
- package/src/assets/i18n/es.json +2 -0
- package/src/assets/i18n/fr.json +2 -0
- package/src/assets/i18n/it.json +2 -0
- package/src/assets/i18n/kk.json +2 -0
- package/src/assets/i18n/pt.json +2 -0
- package/src/assets/i18n/ru.json +2 -0
- package/src/assets/i18n/sr.json +2 -0
- package/src/assets/i18n/sv.json +2 -0
- package/src/assets/i18n/tr.json +2 -0
- package/src/assets/i18n/uk.json +2 -0
- package/src/assets/i18n/uz.json +2 -0
- package/src/chat-config-mqtt-localhost.json +1 -1
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +2 -2
- package/src/global.scss +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Describe the bug**
|
|
11
|
+
A clear and concise description of what the bug is.
|
|
12
|
+
|
|
13
|
+
**To Reproduce**
|
|
14
|
+
Steps to reproduce the behavior:
|
|
15
|
+
1. Go to '...'
|
|
16
|
+
2. Click on '....'
|
|
17
|
+
3. Scroll down to '....'
|
|
18
|
+
4. See error
|
|
19
|
+
|
|
20
|
+
**Expected behavior**
|
|
21
|
+
A clear and concise description of what you expected to happen.
|
|
22
|
+
|
|
23
|
+
**Screenshots**
|
|
24
|
+
If applicable, add screenshots to help explain your problem.
|
|
25
|
+
|
|
26
|
+
**Desktop (please complete the following information):**
|
|
27
|
+
- OS: [e.g. iOS]
|
|
28
|
+
- Browser [e.g. chrome, safari]
|
|
29
|
+
- Version [e.g. 22]
|
|
30
|
+
|
|
31
|
+
**Smartphone (please complete the following information):**
|
|
32
|
+
- Device: [e.g. iPhone6]
|
|
33
|
+
- OS: [e.g. iOS8.1]
|
|
34
|
+
- Browser [e.g. stock browser, safari]
|
|
35
|
+
- Version [e.g. 22]
|
|
36
|
+
|
|
37
|
+
**Additional context**
|
|
38
|
+
Add any other context about the problem here.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Is your feature request related to a problem? Please describe.**
|
|
11
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
12
|
+
|
|
13
|
+
**Describe the solution you'd like**
|
|
14
|
+
A clear and concise description of what you want to happen.
|
|
15
|
+
|
|
16
|
+
**Describe alternatives you've considered**
|
|
17
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
18
|
+
|
|
19
|
+
**Additional context**
|
|
20
|
+
Add any other context or screenshots about the feature request here.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
# chat21-ionic ver 3.0
|
|
2
|
+
ù
|
|
3
|
+
### 3.0.76-rc.4
|
|
4
|
+
- bug-fixed: if canned component is opened and press twice the canned icon, canned-component not opens
|
|
5
|
+
- bug-fixed: bot images not resized
|
|
6
|
+
- added: caching of canned responses per project
|
|
7
|
+
- aded: loader in canned-component
|
|
8
|
+
|
|
9
|
+
### 3.0.76-rc.3
|
|
10
|
+
- bug-fixed: image-preview when agent click on image, don't fit the screen size
|
|
11
|
+
- added: network-connection component to manage no connections
|
|
12
|
+
- removed: no connection item in conversation-list page
|
|
2
13
|
|
|
3
14
|
### 3.0.76-rc.2
|
|
4
15
|
- added: canned component to manage canned responses
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<div
|
|
2
|
-
<
|
|
1
|
+
<div>
|
|
2
|
+
<div class="canned-list" *ngIf="tagsCannedFilter.length > 0">
|
|
3
3
|
<ion-item button="true" [ngClass]="{'is_active_item': i == arrowkeyLocation}" lines="none"
|
|
4
4
|
class="canned-item no-ripple border" id="{{'canned-item_'+ i }}"
|
|
5
5
|
*ngFor="let canned of tagsCannedFilter; let i = index;"
|
|
@@ -17,10 +17,17 @@
|
|
|
17
17
|
<span class="add-canned-response-add-icon">+</span>
|
|
18
18
|
<label class="add-canned-response-label" >{{translationMap?.get('AddNewCannedResponse')}}</label>
|
|
19
19
|
</ion-item>
|
|
20
|
-
</
|
|
21
|
-
<!--
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
</div>
|
|
21
|
+
<!-- -->
|
|
22
|
+
<div class="loader" *ngIf="tagsCannedFilter.length === 0">
|
|
23
|
+
<div class="box">
|
|
24
|
+
<div class="container">
|
|
25
|
+
<span class="circle"></span>
|
|
26
|
+
<span class="circle"></span>
|
|
27
|
+
<span class="circle"></span>
|
|
28
|
+
<span class="circle"></span>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="label">{{translationMap.get('LABEL_LOADING')}}</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
26
33
|
</div>
|
|
@@ -72,6 +72,24 @@
|
|
|
72
72
|
// list-style: none;
|
|
73
73
|
z-index: 999999;
|
|
74
74
|
|
|
75
|
+
&::-webkit-scrollbar {
|
|
76
|
+
width: 6px;
|
|
77
|
+
height: 8px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
&::-webkit-scrollbar-track {
|
|
81
|
+
background: #f9f9f9;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&::-webkit-scrollbar-thumb {
|
|
85
|
+
background-color: #b9b9b9;
|
|
86
|
+
border-radius: 0px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&::-webkit-scrollbar-thumb:hover {
|
|
90
|
+
background-color: #727272;
|
|
91
|
+
}
|
|
92
|
+
|
|
75
93
|
.cannedContent{
|
|
76
94
|
width: 100%;
|
|
77
95
|
}
|
|
@@ -138,4 +156,69 @@ ion-item {
|
|
|
138
156
|
.no-canned-available-text:hover {
|
|
139
157
|
text-decoration: underline;
|
|
140
158
|
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
.loader {
|
|
163
|
+
height: 310px;
|
|
164
|
+
|
|
165
|
+
.box{
|
|
166
|
+
top: 50%;
|
|
167
|
+
left: 50%;
|
|
168
|
+
transform: translate(-50%, -50%);
|
|
169
|
+
position: absolute;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.container{
|
|
173
|
+
height: 15px;
|
|
174
|
+
width: 105px;
|
|
175
|
+
display: flex;
|
|
176
|
+
position: relative;
|
|
177
|
+
|
|
178
|
+
.circle{
|
|
179
|
+
width: 15px;
|
|
180
|
+
height: 15px;
|
|
181
|
+
border-radius: 50%;
|
|
182
|
+
background-color: #1877f2;
|
|
183
|
+
animation: move 500ms linear 0ms infinite;
|
|
184
|
+
margin-right: 30px;
|
|
185
|
+
|
|
186
|
+
&:first-child{
|
|
187
|
+
position: absolute;
|
|
188
|
+
top:0;
|
|
189
|
+
left:0;
|
|
190
|
+
animation: grow 500ms linear 0ms infinite;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
&:last-child{
|
|
194
|
+
position: absolute;
|
|
195
|
+
top: 0;
|
|
196
|
+
right: 0;
|
|
197
|
+
margin-right: 0;
|
|
198
|
+
animation: grow 500ms linear 0s infinite reverse;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.label{
|
|
204
|
+
text-align: center;
|
|
205
|
+
margin-top: 10px;
|
|
206
|
+
animation: blinker 1s linear infinite;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@keyframes grow {
|
|
210
|
+
from {transform: scale(0,0); opacity: 0;}
|
|
211
|
+
to {transform: scale(1,1); opacity: 1;}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
@keyframes move {
|
|
215
|
+
from {transform: translateX(0px)}
|
|
216
|
+
to {transform: translateX(45px)}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
@keyframes blinker {
|
|
220
|
+
50% {
|
|
221
|
+
opacity: 0;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
141
224
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
1
2
|
import { Component, Input, OnInit, SimpleChange, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';
|
|
2
3
|
import { CreateCannedResponsePage } from 'src/app/pages/create-canned-response/create-canned-response.page';
|
|
3
4
|
import { CannedResponsesService } from 'src/app/services/canned-responses/canned-responses.service';
|
|
@@ -24,6 +25,7 @@ export class CannedResponseComponent implements OnInit {
|
|
|
24
25
|
@Output() onClickCanned = new EventEmitter<any>();
|
|
25
26
|
@Output() onClickAddCannedResponse = new EventEmitter();
|
|
26
27
|
public loggedUser: UserModel
|
|
28
|
+
public projectID: string;
|
|
27
29
|
|
|
28
30
|
public tagsCanned: any = []
|
|
29
31
|
public tagsCannedCount: number
|
|
@@ -36,6 +38,7 @@ export class CannedResponseComponent implements OnInit {
|
|
|
36
38
|
public tiledeskAuthService: TiledeskAuthService,
|
|
37
39
|
public tiledeskService: TiledeskService,
|
|
38
40
|
public cannedResponsesService: CannedResponsesService,
|
|
41
|
+
public appStorageService: AppStorageService,
|
|
39
42
|
public el: ElementRef
|
|
40
43
|
) { }
|
|
41
44
|
|
|
@@ -45,31 +48,49 @@ export class CannedResponseComponent implements OnInit {
|
|
|
45
48
|
|
|
46
49
|
ngOnChanges(changes: SimpleChange){
|
|
47
50
|
this.logger.debug('[CANNED] - loadTagsCanned strSearch ', this.currentString)
|
|
51
|
+
if(changes && changes['conversationWith'] && (changes['conversationWith'].previousValue !== changes['conversationWith'].currentValue)){
|
|
52
|
+
this.projectID = this.getProjectIdSelectedConversation(this.conversationWith)
|
|
53
|
+
this.loadStoredCanned(this.projectID)
|
|
54
|
+
}
|
|
48
55
|
if(this.currentString !== undefined){
|
|
49
56
|
this.loadTagsCanned(this.currentString, this.conversationWith)
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
// @ CANNED RESPONSES methods
|
|
55
|
-
// ----------------------------------------------------------
|
|
56
|
-
loadTagsCanned(strSearch, conversationWith) {
|
|
57
|
-
this.logger.log('[CANNED] - loadTagsCanned strSearch ', strSearch)
|
|
58
|
-
this.logger.log('[CANNED] - loadTagsCanned conversationWith ', conversationWith)
|
|
59
|
-
|
|
60
|
+
getProjectIdSelectedConversation(conversationWith: string): string{
|
|
60
61
|
const conversationWith_segments = conversationWith.split('-')
|
|
61
62
|
// Removes the last element of the array if is = to the separator
|
|
62
63
|
if (conversationWith_segments[conversationWith_segments.length - 1] === '') {
|
|
63
64
|
conversationWith_segments.pop()
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
this.logger.log('[CANNED] -
|
|
67
|
+
this.logger.log('[CANNED] - getProjectIdSelectedConversation conversationWith_segments ', conversationWith_segments)
|
|
67
68
|
let projectId = ''
|
|
68
|
-
|
|
69
69
|
if (conversationWith_segments.length === 4) {
|
|
70
70
|
projectId = conversationWith_segments[2]
|
|
71
|
-
this.logger.log('[CANNED] -
|
|
72
|
-
|
|
71
|
+
this.logger.log('[CANNED] - getProjectIdSelectedConversation projectId ', projectId)
|
|
72
|
+
}
|
|
73
|
+
return projectId
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
loadStoredCanned(projectId){
|
|
78
|
+
let storedCanned = this.appStorageService.getItem(projectId+'_canned')
|
|
79
|
+
if(storedCanned){
|
|
80
|
+
this.tagsCannedFilter = JSON.parse(storedCanned)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// ----------------------------------------------------------
|
|
85
|
+
// @ CANNED RESPONSES methods
|
|
86
|
+
// ----------------------------------------------------------
|
|
87
|
+
loadTagsCanned(strSearch, conversationWith) {
|
|
88
|
+
this.logger.log('[CANNED] - loadTagsCanned strSearch ', strSearch)
|
|
89
|
+
this.logger.log('[CANNED] - loadTagsCanned conversationWith ', conversationWith)
|
|
90
|
+
|
|
91
|
+
if (this.projectID) {
|
|
92
|
+
this.logger.log('[CANNED] - loadTagsCanned projectId ', this.projectID)
|
|
93
|
+
this.getAndShowCannedResponses(strSearch, this.projectID)
|
|
73
94
|
} else {
|
|
74
95
|
this.getProjectIdByConversationWith(strSearch, this.conversationWith)
|
|
75
96
|
}
|
|
@@ -165,6 +186,7 @@ export class CannedResponseComponent implements OnInit {
|
|
|
165
186
|
// }
|
|
166
187
|
this.tagsCannedFilter.push(nocanned)
|
|
167
188
|
}
|
|
189
|
+
this.appStorageService.setItem(this.projectID+'_canned', JSON.stringify(this.tagsCannedFilter))
|
|
168
190
|
this.onLoadedCannedResponses.emit(this.tagsCannedFilter)
|
|
169
191
|
}
|
|
170
192
|
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
<div id="image-viewer-modal" class="modal">
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
d="
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
<div class="modal-header">
|
|
4
|
+
<!-- The Close Button -->
|
|
5
|
+
<span class="button" (click)="closeImageViewerModal()">
|
|
6
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000">
|
|
7
|
+
<path d="M0 0h24v24H0z" fill="none" />
|
|
8
|
+
<path
|
|
9
|
+
d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" />
|
|
10
|
+
</svg>
|
|
11
|
+
</span>
|
|
12
|
+
<!-- The Download Button -->
|
|
13
|
+
<span class="button" (click)="downloadImage()">
|
|
14
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000">
|
|
15
|
+
<path d="M0 0h24v24H0z" fill="none" />
|
|
16
|
+
<path
|
|
17
|
+
d="M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z" />
|
|
18
|
+
</svg>
|
|
19
|
+
</span>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
18
22
|
<!-- Modal Content (The Image) [src]="metadata.src"-->
|
|
19
|
-
<
|
|
23
|
+
<div class="modal-content">
|
|
24
|
+
<img id="image-viewer-img">
|
|
25
|
+
</div>
|
|
20
26
|
|
|
21
27
|
<!-- Modal Caption (Image Text) -->
|
|
22
28
|
<div id="caption"></div>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
display: none; /* Hidden by default */
|
|
4
4
|
position: fixed; /* Stay in place */
|
|
5
5
|
z-index: 1050; /* Sit on top */
|
|
6
|
-
padding-top: 100px; /* Location of the box */
|
|
6
|
+
// padding-top: 100px; /* Location of the box */
|
|
7
7
|
left: 0;
|
|
8
8
|
top: 0;
|
|
9
9
|
width: 100%; /* Full width */
|
|
@@ -13,13 +13,48 @@
|
|
|
13
13
|
background-color: rgba(0,0,0,0.9); /* Black w/ opacity */
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
.modal-header{
|
|
17
|
+
display: flex;
|
|
18
|
+
justify-content: flex-start;
|
|
19
|
+
flex-direction: row-reverse;
|
|
20
|
+
margin: 20px;
|
|
21
|
+
|
|
22
|
+
/* The Close Button */
|
|
23
|
+
.button{
|
|
24
|
+
transition: 0.3s;
|
|
25
|
+
border-radius: 50px;
|
|
26
|
+
padding:7px 8.5px
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
svg {
|
|
30
|
+
background-color: transparent;
|
|
31
|
+
fill: rgba(255,255,255,.5);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.button:hover,
|
|
35
|
+
.button:focus {
|
|
36
|
+
// color: #bbb;
|
|
37
|
+
background-color: rgba(255,255,255,.3);
|
|
38
|
+
text-decoration: none;
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
svg {
|
|
41
|
+
fill: rgba(255,255,255, 1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|
|
16
46
|
/* Modal Content (Image) */
|
|
17
47
|
.modal-content {
|
|
18
48
|
margin: auto;
|
|
19
49
|
display: block;
|
|
20
|
-
// width: 80%;
|
|
21
|
-
// max-width: 700px;
|
|
22
50
|
padding: 0px 5px;
|
|
51
|
+
height: 82%;
|
|
52
|
+
|
|
53
|
+
img {
|
|
54
|
+
height: 100%;
|
|
55
|
+
width: 100%;
|
|
56
|
+
object-fit: scale-down;
|
|
57
|
+
}
|
|
23
58
|
}
|
|
24
59
|
|
|
25
60
|
/* Caption of Modal Image (Image Text) - Same Width as the Image */
|
|
@@ -31,7 +66,7 @@
|
|
|
31
66
|
text-align: center;
|
|
32
67
|
color: #ccc;
|
|
33
68
|
padding: 10px 0;
|
|
34
|
-
height: 150px;
|
|
69
|
+
// height: 150px;
|
|
35
70
|
}
|
|
36
71
|
|
|
37
72
|
/* Add Animation - Zoom in the Modal */
|
|
@@ -45,59 +80,8 @@
|
|
|
45
80
|
to {transform:scale(1)}
|
|
46
81
|
}
|
|
47
82
|
|
|
48
|
-
|
|
49
|
-
.close {
|
|
50
|
-
position: absolute;
|
|
51
|
-
top: 15px;
|
|
52
|
-
right: 35px;
|
|
53
|
-
// color: #f1f1f1;
|
|
54
|
-
// font-size: 40px;
|
|
55
|
-
// font-weight: bold;
|
|
56
|
-
transition: 0.3s;
|
|
57
|
-
border-radius: 50px;
|
|
58
|
-
padding:7px 8.5px
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.close svg {
|
|
62
|
-
background-color: transparent;
|
|
63
|
-
fill: rgba(255,255,255,.5);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.close:hover,
|
|
67
|
-
.close:focus {
|
|
68
|
-
// color: #bbb;
|
|
69
|
-
background-color: rgba(255,255,255,.3);
|
|
70
|
-
text-decoration: none;
|
|
71
|
-
cursor: pointer;
|
|
72
|
-
svg {
|
|
73
|
-
fill: rgba(255,255,255, 1);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.download-image {
|
|
78
|
-
position: absolute;
|
|
79
|
-
top: 15px;
|
|
80
|
-
right: 78px;
|
|
81
|
-
transition: 0.3s;
|
|
82
|
-
border-radius: 50px;
|
|
83
|
-
padding:7px 8.5px
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.download-image svg {
|
|
87
|
-
background-color: transparent;
|
|
88
|
-
fill: rgba(255,255,255,.5);
|
|
89
|
-
}
|
|
83
|
+
|
|
90
84
|
|
|
91
|
-
.download-image:hover,
|
|
92
|
-
.download-image:focus {
|
|
93
|
-
|
|
94
|
-
background-color: rgba(255,255,255,.3);
|
|
95
|
-
text-decoration: none;
|
|
96
|
-
cursor: pointer;
|
|
97
|
-
svg {
|
|
98
|
-
fill: rgba(255,255,255, 1);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
85
|
|
|
102
86
|
/* 100% Image Width on Smaller Screens */
|
|
103
87
|
@media only screen and (max-width: 700px){
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#alert-container{
|
|
2
|
+
// z-index: 1051;
|
|
3
|
+
// position: fixed;
|
|
4
|
+
position: relative;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
z-index: 1051;
|
|
8
|
+
min-width: 1200px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
.alert-content{
|
|
13
|
+
position: absolute;
|
|
14
|
+
color: rgb(8, 15, 26);
|
|
15
|
+
z-index: 999999;
|
|
16
|
+
top: 0px;
|
|
17
|
+
left: 50%;
|
|
18
|
+
background: rgb(255, 194, 97);
|
|
19
|
+
text-align: center;
|
|
20
|
+
transition: all 0.15s ease-in-out 0s;
|
|
21
|
+
font-size: 14px;
|
|
22
|
+
line-height: 18px;
|
|
23
|
+
// letter-spacing: -0.01em;
|
|
24
|
+
border-bottom-right-radius: 3px;
|
|
25
|
+
border-bottom-left-radius: 3px;
|
|
26
|
+
box-shadow: rgba(0, 27, 71, .24) 0px 1px 3px;
|
|
27
|
+
padding: 7px 20px;
|
|
28
|
+
transform: translate3d(-50%, 0px, 0px);
|
|
29
|
+
opacity: 1;
|
|
30
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
import { IonicModule } from '@ionic/angular';
|
|
3
|
+
|
|
4
|
+
import { NetworkOfflineComponent } from './network-offline.component';
|
|
5
|
+
|
|
6
|
+
describe('NetworkOfflineComponent', () => {
|
|
7
|
+
let component: NetworkOfflineComponent;
|
|
8
|
+
let fixture: ComponentFixture<NetworkOfflineComponent>;
|
|
9
|
+
|
|
10
|
+
beforeEach(async(() => {
|
|
11
|
+
TestBed.configureTestingModule({
|
|
12
|
+
declarations: [ NetworkOfflineComponent ],
|
|
13
|
+
imports: [IonicModule.forRoot()]
|
|
14
|
+
}).compileComponents();
|
|
15
|
+
|
|
16
|
+
fixture = TestBed.createComponent(NetworkOfflineComponent);
|
|
17
|
+
component = fixture.componentInstance;
|
|
18
|
+
fixture.detectChanges();
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
it('should create', () => {
|
|
22
|
+
expect(component).toBeTruthy();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LoggerInstance } from './../../../chat21-core/providers/logger/loggerInstance';
|
|
2
|
+
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
3
|
+
import { NetworkService } from './../../services/network-service/network.service';
|
|
4
|
+
import { Component, OnInit } from '@angular/core';
|
|
5
|
+
import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
|
|
6
|
+
|
|
7
|
+
@Component({
|
|
8
|
+
selector: 'app-network-offline',
|
|
9
|
+
templateUrl: './network-offline.component.html',
|
|
10
|
+
styleUrls: ['./network-offline.component.scss'],
|
|
11
|
+
})
|
|
12
|
+
export class NetworkOfflineComponent implements OnInit {
|
|
13
|
+
|
|
14
|
+
public isOnline: boolean = true;
|
|
15
|
+
public translationsMap: Map<string, string>;
|
|
16
|
+
|
|
17
|
+
private logger: LoggerService = LoggerInstance.getInstance();
|
|
18
|
+
|
|
19
|
+
constructor(
|
|
20
|
+
private networkService: NetworkService,
|
|
21
|
+
public translateService: CustomTranslateService,
|
|
22
|
+
) { }
|
|
23
|
+
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
|
|
26
|
+
this.watchToConnectionStatus();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
watchToConnectionStatus(){
|
|
30
|
+
this.networkService.checkInternetFunc().subscribe((isOnline) => {
|
|
31
|
+
// this.checkInternet = isOnline
|
|
32
|
+
this.setTranlastions();
|
|
33
|
+
this.logger.log('[NETWORK_CONN-COMP] - watchToConnectionStatus - isOnline', isOnline)
|
|
34
|
+
this.isOnline = isOnline
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
setTranlastions(){
|
|
39
|
+
let keys= ['ALERT_NO_CONNECTION']
|
|
40
|
+
this.translationsMap =this.translateService.translateLanguage(keys)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
}
|
|
@@ -235,7 +235,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
235
235
|
// @ Lifehooks
|
|
236
236
|
// -----------------------------------------------------------
|
|
237
237
|
ngOnInit() {
|
|
238
|
-
|
|
238
|
+
this.logger.log('[CONVS-DETAIL] > ngOnInit - window.location: ', window.location);
|
|
239
239
|
// this.logger.log('[CONVS-DETAIL] > ngOnInit - fileUploadAccept: ', this.appConfigProvider.getConfig().fileUploadAccept);
|
|
240
240
|
// const accept_files = this.appConfigProvider.getConfig().fileUploadAccept;
|
|
241
241
|
// this.logger.log('[CONVS-DETAIL] > ngOnInit - fileUploadAccept typeof accept_files ', typeof accept_files);
|
|
@@ -256,6 +256,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
256
256
|
this.getOSCODE();
|
|
257
257
|
this.getStoredProjectAndUserRole();
|
|
258
258
|
this.listenToDsbrdPostMsgs();
|
|
259
|
+
|
|
259
260
|
}
|
|
260
261
|
|
|
261
262
|
listenToDsbrdPostMsgs() {
|
|
@@ -613,14 +614,12 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
613
614
|
'YES_CANNED_RESPONSES',
|
|
614
615
|
'THERE_ARE_NO_CANNED_RESPONSES_AVAILABLE',
|
|
615
616
|
'TO_CREATE_THEM_GO_TO_THE_PROJECT',
|
|
616
|
-
"AddNewCannedResponse"
|
|
617
|
+
"AddNewCannedResponse",
|
|
618
|
+
"LABEL_LOADING"
|
|
617
619
|
]
|
|
618
620
|
|
|
619
621
|
this.translationMap = this.customTranslateService.translateLanguage(keys)
|
|
620
|
-
this.logger.log(
|
|
621
|
-
'[CONVS-DETAIL] x this.translationMap ',
|
|
622
|
-
this.translationMap,
|
|
623
|
-
)
|
|
622
|
+
this.logger.log('[CONVS-DETAIL] x this.translationMap ',this.translationMap)
|
|
624
623
|
}
|
|
625
624
|
|
|
626
625
|
// --------------------------------------------------------
|
|
@@ -637,6 +636,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
637
636
|
'INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU',
|
|
638
637
|
'INFO_SUPPORT_LEAD_UPDATED',
|
|
639
638
|
'INFO_SUPPORT_MEMBER_LEFT_GROUP',
|
|
639
|
+
'INFO_SUPPORT_MEMBER_ABANDONED_GROUP',
|
|
640
640
|
'LABEL_TODAY',
|
|
641
641
|
'LABEL_TOMORROW',
|
|
642
642
|
'LABEL_LAST_ACCESS',
|
|
@@ -1304,19 +1304,23 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1304
1304
|
|
|
1305
1305
|
onClickOpenCannedResponses($event) {
|
|
1306
1306
|
this.logger.log('[CONVS-DETAIL] - onClickOpenCannedResponses ', $event)
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
if
|
|
1315
|
-
this.
|
|
1307
|
+
this.HIDE_CANNED_RESPONSES = !this.HIDE_CANNED_RESPONSES
|
|
1308
|
+
|
|
1309
|
+
//HIDE_CANNED_RESPONSES: true --> not show CANNED component
|
|
1310
|
+
//HIDE_CANNED_RESPONSES: false --> show CANNED component and place '/' char in textarea
|
|
1311
|
+
if(!this.HIDE_CANNED_RESPONSES){
|
|
1312
|
+
const elTextArea = this.rowTextArea['el']
|
|
1313
|
+
const textArea = elTextArea.getElementsByTagName('ion-textarea')[0]
|
|
1314
|
+
if($event && elTextArea){
|
|
1315
|
+
this.logger.log('[CONVS-DETAIL] onClickOpenCannedResponses textArea ', textArea)
|
|
1316
|
+
// console.log("[CONVS-DETAIL] onClickOpenCannedResponses textArea value", textArea.value)
|
|
1317
|
+
var lastChar = textArea.value[textArea.value.length - 1]
|
|
1318
|
+
// console.log('[CONVS-DETAIL] onClickOpenCannedResponses lastChar', lastChar)
|
|
1319
|
+
if (lastChar !== '/') {
|
|
1320
|
+
this.insertAtCursor(textArea, '/')
|
|
1321
|
+
}
|
|
1322
|
+
this.setCaretPosition(textArea)
|
|
1316
1323
|
}
|
|
1317
|
-
this.setCaretPosition(textArea)
|
|
1318
|
-
}else{
|
|
1319
|
-
this.HIDE_CANNED_RESPONSES = true
|
|
1320
1324
|
}
|
|
1321
1325
|
}
|
|
1322
1326
|
|
|
@@ -21,29 +21,6 @@
|
|
|
21
21
|
<div id="scrollbar2">
|
|
22
22
|
<ion-list>
|
|
23
23
|
|
|
24
|
-
<!-- -------------------------------------------------------------------------- -->
|
|
25
|
-
<!-- New <ion-spinner class="spinner-middle" style="margin-left: 19px;"></ion-spinner> -->
|
|
26
|
-
<!-- -------------------------------------------------------------------------- -->
|
|
27
|
-
<ion-item *ngIf="isOnline === false" style="padding-left:0px!important ;padding-right:0px!important" button="true" lines="none" class="ion-no-padding waiting-for-connection">
|
|
28
|
-
<div tabindex="0"></div>
|
|
29
|
-
<ion-avatar item-start>
|
|
30
|
-
<div class="sk-fading-circle">
|
|
31
|
-
<div class="sk-circle1 sk-circle"></div>
|
|
32
|
-
<div class="sk-circle2 sk-circle"></div>
|
|
33
|
-
<div class="sk-circle3 sk-circle"></div>
|
|
34
|
-
<div class="sk-circle4 sk-circle"></div>
|
|
35
|
-
<div class="sk-circle5 sk-circle"></div>
|
|
36
|
-
<div class="sk-circle6 sk-circle"></div>
|
|
37
|
-
<div class="sk-circle7 sk-circle"></div>
|
|
38
|
-
<div class="sk-circle8 sk-circle"></div>
|
|
39
|
-
<div class="sk-circle9 sk-circle"></div>
|
|
40
|
-
<div class="sk-circle10 sk-circle"></div>
|
|
41
|
-
<div class="sk-circle11 sk-circle"></div>
|
|
42
|
-
<div class="sk-circle12 sk-circle"></div>
|
|
43
|
-
</div>
|
|
44
|
-
</ion-avatar>
|
|
45
|
-
<ion-label part="message-text" class="waiting-for-network-msg"> Waiting for network</ion-label>
|
|
46
|
-
</ion-item>
|
|
47
24
|
<!-- supportMode && -->
|
|
48
25
|
<ion-item *ngIf="displayNewConvsItem && conversationType !=='archived' && supportMode" class="ion-no-padding open-iframe-item">
|
|
49
26
|
<div tabindex="0"></div>
|
|
@@ -88,9 +88,6 @@ export class ConversationListPage implements OnInit {
|
|
|
88
88
|
public IFRAME_URL: any
|
|
89
89
|
public hasClickedOpenUnservedConvIframe: boolean = false
|
|
90
90
|
public lastProjectId: string
|
|
91
|
-
public isOnline: boolean = true
|
|
92
|
-
public checkInternet: boolean
|
|
93
|
-
|
|
94
91
|
public displayNewConvsItem: boolean = true
|
|
95
92
|
public archiveActionNotAllowed: boolean = false
|
|
96
93
|
|
|
@@ -172,7 +169,6 @@ export class ConversationListPage implements OnInit {
|
|
|
172
169
|
// @ Lifehooks
|
|
173
170
|
// -----------------------------------------------
|
|
174
171
|
ngOnInit() {
|
|
175
|
-
this.watchToConnectionStatus()
|
|
176
172
|
this.getAppConfigToHideDiplayBtns()
|
|
177
173
|
|
|
178
174
|
}
|
|
@@ -219,20 +215,6 @@ export class ConversationListPage implements OnInit {
|
|
|
219
215
|
|
|
220
216
|
}
|
|
221
217
|
|
|
222
|
-
watchToConnectionStatus() {
|
|
223
|
-
this.networkService.checkInternetFunc().subscribe((isOnline) => {
|
|
224
|
-
this.checkInternet = isOnline
|
|
225
|
-
this.logger.log('[ION-LIST-CONVS-COMP] - watchToConnectionStatus - isOnline', this.checkInternet)
|
|
226
|
-
|
|
227
|
-
// checking internet connection
|
|
228
|
-
if (this.checkInternet == true) {
|
|
229
|
-
this.isOnline = true
|
|
230
|
-
} else {
|
|
231
|
-
this.isOnline = false
|
|
232
|
-
}
|
|
233
|
-
})
|
|
234
|
-
}
|
|
235
|
-
|
|
236
218
|
ionViewWillEnter() {
|
|
237
219
|
this.logger.log('Called ionViewDidEnter')
|
|
238
220
|
this.logger.log('[CONVS-LIST-PAGE] ionViewWillEnter uidConvSelected',this.uidConvSelected )
|
|
@@ -771,9 +753,9 @@ export class ConversationListPage implements OnInit {
|
|
|
771
753
|
}
|
|
772
754
|
}
|
|
773
755
|
|
|
774
|
-
if(conversation.conversation_with_fullname === 'Guest '){
|
|
775
|
-
|
|
776
|
-
}
|
|
756
|
+
// if(conversation.conversation_with_fullname === 'Guest '){
|
|
757
|
+
// conversation.conversation_with_fullname = 'guest' + '#' + this.getUUidConversation(conversation.uid)
|
|
758
|
+
// }
|
|
777
759
|
|
|
778
760
|
}
|
|
779
761
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NetworkOfflineComponent } from './../components/network-offline/network-offline.component';
|
|
1
2
|
import { ContactsDirectoryComponent } from './../components/contacts-directory/contacts-directory.component';
|
|
2
3
|
import { HtmlComponent } from './../chatlib/conversation-detail/message/html/html.component';
|
|
3
4
|
import { BubbleOthersMessageComponent } from './../components/conversation-detail/bubble-others-message/bubble-others-message.component';
|
|
@@ -93,6 +94,7 @@ import { SafeHtmlPipe } from '../directives/safe-html.pipe';
|
|
|
93
94
|
HtmlEntitiesEncodePipe,
|
|
94
95
|
SafeHtmlPipe,
|
|
95
96
|
OptionHeaderComponent,
|
|
97
|
+
NetworkOfflineComponent
|
|
96
98
|
],
|
|
97
99
|
exports: [
|
|
98
100
|
// MessageTextAreaComponent,
|
|
@@ -127,8 +129,8 @@ import { SafeHtmlPipe } from '../directives/safe-html.pipe';
|
|
|
127
129
|
InfoSupportGroupComponent,
|
|
128
130
|
InfoDirectComponent,
|
|
129
131
|
InfoGroupComponent,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
OptionHeaderComponent,
|
|
133
|
+
NetworkOfflineComponent
|
|
132
134
|
|
|
133
135
|
],
|
|
134
136
|
imports: [
|
package/src/assets/i18n/ar.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "الدردشة مغلقة",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"تحديث الرصاص",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"تمت إزالته من المجموعة",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"أنطونيو ترك المحادثة",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "تم تعيين طلب دعم جديد لك",
|
|
71
72
|
"LABEL_PROFILE": "الملف الشخصي",
|
|
72
73
|
"LABEL_CLOSE": "مغلق",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "مغلق",
|
|
99
100
|
"LABEL_INFO": "معلومات",
|
|
100
101
|
"ALERT_NOTIFICATION": "تحذير: إرسال الإخطارات معطل ، يغير إعدادات المتصفح للسماح بإرسال الإشعارات.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"اعتذارنا. حدثت مشكلة في الاتصال بالشبكة",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "معرف خارجي",
|
|
102
104
|
"LABEL_IAT": "إيات",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "طلب التفاصيل",
|
package/src/assets/i18n/az.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Çat bağlandı",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Rəqəm yeniləndi",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"qrupdan çıxarıldı",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"söhbəti tərk etdi",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Sizə yeni dəstək sorğusu təyin edilib",
|
|
71
72
|
"LABEL_PROFILE": "Profil",
|
|
72
73
|
"LABEL_CLOSE": "Bağlı",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Bağlı",
|
|
99
100
|
"LABEL_INFO": "Məlumatlar",
|
|
100
101
|
"ALERT_NOTIFICATION": "Xəbərdarlıq: bildirişlərin göndərilməsi deaktiv edilib, bildirişlərin göndərilməsinə icazə vermək üçün brauzer parametrlərini dəyişir.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Üzr istəyirik. Şəbəkəyə qoşulma zamanı problem yarandı",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Xarici İd",
|
|
102
104
|
"LABEL_IAT": "İt",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Təfərrüat tələb edin",
|
package/src/assets/i18n/de.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat geschlossen",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Leitung aktualisiert",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"aus der Gruppe entfernt",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"verließ das Gespräch",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Ihnen wurde eine neue Support-Anfrage zugewiesen",
|
|
71
72
|
"LABEL_PROFILE": "Profil",
|
|
72
73
|
"LABEL_CLOSE": "Abgeschlossen",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Abgeschlossen",
|
|
99
100
|
"LABEL_INFO": "Informationen",
|
|
100
101
|
"ALERT_NOTIFICATION": "Warnung: Das Senden von Benachrichtigungen ist deaktiviert, ändert die Browsereinstellungen, um das Senden von Benachrichtigungen zuzulassen.",
|
|
102
|
+
"ALERT_NO_CONNECTION": "Wir entschuldigen uns. Beim Verbinden mit dem Netzwerk ist ein Problem aufgetreten",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Externe ID",
|
|
102
104
|
"LABEL_IAT": "Iat",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Einzelheiten anfordern",
|
package/src/assets/i18n/en.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat closed",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Lead updated",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"removed from group",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"has left the conversations",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "A new support request has been assigned to you",
|
|
71
72
|
"LABEL_PROFILE": "Profile",
|
|
72
73
|
"LABEL_CLOSE": "Closed",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Closed",
|
|
99
100
|
"LABEL_INFO": "Informations",
|
|
100
101
|
"ALERT_NOTIFICATION": "Warning: sending notifications is disabled, changes the browser settings to allow sending notifications.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Our apologies. There was some trouble connecting to network",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "External Id",
|
|
102
104
|
"LABEL_IAT": "Iat",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Request detail",
|
package/src/assets/i18n/es.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat cerrado",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Cliente potencial actualizado",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"eliminado del grupo",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"abandonó la conversación",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU":"Se le ha asignado una nueva solicitud de soporte",
|
|
71
72
|
"LABEL_PROFILE": "Perfil",
|
|
72
73
|
"LABEL_CLOSE": "Cerrado",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Cerrado",
|
|
99
100
|
"LABEL_INFO": "Informaciones",
|
|
100
101
|
"ALERT_NOTIFICATION": "Advertencia: el envío de notificaciones está desactivado, cambia la configuración del navegador para permitir el envío de notificaciones.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Nuestras disculpas. Hubo algunos problemas para conectarse a la red",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Id Externo",
|
|
102
104
|
"LABEL_IAT": "Iat",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Detalle de la solicitud",
|
package/src/assets/i18n/fr.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat fermé",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Prospect mis à jour",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"supprimé du groupe",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"a quitté la conversation",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Une nouvelle demande de support vous a été attribuée",
|
|
71
72
|
"LABEL_PROFILE": "Profil",
|
|
72
73
|
"LABEL_CLOSE": "Fermé",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Fermé",
|
|
99
100
|
"LABEL_INFO": "Informations",
|
|
100
101
|
"ALERT_NOTIFICATION": "Attention : l'envoi de notifications est désactivé, modifie les paramètres du navigateur pour autoriser l'envoi de notifications.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Nos excuses. Il y a eu des problèmes de connexion au réseau",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Identifiant externe",
|
|
102
104
|
"LABEL_IAT": "C'est",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Détail de la demande",
|
package/src/assets/i18n/it.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat chiusa",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Contatto aggiornato",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"rimosso dal gruppo",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP": "ha abbandonato la conversazione",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU":"Una nuova richiesta di supporto è stata assegnata a te",
|
|
71
72
|
"LABEL_PROFILE": "Profilo",
|
|
72
73
|
"LABEL_CLOSE": "Chiusa",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Chiuse",
|
|
99
100
|
"LABEL_INFO": "Informazioni",
|
|
100
101
|
"ALERT_NOTIFICATION": "Attenzione: l'invio di notifiche è disabilitato, modifica le impostazioni del browser per consentire l'invio di notifiche.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Ci scusiamo. Si sono verificati problemi di connessione alla rete",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "External Id",
|
|
102
104
|
"LABEL_IAT": "Iat",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Dettaglio richiesta",
|
package/src/assets/i18n/kk.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Чат жабылды",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Жетекші жаңартылды",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"топтан шығарылды",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"әңгімені тастап кетті",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Сізге жаңа қолдау сұрауы тағайындалды",
|
|
71
72
|
"LABEL_PROFILE": "Профиль",
|
|
72
73
|
"LABEL_CLOSE": "Жабық",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Жабық",
|
|
99
100
|
"LABEL_INFO": "Ақпарат",
|
|
100
101
|
"ALERT_NOTIFICATION": "Ескерту: хабарландыруларды жіберу өшірілген, хабарландыруларды жіберуге рұқсат беру үшін шолғыш параметрлерін өзгертеді.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Кешірім сұраймыз. Желіге қосылуда ақау пайда болды",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Сыртқы идентификатор",
|
|
102
104
|
"LABEL_IAT": "Кеш",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Мәліметтерді сұрау",
|
package/src/assets/i18n/pt.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Bate-papo fechado",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Lead atualizado",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"removido do grupo",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"saiu da conversa",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Uma nova solicitação de suporte foi atribuída a você",
|
|
71
72
|
"LABEL_PROFILE": "Perfil",
|
|
72
73
|
"LABEL_CLOSE": "Fechadas",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Fechadas",
|
|
99
100
|
"LABEL_INFO": "Informações",
|
|
100
101
|
"ALERT_NOTIFICATION": "Atenção: o envio de notificações está desabilitado, altera as configurações do navegador para permitir o envio de notificações.",
|
|
102
|
+
"ALERT_NO_CONNECTION": "Nossas desculpas. Ocorreu um problema de conexão à rede",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "ID externo",
|
|
102
104
|
"LABEL_IAT": "Iat",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Detalhes da solicitação",
|
package/src/assets/i18n/ru.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Чат закрыт",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Интерес обновлен",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"удален из группы",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"вышел из беседы",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Вам назначен новый запрос в службу поддержки",
|
|
71
72
|
"LABEL_PROFILE": "Профиль",
|
|
72
73
|
"LABEL_CLOSE": "Закрыто",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Закрыто",
|
|
99
100
|
"LABEL_INFO": "Информация",
|
|
100
101
|
"ALERT_NOTIFICATION": "Внимание: отправка уведомлений отключена, измените настройки браузера, чтобы разрешить отправку уведомлений.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Наши извинения. Возникли проблемы с подключением к сети",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Внешний идентификатор",
|
|
102
104
|
"LABEL_IAT": "Иат",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Подробности запроса",
|
package/src/assets/i18n/sr.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Ћаскање је затворено",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Лид је ажуриран",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"уклоњен из групе",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"је напустио разговор",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Додељен вам је нови захтев за подршку",
|
|
71
72
|
"LABEL_PROFILE": "Профил",
|
|
72
73
|
"LABEL_CLOSE": "Затворено",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Затворено",
|
|
99
100
|
"LABEL_INFO": "Информације",
|
|
100
101
|
"ALERT_NOTIFICATION": "Упозорење: слање обавештења је онемогућено, мења подешавања претраживача да би се омогућило слање обавештења.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Наше извињење. Дошло је до проблема при повезивању на мрежу",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Спољашњи Ид",
|
|
102
104
|
"LABEL_IAT": "Иат",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Захтевајте детаље",
|
package/src/assets/i18n/sv.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Chatten stängd",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Lead uppdaterad",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"borttagen från gruppen",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"lämnade samtalet",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "En ny supportförfrågan har tilldelats dig",
|
|
71
72
|
"LABEL_PROFILE": "Profil",
|
|
72
73
|
"LABEL_CLOSE": "Stängd",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Stängd",
|
|
99
100
|
"LABEL_INFO": "Information",
|
|
100
101
|
"ALERT_NOTIFICATION": "Varning: att skicka aviseringar är inaktiverat, ändrar webbläsarinställningarna för att tillåta att skicka aviseringar.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Våra ursäkter. Det uppstod några problem med att ansluta till nätverket",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Externt ID",
|
|
102
104
|
"LABEL_IAT": "Jag på",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Begär detalj",
|
package/src/assets/i18n/tr.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "sohbet kapatıldı",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Potansiyel müşteri güncellendi",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"gruptan kaldırıldı",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"konuşmayı bıraktı",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Size yeni bir destek talebi atandı",
|
|
71
72
|
"LABEL_PROFILE": "Profil",
|
|
72
73
|
"LABEL_CLOSE": "Kapalı",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "Kapalı",
|
|
99
100
|
"LABEL_INFO": "Bilgiler",
|
|
100
101
|
"ALERT_NOTIFICATION": "Uyarı: bildirim gönderme devre dışıdır, tarayıcı ayarlarını bildirim göndermeye izin verecek şekilde değiştirir.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Özür dileriz. Ağa bağlanırken bazı sorunlar oluştu",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Harici Kimlik",
|
|
102
104
|
"LABEL_IAT": "Bende",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Detay iste",
|
package/src/assets/i18n/uk.json
CHANGED
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"INFO_SUPPORT_CHAT_CLOSED": "Чат закритий",
|
|
68
68
|
"INFO_SUPPORT_LEAD_UPDATED":"Лід оновлено",
|
|
69
69
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"видалено з групи",
|
|
70
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"залишив розмову",
|
|
70
71
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Вам призначено новий запит на підтримку",
|
|
71
72
|
"LABEL_PROFILE": "Профіль",
|
|
72
73
|
"LABEL_CLOSE": "зачинено",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"LABEL_CLOSED": "зачинено",
|
|
99
100
|
"LABEL_INFO": "Інформація",
|
|
100
101
|
"ALERT_NOTIFICATION": "Попередження: надсилання сповіщень вимкнено, змінює налаштування браузера, щоб дозволити надсилання сповіщень.",
|
|
102
|
+
"ALERT_NO_CONNECTION":"Наші вибачення. Виникли проблеми з підключенням до мережі",
|
|
101
103
|
"LABEL_EXTERNAL_ID": "Зовнішній ідентифікатор",
|
|
102
104
|
"LABEL_IAT": "Iat",
|
|
103
105
|
"LABEL_REQUEST_DETAIL": "Деталі запиту",
|
package/src/assets/i18n/uz.json
CHANGED
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat yopildi",
|
|
69
69
|
"INFO_SUPPORT_LEAD_UPDATED":"Etakchi yangilandi",
|
|
70
70
|
"INFO_SUPPORT_MEMBER_LEFT_GROUP":"guruhdan olib tashlandi",
|
|
71
|
+
"INFO_SUPPORT_MEMBER_ABANDONED_GROUP":"suhbatni tark etdi",
|
|
71
72
|
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Sizga yangi qoʻllab-quvvatlash soʻrovi tayinlandi",
|
|
72
73
|
"LABEL_PROFILE": "Profil",
|
|
73
74
|
"LABEL_CLOSE": "Yopiq",
|
|
@@ -99,6 +100,7 @@
|
|
|
99
100
|
"LABEL_CLOSED": "Yopiq",
|
|
100
101
|
"LABEL_INFO": "Ma'lumotlar",
|
|
101
102
|
"ALERT_NOTIFICATION": "Ogohlantirish: bildirishnomalarni yuborish o'chirilgan, bildirishnomalarni yuborishga ruxsat berish uchun brauzer sozlamalarini o'zgartiradi.",
|
|
103
|
+
"ALERT_NO_CONNECTION":"Uzr so'raymiz. Tarmoqqa ulanishda muammo yuz berdi",
|
|
102
104
|
"LABEL_EXTERNAL_ID": "Tashqi identifikator",
|
|
103
105
|
"LABEL_IAT": "Kech",
|
|
104
106
|
"LABEL_REQUEST_DETAIL": "Tafsilotlarni so'rash",
|
|
@@ -617,12 +617,12 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
617
617
|
let old_conv = this.conversations.find(conv => conv.uid === conversation.uid)
|
|
618
618
|
let conversation_with_fullname = conversation.recipient_fullname
|
|
619
619
|
if(old_conv){
|
|
620
|
-
if(conversation.recipient_fullname !== old_conv.recipient_fullname && (conversation.recipient_fullname
|
|
620
|
+
if(conversation.recipient_fullname !== old_conv.recipient_fullname && (conversation.recipient_fullname.indexOf('guest') === -1)){
|
|
621
621
|
conversation_with_fullname = conversation.recipient_fullname
|
|
622
622
|
} else {
|
|
623
623
|
// conversation_with_fullname= old_conv.recipient_fullname
|
|
624
624
|
conversation_with_fullname= old_conv.conversation_with_fullname
|
|
625
|
-
|
|
625
|
+
}
|
|
626
626
|
}
|
|
627
627
|
return conversation_with_fullname
|
|
628
628
|
}
|