@chat21/chat21-ionic 3.0.67 → 3.0.68
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 +14 -0
- package/deploy_amazon_prod.sh +4 -0
- package/package.json +1 -1
- package/src/app/app.component.ts +35 -17
- package/src/app/app.module.ts +4 -4
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +8 -0
- package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.ts +0 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +1 -3
- package/src/app/components/conversation-info/info-content/info-content.component.ts +22 -25
- package/src/app/components/project-item/project-item.component.ts +28 -50
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +47 -78
- package/src/app/pages/conversations-list/conversations-list.page.ts +23 -30
- package/src/app/pages/create-canned-response/create-canned-response.page.ts +22 -29
- package/src/app/services/websocket/websocket.service.ts +1 -1
- package/src/assets/i18n/ar.json +1 -1
- package/src/assets/i18n/az.json +266 -0
- package/src/assets/i18n/de.json +1 -1
- package/src/assets/i18n/en.json +1 -1
- package/src/assets/i18n/es.json +1 -1
- package/src/assets/i18n/fr.json +1 -1
- package/src/assets/i18n/it.json +1 -1
- package/src/assets/i18n/kk.json +266 -0
- package/src/assets/i18n/pt.json +1 -1
- package/src/assets/i18n/ru.json +1 -1
- package/src/assets/i18n/sr.json +1 -1
- package/src/assets/i18n/sv.json +266 -0
- package/src/assets/i18n/tr.json +1 -1
- package/src/assets/i18n/uk.json +1 -1
- package/src/assets/i18n/uz.json +267 -0
- package/src/assets/images/language_flag/az.png +0 -0
- package/src/assets/images/language_flag/kk.png +0 -0
- package/src/assets/images/language_flag/{sv-SE.png → sv.png} +0 -0
- package/src/assets/images/language_flag/uz.png +0 -0
- package/src/chat-config-mqtt-localhost.json +10 -3
- package/src/chat-config-pre.json +2 -1
- package/src/chat21-core/providers/abstract/conversations-handler.service.ts +2 -0
- package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +0 -2
- package/src/chat21-core/providers/firebase/firebase-auth-service.ts +0 -5
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +45 -5
- package/src/chat21-core/providers/firebase/firebase-image-repo.ts +2 -1
- package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +71 -268
- package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +23 -26
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +3 -24
- package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +14 -47
- package/src/chat21-core/providers/mqtt/mqtt-groups-handler.ts +6 -10
- package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +88 -93
- package/src/chat21-core/providers/native/native-image-repo.ts +9 -2
- package/src/chat21-core/providers/native/native-upload-service.ts +1 -2
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -1
- package/src/chat21-core/utils/constants.ts +1 -1
- package/src/chat21-core/utils/utils-message.ts +1 -1
- package/deploy_pre.sh +0 -44
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
|
|
2
|
+
{
|
|
3
|
+
"LABEL_TU": "siz: ",
|
|
4
|
+
"LABEL_MSG_PUSH_START_CHAT": "Hali suhbat yo'q",
|
|
5
|
+
"LABEL_MSG_START_CHAT": "Suhbatni boshlang",
|
|
6
|
+
"LABEL_ACTIVE_NOW": "mavjud",
|
|
7
|
+
"LABEL_AVAILABLE": "mavjud",
|
|
8
|
+
"LABEL_NOT_AVAILABLE": "mavjud emas",
|
|
9
|
+
"LABEL_NO_MSG_HERE": "Bu yerda hali xabar yo'q...",
|
|
10
|
+
"LABEL_TODAY": "Bugun",
|
|
11
|
+
"LABEL_TOMORROW": "kecha",
|
|
12
|
+
"LABEL_LAST_ACCESS": "oxirgi kirish",
|
|
13
|
+
"LABEL_TO": "da",
|
|
14
|
+
"ARRAY_DAYS": [
|
|
15
|
+
"dushanba",
|
|
16
|
+
"seshanba",
|
|
17
|
+
"chorshanba",
|
|
18
|
+
"Payshanba",
|
|
19
|
+
"Juma",
|
|
20
|
+
"shanba",
|
|
21
|
+
"yakshanba"
|
|
22
|
+
],
|
|
23
|
+
"LABEL_SEND": "Yuborish",
|
|
24
|
+
"ID_CONVERSATION": "Id suhbati",
|
|
25
|
+
"LABEL_CREATED_THE": "kuni yaratilgan guruh",
|
|
26
|
+
"LABEL_INFO_ATTRIBUTE": "Atributlar",
|
|
27
|
+
"LABEL_INFO_ADVANCED": "Murakkab",
|
|
28
|
+
"LABEL_CLIENT": "Mijoz ",
|
|
29
|
+
"LABEL_SOURCEPAGE": "Manba ",
|
|
30
|
+
"LABEL_DEPARTMENT_ID": "Bo'lim identifikatori ",
|
|
31
|
+
"LABEL_DEPARTMENT_NAME": "Bo'lim ",
|
|
32
|
+
"requester_id": "So‘rovchi identifikatori",
|
|
33
|
+
"projectId": "Loyiha identifikatori ",
|
|
34
|
+
"LABEL_NAME": "Foydalanuvchi nomi ",
|
|
35
|
+
"LABEL_EMAIL": "Elektron pochta ",
|
|
36
|
+
"LABEL_MEMBERS": "Ishtirokchilar",
|
|
37
|
+
"LABEL_INFO_MESSAGE": "Ma'lumot xabari",
|
|
38
|
+
"LABEL_READ_BY": "O'qigan",
|
|
39
|
+
"LABEL_STATUS_MESSAGE": "davlat",
|
|
40
|
+
"LABEL_SENT_THE": "yuborilgan",
|
|
41
|
+
"LABEL_SENT_BY": "dan",
|
|
42
|
+
"LABEL_GUEST": "Mehmon",
|
|
43
|
+
"LABEL_CREATE_TICKET": "Chipta yarating",
|
|
44
|
+
"LABEL_SEND_BY_EMAIL": "Elektron pochta orqali yuboring",
|
|
45
|
+
"LABEL_VIDEO_CHAT": "Video qo'ng'iroq",
|
|
46
|
+
"LABEL_LEAVE_GROUP": "Guruhni tark eting",
|
|
47
|
+
"LABEL_CLOSE_GROUP": "Yopish",
|
|
48
|
+
"ALERT_TITLE": "Diqqat!",
|
|
49
|
+
"CLOSE_ALERT_CONFIRM_LABEL": "OK",
|
|
50
|
+
"CLOSE_ALERT_CANCEL_LABEL": "BEKOR",
|
|
51
|
+
"LEAVE_ALERT_MSG": "Guruhni tark etasizmi?",
|
|
52
|
+
"CLOSE_ALERT_MSG": "Suhbat yopilsinmi?",
|
|
53
|
+
"VIDEOCHAT_ALERT_MSG": "Xizmat ish faoliyatida emas",
|
|
54
|
+
"CLOSING_CONVERSATION_SPINNER_MSG": "Iltimos kuting.<br> Suhbatni yakunlaymiz",
|
|
55
|
+
"CONVERSATION_CLOSED_ALERT_MSG": "Suhbat muvaffaqiyatli yakunlandi.",
|
|
56
|
+
"CANNOT_CLOSE_CONVERSATION_ALERT_MSG": "Suhbatni yopish imkonsiz",
|
|
57
|
+
"LEAVING_GROUP_SPINNER_MSG": "Iltimos kuting.<br> Siz guruhni tark etyapsiz",
|
|
58
|
+
"CONVERSATION_LEFT_ALERT_MSG": "Guruh muvaffaqiyatli tark etildi.",
|
|
59
|
+
"CANNOT_LEAVE_GROUP_ALERT_MSG": "Guruhni tark etib bo'lmaydi",
|
|
60
|
+
"GREETING": "Salom, {{ value }}",
|
|
61
|
+
"ARCHIVED_CONVERSATIONS_PAGE_NO_CONVERSATIONS_ARCHIVED": "Arxivda hech qanday suhbat yo'q",
|
|
62
|
+
"INFO_SUPPORT_USER_ADDED_SUBJECT": "siz",
|
|
63
|
+
"INFO_SUPPORT_USER_ADDED_YOU_VERB": "ga qo'shilgan ",
|
|
64
|
+
"INFO_SUPPORT_USER_ADDED_VERB": "qo'shildi",
|
|
65
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT": "suhbat",
|
|
66
|
+
"INFO_SUPPORT_USER_ADDED_MESSAGE": "{{ subject }} {{ verb }} {{ complement }}",
|
|
67
|
+
"INFO_SUPPORT_CHAT_REOPENED": "Chat qayta ochildi",
|
|
68
|
+
"INFO_SUPPORT_CHAT_CLOSED": "Chat yopildi",
|
|
69
|
+
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "Sizga yangi qoʻllab-quvvatlash soʻrovi tayinlandi",
|
|
70
|
+
"LABEL_PROFILE": "Profil",
|
|
71
|
+
"LABEL_CLOSE": "Yopiq",
|
|
72
|
+
"LABEL_DISCONNECT": "Ulanishni uzing",
|
|
73
|
+
"LABEL_NEW_CHAT": "Yangi chat",
|
|
74
|
+
"LABEL_FORGOT_PASSWORD": "Parolingizni unutdingizmi?",
|
|
75
|
+
"LABEL_SIGNIN": "tizimga kirish",
|
|
76
|
+
"LABEL_SIGNIN_TO": "Kirish",
|
|
77
|
+
"LABEL_SIGNIN_ERROR": "Kirish xatosi",
|
|
78
|
+
"LABEL_PASSWORD": "Parol",
|
|
79
|
+
"LABEL_ERROR_EMAIL": "Yaroqli elektron pochta manzilini kiriting.",
|
|
80
|
+
"LABEL_ERROR_PASSWORD": "Parol kamida 6 ta belgidan iborat bo'lishi kerak.",
|
|
81
|
+
"LABEL_LOGIN": "Kirish",
|
|
82
|
+
"LABEL_LOGOUT": "Chiqish",
|
|
83
|
+
"LABEL_WELCOME_TO": "Ga Xush kelibsiz",
|
|
84
|
+
"LABEL_SIGNUP": "Ro'yxatdan o'tish",
|
|
85
|
+
"LABEL_ALREDY_HAVE_AN_ACCOUNT": "Hisobingiz bormi?",
|
|
86
|
+
"LABEL_DONT_HAVE_AN_ACCOUNT_YET": "Hali hisobingiz yo'qmi?",
|
|
87
|
+
"LABEL_FORGOT_YOUR_PASSWORD": "Parolni esdan chiqardingizmi?",
|
|
88
|
+
"LABEL_CLICK_HERE": "bu yerni bosing",
|
|
89
|
+
"LABEL_REGISTRATION": "Roʻyxatdan oʻtish",
|
|
90
|
+
"LABEL_PLACEHOLDER_EMAIL": "Sizning elektron manzilingiz",
|
|
91
|
+
"LABEL_PLACEHOLDER_PASSWORD": "Sizning parolingiz",
|
|
92
|
+
"LABEL_PLACEHOLDER_NAME": "Ismingiz",
|
|
93
|
+
"LABEL_PLACEHOLDER_LAST_NAME": "Familiyangiz",
|
|
94
|
+
"LABEL_LAST_NAME": "Familiya",
|
|
95
|
+
"LABEL_FIELD_NOT_EMPTY": "Maydon bo'sh bo'lishi mumkin emas.",
|
|
96
|
+
"LABEL_NEW_PASSWORD": "Yangi parol yarating",
|
|
97
|
+
"LABEL_CLOSED": "Yopiq",
|
|
98
|
+
"LABEL_INFO": "Ma'lumotlar",
|
|
99
|
+
"ALERT_NOTIFICATION": "Ogohlantirish: bildirishnomalarni yuborish o'chirilgan, bildirishnomalarni yuborishga ruxsat berish uchun brauzer sozlamalarini o'zgartiradi.",
|
|
100
|
+
"LABEL_EXTERNAL_ID": "Tashqi identifikator",
|
|
101
|
+
"LABEL_IAT": "Kech",
|
|
102
|
+
"LABEL_REQUEST_DETAIL": "Tafsilotlarni so'rash",
|
|
103
|
+
"LABEL_ENTER_MSG": "Xabarni kiriting yoki tayyor javoblar uchun / tugmasini bosing",
|
|
104
|
+
"LABEL_ENTER_MSG_SHORT": "Xabar kiriting",
|
|
105
|
+
"LABEL_ENTER_MSG_SHORTER": "Kirish...",
|
|
106
|
+
"LABEL_MSG_LOGIN_TILEDESK": "Suhbatni boshlash uchun tizimga kiring",
|
|
107
|
+
"LABEL_ARCHIVED": "Arxivlangan",
|
|
108
|
+
"LABEL_INFO_CONVERSATION": "Ma'lumot suhbati",
|
|
109
|
+
"LABEL_INFO_USER": "Ma'lumot foydalanuvchisi",
|
|
110
|
+
"LABEL_IS_WRITING": "yozish",
|
|
111
|
+
"LABEL_VERSION": "versiya",
|
|
112
|
+
"LABEL_CONTACTS": "Kontaktlar",
|
|
113
|
+
"LABEL_PLACEHOLDER": "xabaringizni yozing..",
|
|
114
|
+
"LABEL_START_NW_CONV": "Yangi suhbat",
|
|
115
|
+
"LABEL_FIRST_MSG": "Muammoingizni qisqacha tasvirlab bering, siz bilan agent bog'lanadi.",
|
|
116
|
+
"LABEL_FIRST_MSG_NO_AGENTS": "🤔 Hozirda barcha operatorlar oflayn. Qanday bo'lmasin, muammoingizni tasvirlashingiz mumkin. Bu sizga imkon qadar tezroq javob beradigan qo'llab-quvvatlash guruhiga tayinlanadi.",
|
|
117
|
+
"LABEL_SELECT_TOPIC": "Mavzuni tanlang",
|
|
118
|
+
"LABEL_COMPLETE_FORM": "Keyingi mavjud agent bilan suhbatni boshlash uchun shaklni to'ldiring.",
|
|
119
|
+
"LABEL_FIELD_NAME": "Ism",
|
|
120
|
+
"LABEL_ERROR_FIELD_NAME": "Majburiy maydon (kamida 5 ta belgi).",
|
|
121
|
+
"LABEL_FIELD_EMAIL": "Elektron pochta",
|
|
122
|
+
"LABEL_ERROR_FIELD_EMAIL": "Yaroqli elektron pochta manzilini kiriting.",
|
|
123
|
+
"LABEL_WRITING": "yozmoqda...",
|
|
124
|
+
"AGENT_NOT_AVAILABLE": " Oflayn",
|
|
125
|
+
"AGENT_AVAILABLE": " Onlayn",
|
|
126
|
+
"GUEST_LABEL": "Mehmon",
|
|
127
|
+
"ALL_AGENTS_OFFLINE_LABEL": "Ayni paytda barcha operatorlar oflayn rejimda",
|
|
128
|
+
"LABEL_LOADING": "Yuklanmoqda...",
|
|
129
|
+
"CALLOUT_TITLE_PLACEHOLDER": "Yordam kerak?",
|
|
130
|
+
"CALLOUT_MSG_PLACEHOLDER": "Bu yerni bosing va biz bilan suhbatni boshlang!",
|
|
131
|
+
"CUSTOMER_SATISFACTION": "Mijozlarning qoniqishi",
|
|
132
|
+
"YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "mijozlarga xizmat ko'rsatish haqidagi fikringiz",
|
|
133
|
+
"DOWNLOAD_TRANSCRIPT": "Transkriptni yuklab oling",
|
|
134
|
+
"BACK": "Orqaga",
|
|
135
|
+
"YOUR_RATING": "sizning reytingingiz",
|
|
136
|
+
"WRITE_YOUR_OPINION": "Fikringizni yozing ... (ixtiyoriy)",
|
|
137
|
+
"SUBMIT": "Yuborish",
|
|
138
|
+
"THANK_YOU_FOR_YOUR_EVALUATION": "Baholaganingiz uchun tashakkur",
|
|
139
|
+
"YOUR_RATING_HAS_BEEN_RECEIVED": "Sizning reytingingiz olindi",
|
|
140
|
+
"ALERT_LEAVE_CHAT": "Chatni tark etmoqchimisiz?",
|
|
141
|
+
"YES": "Ha",
|
|
142
|
+
"NO": "Yo'q",
|
|
143
|
+
"BUTTON_CLOSE_TO_ICON": "Suhbatni minimallashtirish",
|
|
144
|
+
"BUTTON_EDIT_PROFILE": "Profilni yangilash",
|
|
145
|
+
"RATE_CHAT": "Suhbatni baholang",
|
|
146
|
+
"WELLCOME_TITLE": "Salom, Tiledesk 👋 ga xush kelibsiz",
|
|
147
|
+
"WELLCOME_MSG": "Biz qanday yordam bera olamiz?",
|
|
148
|
+
"WELLCOME": "Xush kelibsiz",
|
|
149
|
+
"OPTIONS": "variantlari",
|
|
150
|
+
"SOUND_OFF": "ovoz o'chirilgan",
|
|
151
|
+
"SOUND_ON": "ovoz yoqilgan",
|
|
152
|
+
"LOGOUT": "chiqish",
|
|
153
|
+
"CLOSE": "yaqin",
|
|
154
|
+
"PREV_CONVERSATIONS": "Sizning suhbatlaringiz",
|
|
155
|
+
"YOU": "Siz",
|
|
156
|
+
"SHOW_ALL_CONV": "hammasini ko'rsatish",
|
|
157
|
+
"START_A_CONVERSATION": "Suhbatni boshlang",
|
|
158
|
+
"NO_CONVERSATION": "Suhbat yo'q",
|
|
159
|
+
"SEE_PREVIOUS": "oldingisiga qarang",
|
|
160
|
+
"WAITING_TIME_FOUND": "Jamoa odatda $reply_timebilan javob beradi",
|
|
161
|
+
"WAITING_TIME_NOT_FOUND": "Jamoa imkon qadar tezroq javob beradi",
|
|
162
|
+
"CLOSED": "YOPIQ",
|
|
163
|
+
"PleaseSelectChatToStartMessaging": "Xabar yozishni boshlash uchun chatni tanlang",
|
|
164
|
+
"FromThisAreNew": "------------------",
|
|
165
|
+
"Preview": "Ko‘rib chiqish",
|
|
166
|
+
"AddACaption": "Sarlavha qo'shing",
|
|
167
|
+
"AnErrorOccurredWhileUnsubscribingFromNotifications": "Voy! Bildirishnomalarga obunani bekor qilishda xatolik yuz berdi",
|
|
168
|
+
"SIGNIN_ERROR_USER_NOT_FOUND": "Autentifikatsiya amalga oshmadi. Foydalanuvchi topilmadi.",
|
|
169
|
+
"SIGNIN_ERROR_USER_WRONG_PSW": "Autentifikatsiya amalga oshmadi. Noto'g'ri parol.",
|
|
170
|
+
"Email is required": "Elektron pochta kerak.",
|
|
171
|
+
"Email must be a valid email": "Elektron pochta haqiqiy elektron pochta bo'lishi kerak.",
|
|
172
|
+
"Password is required": "Parol talab qilinadi.",
|
|
173
|
+
"Password must be at least 6 characters long": "Parol kamida 6 ta belgidan iborat bo'lishi kerak.",
|
|
174
|
+
"UPLOAD_FILE_ERROR": "Faylni yuklashda kutilmagan xatolik yuz berdi",
|
|
175
|
+
"DROP_IMAGE_HERE_TO_SEND_IT": "Yuborish uchun rasmni shu yerga tashlang",
|
|
176
|
+
"ONLY_IMAGE_FILES_ARE_ALLOWED_TO_PASTE": "Faqat rasm fayllari va matnni joylashtirishga ruxsat beriladi",
|
|
177
|
+
"FAILED_TO_UPLOAD_THE_FORMAT_IS_NOT_SUPPORTED": "Yuklab bo‘lmadi: format qo‘llab-quvvatlanmaydi",
|
|
178
|
+
"SENT_AN_IMAGE": "rasm yubordi",
|
|
179
|
+
"SENT_AN_ATTACHMENT": "ilova yubordi",
|
|
180
|
+
"NO_INFORMATION_AVAILABLE": "Maʼlumot yoʻq",
|
|
181
|
+
"CONTACT_ID": "Kontakt identifikatori",
|
|
182
|
+
"USER_ID": "foydalanuvchi IDsi",
|
|
183
|
+
"CLOSE_TOAST": "Yopish",
|
|
184
|
+
"WAITING_FOR_NETWORK": "Tarmoq kutilmoqda",
|
|
185
|
+
"Available": "Mavjud",
|
|
186
|
+
"Unavailable": "Mavjud emas",
|
|
187
|
+
"Busy": "Band",
|
|
188
|
+
"YouAreAboutToJoinThisChat": "Agar siz ushbu suhbatga qo'shilsangiz, u suhbatlar ro'yxatida paydo bo'ladi. Keyin, tayinlanmagan suhbatlar yon panelini yopganingizdan so'ng, foydalanuvchi bilan suhbatni boshlash uchun uni tanlashingiz kerak bo'ladi",
|
|
189
|
+
"Cancel": "Bekor qilish",
|
|
190
|
+
"AreYouSure": "Ishonchingiz komilmi?",
|
|
191
|
+
"UnassignedConversations": "Tayinlanmagan suhbatlar",
|
|
192
|
+
"NewConversations": "Yangi suhbatlar",
|
|
193
|
+
"UPLOAD": "Yuklash",
|
|
194
|
+
"CANNED_RESPONSES": "Tayyor javoblar",
|
|
195
|
+
"NO_CANNED_RESPONSES": "Tayyor javoblar yo'q",
|
|
196
|
+
"THERE_ARE_NO_CANNED_RESPONSES_AVAILABLE": "Hech qanday tayyor javoblar mavjud emas",
|
|
197
|
+
"TO_CREATE_THEM_GO_TO_THE_PROJECT": "Ularni yaratish uchun loyihaga o'ting (o'ng tomondagi panelda mavjud bo'lgan loyiha nomini bosishingiz mumkin) va asboblar paneli yon panelidagi \"Sozlamalar\" menyusi ostida \"Konservalangan javoblar\" ni va keyin \"Javob yaratish\" tugmasini bosing.",
|
|
198
|
+
"YES_CANNED_RESPONSES": "⚡️ tugmasini bosish yoki matn maydoniga / belgisini kiritish orqali konservalangan javoblarni ko'ring, shuningdek, / belgisidan keyin terish orqali ro'yxatni filtrlashingiz mumkin.",
|
|
199
|
+
"VIEW_ALL_CONVERSATIONS": "Barcha suhbatlarni ko'ring",
|
|
200
|
+
"CONVERSATIONS_IN_QUEUE": "navbatdagi suhbatlar, birini tanlang",
|
|
201
|
+
"CONVERSATION_IN_QUEUE": "navbatdagi suhbat, uni tanlang",
|
|
202
|
+
"NO_CONVERSATION_IN_QUEUE": "navbatda hech qanday suhbat yo'q",
|
|
203
|
+
"PIN_A_PROJECT": "Loyihani mahkamlash",
|
|
204
|
+
"PINNED_PROJECT": "Belgilangan loyiha",
|
|
205
|
+
"CHANGE_PINNED_PROJECT": "Belgilangan loyihani o'zgartirish",
|
|
206
|
+
"CHANGE_TO_AVAILABLE_UNAVAILABLE": "mavjud/mavjudga o'zgartiring",
|
|
207
|
+
"CHANGE_TO_YOUR_STATUS_TO_AVAILABLE": "Maqomingizni mavjud qilib o'zgartiring",
|
|
208
|
+
"CHANGE_TO_YOUR_STATUS_TO_UNAVAILABLE": "Maqomingizni mavjud emas qilib o'zgartiring",
|
|
209
|
+
"ALL_CONVS_SERVED": "Barcha suhbatlar o'tkazildimi? Juda yaxshi!",
|
|
210
|
+
"PaydPlanName": "{{projectprofile}} Reja",
|
|
211
|
+
"PaydPlanNamePro": "Pro rejasi",
|
|
212
|
+
"PaydPlanNameEnterprise": "Korxona rejasi",
|
|
213
|
+
"ProPlanTrial": "Pro Plan (sinov)",
|
|
214
|
+
"FreePlan": "Bepul reja",
|
|
215
|
+
"SubscriptionPaymentProblem": "Obuna toʻlovi muammosi",
|
|
216
|
+
"ThePlanHasExpired": "Reja muddati tugadi",
|
|
217
|
+
"owner": "Egasi",
|
|
218
|
+
"admin": "Administrator",
|
|
219
|
+
"agent": "Agent",
|
|
220
|
+
"Conversations": "Suhbatlar",
|
|
221
|
+
"Apps": "Ilovalar",
|
|
222
|
+
"Analytics": "Analitika",
|
|
223
|
+
"Activities": "Faoliyatlar",
|
|
224
|
+
"History": "Tarix",
|
|
225
|
+
"Settings": "Sozlamalar",
|
|
226
|
+
"Resolve": "Yechish",
|
|
227
|
+
"Archive": "Arxiv",
|
|
228
|
+
"ActionNotAllowed": "Harakatga ruxsat berilmagan",
|
|
229
|
+
"YouAreNoLongerAmongTheTeammatesManagingThisConversation": "Siz endi bu suhbatni boshqarayotgan jamoadoshlar orasida emassiz",
|
|
230
|
+
"TicketSuccessfullyCreated": "Chipta muvaffaqiyatli yaratildi",
|
|
231
|
+
"Continue": "Davom eting",
|
|
232
|
+
"ViewArchivedConversations": "Arxivlangan suhbatlar",
|
|
233
|
+
"ViewContactsList": "Kontaktlar ro'yxati",
|
|
234
|
+
"AddAsCannedResponse": "Konservalangan javob sifatida qo'shing",
|
|
235
|
+
"AddNewCannedResponse": "Yangi tayyor javob qo'shing",
|
|
236
|
+
"TitleIsRequired": "Sarlavha kerak",
|
|
237
|
+
"MessageIsRequired": "Xabar kerak",
|
|
238
|
+
"Already_present_in_the_dashboard_json": ".........",
|
|
239
|
+
"CreateTicket": "Chipta yarating",
|
|
240
|
+
"Requester": "So'rovchi",
|
|
241
|
+
"ViewRequesterDetails": "So'rovchi tafsilotlarini ko'rish",
|
|
242
|
+
"Priority": "Ustuvorlik",
|
|
243
|
+
"urgent": "Shoshilinch",
|
|
244
|
+
"high": "Yuqori",
|
|
245
|
+
"medium": "O'rta",
|
|
246
|
+
"low": "Past",
|
|
247
|
+
"SelectRequester": "So'rovchini tanlang",
|
|
248
|
+
"AddRequester": "So'rovchi qo'shing",
|
|
249
|
+
"Subject": "Mavzu",
|
|
250
|
+
"SelectAssignee": "Vakolat beruvchini tanlang",
|
|
251
|
+
"Message": "Xabar",
|
|
252
|
+
"CreateNewRequester": "Yangi so'rovchi yarating",
|
|
253
|
+
"Name": "Ism",
|
|
254
|
+
"NameIsRequired": "Ism talab qilinadi",
|
|
255
|
+
"EnterValidEmail": "Yaroqli elektron pochta manzilini kiriting",
|
|
256
|
+
"Title": "Sarlavha",
|
|
257
|
+
"Add": "Qo'shish",
|
|
258
|
+
"AddCustomization": "Shaxsiylashtirish qo'shing",
|
|
259
|
+
"SelectACustomizationToAddToYourMessage": "Xabarga qo'shish uchun shaxsiylashtirish qiymatini tanlang",
|
|
260
|
+
"recipient_name_desc": "Agent javob bergan shaxsning ismi xabarga qo'shiladi.",
|
|
261
|
+
"agent_name_desc": "Xabarga javob berayotgan agentning ismi qo'shiladi.",
|
|
262
|
+
"First_name_of_recipient": "Qabul qiluvchining ismi",
|
|
263
|
+
"First_name_of_agent": "Agentning ismi",
|
|
264
|
+
"EnterCannedResponseTitle": "Tayyor javob sarlavhasini kiriting",
|
|
265
|
+
"WriteMsgToSendToYourVisitors": "Mehmonlaringizga yuborish uchun konservalangan javob xabarini yozing",
|
|
266
|
+
"EditProfile": "Profilni tahrirlash"
|
|
267
|
+
}
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
+
"t2y12PruGU9wUtEGzBJfolMIgK": "CAR:T-PAY:T-ANA:T-ACT:T-APP:T",
|
|
2
3
|
"chatEngine": "mqtt",
|
|
3
4
|
"uploadEngine": "native",
|
|
4
5
|
"pushEngine": "none",
|
|
6
|
+
"fileUploadAccept": "*/*",
|
|
5
7
|
"firebaseConfig": {
|
|
6
8
|
"apiKey": "AIzaSyCoWXHNvP1-qOllCpTshhC6VjPXeRTK0T4",
|
|
7
9
|
"authDomain": "chat21-pre-01.firebaseapp.com",
|
|
@@ -16,11 +18,16 @@
|
|
|
16
18
|
"chat21Config": {
|
|
17
19
|
"appId": "tilechat",
|
|
18
20
|
"MQTTendpoint": "ws://localhost:15675/ws",
|
|
19
|
-
"APIendpoint": "http://localhost:8004/api"
|
|
21
|
+
"APIendpoint": "http://localhost:8004/api",
|
|
22
|
+
"_log": true
|
|
20
23
|
},
|
|
21
24
|
"apiUrl": "http://localhost:3000/",
|
|
22
25
|
"baseImageUrl": "http://localhost:3000/",
|
|
23
|
-
"dashboardUrl": "http://localhost:
|
|
26
|
+
"dashboardUrl": "http://localhost:8081/",
|
|
24
27
|
"logLevel": "DEBUG",
|
|
25
|
-
"authPersistence": "
|
|
28
|
+
"authPersistence": "LOCAL",
|
|
29
|
+
"supportMode": true,
|
|
30
|
+
"archivedButton": true,
|
|
31
|
+
"writeToButton": true,
|
|
32
|
+
"wsUrl": "/ws/"
|
|
26
33
|
}
|
package/src/chat-config-pre.json
CHANGED
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"messagingSenderId": "269505353043",
|
|
14
14
|
"appId": "1:269505353043:web:b82af070572669e3707da6",
|
|
15
15
|
"chat21ApiUrl": "https://us-central1-chat21-pre-01.cloudfunctions.net",
|
|
16
|
-
"tenant":"tilechat"
|
|
16
|
+
"tenant":"tilechat",
|
|
17
|
+
"vapidKey": "BOsgS2ADwspKdWAmiFDZXEYqY1HSYADVfJT3j67wsySh3NxaViJqoabPJH8WM02wb5r8cQIm5TgM0UK047Z1D1c"
|
|
17
18
|
},
|
|
18
19
|
"chat21Config": {
|
|
19
20
|
"appId": "tilechat",
|
|
@@ -17,6 +17,7 @@ export abstract class ConversationsHandlerService {
|
|
|
17
17
|
abstract BSConversationDetail: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
18
18
|
abstract conversationAdded: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
19
19
|
abstract conversationChanged: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
20
|
+
abstract conversationChangedDetailed: BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}> = new BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}>(null);
|
|
20
21
|
abstract conversationRemoved: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
21
22
|
// abstract readAllMessages: BehaviorSubject<string> = new BehaviorSubject<string>(null);
|
|
22
23
|
|
|
@@ -32,6 +33,7 @@ export abstract class ConversationsHandlerService {
|
|
|
32
33
|
abstract setConversationRead(conversationId: string): void;
|
|
33
34
|
abstract dispose(): void;
|
|
34
35
|
abstract archiveConversation(conversationId: string): void;
|
|
36
|
+
abstract getLastConversation(callback:(conv: ConversationModel, error: string)=>void): void
|
|
35
37
|
abstract getConversationDetail(conversationId: string, callback:(conv: ConversationModel)=>void): void;
|
|
36
38
|
abstract getClosingConversation(conversationId: string): boolean;
|
|
37
39
|
abstract setClosingConversation(conversationId: string, status: boolean): void;
|
|
@@ -324,7 +324,6 @@ export class FirebaseArchivedConversationsHandler extends ArchivedConversationsH
|
|
|
324
324
|
* 7 - attivo sound se è un msg nuovo
|
|
325
325
|
*/
|
|
326
326
|
|
|
327
|
-
//TODO-GAB: fare emit singola conversation e non dell'intero array di conversations
|
|
328
327
|
private changed(childSnapshot: any) {
|
|
329
328
|
if (this.conversationGenerate(childSnapshot)) {
|
|
330
329
|
const index = searchIndexInArrayForUid(this.archivedConversations, childSnapshot.key);
|
|
@@ -394,7 +393,6 @@ export class FirebaseArchivedConversationsHandler extends ArchivedConversationsH
|
|
|
394
393
|
conversation_with_fullname = conv.recipient_fullname;
|
|
395
394
|
}
|
|
396
395
|
// Fixes the bug: if a snippet of code is pasted and sent it is not displayed correctly in the archived convesations list
|
|
397
|
-
// conv.last_message_text = htmlEntities(conv.last_message_text)
|
|
398
396
|
conv.conversation_with = conversation_with;
|
|
399
397
|
conv.conversation_with_fullname = conversation_with_fullname;
|
|
400
398
|
conv.status = this.setStatusConversation(conv.sender, conv.uid);
|
|
@@ -48,12 +48,7 @@ export class FirebaseAuthService extends MessagingAuthService {
|
|
|
48
48
|
public SERVER_BASE_URL: string;
|
|
49
49
|
|
|
50
50
|
// private
|
|
51
|
-
private URL_TILEDESK_SIGNIN: string;
|
|
52
|
-
private URL_TILEDESK_SIGNIN_ANONYMOUSLY: string;
|
|
53
51
|
private URL_TILEDESK_CREATE_CUSTOM_TOKEN: string;
|
|
54
|
-
private URL_TILEDESK_SIGNIN_WITH_CUSTOM_TOKEN: string;
|
|
55
|
-
//TODO-GAB
|
|
56
|
-
// private imageRepo: ImageRepoService = new FirebaseImageRepoService();
|
|
57
52
|
|
|
58
53
|
private firebaseToken: string;
|
|
59
54
|
private logger: LoggerService = LoggerInstance.getInstance()
|
|
@@ -34,6 +34,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
34
34
|
BSConversationDetail: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
35
35
|
conversationAdded: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
36
36
|
conversationChanged: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
37
|
+
conversationChangedDetailed: BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}> = new BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}>(null);
|
|
37
38
|
conversationRemoved: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
38
39
|
// readAllMessages: BehaviorSubject<string>;
|
|
39
40
|
|
|
@@ -50,6 +51,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
50
51
|
private logger: LoggerService = LoggerInstance.getInstance()
|
|
51
52
|
private ref: firebase.database.Query;
|
|
52
53
|
private BASE_URL: string;
|
|
54
|
+
private BASE_URL_DATABASE: string;
|
|
53
55
|
// private audio: any;
|
|
54
56
|
// private setTimeoutSound: any;
|
|
55
57
|
private subscribe: any
|
|
@@ -78,6 +80,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
78
80
|
//this.databaseProvider.initialize(userId, this.tenant);
|
|
79
81
|
//this.getConversationsFromStorage();
|
|
80
82
|
this.BASE_URL = this.appConfig.getConfig().firebaseConfig.chat21ApiUrl;
|
|
83
|
+
this.BASE_URL_DATABASE = this.appConfig.getConfig().firebaseConfig.databaseURL;
|
|
81
84
|
}
|
|
82
85
|
|
|
83
86
|
/**
|
|
@@ -164,6 +167,45 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
164
167
|
}, 2000);
|
|
165
168
|
}
|
|
166
169
|
|
|
170
|
+
public getLastConversation(callback: (conversation: ConversationModel, error: string)=>void){
|
|
171
|
+
|
|
172
|
+
this.getFirebaseToken((error, idToken) => {
|
|
173
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi idToken', idToken)
|
|
174
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi error', error)
|
|
175
|
+
if (idToken) {
|
|
176
|
+
const httpOptions = {
|
|
177
|
+
headers: new HttpHeaders({
|
|
178
|
+
'Accept': 'application/json',
|
|
179
|
+
'Content-Type': 'application/json',
|
|
180
|
+
// 'Authorization': 'Bearer ' + idToken,
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
}
|
|
184
|
+
const urlNodeFirebase = conversationsPathForUserId(this.tenant, this.loggedUserId);
|
|
185
|
+
const queryString = '?auth=' + idToken +'&orderBy="timestamp"&limitToLast=1'
|
|
186
|
+
const url = this.BASE_URL_DATABASE + urlNodeFirebase + '.json' + queryString// + queryString;
|
|
187
|
+
this.http.get(url, httpOptions).subscribe((childSnapshot: any) => {
|
|
188
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi - RES', childSnapshot);
|
|
189
|
+
if(childSnapshot){
|
|
190
|
+
const childData: ConversationModel = childSnapshot[Object.keys(childSnapshot)[0]];
|
|
191
|
+
childData.uid = Object.keys(childSnapshot)[0]
|
|
192
|
+
const conversation = this.completeConversation(childData);
|
|
193
|
+
callback(conversation, null)
|
|
194
|
+
}else if(!childSnapshot){
|
|
195
|
+
callback(null, null)
|
|
196
|
+
}
|
|
197
|
+
}, (error) => {
|
|
198
|
+
this.logger.error('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi ERROR ', error);
|
|
199
|
+
callback(null, 'error')
|
|
200
|
+
}, () => {
|
|
201
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi * COMPLETE *');
|
|
202
|
+
});
|
|
203
|
+
} else {
|
|
204
|
+
callback(null, 'error')
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
167
209
|
/**
|
|
168
210
|
* restituisce il numero di conversazioni nuove
|
|
169
211
|
*/
|
|
@@ -438,7 +480,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
438
480
|
* 6 - ordino l'array per timestamp
|
|
439
481
|
* 7 - pubblico conversations:update
|
|
440
482
|
*/
|
|
441
|
-
//TODO-GAB: ora emit singola conversation e non dell'intero array di conversations
|
|
442
483
|
private added(childSnapshot: any) {
|
|
443
484
|
if (this.conversationGenerate(childSnapshot)) {
|
|
444
485
|
const index = searchIndexInArrayForUid(this.conversations, childSnapshot.key);
|
|
@@ -461,13 +502,14 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
461
502
|
* 7 - attivo sound se è un msg nuovo
|
|
462
503
|
*/
|
|
463
504
|
|
|
464
|
-
//TODO-GAB: ora emit singola conversation e non dell'intero array di conversations
|
|
465
505
|
private changed(childSnapshot: any) {
|
|
506
|
+
const oldConversation = this.conversations[searchIndexInArrayForUid(this.conversations, childSnapshot.key)]
|
|
466
507
|
if (this.conversationGenerate(childSnapshot)) {
|
|
467
508
|
const index = searchIndexInArrayForUid(this.conversations, childSnapshot.key);
|
|
468
509
|
if (index > -1) {
|
|
469
510
|
const conversationChanged = this.conversations[index]
|
|
470
|
-
this.conversationChanged.next(conversationChanged)
|
|
511
|
+
this.conversationChanged.next(conversationChanged)
|
|
512
|
+
this.conversationChangedDetailed.next({value: conversationChanged, previousValue: oldConversation});
|
|
471
513
|
}
|
|
472
514
|
} else {
|
|
473
515
|
this.logger.error('[FIREBASEConversationsHandlerSERVICE]CHANGED::conversations with conversationId: ', childSnapshot.key, 'is not valid')
|
|
@@ -481,7 +523,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
481
523
|
* 4 - pubblico conversations:update
|
|
482
524
|
* 5 - elimino conversazione dall'array delle conversazioni chiuse
|
|
483
525
|
*/
|
|
484
|
-
//TODO-GAB: ora emit singola conversation e non dell'intero array di conversations
|
|
485
526
|
private removed(childSnapshot: any) {
|
|
486
527
|
const index = searchIndexInArrayForUid(this.conversations, childSnapshot.key);
|
|
487
528
|
if (index > -1) {
|
|
@@ -547,7 +588,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
547
588
|
/** END: UPDATE CONVERSATIONS is_new IF conv is selected or sender is me */
|
|
548
589
|
|
|
549
590
|
// Fixes the bug: if a snippet of code is pasted and sent it is not displayed correctly in the convesations list
|
|
550
|
-
// conv.time_last_message = this.getTimeLastMessage(conv.timestamp);
|
|
551
591
|
conv.conversation_with = conversation_with;
|
|
552
592
|
conv.conversation_with_fullname = conversation_with_fullname;
|
|
553
593
|
conv.status = this.setStatusConversation(conv.sender, conv.uid);
|
|
@@ -8,6 +8,7 @@ import { ImageRepoService } from '../abstract/image-repo.service';
|
|
|
8
8
|
// import * as firebase from 'firebase/app';
|
|
9
9
|
import firebase from "firebase/app";
|
|
10
10
|
import 'firebase/storage';
|
|
11
|
+
import { HttpClient } from '@angular/common/http';
|
|
11
12
|
|
|
12
13
|
@Injectable({ providedIn: 'root' })
|
|
13
14
|
|
|
@@ -17,7 +18,7 @@ export class FirebaseImageRepoService extends ImageRepoService {
|
|
|
17
18
|
private urlStorageBucket = environment.firebaseConfig.storageBucket + '/o/profiles%2F';
|
|
18
19
|
private baseImageURL: string;
|
|
19
20
|
|
|
20
|
-
constructor() {
|
|
21
|
+
constructor(public http: HttpClient) {
|
|
21
22
|
super();
|
|
22
23
|
}
|
|
23
24
|
|