@chat21/chat21-ionic 3.0.65-rc1 → 3.0.66
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 +23 -1
- package/deploy_amazon_beta.sh +0 -0
- package/deploy_amazon_prod.sh +3 -3
- package/package.json +3 -3
- package/src/app/app.component.ts +18 -61
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +0 -10
- package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.html +49 -4
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +1 -1
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +18 -30
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +6 -4
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +2 -0
- package/src/app/components/project-item/project-item.component.ts +5 -0
- package/src/app/components/sidebar/sidebar.component.ts +28 -29
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +12 -23
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +3 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +88 -136
- package/src/app/directives/truncate.pipe.ts +0 -1
- package/src/app/pages/authentication/login/login.page.ts +0 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +44 -48
- package/src/app/pages/conversations-list/conversations-list.page.ts +27 -3
- package/src/assets/i18n/ar.json +266 -0
- package/src/assets/i18n/uk.json +266 -0
- package/src/assets/js/chat21client.js +57 -59
- package/src/chat21-core/models/conversation.ts +1 -1
- package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +26 -21
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +72 -56
- package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +16 -13
- package/src/chat21-core/utils/constants.ts +1 -1
- package/src/global.scss +2 -2
- package/deploy_prod.sh +0 -14
|
@@ -320,17 +320,17 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
320
320
|
const conversations = this.conversationsHandlerService.conversations
|
|
321
321
|
// console.log('[CONVS-DETAIL] conversations', conversations);
|
|
322
322
|
this.conversation_count = conversations.length
|
|
323
|
-
if (conv && conv.sender !== this.loggedUser.uid) {
|
|
323
|
+
if (conv && this.loggedUser && conv.sender !== this.loggedUser.uid) {
|
|
324
324
|
this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange data sender ', conv.sender)
|
|
325
325
|
this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange this.loggedUser.uid ', this.loggedUser.uid)
|
|
326
326
|
this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange is_new ', conv.is_new)
|
|
327
327
|
this.logger.log('[CONVS-DETAIL] subscribe to BSConversationsChange showButtonToBottom ', this.showButtonToBottom)
|
|
328
328
|
// UPDATE THE CONVERSATION TO 'READ' IF IT IS ME WHO WRITES THE LAST MESSAGE OF THE CONVERSATION
|
|
329
329
|
// AND IF THE POSITION OF THE SCROLL IS AT THE END
|
|
330
|
-
if (!this.showButtonToBottom && conv.is_new) {
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
}
|
|
330
|
+
// if (!this.showButtonToBottom && conv.is_new) {
|
|
331
|
+
// // ARE AT THE END
|
|
332
|
+
// this.updateConversationBadge()
|
|
333
|
+
// }
|
|
334
334
|
if(conv.uid && conv.uid === this.conversationWith){
|
|
335
335
|
this.conversationAvatar = setConversationAvatar(conv.conversation_with,conv.conversation_with_fullname,conv.channel_type)
|
|
336
336
|
}
|
|
@@ -761,6 +761,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
761
761
|
if (this.conversationWith && this.conversationsHandlerService && this.conv_type === 'active') {
|
|
762
762
|
this.logger.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail CALLING')
|
|
763
763
|
this.conversationsHandlerService.getConversationDetail(this.conversationWith, (conv) => {
|
|
764
|
+
this.logger.debug('[CONV-COMP] setHeaderContent getConversationDetail: conversationsHandlerService ', this.conversationWith, conv, this.conv_type)
|
|
764
765
|
if (conv) {
|
|
765
766
|
this.conversationAvatar = setConversationAvatar(
|
|
766
767
|
conv.conversation_with,
|
|
@@ -768,19 +769,45 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
768
769
|
conv.channel_type,
|
|
769
770
|
)
|
|
770
771
|
}
|
|
772
|
+
if(!conv){
|
|
773
|
+
this.logger.debug('[CONV-COMP] setHeaderContent getConversationDetail: conv not exist --> search in archived list', this.conversationWith, this.conv_type)
|
|
774
|
+
this.archivedConversationsHandlerService.getConversationDetail(this.conversationWith, (conv) => {
|
|
775
|
+
this.logger.debug('[CONV-COMP] setHeaderContent getConversationDetail: archivedConversationsHandlerService', this.conversationWith, conv)
|
|
776
|
+
if (conv) {
|
|
777
|
+
console.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail (archived)', this.conversationWith, 'CONVS', conv)
|
|
778
|
+
this.conversationAvatar = setConversationAvatar(
|
|
779
|
+
conv.conversation_with,
|
|
780
|
+
conv.conversation_with_fullname,
|
|
781
|
+
conv.channel_type,
|
|
782
|
+
)
|
|
783
|
+
}
|
|
784
|
+
})
|
|
785
|
+
}
|
|
771
786
|
this.logger.log('[CONVS-DETAIL] - setHeaderContent > conversationAvatar: ', this.conversationAvatar)
|
|
772
787
|
})
|
|
773
788
|
} else {
|
|
774
|
-
//get conversation from 'conversations' firebase node
|
|
789
|
+
//get conversation from 'archived-conversations' firebase node
|
|
790
|
+
this.logger.debug('[CONV-COMP] setHeaderContent getConversationDetail: archivedConversationsHandlerService', this.conversationWith, this.conv_type)
|
|
775
791
|
this.archivedConversationsHandlerService.getConversationDetail(this.conversationWith, (conv) => {
|
|
776
792
|
if (conv) {
|
|
777
|
-
// console.log('[CONVS-DETAIL] - setHeaderContent getConversationDetail (archived)', this.conversationWith, 'CONVS', conv)
|
|
778
793
|
this.conversationAvatar = setConversationAvatar(
|
|
779
794
|
conv.conversation_with,
|
|
780
795
|
conv.conversation_with_fullname,
|
|
781
796
|
conv.channel_type,
|
|
782
797
|
)
|
|
783
798
|
}
|
|
799
|
+
if(!conv){
|
|
800
|
+
this.conversationsHandlerService.getConversationDetail(this.conversationWith, (conv) => {
|
|
801
|
+
if (conv) {
|
|
802
|
+
this.conversationAvatar = setConversationAvatar(
|
|
803
|
+
conv.conversation_with,
|
|
804
|
+
conv.conversation_with_fullname,
|
|
805
|
+
conv.channel_type,
|
|
806
|
+
)
|
|
807
|
+
}
|
|
808
|
+
this.logger.log('[CONVS-DETAIL] - setHeaderContent > conversationAvatar: ', this.conversationAvatar)
|
|
809
|
+
})
|
|
810
|
+
}
|
|
784
811
|
})
|
|
785
812
|
}
|
|
786
813
|
|
|
@@ -934,7 +961,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
934
961
|
subscriptionKey = 'messageAdded'
|
|
935
962
|
subscription = this.subscriptions.find((item) => item.key === subscriptionKey)
|
|
936
963
|
if (!subscription) {
|
|
937
|
-
this.logger.log('[CONVS-DETAIL] subscribe to messageAdded - conversationHandlerService', this.conversationHandlerService)
|
|
938
964
|
subscription = this.conversationHandlerService.messageAdded.subscribe((msg: any) => {
|
|
939
965
|
this.logger.log('[CONVS-DETAIL] subscribe to messageAdded - msg ', msg)
|
|
940
966
|
if (msg) {
|
|
@@ -950,7 +976,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
950
976
|
subscriptionKey = 'messageChanged'
|
|
951
977
|
subscription = this.subscriptions.find((item) => item.key === subscriptionKey)
|
|
952
978
|
if (!subscription) {
|
|
953
|
-
this.logger.log('[CONVS-DETAIL] subscribe to messageChanged')
|
|
954
979
|
subscription = this.conversationHandlerService.messageChanged.subscribe((msg: any) => {
|
|
955
980
|
this.logger.log('[CONVS-DETAIL] subscribe to messageChanged - msg ', msg)
|
|
956
981
|
})
|
|
@@ -961,7 +986,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
961
986
|
subscriptionKey = 'messageRemoved'
|
|
962
987
|
subscription = this.subscriptions.find((item) => item.key === subscriptionKey)
|
|
963
988
|
if (!subscription) {
|
|
964
|
-
this.logger.log('[CONVS-DETAIL] subscribe to messageRemoved')
|
|
965
989
|
subscription = this.conversationHandlerService.messageRemoved.subscribe((messageId: any) => {
|
|
966
990
|
this.logger.log('[CONVS-DETAIL] subscribe to messageRemoved - messageId ', messageId)
|
|
967
991
|
})
|
|
@@ -1186,26 +1210,15 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1186
1210
|
this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash parts', beforeSlashParts)
|
|
1187
1211
|
|
|
1188
1212
|
if (beforeSlashParts.length === 2) {
|
|
1189
|
-
if (
|
|
1190
|
-
beforeSlashParts[0].indexOf(' ') >= 0 &&
|
|
1191
|
-
afterSlashParts[0] === ''
|
|
1192
|
-
) {
|
|
1213
|
+
if (beforeSlashParts[0].indexOf(' ') >= 0 && afterSlashParts[0] === '') {
|
|
1193
1214
|
this.HIDE_CANNED_RESPONSES = false
|
|
1194
|
-
this.logger.log(
|
|
1195
|
-
'[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash there is a white space After Not',
|
|
1196
|
-
)
|
|
1215
|
+
this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash there is a white space After Not')
|
|
1197
1216
|
// if (beforeSlashParts[0].indexOf(' ') >= 0 && afterSlashParts[0].indexOf(' ') >= 0)
|
|
1198
|
-
} else if (
|
|
1199
|
-
beforeSlashParts[0].indexOf(' ') < 0 &&
|
|
1200
|
-
afterSlashParts[0] === ''
|
|
1201
|
-
) {
|
|
1217
|
+
} else if (beforeSlashParts[0].indexOf(' ') < 0 && afterSlashParts[0] === '') {
|
|
1202
1218
|
this.HIDE_CANNED_RESPONSES = true
|
|
1203
1219
|
this.tagsCannedFilter = []
|
|
1204
1220
|
this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash not thete is a white space After Not')
|
|
1205
|
-
} else if (
|
|
1206
|
-
beforeSlashParts[0].indexOf(' ') >= 0 &&
|
|
1207
|
-
afterSlashParts[0] === ' '
|
|
1208
|
-
) {
|
|
1221
|
+
} else if (beforeSlashParts[0].indexOf(' ') >= 0 && afterSlashParts[0] === ' ') {
|
|
1209
1222
|
this.logger.log('[CONVS-DETAIL] - returnChangeTextArea --> beforeSlash not thete is a white space After YES')
|
|
1210
1223
|
this.HIDE_CANNED_RESPONSES = true
|
|
1211
1224
|
this.tagsCannedFilter = []
|
|
@@ -1475,11 +1488,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1475
1488
|
this.logger.log('[CONVS-DETAIL] - insertAtCursor - myValue ', myValue)
|
|
1476
1489
|
this.logger.log('[CONVS-DETAIL] - insertAtCursor - myField ', myField)
|
|
1477
1490
|
|
|
1478
|
-
// myValue = ' ' + myValue;
|
|
1479
|
-
|
|
1480
|
-
// console.log('[CONVS-DETAIL] - GET TEXT AREA - Here yes myValue ', myValue);
|
|
1481
|
-
// console.log('[CONVS-DETAIL] - GET TEXT AREA - Here yes textArea value length', myField.value.length);
|
|
1482
|
-
|
|
1483
1491
|
if (myField.value.length > 0) {
|
|
1484
1492
|
myValue = ' ' + myValue
|
|
1485
1493
|
}
|
|
@@ -1571,24 +1579,15 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1571
1579
|
// this.audio.src = '/assets/sounds/pling.mp3';
|
|
1572
1580
|
this.audio.src = URL_SOUND_LIST_CONVERSATION
|
|
1573
1581
|
this.audio.load()
|
|
1574
|
-
this.logger.log(
|
|
1575
|
-
'[CONVS-DETAIL] soundMessage conversation this.audio',
|
|
1576
|
-
this.audio,
|
|
1577
|
-
)
|
|
1582
|
+
this.logger.log('[CONVS-DETAIL] soundMessage conversation this.audio',this.audio)
|
|
1578
1583
|
clearTimeout(this.setTimeoutSound)
|
|
1579
1584
|
this.setTimeoutSound = setTimeout(function () {
|
|
1580
|
-
that.audio
|
|
1581
|
-
.play()
|
|
1582
|
-
.then(() => {
|
|
1585
|
+
that.audio.play().then(() => {
|
|
1583
1586
|
// Audio is playing.
|
|
1584
|
-
this.logger.log(
|
|
1585
|
-
|
|
1586
|
-
that.audio.src,
|
|
1587
|
-
)
|
|
1588
|
-
})
|
|
1589
|
-
.catch((error) => {
|
|
1587
|
+
this.logger.log('[CONVS-DETAIL] soundMessag that.audio.src ',that.audio.src)
|
|
1588
|
+
}).catch((error) => {
|
|
1590
1589
|
that.logger.error(error)
|
|
1591
|
-
|
|
1590
|
+
})
|
|
1592
1591
|
}, 1000)
|
|
1593
1592
|
}
|
|
1594
1593
|
|
|
@@ -1750,10 +1749,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1750
1749
|
* FIREBY BY: click event ScrollToBottom bottom-right icon button
|
|
1751
1750
|
*/
|
|
1752
1751
|
public actionScrollBottom() {
|
|
1753
|
-
this.logger.log(
|
|
1754
|
-
'[CONVS-DETAIL] actionScrollBottom - ionContentChatArea: ',
|
|
1755
|
-
this.ionContentChatArea,
|
|
1756
|
-
)
|
|
1752
|
+
this.logger.log('[CONVS-DETAIL] actionScrollBottom - ionContentChatArea: ',this.ionContentChatArea)
|
|
1757
1753
|
// const that = this;
|
|
1758
1754
|
this.showButtonToBottom = false
|
|
1759
1755
|
this.updateConversationBadge()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
1
2
|
import { ArchivedConversationsHandlerService } from 'src/chat21-core/providers/abstract/archivedconversations-handler.service'
|
|
2
3
|
import { Component, OnInit, ViewChild } from '@angular/core'
|
|
3
4
|
import { IonContent, ModalController } from '@ionic/angular'
|
|
@@ -17,6 +18,8 @@ import {
|
|
|
17
18
|
closeModal,
|
|
18
19
|
convertMessage,
|
|
19
20
|
isGroup,
|
|
21
|
+
searchIndexInArrayForUid,
|
|
22
|
+
compareValues,
|
|
20
23
|
} from '../../../chat21-core/utils/utils'
|
|
21
24
|
|
|
22
25
|
import { EventsService } from '../../services/events-service'
|
|
@@ -118,6 +121,7 @@ export class ConversationListPage implements OnInit {
|
|
|
118
121
|
public appConfigProvider: AppConfigProvider,
|
|
119
122
|
public platform: Platform,
|
|
120
123
|
private networkService: NetworkService,
|
|
124
|
+
private appStorageService: AppStorageService
|
|
121
125
|
) {
|
|
122
126
|
this.listenToAppCompConvsLengthOnInitConvs()
|
|
123
127
|
this.listenToLogoutEvent()
|
|
@@ -168,6 +172,7 @@ export class ConversationListPage implements OnInit {
|
|
|
168
172
|
ngOnInit() {
|
|
169
173
|
this.watchToConnectionStatus()
|
|
170
174
|
this.getAppConfigToHideDiplayBtns()
|
|
175
|
+
|
|
171
176
|
}
|
|
172
177
|
|
|
173
178
|
ngOnChanges() {
|
|
@@ -226,7 +231,7 @@ export class ConversationListPage implements OnInit {
|
|
|
226
231
|
this.logger.log('Called ionViewDidEnter')
|
|
227
232
|
this.logger.log('[CONVS-LIST-PAGE] ionViewWillEnter uidConvSelected',this.uidConvSelected )
|
|
228
233
|
this.listnerStart()
|
|
229
|
-
|
|
234
|
+
// this.conversations = this.manageStoredConversations()
|
|
230
235
|
// exit from app with hardware back button
|
|
231
236
|
this.subscription = this.platform.backButton.subscribe(() => {
|
|
232
237
|
navigator['app'].exitApp()
|
|
@@ -335,6 +340,7 @@ export class ConversationListPage implements OnInit {
|
|
|
335
340
|
// Init convrsation handler
|
|
336
341
|
// ------------------------------------------------------------------ //
|
|
337
342
|
initConversationsHandler() {
|
|
343
|
+
// this.conversations = this.manageStoredConversations()
|
|
338
344
|
this.conversations = this.conversationsHandlerService.conversations
|
|
339
345
|
this.logger.log('[CONVS-LIST-PAGE] - CONVERSATIONS ', this.conversations.length, this.conversations)
|
|
340
346
|
// save conversationHandler in chatManager
|
|
@@ -342,6 +348,19 @@ export class ConversationListPage implements OnInit {
|
|
|
342
348
|
this.showPlaceholder = false
|
|
343
349
|
}
|
|
344
350
|
|
|
351
|
+
private manageStoredConversations(): ConversationModel[] {
|
|
352
|
+
let conversationsStored = []
|
|
353
|
+
if(this.appStorageService.getItem('conversations')){
|
|
354
|
+
conversationsStored = JSON.parse(this.appStorageService.getItem('conversations'))
|
|
355
|
+
if(conversationsStored && conversationsStored.length > 0) {
|
|
356
|
+
// this.conversationsHandlerService.conversations = conversationsStored
|
|
357
|
+
this.logger.log('[CONVS-LIST-PAGE] retrive conversations from storage --> ', conversationsStored.length)
|
|
358
|
+
this.events.publish('appcompSubscribeToConvs:loadingIsActive', false);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return conversationsStored
|
|
362
|
+
}
|
|
363
|
+
|
|
345
364
|
initArchivedConversationsHandler() {
|
|
346
365
|
const keysConversation = ['CLOSED', 'Resolve']
|
|
347
366
|
this.translationMapConversation = this.translateService.translateLanguage( keysConversation )
|
|
@@ -649,13 +668,14 @@ export class ConversationListPage implements OnInit {
|
|
|
649
668
|
if (conversationType === 'active') {
|
|
650
669
|
conversationSelected = this.conversations.find((item) => item.uid === this.uidConvSelected)
|
|
651
670
|
} else if (conversationType === 'archived') {
|
|
652
|
-
conversationSelected = this.archivedConversations.find((item) => item.uid === this.uidConvSelected)
|
|
671
|
+
conversationSelected = this.archivedConversations.find((item) => item.uid === this.uidConvSelected)
|
|
653
672
|
}
|
|
654
673
|
if (conversationSelected) {
|
|
655
674
|
this.logger.log('[CONVS-LIST-PAGE] conversationSelected', conversationSelected)
|
|
656
675
|
this.logger.log('[CONVS-LIST-PAGE] the conversation ', this.conversationSelected, ' has already been loaded')
|
|
657
676
|
this.conversationSelected = conversationSelected
|
|
658
677
|
this.logger.log('[CONVS-LIST-PAGE] setUidConvSelected: ', this.conversationSelected)
|
|
678
|
+
conversationType === 'active'? this.conversationsHandlerService.uidConvSelected = conversationSelected.uid : this.archivedConversationsHandlerService.uidConvSelected = conversationSelected.uid
|
|
659
679
|
}
|
|
660
680
|
}
|
|
661
681
|
}
|
|
@@ -664,10 +684,12 @@ export class ConversationListPage implements OnInit {
|
|
|
664
684
|
this.logger.log('onConversationSelected conversation', conversation)
|
|
665
685
|
if (conversation.archived) {
|
|
666
686
|
this.navigateByUrl('archived', conversation.uid)
|
|
687
|
+
this.archivedConversationsHandlerService.uidConvSelected = conversation.uid
|
|
667
688
|
this.logger.log('[CONVS-LIST-PAGE] onConversationSelected archived conversation.uid ', conversation.uid,
|
|
668
689
|
)
|
|
669
690
|
} else {
|
|
670
691
|
this.navigateByUrl('active', conversation.uid)
|
|
692
|
+
this.conversationsHandlerService.uidConvSelected = conversation.uid
|
|
671
693
|
this.logger.log('[CONVS-LIST-PAGE] onConversationSelected active conversation.uid ', conversation.uid)
|
|
672
694
|
}
|
|
673
695
|
}
|
|
@@ -918,7 +940,9 @@ export class ConversationListPage implements OnInit {
|
|
|
918
940
|
this.logger.log('[CONVS-LIST-PAGE] - onCloseConversation (closeSupportGroup) CONVS ',this.conversations)
|
|
919
941
|
this.logger.log('[CONVS-LIST-PAGE] - onCloseConversation (closeSupportGroup) CONVS LENGHT ',this.conversations.length)
|
|
920
942
|
this.events.publish('conversationhasbeenclosed', conversationId)
|
|
921
|
-
this.
|
|
943
|
+
if(conversationId === this.uidConvSelected){
|
|
944
|
+
this.navigateByUrl('archived', conversationId)
|
|
945
|
+
}
|
|
922
946
|
})
|
|
923
947
|
}
|
|
924
948
|
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
{
|
|
2
|
+
"LABEL_TU": "أنت: ",
|
|
3
|
+
"LABEL_MSG_PUSH_START_CHAT": "لا محادثة حتى الآن",
|
|
4
|
+
"LABEL_MSG_START_CHAT": "ابدأ الدردشة",
|
|
5
|
+
"LABEL_ACTIVE_NOW": "متوفرة",
|
|
6
|
+
"LABEL_AVAILABLE": "متوفرة",
|
|
7
|
+
"LABEL_NOT_AVAILABLE": "غير متاح",
|
|
8
|
+
"LABEL_NO_MSG_HERE": "لا توجد رسالة هنا حتى الآن ...",
|
|
9
|
+
"LABEL_TODAY": "اليوم",
|
|
10
|
+
"LABEL_TOMORROW": "في الامس",
|
|
11
|
+
"LABEL_LAST_ACCESS": "آخر ولوج",
|
|
12
|
+
"LABEL_TO": "في",
|
|
13
|
+
"ARRAY_DAYS": [
|
|
14
|
+
"الاثنين",
|
|
15
|
+
"يوم الثلاثاء",
|
|
16
|
+
"الأربعاء",
|
|
17
|
+
"يوم الخميس",
|
|
18
|
+
"جمعة",
|
|
19
|
+
"السبت",
|
|
20
|
+
"الأحد"
|
|
21
|
+
],
|
|
22
|
+
"LABEL_SEND": "إرسال",
|
|
23
|
+
"ID_CONVERSATION": "معرف محادثة",
|
|
24
|
+
"LABEL_CREATED_THE": "تم إنشاء المجموعة في",
|
|
25
|
+
"LABEL_INFO_ATTRIBUTE": "صفات",
|
|
26
|
+
"LABEL_INFO_ADVANCED": "متقدم",
|
|
27
|
+
"LABEL_CLIENT": "عميل ",
|
|
28
|
+
"LABEL_SOURCEPAGE": "مصدر ",
|
|
29
|
+
"LABEL_DEPARTMENT_ID": "معرف القسم ",
|
|
30
|
+
"LABEL_DEPARTMENT_NAME": " قسم، أقسام ",
|
|
31
|
+
"requester_id": "معرف مقدم الطلب",
|
|
32
|
+
"projectId": "معرف المشروع ",
|
|
33
|
+
"LABEL_NAME": "اسم االمستخدم ",
|
|
34
|
+
"LABEL_EMAIL": "بريد الالكتروني ",
|
|
35
|
+
"LABEL_MEMBERS": "مشاركون",
|
|
36
|
+
"LABEL_INFO_MESSAGE": "رسالة معلومات",
|
|
37
|
+
"LABEL_READ_BY": "قرأ من قبل",
|
|
38
|
+
"LABEL_STATUS_MESSAGE": "حالة",
|
|
39
|
+
"LABEL_SENT_THE": "أرسلت في",
|
|
40
|
+
"LABEL_SENT_BY": "من",
|
|
41
|
+
"LABEL_GUEST": "زائر",
|
|
42
|
+
"LABEL_CREATE_TICKET": "إنشاء تذكرة",
|
|
43
|
+
"LABEL_SEND_BY_EMAIL": "ارسل بالبريد الإلكترونى",
|
|
44
|
+
"LABEL_VIDEO_CHAT": "مكالمة فيديو",
|
|
45
|
+
"LABEL_LEAVE_GROUP": "اترك المجموعة",
|
|
46
|
+
"LABEL_CLOSE_GROUP": "اغلاق",
|
|
47
|
+
"ALERT_TITLE": "انتباه!",
|
|
48
|
+
"CLOSE_ALERT_CONFIRM_LABEL": "موافق",
|
|
49
|
+
"CLOSE_ALERT_CANCEL_LABEL": "إلغاء",
|
|
50
|
+
"LEAVE_ALERT_MSG": "مغادرة المجموعة؟",
|
|
51
|
+
"CLOSE_ALERT_MSG": "أغلق المحادثة؟",
|
|
52
|
+
"VIDEOCHAT_ALERT_MSG": "الخدمة غير متوفرة",
|
|
53
|
+
"CLOSING_CONVERSATION_SPINNER_MSG": "أرجو الإنتظار.<br> نحن نغلق المحادثة",
|
|
54
|
+
"CONVERSATION_CLOSED_ALERT_MSG": "تم إغلاق المحادثة بنجاح.",
|
|
55
|
+
"CANNOT_CLOSE_CONVERSATION_ALERT_MSG": "تعذر إغلاق المحادثة",
|
|
56
|
+
"LEAVING_GROUP_SPINNER_MSG": "أرجو الإنتظار.<br> أنت تغادر المجموعة",
|
|
57
|
+
"CONVERSATION_LEFT_ALERT_MSG": "تم ترك المجموعة بنجاح.",
|
|
58
|
+
"CANNOT_LEAVE_GROUP_ALERT_MSG": "لا يمكن ترك المجموعة",
|
|
59
|
+
"GREETING": "مرحبًا {{ value }}",
|
|
60
|
+
"ARCHIVED_CONVERSATIONS_PAGE_NO_CONVERSATIONS_ARCHIVED": "لا توجد محادثة في الأرشيف",
|
|
61
|
+
"INFO_SUPPORT_USER_ADDED_SUBJECT": "أنت",
|
|
62
|
+
"INFO_SUPPORT_USER_ADDED_YOU_VERB": "تمت إضافته إلى ",
|
|
63
|
+
"INFO_SUPPORT_USER_ADDED_VERB": "انضم",
|
|
64
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT": "المحادثة",
|
|
65
|
+
"INFO_SUPPORT_USER_ADDED_MESSAGE": "{{ subject }} {{ verb }} {{ complement }}",
|
|
66
|
+
"INFO_SUPPORT_CHAT_REOPENED": "تمت إعادة فتح الدردشة",
|
|
67
|
+
"INFO_SUPPORT_CHAT_CLOSED": "الدردشة مغلقة",
|
|
68
|
+
"INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU": "تم تعيين طلب دعم جديد لك",
|
|
69
|
+
"LABEL_PROFILE": "الملف الشخصي",
|
|
70
|
+
"LABEL_CLOSE": "مغلق",
|
|
71
|
+
"LABEL_DISCONNECT": "قطع الاتصال",
|
|
72
|
+
"LABEL_NEW_CHAT": "محادثة جديدة",
|
|
73
|
+
"LABEL_FORGOT_PASSWORD": "هل نسيت كلمة المرور الخاصة بك؟",
|
|
74
|
+
"LABEL_SIGNIN": "تسجيل الدخول",
|
|
75
|
+
"LABEL_SIGNIN_TO": "تسجيل الدخول إلى",
|
|
76
|
+
"LABEL_SIGNIN_ERROR": "خطأ في تسجيل الدخول",
|
|
77
|
+
"LABEL_PASSWORD": "كلمة المرور",
|
|
78
|
+
"LABEL_ERROR_EMAIL": "أدخل عنوان بريد إلكتروني صالح.",
|
|
79
|
+
"LABEL_ERROR_PASSWORD": "يجب أن تتكون كلمة المرور من 6 أحرف على الأقل.",
|
|
80
|
+
"LABEL_LOGIN": "تسجيل الدخول",
|
|
81
|
+
"LABEL_LOGOUT": "تسجيل خروج",
|
|
82
|
+
"LABEL_WELCOME_TO": "مرحبا بك في",
|
|
83
|
+
"LABEL_SIGNUP": "اشتراك",
|
|
84
|
+
"LABEL_ALREDY_HAVE_AN_ACCOUNT": "هل لديك حساب؟",
|
|
85
|
+
"LABEL_DONT_HAVE_AN_ACCOUNT_YET": "لا تملك حسابا حتى الآن؟",
|
|
86
|
+
"LABEL_FORGOT_YOUR_PASSWORD": "نسيت رقمك السري؟",
|
|
87
|
+
"LABEL_CLICK_HERE": "انقر هنا",
|
|
88
|
+
"LABEL_REGISTRATION": "تسجيل",
|
|
89
|
+
"LABEL_PLACEHOLDER_EMAIL": "بريدك الالكتروني",
|
|
90
|
+
"LABEL_PLACEHOLDER_PASSWORD": "كلمة السر خاصتك",
|
|
91
|
+
"LABEL_PLACEHOLDER_NAME": "اسمك",
|
|
92
|
+
"LABEL_PLACEHOLDER_LAST_NAME": "اسمك الاخير",
|
|
93
|
+
"LABEL_LAST_NAME": "الكنية",
|
|
94
|
+
"LABEL_FIELD_NOT_EMPTY": "لا يمكن أن يكون الحقل فارغًا.",
|
|
95
|
+
"LABEL_NEW_PASSWORD": "أنشئ كلمة مرور جديدة",
|
|
96
|
+
"LABEL_CLOSED": "مغلق",
|
|
97
|
+
"LABEL_INFO": "معلومات",
|
|
98
|
+
"ALERT_NOTIFICATION": "تحذير: إرسال الإخطارات معطل ، يغير إعدادات المتصفح للسماح بإرسال الإشعارات.",
|
|
99
|
+
"LABEL_EXTERNAL_ID": "معرف خارجي",
|
|
100
|
+
"LABEL_IAT": "إيات",
|
|
101
|
+
"LABEL_REQUEST_DETAIL": "طلب التفاصيل",
|
|
102
|
+
"LABEL_ENTER_MSG": "أدخل رسالة أو اضغط على / للردود الجاهزة",
|
|
103
|
+
"LABEL_ENTER_MSG_SHORT": "أدخل رسالة",
|
|
104
|
+
"LABEL_ENTER_MSG_SHORTER": "يدخل...",
|
|
105
|
+
"LABEL_MSG_LOGIN_TILEDESK": "اذهب إلى تسجيل الدخول لبدء الدردشة",
|
|
106
|
+
"LABEL_ARCHIVED": "مؤرشف",
|
|
107
|
+
"LABEL_INFO_CONVERSATION": "محادثة معلومات",
|
|
108
|
+
"LABEL_INFO_USER": "مستخدم المعلومات",
|
|
109
|
+
"LABEL_IS_WRITING": "الكتابة",
|
|
110
|
+
"LABEL_VERSION": "الإصدار",
|
|
111
|
+
"LABEL_CONTACTS": "جهات الاتصال",
|
|
112
|
+
"LABEL_PLACEHOLDER": "اكتب رسالتك ..",
|
|
113
|
+
"LABEL_START_NW_CONV": "محادثة جديدة",
|
|
114
|
+
"LABEL_FIRST_MSG": "صِف مشكلتك بعد قليل ، وسيتواصل معك أحد الوكلاء.",
|
|
115
|
+
"LABEL_FIRST_MSG_NO_AGENTS": "🤔 جميع المشغلين غير متصلين في الوقت الحالي. يمكنك على أي حال وصف مشكلتك. سيتم تعيينه لفريق الدعم الذي سيرد عليك في أقرب وقت ممكن.",
|
|
116
|
+
"LABEL_SELECT_TOPIC": "اختر عنوانا",
|
|
117
|
+
"LABEL_COMPLETE_FORM": "أكمل النموذج لبدء محادثة مع الوكيل المتاح التالي.",
|
|
118
|
+
"LABEL_FIELD_NAME": "اسم",
|
|
119
|
+
"LABEL_ERROR_FIELD_NAME": "حقل مطلوب (بحد أدنى 5 أحرف).",
|
|
120
|
+
"LABEL_FIELD_EMAIL": "بريد الالكتروني",
|
|
121
|
+
"LABEL_ERROR_FIELD_EMAIL": "أدخل عنوان بريد إلكتروني صالح.",
|
|
122
|
+
"LABEL_WRITING": "يكتب...",
|
|
123
|
+
"AGENT_NOT_AVAILABLE": " غير متصل على الانترنت",
|
|
124
|
+
"AGENT_AVAILABLE": " متصل",
|
|
125
|
+
"GUEST_LABEL": "زائر",
|
|
126
|
+
"ALL_AGENTS_OFFLINE_LABEL": "جميع المشغلين غير متصلون في الوقت الحالي",
|
|
127
|
+
"LABEL_LOADING": "جار التحميل...",
|
|
128
|
+
"CALLOUT_TITLE_PLACEHOLDER": "تحتاج مساعدة؟",
|
|
129
|
+
"CALLOUT_MSG_PLACEHOLDER": "انقر هنا وابدأ الدردشة معنا!",
|
|
130
|
+
"CUSTOMER_SATISFACTION": "رضا العملاء",
|
|
131
|
+
"YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE": "رأيك في خدمة العملاء لدينا",
|
|
132
|
+
"DOWNLOAD_TRANSCRIPT": "تنزيل النص",
|
|
133
|
+
"BACK": "عودة",
|
|
134
|
+
"YOUR_RATING": "تقييمك",
|
|
135
|
+
"WRITE_YOUR_OPINION": "أكتب رأيك ... (اختياري)",
|
|
136
|
+
"SUBMIT": "إرسال",
|
|
137
|
+
"THANK_YOU_FOR_YOUR_EVALUATION": "شكرا لتقييمك",
|
|
138
|
+
"YOUR_RATING_HAS_BEEN_RECEIVED": "لقد تم استلام تقييمك",
|
|
139
|
+
"ALERT_LEAVE_CHAT": "هل تريد مغادرة الدردشة؟",
|
|
140
|
+
"YES": "نعم",
|
|
141
|
+
"NO": "رقم",
|
|
142
|
+
"BUTTON_CLOSE_TO_ICON": "تصغير الدردشة",
|
|
143
|
+
"BUTTON_EDIT_PROFILE": "تحديث الملف",
|
|
144
|
+
"RATE_CHAT": "معدل الدردشة",
|
|
145
|
+
"WELLCOME_TITLE": "مرحبًا ، مرحبًا بك في Tiledesk 👋",
|
|
146
|
+
"WELLCOME_MSG": "كيف يمكن أن نساعد؟",
|
|
147
|
+
"WELLCOME": "مرحبا",
|
|
148
|
+
"OPTIONS": "والخيارات",
|
|
149
|
+
"SOUND_OFF": "الصوت مقفل",
|
|
150
|
+
"SOUND_ON": "الصوت مفعل",
|
|
151
|
+
"LOGOUT": "تسجيل خروج",
|
|
152
|
+
"CLOSE": "أغلق",
|
|
153
|
+
"PREV_CONVERSATIONS": "محادثاتك",
|
|
154
|
+
"YOU": "أنت",
|
|
155
|
+
"SHOW_ALL_CONV": "عرض الكل",
|
|
156
|
+
"START_A_CONVERSATION": "بدء محادثة",
|
|
157
|
+
"NO_CONVERSATION": "لا محادثة",
|
|
158
|
+
"SEE_PREVIOUS": "انظر السابق",
|
|
159
|
+
"WAITING_TIME_FOUND": "يرد الفريق عادةً بـ $reply_time",
|
|
160
|
+
"WAITING_TIME_NOT_FOUND": "سيقوم الفريق بالرد في أقرب وقت ممكن",
|
|
161
|
+
"CLOSED": "مغلق",
|
|
162
|
+
"PleaseSelectChatToStartMessaging": "الرجاء تحديد دردشة لبدء المراسلة",
|
|
163
|
+
"FromThisAreNew": "------------------",
|
|
164
|
+
"Preview": "معاينة",
|
|
165
|
+
"AddACaption": "إضافة تسمية توضيحية",
|
|
166
|
+
"AnErrorOccurredWhileUnsubscribingFromNotifications": "عفواً! حدث خطأ أثناء إلغاء الاشتراك من الإشعارات",
|
|
167
|
+
"SIGNIN_ERROR_USER_NOT_FOUND": "المصادقة فشلت. المستخدم ليس موجود.",
|
|
168
|
+
"SIGNIN_ERROR_USER_WRONG_PSW": "المصادقة فشلت. كلمة مرور خاطئة.",
|
|
169
|
+
"Email is required": "البريد الالكتروني مطلوب.",
|
|
170
|
+
"Email must be a valid email": "يجب أن يكون البريد الإلكتروني بريدًا إلكترونيًا صالحًا.",
|
|
171
|
+
"Password is required": "كلمة المرور مطلوبة.",
|
|
172
|
+
"Password must be at least 6 characters long": "الرقم السري يجب الا يقل عن 6 احرف على الاقل.",
|
|
173
|
+
"UPLOAD_FILE_ERROR": "حدث خطأ غير متوقع أثناء تحميل الملف",
|
|
174
|
+
"DROP_IMAGE_HERE_TO_SEND_IT": "أفلت الصورة هنا لإرسالها",
|
|
175
|
+
"ONLY_IMAGE_FILES_ARE_ALLOWED_TO_PASTE": "يُسمح فقط بلصق ملفات الصور والنصوص",
|
|
176
|
+
"FAILED_TO_UPLOAD_THE_FORMAT_IS_NOT_SUPPORTED": "فشل التحميل: التنسيق غير مدعوم",
|
|
177
|
+
"SENT_AN_IMAGE": "أرسل صورة",
|
|
178
|
+
"SENT_AN_ATTACHMENT": "أرسل مرفقًا",
|
|
179
|
+
"NO_INFORMATION_AVAILABLE": "لا توجد معلومات متاحة",
|
|
180
|
+
"CONTACT_ID": "معرف جهة الاتصال",
|
|
181
|
+
"USER_ID": "معرف المستخدم",
|
|
182
|
+
"CLOSE_TOAST": "قريب",
|
|
183
|
+
"WAITING_FOR_NETWORK": "في انتظار الشبكة",
|
|
184
|
+
"Available": "متوفرة",
|
|
185
|
+
"Unavailable": "غير متوفره",
|
|
186
|
+
"Busy": "مشغول",
|
|
187
|
+
"YouAreAboutToJoinThisChat": "أنت على وشك الانضمام إلى هذه الدردشة",
|
|
188
|
+
"Cancel": "يلغي",
|
|
189
|
+
"AreYouSure": "هل أنت متأكد؟",
|
|
190
|
+
"UnassignedConversations": "المحادثات غير المعينة",
|
|
191
|
+
"NewConversations": "محادثات جديدة",
|
|
192
|
+
"UPLOAD": "تحميل",
|
|
193
|
+
"CANNED_RESPONSES": "الردود الجاهزة",
|
|
194
|
+
"NO_CANNED_RESPONSES": "لا توجد ردود جاهزة",
|
|
195
|
+
"THERE_ARE_NO_CANNED_RESPONSES_AVAILABLE": "لا توجد ردود جاهزة متاحة",
|
|
196
|
+
"TO_CREATE_THEM_GO_TO_THE_PROJECT": "لإنشائها ، انتقل إلى المشروع (يمكنك النقر فوق اسم المشروع المتاح في الشريط الجانبي الأيمن) وتحت عنصر القائمة \"الإعدادات\" في الشريط الجانبي للوحة التحكم ، انقر فوق \"الردود الجاهزة\" ثم على الزر \"إنشاء رد\"",
|
|
197
|
+
"YES_CANNED_RESPONSES": "عرض الردود الجاهزة بالنقر فوق الزر ⚡️ أو عن طريق كتابة / في منطقة النص ، يمكنك أيضًا تصفية القائمة عن طريق الكتابة بعد /",
|
|
198
|
+
"VIEW_ALL_CONVERSATIONS": "عرض جميع المحادثات",
|
|
199
|
+
"CONVERSATIONS_IN_QUEUE": "المحادثات في قائمة الانتظار ، اختر واحدة",
|
|
200
|
+
"CONVERSATION_IN_QUEUE": "محادثة في قائمة الانتظار ، اخترها",
|
|
201
|
+
"NO_CONVERSATION_IN_QUEUE": "لا محادثة في قائمة الانتظار",
|
|
202
|
+
"PIN_A_PROJECT": "تثبيت مشروع",
|
|
203
|
+
"PINNED_PROJECT": "مشروع مثبت",
|
|
204
|
+
"CHANGE_PINNED_PROJECT": "تغيير المشروع المثبت",
|
|
205
|
+
"CHANGE_TO_AVAILABLE_UNAVAILABLE": "التغيير إلى متاح / غير متاح",
|
|
206
|
+
"CHANGE_TO_YOUR_STATUS_TO_AVAILABLE": "تغيير حالتك إلى متاح",
|
|
207
|
+
"CHANGE_TO_YOUR_STATUS_TO_UNAVAILABLE": "تغيير حالتك إلى غير متوفر",
|
|
208
|
+
"ALL_CONVS_SERVED": "هل تم تقديم جميع المحادثات؟ أحسنت!",
|
|
209
|
+
"PaydPlanName": "{{projectprofile}} خطة",
|
|
210
|
+
"PaydPlanNamePro": "خطة احترافية",
|
|
211
|
+
"PaydPlanNameEnterprise": "خطة المؤسسة",
|
|
212
|
+
"ProPlanTrial": "خطة Pro (نسخة تجريبية)",
|
|
213
|
+
"FreePlan": "خطة مجانية",
|
|
214
|
+
"SubscriptionPaymentProblem": "مشكلة دفع الاشتراك",
|
|
215
|
+
"ThePlanHasExpired": "انتهت صلاحية الخطة",
|
|
216
|
+
"owner": "صاحب",
|
|
217
|
+
"admin": "مدير",
|
|
218
|
+
"agent": "وكيل",
|
|
219
|
+
"Conversations": "المحادثات",
|
|
220
|
+
"Apps": "تطبيقات",
|
|
221
|
+
"Analytics": "تحليلات",
|
|
222
|
+
"Activities": "أنشطة",
|
|
223
|
+
"History": "تاريخ",
|
|
224
|
+
"Settings": "إعدادات",
|
|
225
|
+
"Resolve": "حل",
|
|
226
|
+
"Archive": "أرشيف",
|
|
227
|
+
"ActionNotAllowed": "الإجراء غير مسموح به",
|
|
228
|
+
"YouAreNoLongerAmongTheTeammatesManagingThisConversation": "لم تعد من بين زملائك في الفريق الذين يديرون هذه المحادثة",
|
|
229
|
+
"TicketSuccessfullyCreated":"تم إنشاء التذكرة بنجاح",
|
|
230
|
+
"Continue":"استمر",
|
|
231
|
+
"ViewArchivedConversations":"المحادثات المؤرشفة",
|
|
232
|
+
"ViewContactsList":"قائمة جهات الاتصال",
|
|
233
|
+
"AddAsCannedResponse":"إضافة كإجابة جاهزة",
|
|
234
|
+
"AddNewCannedResponse":"إضافة رد جاهز جديد",
|
|
235
|
+
"TitleIsRequired":"العنوان مطلوب",
|
|
236
|
+
"MessageIsRequired":"الرسالة مطلوبة",
|
|
237
|
+
"Already_present_in_the_dashboard_json":"........",
|
|
238
|
+
"CreateTicket": "إنشاء تذكرة",
|
|
239
|
+
"Requester": "مقدم الطلب",
|
|
240
|
+
"ViewRequesterDetails": "عرض تفاصيل مقدم الطلب",
|
|
241
|
+
"Priority": "أولوية",
|
|
242
|
+
"urgent": "العاجلة",
|
|
243
|
+
"high": "عالٍ",
|
|
244
|
+
"medium": "متوسطة",
|
|
245
|
+
"low": "منخفض",
|
|
246
|
+
"SelectRequester": "حدد مقدم الطلب",
|
|
247
|
+
"AddRequester": "إضافة مقدم الطلب",
|
|
248
|
+
"Subject": "المادة",
|
|
249
|
+
"SelectAssignee": "حدد المحال إليه",
|
|
250
|
+
"Message": "رسالة",
|
|
251
|
+
"CreateNewRequester": "إنشاء متقدم جديد",
|
|
252
|
+
"Name": "الاسم",
|
|
253
|
+
"NameIsRequired": "مطلوب اسم",
|
|
254
|
+
"EnterValidEmail": "أدخل عنوان بريد إلكتروني صالح",
|
|
255
|
+
"Title": "عنوان",
|
|
256
|
+
"Add": "يضيف",
|
|
257
|
+
"AddCustomization": "أضف التخصيص",
|
|
258
|
+
"SelectACustomizationToAddToYourMessage": "حدد قيمة التخصيص لإضافتها إلى الرسالة",
|
|
259
|
+
"recipient_name_desc": "ستتم إضافة الاسم الأول للشخص الذي يرد عليه الوكيل إلى الرسالة.",
|
|
260
|
+
"agent_name_desc": "سيتم إضافة اسم الوكيل الذي يقوم بالرد على الرسالة.",
|
|
261
|
+
"First_name_of_recipient": "الاسم الأول للمستلم",
|
|
262
|
+
"First_name_of_agent": "الاسم الأول للوكيل",
|
|
263
|
+
"EnterCannedResponseTitle": "أدخل عنوان الرد الجاهز",
|
|
264
|
+
"WriteMsgToSendToYourVisitors": "اكتب رسالة رد جاهزة لإرسالها إلى الزائرين",
|
|
265
|
+
"EditProfile": "تعديل الملف الشخصي"
|
|
266
|
+
}
|