diff --git a/_locales/ar/messages.json b/_locales/ar/messages.json index d9317939..e42dd44e 100644 --- a/_locales/ar/messages.json +++ b/_locales/ar/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "الرسائل الأصلية موجودة, اسحب للأعلى لتحميلها.", "recording": "تسجيل", "you": "انت", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BCHat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "صوت", "video": "فيديو", "photo": "صورة", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "صيغة المفتاح خاطئة", "emptyGroupNameError": "اكتب اسم المجموعة من فضلك", "editProfileModalTitle": "الملف الشخصي", + "linkYourBns": "ربط Bns الخاص بك", + "readMoreAboutBNS": "إقرأ المزيد عن BNS", + "bnsVerified": "تم التحقق من BNS ", + "linkBNS": "وصلة BNS", + "bnsName": "اسم BNS", + "enterBnsName": "اكتب اسم BNS", + "verify": "يؤكد", + "verified": "تم التحقق", + "link": "وصلة", + "bnsLinkedSuccessfully": "BNS تم ربطها بنجاح", "groupNamePlaceholder": "اسم المجموعة", "inviteContacts": "أُدعوا المتصلين", "addModerators": "أضِف مديرين", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "معطل", "notificationForConvo_mentions_only": "فقط عندما يتم ذكر اسم", "onionPathIndicatorTitle": "مسار", - "onionPathIndicatorDescription": "يقوم BChat باخفاء عنوانك IP بتمرير الرسائل عبر عدة خوادم في الشبكة اللامركزية. هذه هي الدول التي يمر عبرها اتصالك:", + "onionPathIndicatorDescription": "يقوم BChat باخفاء عنوانك IP بتمرير الرسائل عبر عدة خوادم في الشبكة اللامركزية. هذه هي الدول التي يمر عبرها اتصالك", "unknownCountry": "بلد مجهول", "device": "جهاز", "destination": "الوجهة", @@ -464,6 +474,11 @@ "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", - "bns":"Bns", - "paymentID":"Payment ID" -} + "bns": "Bns", + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" +} \ No newline at end of file diff --git a/_locales/bg/messages.json b/_locales/bg/messages.json index 01d78792..a0228e46 100644 --- a/_locales/bg/messages.json +++ b/_locales/bg/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Исходное сообщение найдено, но не загружено. Прокрутите вверх, чтобы загрузить его.", "recording": "Recording", "you": "Вы", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Для отправки аудиосообщений разрешите BChat доступ к микрофону.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Аудио", "video": "Видео", "photo": "Фото", @@ -319,6 +319,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Пожалуйста, введите название группы", "editProfileModalTitle": "Аккаунт", + "linkYourBns": "Свържете вашите Bns", + "readMoreAboutBNS": "Прочетете повече за BNS", + "bnsVerified": "BNS Проверен", + "linkBNS": "Линк BNS", + "bnsName": "Име на BNS", + "enterBnsName": "Въведете BNS име", + "verify": "проверявам", + "verified": "Проверен", + "link": "Връзка", + "bnsLinkedSuccessfully": "BNS е свързан успешно", "groupNamePlaceholder": "Название Группы", "inviteContacts": "Пригласить Друзей В BChat", "addModerators": "Add Moderators", @@ -351,7 +361,7 @@ "linkDevice": "Привязать устройство", "restoreUsingRecoveryPhrase": "Восстановите свой аккаунт", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "Новый Диалог", @@ -397,12 +407,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in Beldex decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in Beldex decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -449,7 +459,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -460,11 +470,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/ca/messages.json b/_locales/ca/messages.json index 717466a3..9aa893db 100644 --- a/_locales/ca/messages.json +++ b/_locales/ca/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "S'ha trobat el missatge original, però no s'ha carregat. Desplaceu-vos amunt per a carregar-lo.", "recording": "S'està gravant", "you": "Vós", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Per enviar missatges d'àudio, permeteu que el BChat Desktop tingui accés al micròfon.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Àudio", "video": "Vídeo", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "El format Pubkey no és vàlid", "emptyGroupNameError": "Introdueix nom de grup, si us plau", "editProfileModalTitle": "Perfil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nom del grup", "inviteContacts": "Convida contactes", "addModerators": "Afegir Moderador(s)", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Inhabilitat", "notificationForConvo_mentions_only": "Només mencions", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/cs/messages.json b/_locales/cs/messages.json index de17b97d..a0438555 100644 --- a/_locales/cs/messages.json +++ b/_locales/cs/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Původní zpráva byla nalezena, ale nebyla načtena. Posuňte nahoru pro načtení.", "recording": "Recording", "you": "Vy", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Pro posílání audio zpráv potřebuje BChat Desktop přístup k mikrofonu.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Zvuk", "video": "Video", "photo": "Fotografie", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/da/messages.json b/_locales/da/messages.json index 748136b0..5eba226b 100644 --- a/_locales/da/messages.json +++ b/_locales/da/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original besked fundet, men ikke indlæst. Rul op for at indlæse den.", "recording": "Optagelse", "you": "Dig", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "For at sende talebeskeder skal du lade BChat Desktop få adgang til din mikrofon.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Lyd", "video": "Video", "photo": "Billede", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,15 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/de/messages.json b/_locales/de/messages.json index 17f6344c..b2e1efb6 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Originalnachricht gefunden, aber nicht geladen. Scrolle zum Laden nach oben.", "recording": "Aufnahme", "you": "Du", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Erlaube BChat zum Versenden von Sprachnachrichten Zugriff auf dein Mikrofon.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Ungültiges Pubkey Format", "emptyGroupNameError": "Bitte geben Sie einen Gruppennamen ein.", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Gruppenname", "inviteContacts": "Freunde Einladen", "addModerators": "Moderator hinzufügen", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Deaktiviert", "notificationForConvo_mentions_only": "Nur Erwähnungen", "onionPathIndicatorTitle": "Pfad", - "onionPathIndicatorDescription": "BChat verbirgt deine IP-Adresse, indem deine Nachrichten über mehrere Dienstknoten im dezentralen BChat-Netzwerk weitergeleitet werden. Dies sind die Länder, durch die deine Verbindung derzeit weitergeleitet wird:", + "onionPathIndicatorDescription": "BChat verbirgt deine IP-Adresse, indem deine Nachrichten über mehrere Dienstknoten im dezentralen BChat-Netzwerk weitergeleitet werden. Dies sind die Länder, durch die deine Verbindung derzeit weitergeleitet wird", "unknownCountry": "Unbekanntes Land", "device": "Gerät", "destination": "Zielort", @@ -465,5 +475,10 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/el/messages.json b/_locales/el/messages.json index e5c832db..32ac12d7 100644 --- a/_locales/el/messages.json +++ b/_locales/el/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Το αρχικό μήνυμα βρέθηκε, αλλά δεν φορτώθηκε. Μετακινηθείτε προς τα επάνω για να το φορτώσετε.", "recording": "Recording", "you": "Εσείς", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Για να στείλετε μηνύματα ήχου, επιτρέψτε στο BChat Desktop να έχει πρόσβαση στο μικρόφωνό σας.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Ήχος", "video": "Βίντεο", "photo": "Φωτογραφία ", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 863f6d78..5888f1da 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3,12 +3,12 @@ "priority": "Priority", "contact": "Contact", "address": "Address", - "notes": "Notes (optional)", + "notes": "Notes", "optional": "(optional)", "transactions": "Transactions", "filter": "Filter", "filterPlaceHolder": "Enter ID or amount", - "disclaimerForgotPassword":"When you used this forgot password option, your wallet will sync from the block height $daemonHeight$. This is the block height at which your wallet was created", + "disclaimerForgotPassword": "When you used this forgot password option, your wallet will sync from the block height $daemonHeight$. This is the block height at which your wallet was created", "addressBook": "Address Book", "copyErrorAndQuit": "Copy error and quit", "copyAddress": "Copy Address", @@ -35,11 +35,11 @@ "unknown": "Unknown", "receiveBDX": "Receive BDX", "hintReceiveBDX": "Enter amount to generate a QR and receive BDX", - "enterWalletPassword": "Enter Wallet Password", + "enterWalletPassword": "Wallet Password", "forgotPassword": "Forgot Password", "databaseError": "Database Error", "resetDatabase": "Reset Database", - "transactionInitiated":"Transaction Initiated Successfully", + "transactionInitiated": "Transaction Initiated Successfully", "mainMenuFile": "&File", "mainMenuEdit": "&Edit", "mainMenuView": "&View", @@ -54,9 +54,8 @@ "editMenuCut": "Cut", "editMenuCopy": "Copy", "editMenuPaste": "Paste", - "wallet":"Wallet", - "walletNode":"Wallet Node", - + "wallet": "Wallet", + "walletNode": "Wallet Node", "editMenuDeleteContact": "Delete Contact", "editMenuDeleteGroup": "Delete Group", "editMenuSelectAll": "Select all", @@ -74,7 +73,7 @@ "joinSocialGroupAfterInvitationConfirmationDesc": "Are you sure you want to join the $roomName$ social group?", "enterBchatIDOrBNSName": "Enter BChat ID", "BchatID": "BChat ID", - "scanQr": "Scan QR Code", + "scanQr": "Scan QR to start the Chat", "emptyChatScreen": "Much empty. Such wow.

Get some friends to BChat!", "profileBeldexAddres": "Beldex Address", "loading": "Loading...", @@ -124,12 +123,12 @@ "originalMessageNotFound": "Original message not found", "you": "You", "audioPermissionNeededTitle": "Microphone Access Required", - "audioPermissionNeeded": "You can enable microphone access permission in the Privacy Settings", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", "cannotUpdate": "Cannot Update", - "localDeamonheadetcntent":"Wallet will connect to a local node to make all transactions", + "localDeamonheadetcntent": "Wallet will connect to a local node to make all transactions", "cannotUpdateDetail": "BChat Desktop failed to update, but there is a new version available. Please go to https://bchat.beldex.io/ and install the new version manually, then either contact support or file a bug about this problem.", "ok": "OK", "cancel": "Cancel", @@ -141,7 +140,6 @@ "deleteJustForMe": "Delete message for me", "deleteForEveryone": "Delete for everyone", "deleteMessagesQuestion": "This will permanently delete the selected $count$ messages.", - "deleteMessageQuestion": "This will permanently delete the selected messages.", "deleteMessages": "Delete Messages", "deleted": "$count$ deleted", @@ -149,7 +147,7 @@ "from": "From:", "to": "To:", "send": "Send", - "sent":"Sent", + "sent": "Sent", "received": "Receive", "pending": "Pending", "failed": "Failed", @@ -158,23 +156,23 @@ "mnode": "Mnode", "gov": "Gov", "stake": "Stake", - "sendMessage": "Write a message...", + "sendMessage": "Type a message...", "groupMembers": "Group Members", "moreInformation": "More Info", "resend": "Resend", "recipientAddress": "Recipient address", "transactionFee": "Transaction fee", - "paymentID":"Payment ID", + "paymentID": "Payment ID", "dateTime": "Date & Time", - "enterSeed":"Enter Seed", + "enterSeed": "Enter your recover seed", "deleteConversationConfirmation": "Permanently delete the messages in this conversation?", "clearAllData": "Clear Data", "deleteAccountWarning": "This will permanently erase all your account data. Do you wish to clear data on this device or completely earse your account?", "deleteContactConfirmation": "Are you sure you want to delete this conversation?", "quoteThumbnailAlt": "Thumbnail of image from quoted message", - "almostThere":"Almost there..", - "walletSyncingNow":"Your wallet is syncing now", - "blocksRemaining":"Blocks remaining..", + "almostThere": "Almost there..", + "walletSyncingNow": "Your wallet is syncing now", + "blocksRemaining": "Blocks remaining..", "imageAttachmentAlt": "Image attached to message", "videoAttachmentAlt": "Screenshot of video attached to message", "lightboxImageAlt": "Image sent in conversation", @@ -186,7 +184,6 @@ "saveLogToDesktop": "Save log to desktop", "saved": "Saved", "connectWallet": "Connect Wallet", - "tookAScreenshot": "$name$ took a screenshot", "savedTheFile": "Media saved by $name$", "linkPreviewsTitle": "Enable Link Previews", @@ -202,21 +199,21 @@ "typingIndicatorsSettingTitle": "Typing Indicators", "typingIndicatorsSettingDescription": "Enabling this option will allow the recipient to see that a message is being typed (applied to all chats).", "zoomFactorSettingTitle": "Zoom Level", - "chatFontSize":"Chat Font Size", + "chatFontSize": "Font Size", "pruneSettingTitle": "Shear Old Social Group Messages", "pruneSettingDescription": "Enabling this option will cut back messages that are older than 6 months.", "pruningSocialgroupDialogTitle": "social group pruning", "pruningSocialgroupDialogMessage": "Pruning old social group messages improves performance. Enable pruning for social group messages older than 6 months?", "pruningSocialgroupDialogSubMessage": "You can change this setting in the BChat settings menu", "enable": "Enable", - "payYouChat":"Pay As You Chat", - "EnablepaySettingsChat":"Enable pay as you chat from Settings -> Chat -> Pay As You Chat to use this option", - "warningWalletPassword":"When you enable 'Pay As You Chat,' you will see a 'connect wallet' option at the top of the chat window.", - "chatWithWallet":"Pay As You Chat", - "chatWithWalletDisc":"You will be able to pay BDX as you chat, when this option is enabled", + "payYouChat": "Pay As You Chat", + "EnablepaySettingsChat": "Enable pay as you chat from Settings -> Chat -> Pay As You Chat to use this option", + "warningWalletPassword": "When you enable 'Pay As You Chat,' you will see a 'connect wallet' option at the top of the chat window.", + "chatWithWallet": "Pay As You Chat", + "chatWithWalletDisc": "You will be able to pay BDX as you chat, when this option is enabled", "keepDisabled": "Keep disabled", - "typing":"typing", - "notificationPreview":"Preview", + "typing": "typing", + "notificationPreview": "Preview", "notificationSettingsDialog": "Notification content", "disableNotifications": "Mute notifications", "nameAndMessage": "Name and content", @@ -229,7 +226,7 @@ "notificationMostRecent": "Most recent:", "sendFailed": "Send Failed", "mediaMessage": "Media message", - "notificationSound":"Notification sound", + "notificationSound": "Notification sound", "messageBody": "Message body", "messageBodyMissing": "Please enter a text or attach files to send.", "unblockToSend": "Unblock this contact to send a message.", @@ -238,17 +235,17 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", - "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", - "timerOption_1_hour": "1 hour", - "timerOption_6_hours": "6 hours", - "timerOption_12_hours": "12 hours", - "timerOption_1_day": "1 day", - "timerOption_1_week": "1 week", + "timerOption_5_seconds": "5 Sec", + "timerOption_10_seconds": "10 Sec", + "timerOption_30_seconds": "30 Sec", + "timerOption_1_minute": "1 Min", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", + "timerOption_1_hour": "1 Hour", + "timerOption_6_hours": "6 Hours", + "timerOption_12_hours": "12 Hours", + "timerOption_1_day": "1 Day", + "timerOption_1_week": "1 Week", "transactionDetails": "Transaction Details", "disappearingMessages": "Disappearing Messages", "changeNickname": "Change Nickname", @@ -274,12 +271,11 @@ "noteToSelf": "Note to Self", "hideMenuBarTitle": "Hide Menu Bar", "hideMenuBarDescription": "Toggle system menu bar visibility", - "startConversation": "Start New Chat", + "startConversation": "Start a New Chat", "shareBchatIdDiscription": "Enter your friend's BChat ID to connect with them.", "invalidNumberError": "Invalid BChat ID or BNS Name", "failedResolveOns": "Failed to resolve BNS name", "autoUpdateSettingTitle": "Auto Update", - "autoUpdateSettingDescription": "Enabling this will let BChat automatically check updates and notify you.", "autoUpdateNewVersionTitle": "BChat update available", "autoUpdateNewVersionMessage": "There is a new version of BChat available.", @@ -300,7 +296,7 @@ "multipleKickedFromTheGroup": "$name$ were removed from the group.", "blockUser": "Block", "unblockUser": "Unblock", - "unblockUserSelect":"Unblock Selected", + "unblockUserSelect": "Unblock Selected", "unblocked": "Unblocked", "blocked": "Blocked", "blockedSettingsTitle": "Blocked Contacts", @@ -335,19 +331,19 @@ "removeAccountPasswordDescription": "Remove the password associated with your account", "oldPasswordAndNewPasswordSame": "Please enter a password that you have not used before.", "removePasswordDisc": "Enter your password", - "enterPassword": "Enter your new password", - "confirmPassword": "Confirm your new password", + "enterPassword": "Enter wallet password", + "confirmPassword": "Confirm the password", "showRecoveryPhrasePasswordRequest": "Kindly enter your password ", "recoveryPhraseSavePromptMain": "Your recovery phrase is the master key to your BChat ID — you can use it to restore your BChat ID if you lose access to your device. Store your recovery phrase in a safe place, and don't give it to anyone.", "invalidSocialGroupUrl": "Invalid URL", "copiedToClipboard": "Copied to clipboard", "passwordViewTitle": "Type In Your Password", "unlock": "Unlock", - "password": "Password", + "password": "Enter Password", "setPassword": "Set Password", "changePassword": "Change Password", "removePassword": "Remove Password", - "changewalletPassword": "Change wallet Password", + "newwalletPassword": "New Wallet password", "maxPasswordAttempts": "Invalid Password. Would you like to reset the database?", "typeInOldPassword": "Please type in your old password", "invalidOldPassword": "Old password is invalid", @@ -376,7 +372,17 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", - "groupNamePlaceholder": "Secret Group", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", + "groupNamePlaceholder": "Enter group name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", "removeModerators": "Remove Moderators", @@ -389,7 +395,7 @@ "noModeratorsToRemove": "no moderators to remove", "onlyAdminCanRemoveMembers": "You are not the creator", "onlyAdminCanRemoveMembersDesc": "Only the creator of the group can remove users", - "createAccount": "Create account", + "createAccount": "Create Account", "startInTrayTitle": "Run In Background", "startInTrayDescription": "After closing the window, BChat runs in the background", "yourUniqueBchatID": "Say hello to your BChat ID", @@ -410,7 +416,7 @@ "saveYourRecoveryPhrase": "Save your recovery seed! Only your recovery seed can be used to recover your account on another device.", "copyToContinueRecovery": "Copy the recovery seed to continue.", "enterRecoveryPhrase": "Enter your recovery seed", - "displayName": "Pick your display name", + "displayName": "Display Name", "yourBchatName": "Your BChat ID is like your username. You can share it with your friends to begin a conversation.", "beldexAddress": "Beldex Address", "beldexAddressConnection": "Your BChat address is connected to your BChat ID. You can use this address to receive BDX.", @@ -423,15 +429,15 @@ "restore": "Restore", "restoreFromSeed": "Restore from seed", "invalidRestoreDate": "Invalid restore date", - "signIn": "Restore account", + "signIn": "Restore Account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Display Name", "welcome": "Hi,Welcome to BChat", - "chatId": "Chat Id", + "bChatID": "BChat ID", "newBchat": "New BChat", - "searchFor...": "Search people, messages and groups", + "searchFor...": "Search people and groups", "enterBchatID": "Enter a BChat ID or BNS Name", "enterBchatIDOfRecipient": "Enter BChat ID or BNS name of recipient", "usersCanShareTheir...": "Users can share their BChat ID by going into their account settings and tapping \"Share BChat ID\", or by sharing their QR code.", @@ -443,7 +449,7 @@ "displayNameEmpty": "Please enter a display name", "members": "$count$ members", "joinSocialGroup": "Join Social Group", - "newSecretGroup": "Create Secret Group", + "newSecretGroup": "Secret Group", "createSecretGroupNamePrompt": "Secret Group Name", "createSecretGroupPlaceholder": "Enter a Secret Group Name", "openSocialURL": "Social Group URL", @@ -456,7 +462,7 @@ "noBlockedContacts": "No blocked contacts Yet!", "userAddedToModerators": "User added to moderator list", "userRemovedFromModerators": "User removed from moderator list", - "orJoinOneOfThese": "Or join here.", + "orJoinOneOfThese": "or Join here", "noContactsYet": "No contacts yet!", "helpUsTranslateBchat": "Help us Translate BChat", "translation": "Translation", @@ -473,12 +479,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat masks your IP by routing your messages through the masternodes on the Beldex decentralized network. Your messages are currently being routed through nodes in the following countries:", + "onionPathIndicatorDescription": "BChat masks your IP by routing your messages through the masternodes on the Beldex decentralized network. Your messages are currently being routed through nodes in the following countries", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -525,8 +531,8 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", - "callMissedTitle": "Call missed", + "callMissed": "Missed call", + "callMissedTitle": "Call Missed!", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", "noAudioOutputFound": "No audio output found", @@ -535,8 +541,8 @@ "callMissedNotApproved": "Call missed from '$name$' as you haven't approved this conversation yet. Send a message to them first.", "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", @@ -565,15 +571,22 @@ "seedFieldEmpty": "Seed field cannot be empty", "notEnoughBalance": "Not enough unlocked balance", "emptyAddressBook": "No addresses in book", - "emptyContact": "There are no contacts", + "emptyContact": "No Contacts to show!", "emptyTransaction": "No Transactions yet!", "emptyTransactionDiscription": "After your first transaction, you will be able to view it here.", "noPendingTransaction": "There are no pending transactions ", "noOutgoingTransaction": "There are no outgoing transactions.", "noIncomingTransaction": "There are no incoming transactions.", "noFailedTransaction": "There are no failed transactions ", - "walletSyncingDiscription": "Your wallet is currently syncing", - "searchEmptyTransaction":"No transactions found.", - "NodeTestResult":"Test Result", - "bns":"Bns" -} + "walletSyncingDiscription": "Please wait while wallet getting synced", + "searchEmptyTransaction": "No transactions found.", + "NodeTestResult": "Test Result", + "bns": "Bns", + "bnsNameAndIDNotMatch": "Your BNS name and ID does not match. Try again", + "bnsNameverified": "Your BNS name is verified", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" +} \ No newline at end of file diff --git a/_locales/eo/messages.json b/_locales/eo/messages.json index befb42e7..b2f0f45d 100644 --- a/_locales/eo/messages.json +++ b/_locales/eo/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Origina mesaĝo trovebla sed ne ŝargita. Rulumu supren por ŝargi ĝin.", "recording": "Recording", "you": "Vi", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Por sendi aŭdajn mesaĝojn, donu al BChat Desktop permeson uzi vian mikrofonon.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Sono", "video": "Videaĵo", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/es/messages.json b/_locales/es/messages.json index ececf152..1e444bed 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Se ha encontrado el mensaje original pero no se ha cargado. Desliza para cargar el mensaje.", "recording": "Grabando", "you": "Tú", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Para enviar notas de voz y hacer llamadas, permite a BChat acceder al micrófono.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Vídeo", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Formato de Clave Pública inválido", "emptyGroupNameError": "Por favor, ingresa un nombre de grupo", "editProfileModalTitle": "Perfil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nombre Del Grupo", "inviteContacts": "Invitar Amigos", "addModerators": "Añadir Moderadores", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Desactivado", "notificationForConvo_mentions_only": "Solo menciones", "onionPathIndicatorTitle": "Ruta", - "onionPathIndicatorDescription": "BChat esconde tu IP haciendo pasar tus mensajes a través de los Nodos de servicio de la red descentralizada de BChat. Estos son los países par los que tus mensajes están viajando actualmente:", + "onionPathIndicatorDescription": "BChat esconde tu IP haciendo pasar tus mensajes a través de los Nodos de servicio de la red descentralizada de BChat. Estos son los países par los que tus mensajes están viajando actualmente", "unknownCountry": "País desconocido", "device": "Dispositivo", "destination": "Destinatario", @@ -465,5 +475,10 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/es_419/messages.json b/_locales/es_419/messages.json index 11103837..5779ed4d 100644 --- a/_locales/es_419/messages.json +++ b/_locales/es_419/messages.json @@ -70,7 +70,7 @@ "unableToLoadAttachment": "Sorry, there was an error setting your attachment.", "offline": "Offline", "checkNetworkConnection": "Check your network connection.", - "attemptingReconnection": "Attempting reconnect in $reconnect_duration_in_seconds$ seconds", + "attemptingReconnection": "Attempting reconnect in $reconnect_duration_in_seconds$ sec", "submitDebugLog": "Registro de depuración", "debugLog": "Registro de Depuración", "showDebugLog": "Mostrar Registro de Depuración", @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "Tú", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/et/messages.json b/_locales/et/messages.json index cd2170ef..ae22d7be 100644 --- a/_locales/et/messages.json +++ b/_locales/et/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Algne sõnum on leitud, kuid mitte laaditud. Keri üles selle laadimiseks.", "recording": "Recording", "you": "Sina", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Audiosõnumite saatmiseks luba BChat Desktopil mikrofoni kasutada.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/fa/messages.json b/_locales/fa/messages.json index 8fc839a0..110fe66a 100644 --- a/_locales/fa/messages.json +++ b/_locales/fa/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "پیام اصلی پیدا شد، اما بارگذاری نشد. برای بارگذاری به سمت بالا حرکت کنید", "recording": "درحال ضبط", "you": "شما", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "برای فرستادن پیام های صوتی، به BChat Desktop اجازه دسترسی به میکروفون خود را بدهید.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "صوت", "video": "ویدیو", "photo": "تصویر", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "فرمت Pubkey نامعتبر", "emptyGroupNameError": "لطفا یک نام برای گروه وارد کنید", "editProfileModalTitle": "نمایه", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "نام گروه", "inviteContacts": "دعوت مخاطبین", "addModerators": "اضافه کردن مدیر", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "غیرفعال شده", "notificationForConvo_mentions_only": "فقط منشن شده ها", "onionPathIndicatorTitle": "مسیر", - "onionPathIndicatorDescription": "اپ BChat ‌آی‌پی شما را با استفاده از فرستادن پیام‌های‌تان از طریق چندین سرویسِ گره در شبکه غیرمتمرکز BChat مخفی می‌کند. اینها کشورهایی هستند که اتصال شما در حال حاضر از طریق آن فراخوانی می‌شوند:", + "onionPathIndicatorDescription": "اپ BChat ‌آی‌پی شما را با استفاده از فرستادن پیام‌های‌تان از طریق چندین سرویسِ گره در شبکه غیرمتمرکز BChat مخفی می‌کند. اینها کشورهایی هستند که اتصال شما در حال حاضر از طریق آن فراخوانی می‌شوند", "unknownCountry": "کشور ناشناخته", "device": "دستگاه", "destination": "مقصد", @@ -465,5 +475,10 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/fi/messages.json b/_locales/fi/messages.json index e63bb719..10cfa13e 100644 --- a/_locales/fi/messages.json +++ b/_locales/fi/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Alkuperäinen viesti löytyi, mutta sitä ei ole ladattu. Kelaa ylöspäin ladataksesi sen.", "recording": "Nauhoitetaan", "you": "Sinä", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Lähettääksesi ääniviestejä myönnä BChat Desktopille mikrofonin käyttöoikeus.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Äänitiedosto", "video": "Video", "photo": "Kuva", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Väärä julkisen avaimen muoto", "emptyGroupNameError": "Syötä ryhmän nimi", "editProfileModalTitle": "Profiili", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Ryhmän nimi", "inviteContacts": "Kutsu yhteystietoja", "addModerators": "Lisää valvojia", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Poistettu käytöstä", "notificationForConvo_mentions_only": "Vain maininnat", "onionPathIndicatorTitle": "Polku", - "onionPathIndicatorDescription": "BChat piilottaa IP -osoitteesi ohjaamalla viestisi useiden välittäjäreleiden läpi BChatin hajautetussa verkossa. Tässä ovat maat joiden kautta viestisi tällähetkellä kulkevat:", + "onionPathIndicatorDescription": "BChat piilottaa IP -osoitteesi ohjaamalla viestisi useiden välittäjäreleiden läpi BChatin hajautetussa verkossa. Tässä ovat maat joiden kautta viestisi tällähetkellä kulkevat", "unknownCountry": "Tuntematon maa/alue", "device": "Laite", "destination": "Kohde", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/fil/messages.json b/_locales/fil/messages.json index 6db7f408..0cf71947 100644 --- a/_locales/fil/messages.json +++ b/_locales/fil/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "You", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index c5d5eb74..1ecde22a 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -98,7 +98,7 @@ "recording": "Enregistrement", "you": "Vous", "audioPermissionNeededTitle": "Accès au microphone nécessaire", - "audioPermissionNeeded": "Vous pouvez autoriser l'accès au microphone via: Paramètres (icon roue dentée) => Confidentialité.", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Contenu audio", "video": "Vidéo", "photo": "Photo", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Format de clé publique non valide", "emptyGroupNameError": "Veuillez saisir un nom de groupe", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nom du groupe", "inviteContacts": "Inviter des amis", "addModerators": "Ajouter un modérateur", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Désactivées", "notificationForConvo_mentions_only": "Mentions seulement", "onionPathIndicatorTitle": "Chemin", - "onionPathIndicatorDescription": "BChat cache votre adresse IP en envoyant vos messages via plusieurs Nœuds de Service dans le réseau décentralisé de BChat. Voici les pays via lesquels votre connexion est actuellement transmise :", + "onionPathIndicatorDescription": "BChat cache votre adresse IP en envoyant vos messages via plusieurs Nœuds de Service dans le réseau décentralisé de BChat. Voici les pays via lesquels votre connexion est actuellement transmise", "unknownCountry": "Pays inconnu", "device": "Appareil", "destination": "Destination", @@ -465,5 +475,10 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/he/messages.json b/_locales/he/messages.json index 51b9020d..c1ca82d3 100644 --- a/_locales/he/messages.json +++ b/_locales/he/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "הודעה מקורית נמצאה, אבל לא נטענה. גלול למעלה כדי לטעון אותה.", "recording": "Recording", "you": "אתה", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "כדי לשלוח הודעות קוליות, התר אל BChat Desktop עבודה לקבל גישה אל המיקרופון שלך.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "שמע", "video": "וידיאו", "photo": "תצלום", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/hi/messages.json b/_locales/hi/messages.json index 6e2218e6..15e9ec9b 100644 --- a/_locales/hi/messages.json +++ b/_locales/hi/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "मूल्य सन्देश मिला है, परन्तु लोड नहीं हुआ। लोड करने के लिए ऊपर स्क्रॉल कीजिये", "recording": "रिकॉर्डिंग", "you": "आप", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "ऑडियो", "video": "वीडियो", "photo": "फ़ोटो", @@ -189,8 +189,8 @@ "timerOption_10_seconds": "10 सेकंड", "timerOption_30_seconds": "30 सेकंड", "timerOption_1_minute": "1 मिनट", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 घंटा", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/hr/messages.json b/_locales/hr/messages.json index f2fc37f6..62d5a7c9 100644 --- a/_locales/hr/messages.json +++ b/_locales/hr/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "You", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -189,8 +189,8 @@ "timerOption_10_seconds": "10 sekundi", "timerOption_30_seconds": "30 sekundi", "timerOption_1_minute": "1 minuta", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 sat", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/hu/messages.json b/_locales/hu/messages.json index dcd5595f..299b293d 100644 --- a/_locales/hu/messages.json +++ b/_locales/hu/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Az eredeti üzenet ugyan fellelhető, de még nincs betöltve. Görgess fel a betöltéséhez!", "recording": "Rögzítés", "you": "Te", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Hangüzenetek küldéséhez engedélyezd, hogy a BChat Desktop hozzáférjen mikrofonodhoz", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Hang", "video": "Videó", "photo": "Kép", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Érvénytelen Publikus kulcs formátum", "emptyGroupNameError": "Add meg a csoport nevét", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Csoportnév", "inviteContacts": "Barátok meghívása", "addModerators": "Moderátor hozzáadása", @@ -350,7 +360,7 @@ "linkDevice": "Eszköz társítása", "restoreUsingRecoveryPhrase": "Fiókod visszaállítása", "or": "vagy", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Üdvözöl a BChat", "newBchat": "Új beszélgetés", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Letiltva", "notificationForConvo_mentions_only": "Csak említések", "onionPathIndicatorTitle": "Útvonal", - "onionPathIndicatorDescription": "A BChat elrejti IP címét azzal, hogy az üzeneteket a BChat decentralizált hálózatának több szolgáltatási csomópontján vezeti keresztül. Ezek azok az országok, ahol a kapcsolat jelenleg átmegy:", + "onionPathIndicatorDescription": "A BChat elrejti IP címét azzal, hogy az üzeneteket a BChat decentralizált hálózatának több szolgáltatási csomópontján vezeti keresztül. Ezek azok az országok, ahol a kapcsolat jelenleg átmegy", "unknownCountry": "Ismeretlen ország", "device": "Eszköz", "destination": "Cél", @@ -465,5 +475,10 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/id/messages.json b/_locales/id/messages.json index 6addd7b4..93c3510d 100644 --- a/_locales/id/messages.json +++ b/_locales/id/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Pesan asli ditemukan, tapi tidak dapat dimuat. Gulir ke atas untuk memuatnya.", "recording": "Merekam", "you": "Anda", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Untuk mengirim pesan suara, izinkan BChat mengakses mikrofon Anda.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Suara", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Masukkan nama grup", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nama grup", "inviteContacts": "Undang teman", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Tautkan perangkat", "restoreUsingRecoveryPhrase": "Kembalikan akun", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "BChat baru", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/it/messages.json b/_locales/it/messages.json index d10ae897..f223cf90 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Messaggio originale trovato, ma non caricato. Scorri verso l'alto per caricarlo.", "recording": "Registrazione", "you": "Tu", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Per poter mandare un messaggio audio, permetti a BChat di accedere al tuo microfono.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Formato Pubkey non valido", "emptyGroupNameError": "Inserisci un nome per il gruppo", "editProfileModalTitle": "Profilo", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nome Del Gruppo", "inviteContacts": "Invita Amici", "addModerators": "Aggiungi Moderatori", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Non attivo", "notificationForConvo_mentions_only": "Solo menzioni", "onionPathIndicatorTitle": "Percorso", - "onionPathIndicatorDescription": "La Bchate nasconde il tuo IP facendo rimbalzare i messaggi attraverso diversi nodi di servizio nella sua rete decentralizzata. Questi sono i paesi in cui la connessione viene rimbalzata attualmente:", + "onionPathIndicatorDescription": "La Bchate nasconde il tuo IP facendo rimbalzare i messaggi attraverso diversi nodi di servizio nella sua rete decentralizzata. Questi sono i paesi in cui la connessione viene rimbalzata attualmente", "unknownCountry": "Stato sconosciuto", "device": "Dispositivo", "destination": "Destinazione", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json index dd690ca6..04f25103 100644 --- a/_locales/ja/messages.json +++ b/_locales/ja/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "元のメッセージを見つけたが、ロードされていません。ロードするのにスクロールアップして下さい。", "recording": "記録中", "you": "あなた", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "音声メッセージを送るには、BChatのマイクへのアクセスを許可してください。", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "音声", "video": "動画", "photo": "写真", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "無効な公開鍵フォーマットです", "emptyGroupNameError": "グループ名を入力してください", "editProfileModalTitle": "プロフィール", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "グループ名", "inviteContacts": "友達にオススメする", "addModerators": "モデレータを追加", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/ka/messages.json b/_locales/ka/messages.json index 148699b5..5ea4fe43 100644 --- a/_locales/ka/messages.json +++ b/_locales/ka/messages.json @@ -98,7 +98,7 @@ "recording": "ჩანაწერი", "you": "თქვენ", "audioPermissionNeededTitle": "Microphone Access Required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "აუდიო", "video": "ვიდეო", "photo": "ფოტო", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/km/messages.json b/_locales/km/messages.json index 753dceac..50752734 100644 --- a/_locales/km/messages.json +++ b/_locales/km/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "រកឃើញសារដើម ប៉ុន្តែមិនអាចផ្ទុក។ រំកិលចុះក្រោម ដើម្បីផ្ទុកវា។", "recording": "Recording", "you": "អ្នក", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "ដើម្បីបញ្ជូនសារសំឡេង អនុញ្ញាតឲ្យSignal Desktop ចូលប្រើប្រាស់ម៉ៃក្រូហ្វូនរបស់អ្នក។", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "សំឡេង", "video": "វីដេអូ", "photo": "រូបភាព", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/kn/messages.json b/_locales/kn/messages.json index 89f4a206..1e396ab6 100644 --- a/_locales/kn/messages.json +++ b/_locales/kn/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "You", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/ko/messages.json b/_locales/ko/messages.json index 10f338bd..165993ca 100644 --- a/_locales/ko/messages.json +++ b/_locales/ko/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "원본 메시지를 찾았으나 로딩이 안 되어있습니다. 위로 스크롤하여 로딩하십시오.", "recording": "녹음 중", "you": "당신", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "오디오", "video": "동영상", "photo": "사진", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/lt/messages.json b/_locales/lt/messages.json index 22a385d0..9c3f1310 100644 --- a/_locales/lt/messages.json +++ b/_locales/lt/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Pradinė žinutė rasta, tačiau neįkelta. Slinkite žemyn, norėdami ją įkelti.", "recording": "Recording", "you": "Jūs", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Norėdami siųsti garso žinutes, suteikite BChat Desktop prieigą prie savo mikrofono.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Garso įrašas", "video": "Vaizdo įrašas", "photo": "Nuotrauka", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Susieti įrenginį", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message.", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/mk/messages.json b/_locales/mk/messages.json index 95f1e407..f32ad7b9 100644 --- a/_locales/mk/messages.json +++ b/_locales/mk/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "You", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/nb/messages.json b/_locales/nb/messages.json index 89f4a206..1e396ab6 100644 --- a/_locales/nb/messages.json +++ b/_locales/nb/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "You", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/nl/messages.json b/_locales/nl/messages.json index 1f91156d..1a1eca06 100644 --- a/_locales/nl/messages.json +++ b/_locales/nl/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Oorspronkelijk bericht gevonden, maar niet opgehaald. Scroll naar boven om het op te halen.", "recording": "Opname", "you": "Jij", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Om een audiobericht te versturen moet je BChat Desktop toegang tot de microfoon geven.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Geluid", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Ongeldig Pubkey formaat", "emptyGroupNameError": "Vul a. u. b een groepsnaam in", "editProfileModalTitle": "Profiel", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Groepsnaam", "inviteContacts": "Contactpersonen uitnodigen", "addModerators": "Moderatoren toevoegen", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Gedeactiveerd", "notificationForConvo_mentions_only": "Alleen vermeldingen,", "onionPathIndicatorTitle": "Pad", - "onionPathIndicatorDescription": "BChat verbergt uw IP door uw berichten te verzenden via meerdere Master Nodes in het gedecentraliseerde BChat netwerk. Uw verbinding wordt momenteel verzonden via deze landen:", + "onionPathIndicatorDescription": "BChat verbergt uw IP door uw berichten te verzenden via meerdere Master Nodes in het gedecentraliseerde BChat netwerk. Uw verbinding wordt momenteel verzonden via deze landen", "unknownCountry": "Onbekend land", "device": "Apparaat", "destination": "Bestemming", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/no/messages.json b/_locales/no/messages.json index 39772f4a..e2b8c0ed 100644 --- a/_locales/no/messages.json +++ b/_locales/no/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Opprinnelig beskjed funnet, men ikke lastet inn. Rull oppover for å laste den.", "recording": "Tar opp", "you": "Du", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Du kan aktivere mikrofontilgang under: Innstillinger (Tannhjulssymbol) => Personvern", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Lyd", "video": "Video", "photo": "Fotografi", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Ugyldig format på offentlig nøkkel", "emptyGroupNameError": "Vennligst skriv inn et gruppenavn", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Gruppenavn", "inviteContacts": "Innby kontakter", "addModerators": "Legg til ordstyrere", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Deaktivert", "notificationForConvo_mentions_only": "Kun omtaler", "onionPathIndicatorTitle": "Sti", - "onionPathIndicatorDescription": "BChat skjuler IPen din ved å la beskjedene dine passere gjennom flere tjenesteknutepunkter i BChats desentraliserte nettverk. Dette er landene forbindelsen din nå passerer gjennom:", + "onionPathIndicatorDescription": "BChat skjuler IPen din ved å la beskjedene dine passere gjennom flere tjenesteknutepunkter i BChats desentraliserte nettverk. Dette er landene forbindelsen din nå passerer gjennom", "unknownCountry": "Ukjent land", "device": "Enhet", "destination": "Mål", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/pa/messages.json b/_locales/pa/messages.json index 89f4a206..1e396ab6 100644 --- a/_locales/pa/messages.json +++ b/_locales/pa/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "You", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json index d51e413c..08c83988 100644 --- a/_locales/pl/messages.json +++ b/_locales/pl/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Znaleziono oryginalną wiadomość, ale nie została załadowana. Przewiń w górę, aby załadować.", "recording": "Nagrywanie", "you": "Ty", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Aby wysyłać wiadomości głosowe, zezwól BChat na dostęp do mikrofonu.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Dźwięk", "video": "Wideo", "photo": "Zdjęcie", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Nieprawidłowy format Pubkey", "emptyGroupNameError": "Wpisz nazwę grupy", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nazwa grupy", "inviteContacts": "Zaproś znajomych", "addModerators": "Dodaj moderatorów", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Wyłączone", "notificationForConvo_mentions_only": "Tylko wzmianki", "onionPathIndicatorTitle": "Ścieżka", - "onionPathIndicatorDescription": "BChat ukrywa Twój adres IP, odbijając wiadomości przez kilka węzłów usług w zdecentralizowanej sieci BChat. Oto kraje, w których obecnie Twoje połączenie jest odbijane:", + "onionPathIndicatorDescription": "BChat ukrywa Twój adres IP, odbijając wiadomości przez kilka węzłów usług w zdecentralizowanej sieci BChat. Oto kraje, w których obecnie Twoje połączenie jest odbijane", "unknownCountry": "Nieznany kraj", "device": "Urządzenie", "destination": "Miejsce docelowe", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/pt_BR/messages.json b/_locales/pt_BR/messages.json index 5bd977e5..b0d024cd 100644 --- a/_locales/pt_BR/messages.json +++ b/_locales/pt_BR/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Mensagem original encontrada. Role para cima para carregar.", "recording": "Gravando", "you": "Você", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Para enviar mensagens de áudio permita ao BChat acessar o microfone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Áudio", "video": "Vídeo", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Formato de Pubkey Inválido", "emptyGroupNameError": "Digite um nome de grupo", "editProfileModalTitle": "Perfil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nome Do Grupo", "inviteContacts": "Convidar Amigos", "addModerators": "Adicionar moderadores", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Desabilitado", "notificationForConvo_mentions_only": "Apenas menções", "onionPathIndicatorTitle": "Caminho", - "onionPathIndicatorDescription": "O BChat oculta seu IP ao enviar suas mensagens através de vários Nós de Serviço na rede descentralizada do BChat. Estes são os países pelos quais sua conexão está sendo ricocheteada no momento:", + "onionPathIndicatorDescription": "O BChat oculta seu IP ao enviar suas mensagens através de vários Nós de Serviço na rede descentralizada do BChat. Estes são os países pelos quais sua conexão está sendo ricocheteada no momento", "unknownCountry": "País desconhecido", "device": "Dispositivo", "destination": "Destino", @@ -465,5 +475,10 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/pt_PT/messages.json b/_locales/pt_PT/messages.json index 89e972c0..4854a614 100644 --- a/_locales/pt_PT/messages.json +++ b/_locales/pt_PT/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "A mensagem original foi encontrada mas não carregada. Mova o texto para cima para a carregar.", "recording": "Recording", "you": "Você", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Para enviar mensagens de áudio, permita que o BChat aceda ao seu microfone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Áudio", "video": "Vídeo", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Nome do Grupo", "inviteContacts": "Convidar Contactos", "addModerators": "Adicionar Moderadores", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,16 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" } \ No newline at end of file diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json index 93d7b2b6..8eaf1583 100644 --- a/_locales/ro/messages.json +++ b/_locales/ro/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Mesaj original găsit, dar neîncărcat. Scroll-ează în sus pentru a-l încărca.", "recording": "Se înregistrează", "you": "Tu", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Pentru a trimite mesaje audio, permite aplicației BChat Desktop accesul la microfonul tău.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Poză", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Formatul de număr Pubkey nu este valid", "emptyGroupNameError": "Te rugăm să introduci un nume de grup", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Numele Grupului", "inviteContacts": "Invită contacte", "addModerators": "Adaugă moderatori", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Dezactivat", "notificationForConvo_mentions_only": "Doar mențiuni", "onionPathIndicatorTitle": "Cale", - "onionPathIndicatorDescription": "BChat îți ascunde IP-ul prin înregistrarea mesajelor prin intermediul mai multor Noduri de Servicii din rețeaua descentralizată a BChat. Acestea sunt țările prin care conexiunea dvs. este în curs de a fi conectată prin:", + "onionPathIndicatorDescription": "BChat îți ascunde IP-ul prin înregistrarea mesajelor prin intermediul mai multor Noduri de Servicii din rețeaua descentralizată a BChat. Acestea sunt țările prin care conexiunea dvs. este în curs de a fi conectată prin", "unknownCountry": "Țară necunoscută", "device": "Dispozitiv", "destination": "Destinație", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index 8beaa36f..2fccbe13 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -98,7 +98,7 @@ "recording": "Идет запись", "you": "Вы", "audioPermissionNeededTitle": "Требуется доступ к микрофону", - "audioPermissionNeeded": "Для отправки аудиосообщений разрешите BChat доступ к микрофону (Настройки > Конфиденциальность)", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Аудио", "video": "Видео", "photo": "Фото", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Неверный формат данных", "emptyGroupNameError": "Пожалуйста, введите название группы", "editProfileModalTitle": "Аккаунт", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Название группы", "inviteContacts": "Пригласить друзей в BChat", "addModerators": "Добавить модераторов", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Выключено", "notificationForConvo_mentions_only": "Только упоминания", "onionPathIndicatorTitle": "Путь", - "onionPathIndicatorDescription": "BChat скрывает ваш IP, перенаправляя ваши сообщения через несколько сервисных узлов своей децентрализованной сети. Страны, через которые в данный момент проходит ваше подключение:", + "onionPathIndicatorDescription": "BChat скрывает ваш IP, перенаправляя ваши сообщения через несколько сервисных узлов своей децентрализованной сети. Страны, через которые в данный момент проходит ваше подключение", "unknownCountry": "Неизвестная страна", "device": "Устройство", "destination": "Назначение", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/si/messages.json b/_locales/si/messages.json index bf6269f7..b7514adf 100644 --- a/_locales/si/messages.json +++ b/_locales/si/messages.json @@ -98,7 +98,7 @@ "recording": "Recording", "you": "ඔබ", "audioPermissionNeededTitle": "ශබ්දවාහිනියට ප්‍රවේශය අවශ්‍යයි", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "ශ්‍රව්‍ය", "video": "දෘශ්‍ය", "photo": "Photo", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "සමූහ නාමයක් ඇතුල් කරන්න", "editProfileModalTitle": "පැතිකඩ", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "සමූහයේ නම", "inviteContacts": "සබඳතාවන්ට ආරාධනා කරන්න", "addModerators": "Add Moderators", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "අබල කර ඇත", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "නොදන්නා රටකි", "device": "උපාංගය", "destination": "Destination", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/sk/messages.json b/_locales/sk/messages.json index 0d8c9361..c81507d0 100644 --- a/_locales/sk/messages.json +++ b/_locales/sk/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Pôvodná správa sa našla, ale ešte nebola načítaná. Pre načítanie sa posuňte vyššie.", "recording": "Nahrávanie", "you": "Vy", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Pre posielanie zvukových správ, povoľte aplikácii BChat Desktop prístup k mikrofónu.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Zvuk", "video": "Video", "photo": "Fotka", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Nesprávny Formát Pubkey", "emptyGroupNameError": "Prosím zadajte meno skupiny", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Meno Skupiny", "inviteContacts": "Pozvať Kontakty", "addModerators": "Pridať Moderátorov", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Vypnuté", "notificationForConvo_mentions_only": "Iba zmienky", "onionPathIndicatorTitle": "Cesta", - "onionPathIndicatorDescription": "BChat skryje Vašu IP adresu tým, že vaše správy sa odrazia cez niekoľko Servisných Uzlov v decentralizovanej sieti BChat. Toto sú krajiny cez ktoré sa Vaše spojenie práve odráža:", + "onionPathIndicatorDescription": "BChat skryje Vašu IP adresu tým, že vaše správy sa odrazia cez niekoľko Servisných Uzlov v decentralizovanej sieti BChat. Toto sú krajiny cez ktoré sa Vaše spojenie práve odráža", "unknownCountry": "Neznáma Krajina", "device": "Zariadenie", "destination": "Cieľ", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/sl/messages.json b/_locales/sl/messages.json index df9fc37b..edde0f56 100644 --- a/_locales/sl/messages.json +++ b/_locales/sl/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Izvorno sporočilo je bilo najdeno, vendar še ni naloženo. Če ga želite naložiti, se pomaknite navzgor.", "recording": "Snemanje", "you": "Vi", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Za pošiljanje glasovnih sporočil potrebuje aplikacija BChat Desktop dostop do vašega mikrofona.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Zvok", "video": "Video", "photo": "Slika", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/sq/messages.json b/_locales/sq/messages.json index 0e4482e2..b74a33ac 100644 --- a/_locales/sq/messages.json +++ b/_locales/sq/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Mesazhi origjinal u gjet, por s’u ngarkua dot. Rrëshqitni më poshtë që të ngarkohet.", "recording": "Recording", "you": "Ju", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Për të dërguar mesazhe audio, lejojeni BChat-in për Desktop të përdorë mikrofonin tuaj.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/sr/messages.json b/_locales/sr/messages.json index 7de717cb..435c13b2 100644 --- a/_locales/sr/messages.json +++ b/_locales/sr/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Originalna poruka je pronađena, ali nije učitana. Skrolujte nagore da biste je učitali.", "recording": "Snimanje", "you": "Ti", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Zvuk", "video": "Video", "photo": "Fotografija", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Nevažeći format Pubkey-a", "emptyGroupNameError": "Unesite naziv grupe", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Naziv grupe", "inviteContacts": "Pozovite kontakte", "addModerators": "Dodaj moderatora", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Onemogućeno", "notificationForConvo_mentions_only": "Samo pominjanja", "onionPathIndicatorTitle": "Putanja", - "onionPathIndicatorDescription": "BChat sakriva vašu IP adresu prebacivanjem poruka kroz nekoliko uslužnih čvorova u svojoj decentralizovanoj mreži. Ovo su zemlje kroz koje se trenutno uspostavlja vaša veza:", + "onionPathIndicatorDescription": "BChat sakriva vašu IP adresu prebacivanjem poruka kroz nekoliko uslužnih čvorova u svojoj decentralizovanoj mreži. Ovo su zemlje kroz koje se trenutno uspostavlja vaša veza", "unknownCountry": "Nepoznata zemlja", "device": "Uređaj", "destination": "Odrеdištе", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index 89239d23..ac483be2 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Originalmeddelande hittades, men lästes inte in. Skrolla upp för att läsa in det.", "recording": "Spelar in ", "you": "Du", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Om du vill skicka röstmeddelanden måste BChat Desktop ha tillgång till din mikrofon.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Ljud", "video": "Video", "photo": "Foto", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Ogiltigt Pub-nyckel format", "emptyGroupNameError": "Ange ett gruppnamn", "editProfileModalTitle": "Profil", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Gruppnamn", "inviteContacts": "Bjud in vänner", "addModerators": "Lägg till moderator", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Inaktiverad", "notificationForConvo_mentions_only": "Endast omnämnd", "onionPathIndicatorTitle": "Väg", - "onionPathIndicatorDescription": "BChat döljer din IP-adress genom att dirigera dina meddelanden genom flera Tjänstnoder i BChats decentraliserade nätverk. Detta är de länder som din anslutning går igenom just nu:", + "onionPathIndicatorDescription": "BChat döljer din IP-adress genom att dirigera dina meddelanden genom flera Tjänstnoder i BChats decentraliserade nätverk. Detta är de länder som din anslutning går igenom just nu", "unknownCountry": "Okänt land", "device": "Enhet", "destination": "Mål", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/ta/messages.json b/_locales/ta/messages.json index 3a71cd43..bc0cc0d3 100644 --- a/_locales/ta/messages.json +++ b/_locales/ta/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "நீங்கள்", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "கேட்பொலி", "video": "காணொளி", "photo": "புகைப்படம்", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "OFF", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/th/messages.json b/_locales/th/messages.json index 6e3ae13b..179cfe23 100644 --- a/_locales/th/messages.json +++ b/_locales/th/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "คุณ", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "เพื่อจะส่งข้อความเสียง ต้องอนุญาตให้ BChat Desktop ใช้งานไมโครโฟนของคุณ", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "เสียง", "video": "วิดีโอ", "photo": "รูปภาพ", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/tr/messages.json b/_locales/tr/messages.json index 9250ed1b..3cf78794 100644 --- a/_locales/tr/messages.json +++ b/_locales/tr/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "İletinin aslı bulundu, ama yüklenmedi. Yüklemek için yukarıya kaydırın.", "recording": "Kayıtlar", "you": "Siz", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "Sesli iletiler göndermek için, BChat Desktop'ın mikrofonunuza erişimine izin verin.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Ses", "video": "Video", "photo": "Fotoğraf", @@ -319,6 +319,16 @@ "emptyGroupNameError": "Lütfen bir grup adı giriniz", "editProfileModalTitle": "Profil", "groupNamePlaceholder": "Grup Adı", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "inviteContacts": "Kişileri Davet Et", "addModerators": "Moderatör ekle", "removeModerators": "Moderatörleri sil", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "Devre dışı", "notificationForConvo_mentions_only": "Sadece bahsetmeler", "onionPathIndicatorTitle": "Yol", - "onionPathIndicatorDescription": "BChat, mesajlarınızı BChat'ın merkezi olmayan ağındaki birkaç Hizmet Düğümü üzerinden geri göndererek IP'nizi gizler. Şu anda bağlantınızın geri döndüğü ülkeler şunlardır:", + "onionPathIndicatorDescription": "BChat, mesajlarınızı BChat'ın merkezi olmayan ağındaki birkaç Hizmet Düğümü üzerinden geri göndererek IP'nizi gizler. Şu anda bağlantınızın geri döndüğü ülkeler şunlardır", "unknownCountry": "Bilinmeyen Ülke", "device": "Cihaz", "destination": "Hedef", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/uk/messages.json b/_locales/uk/messages.json index fbaaee9f..13828d05 100644 --- a/_locales/uk/messages.json +++ b/_locales/uk/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Оригінальне повідомлення знайдено, але не завантажено. Прокрутіть вгору, щоб завантажити його.", "recording": "Запис", "you": "Ви", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Аудіо", "video": "Відео", "photo": "Фото", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/uz/messages.json b/_locales/uz/messages.json index a8755f69..7fad592c 100644 --- a/_locales/uz/messages.json +++ b/_locales/uz/messages.json @@ -98,7 +98,7 @@ "recording": "Recording", "you": "You", "audioPermissionNeededTitle": "Microphone Access Required", - "audioPermissionNeeded": "You can enable microphone access under: Settings (Gear icon) => Privacy", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Audio", "video": "Video", "photo": "Photo", @@ -185,12 +185,12 @@ "timerSetOnSync": "Updated disappearing message timer to $time$", "theyChangedTheTimer": "$name$ activated disappearing messages. Messages will now disappear after $time$", "timerOption_0_seconds": "Off", - "timerOption_5_seconds": "5 seconds", - "timerOption_10_seconds": "10 seconds", - "timerOption_30_seconds": "30 seconds", + "timerOption_5_seconds": "5 sec", + "timerOption_10_seconds": "10 sec", + "timerOption_30_seconds": "30 sec", "timerOption_1_minute": "1 minute", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 hour", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/vi/messages.json b/_locales/vi/messages.json index b23884a4..99686125 100644 --- a/_locales/vi/messages.json +++ b/_locales/vi/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "Original message found, but not loaded. Scroll up to load it.", "recording": "Recording", "you": "Bạn", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "To send audio messages, allow BChat Desktop to access your microphone.", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "Âm thanh", "video": "Đoạn phim", "photo": "Photo", @@ -189,8 +189,8 @@ "timerOption_10_seconds": "10 giây", "timerOption_30_seconds": "30 giây", "timerOption_1_minute": "1 phút", - "timerOption_5_minutes": "5 minutes", - "timerOption_30_minutes": "30 minutes", + "timerOption_5_minutes": "5 Min", + "timerOption_30_minutes": "30 Min", "timerOption_1_hour": "1 giờ", "timerOption_6_hours": "6 hours", "timerOption_12_hours": "12 hours", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Vui lòng nhập tên nhóm", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Tên nhóm", "inviteContacts": "Mời bạn bè", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Liên kết Thiết bị", "restoreUsingRecoveryPhrase": "Khôi phục lại tài khoản của bạn", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "BChat mới", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Không thể bắt đầu cuộc gọi mới", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -460,10 +470,16 @@ "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", "startedACall": "Bạn đã gọi $name$", - "answeredACall": "Call with $name$", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index 5004a8ad..39c937bd 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "原始消息可用,但尚未加载。向上滑动可加载。", "recording": "录音中", "you": "您", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "发送音频消息前,请先允许 BChat Desktop访问您的麦克风。", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "音频", "video": "视频", "photo": "照片", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "无效的公钥格式", "emptyGroupNameError": "请输入群组名称", "editProfileModalTitle": "资料", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "群组名称", "inviteContacts": "邀请好友", "addModerators": "添加管理员", @@ -396,7 +406,7 @@ "notificationForConvo_disabled": "关闭", "notificationForConvo_mentions_only": "仅当被提及时", "onionPathIndicatorTitle": "路径", - "onionPathIndicatorDescription": "BChat会通过其去中心化网络中的多个服务节点跳转消息以隐藏IP。以下国家是您目前的消息连接跳转服务节点所在地:", + "onionPathIndicatorDescription": "BChat会通过其去中心化网络中的多个服务节点跳转消息以隐藏IP。以下国家是您目前的消息连接跳转服务节点所在地", "unknownCountry": "未知国家", "device": "设备", "destination": "目的地", @@ -465,5 +475,11 @@ "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/_locales/zh_TW/messages.json b/_locales/zh_TW/messages.json index ec6951ab..4cd11acd 100644 --- a/_locales/zh_TW/messages.json +++ b/_locales/zh_TW/messages.json @@ -97,8 +97,8 @@ "messageFoundButNotLoaded": "找到了原始訊息,但未載入,向上滑動以進行載入。", "recording": "錄製中", "you": "你", - "audioPermissionNeededTitle": "Microphone access required", - "audioPermissionNeeded": "要傳送語音訊息,須授權 Siganl 桌面版可以使用您設備的麥克風。 ", + "audioPermissionNeededTitle": "Record Permission Required!", + "audioPermissionNeeded": "Allow Recorder to access voice recording?", "audio": "聲音", "video": "影片", "photo": "照片", @@ -318,6 +318,16 @@ "invalidPubkeyFormat": "Invalid Pubkey Format", "emptyGroupNameError": "Please enter a group name", "editProfileModalTitle": "Profile", + "linkYourBns": "Link Your BNS", + "readMoreAboutBNS": "Read more about BNS", + "bnsVerified": "BNS Verified ", + "linkBNS": "Link BNS", + "bnsName": "BNS Name", + "enterBnsName": "Enter BNS Name", + "verify": "Verify", + "verified": "Verified", + "link": "Link", + "bnsLinkedSuccessfully": "BNS Linked Successfully!", "groupNamePlaceholder": "Group Name", "inviteContacts": "Invite Contacts", "addModerators": "Add Moderators", @@ -350,7 +360,7 @@ "linkDevice": "Link Device", "restoreUsingRecoveryPhrase": "Restore your account", "or": "or", - "ByUsingThisMaster...": "Terms of Service", + "ByUsingThisMaster...": "Terms & Conditions", "beginYourBchat": "Begin your BChat.", "welcomeToYourBchat": "Welcome to your BChat", "newBchat": "New BChat", @@ -396,12 +406,12 @@ "notificationForConvo_disabled": "Disabled", "notificationForConvo_mentions_only": "Mentions Only", "onionPathIndicatorTitle": "Path", - "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through:", + "onionPathIndicatorDescription": "BChat hides your IP by bouncing your messages through several Master Nodes in BChat's decentralized network. These are the countries your connection is currently being bounced through", "unknownCountry": "Unknown Country", "device": "You", "destination": "Destination", "learnMore": "Learn more", - "linkVisitWarningTitle": "Open this link in your browser?", + "linkVisitWarningTitle": "Open Link?", "linkVisitWarningMessage": "Are you sure you want to open $url$ in your browser?", "open": "Open", "audioMessageAutoplayTitle": "Autoplay Audio Message", @@ -448,7 +458,7 @@ "cameraPermissionNeeded": "Allow 'Voice & Video Calls' under privacy settings to make a call.", "unableToCall": "Cancel your ongoing call first", "unableToCallTitle": "Cannot start new call", - "callMissed": "Missed call from $name$", + "callMissed": "Missed call", "callMissedTitle": "Call missed", "noCameraFound": "No camera found", "noAudioInputFound": "No audio input found", @@ -459,11 +469,17 @@ "callMediaPermissionsDescription": "Enabling this option will allow you to receive voice and video calls.", "callMediaPermissionsDialogContent": "The current implementation of voice/video calls will expose your IP address to the Beldex servers and the calling/called user.", "menuCall": "Call", - "startedACall": "You called $name$", - "answeredACall": "Call with $name$", + "startedACall": "Outgoing call", + "answeredACall": "Incoming call", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", "bns": "Bns", - "paymentID":"Payment ID" + "paymentID": "Payment ID", + "allow": "Allow", + "deny": "Deny", + "openLink": "Open Link", + "changeWalletPassword":"Change Wallet password", + "enterNewWalletPassword":"Enter New Wallet Password" + } \ No newline at end of file diff --git a/background.html b/background.html index 33dd3281..7697a2b0 100644 --- a/background.html +++ b/background.html @@ -32,8 +32,8 @@
diff --git a/build/notarize.js b/build/notarize.js index 8bdeb006..af02a32d 100644 --- a/build/notarize.js +++ b/build/notarize.js @@ -1,4 +1,4 @@ -const { notarize } = require('electron-notarize'); +const { notarize } = require("@electron/notarize"); /* Pre-requisites: https://github.com/electron/electron-notarize#prerequisites @@ -30,10 +30,12 @@ exports.default = async function notarizing(context) { const options = { appBundleId: 'bchat.desktop', + tool: "notarytool", appPath: `${appOutDir}/${appName}.app`, appleId: SIGNING_APPLE_ID, appleIdPassword: SIGNING_APP_PASSWORD, + teamId: SIGNING_TEAM_ID }; if (!isEmpty(SIGNING_TEAM_ID)) options.ascProvider = SIGNING_TEAM_ID; return notarize(options); -}; +}; \ No newline at end of file diff --git a/fonts/OpenSans-ExtraBold.ttf b/fonts/OpenSans-ExtraBold.ttf new file mode 100644 index 00000000..4eb33935 Binary files /dev/null and b/fonts/OpenSans-ExtraBold.ttf differ diff --git a/fonts/OpenSans-Light.ttf b/fonts/OpenSans-Light.ttf new file mode 100644 index 00000000..ea175cc3 Binary files /dev/null and b/fonts/OpenSans-Light.ttf differ diff --git a/fonts/OpenSans_Condensed-SemiBold.ttf b/fonts/OpenSans_Condensed-SemiBold.ttf new file mode 100644 index 00000000..75bcd43c Binary files /dev/null and b/fonts/OpenSans_Condensed-SemiBold.ttf differ diff --git a/images/bchat/Call_permission.svg b/images/bchat/Call_permission.svg new file mode 100644 index 00000000..772d17e4 --- /dev/null +++ b/images/bchat/Call_permission.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/images/bchat/Load_animation.gif b/images/bchat/Load_animation.gif index 3383b0aa..442587c5 100644 Binary files a/images/bchat/Load_animation.gif and b/images/bchat/Load_animation.gif differ diff --git a/images/bchat/Loading__white_theme.gif b/images/bchat/Loading__white_theme.gif new file mode 100644 index 00000000..d76755a7 Binary files /dev/null and b/images/bchat/Loading__white_theme.gif differ diff --git a/images/bchat/Pay_as_you_chat_white.svg b/images/bchat/Pay_as_you_chat_white.svg new file mode 100644 index 00000000..26f9bf57 --- /dev/null +++ b/images/bchat/Pay_as_you_chat_white.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/images/bchat/bgBlurLogo.png b/images/bchat/bgBlurLogo.png new file mode 100644 index 00000000..9469d58b Binary files /dev/null and b/images/bchat/bgBlurLogo.png differ diff --git a/images/bchat/calendar.svg b/images/bchat/calendar.svg new file mode 100644 index 00000000..c69d16c3 --- /dev/null +++ b/images/bchat/calendar.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/images/bchat/connect_wallet_dark.gif b/images/bchat/connect_wallet_dark.gif new file mode 100644 index 00000000..ff894886 Binary files /dev/null and b/images/bchat/connect_wallet_dark.gif differ diff --git a/images/bchat/connect_wallet_white.gif b/images/bchat/connect_wallet_white.gif new file mode 100644 index 00000000..353fcd89 Binary files /dev/null and b/images/bchat/connect_wallet_white.gif differ diff --git a/images/bchat/empty_address_book_White.svg b/images/bchat/empty_address_book_White.svg new file mode 100644 index 00000000..e031b710 --- /dev/null +++ b/images/bchat/empty_address_book_White.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/empty_address_book_dark.svg b/images/bchat/empty_address_book_dark.svg index a3d1ad9a..f05171c3 100644 --- a/images/bchat/empty_address_book_dark.svg +++ b/images/bchat/empty_address_book_dark.svg @@ -1,167 +1,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/empty_address_book_white.svg b/images/bchat/empty_address_book_white.svg deleted file mode 100644 index ed099829..00000000 --- a/images/bchat/empty_address_book_white.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/bchat/empty_transaction_list.svg b/images/bchat/empty_transaction_list.svg index eaaf048a..c576e99e 100644 --- a/images/bchat/empty_transaction_list.svg +++ b/images/bchat/empty_transaction_list.svg @@ -1,37 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/insufficientBalance.svg b/images/bchat/insufficientBalance.svg new file mode 100644 index 00000000..f7cd6021 --- /dev/null +++ b/images/bchat/insufficientBalance.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/insufficientBalanceWhite.svg b/images/bchat/insufficientBalanceWhite.svg new file mode 100644 index 00000000..95fcff2a --- /dev/null +++ b/images/bchat/insufficientBalanceWhite.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + diff --git a/images/bchat/linked_bns.gif b/images/bchat/linked_bns.gif new file mode 100644 index 00000000..3aa45f29 Binary files /dev/null and b/images/bchat/linked_bns.gif differ diff --git a/images/bchat/linked_bns_white.gif b/images/bchat/linked_bns_white.gif new file mode 100644 index 00000000..b61f6e8f Binary files /dev/null and b/images/bchat/linked_bns_white.gif differ diff --git a/images/bchat/loginPageAddress.png b/images/bchat/loginPageAddress.png new file mode 100644 index 00000000..97470190 Binary files /dev/null and b/images/bchat/loginPageAddress.png differ diff --git a/images/bchat/loginPagePassword.png b/images/bchat/loginPagePassword.png new file mode 100644 index 00000000..dcc13ebb Binary files /dev/null and b/images/bchat/loginPagePassword.png differ diff --git a/images/bchat/loginPageSeed.png b/images/bchat/loginPageSeed.png new file mode 100644 index 00000000..67849b4a Binary files /dev/null and b/images/bchat/loginPageSeed.png differ diff --git a/images/bchat/loginpage.png b/images/bchat/loginpage.png new file mode 100644 index 00000000..db9032d1 Binary files /dev/null and b/images/bchat/loginpage.png differ diff --git a/images/bchat/message_send_loading_dark_theme.gif b/images/bchat/message_send_loading_dark_theme.gif new file mode 100644 index 00000000..82a7b285 Binary files /dev/null and b/images/bchat/message_send_loading_dark_theme.gif differ diff --git a/images/bchat/message_send_loading_white_theme.gif b/images/bchat/message_send_loading_white_theme.gif new file mode 100644 index 00000000..1e4aac11 Binary files /dev/null and b/images/bchat/message_send_loading_white_theme.gif differ diff --git a/images/bchat/no_con_scrt_grp_dark_theme.svg b/images/bchat/no_con_scrt_grp_dark_theme.svg deleted file mode 100644 index 30b637f1..00000000 --- a/images/bchat/no_con_scrt_grp_dark_theme.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/images/bchat/no_contact_scrt_grp.svg b/images/bchat/no_contact_scrt_grp.svg deleted file mode 100644 index fe48dfa3..00000000 --- a/images/bchat/no_contact_scrt_grp.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/images/bchat/no_mediaDarkTheme.svg b/images/bchat/no_mediaDarkTheme.svg index 65fbf625..2e717b49 100644 --- a/images/bchat/no_mediaDarkTheme.svg +++ b/images/bchat/no_mediaDarkTheme.svg @@ -1,124 +1,126 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/no_mediaWhiteTheme.svg b/images/bchat/no_mediaWhiteTheme.svg index 57cb5489..41fedc6d 100644 --- a/images/bchat/no_mediaWhiteTheme.svg +++ b/images/bchat/no_mediaWhiteTheme.svg @@ -1,124 +1,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/no_tx_history_dark.svg b/images/bchat/no_tx_history_dark.svg index 5096bbd6..c576e99e 100644 --- a/images/bchat/no_tx_history_dark.svg +++ b/images/bchat/no_tx_history_dark.svg @@ -1,37 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/passwordIcon.svg b/images/bchat/passwordIcon.svg new file mode 100644 index 00000000..8a773810 --- /dev/null +++ b/images/bchat/passwordIcon.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/passwordIconWhite.svg b/images/bchat/passwordIconWhite.svg new file mode 100644 index 00000000..7d0f5f57 --- /dev/null +++ b/images/bchat/passwordIconWhite.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/paste.svg b/images/bchat/paste.svg deleted file mode 100644 index 271d7887..00000000 --- a/images/bchat/paste.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/images/bchat/recoveryPhrase.svg b/images/bchat/recoveryPhrase.svg new file mode 100644 index 00000000..d2310a6d --- /dev/null +++ b/images/bchat/recoveryPhrase.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/recoveryPhraseLight.svg b/images/bchat/recoveryPhraseLight.svg new file mode 100644 index 00000000..dd54f046 --- /dev/null +++ b/images/bchat/recoveryPhraseLight.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/bchat/splash.gif b/images/bchat/splash.gif new file mode 100644 index 00000000..c9cc3095 Binary files /dev/null and b/images/bchat/splash.gif differ diff --git a/images/bchat/wallet_syncing_dark.svg b/images/bchat/wallet_syncing_dark.svg deleted file mode 100644 index e5f267c9..00000000 --- a/images/bchat/wallet_syncing_dark.svg +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/bchat/wallet_syncing_white.svg b/images/bchat/wallet_syncing_white.svg deleted file mode 100644 index e4635994..00000000 --- a/images/bchat/wallet_syncing_white.svg +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/bchat/walletinchat.svg b/images/bchat/walletinchat.svg index a4ae1053..fe7c2deb 100644 --- a/images/bchat/walletinchat.svg +++ b/images/bchat/walletinchat.svg @@ -1,9 +1,11 @@ - - - - - - - - + + + + + + + + + + diff --git a/images/wallet/Password_image.svg b/images/wallet/Password_image.svg deleted file mode 100644 index 824753e3..00000000 --- a/images/wallet/Password_image.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/wallet/Password_image_white.svg b/images/wallet/Password_image_white.svg deleted file mode 100644 index 2bb77af9..00000000 --- a/images/wallet/Password_image_white.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/package.json b/package.json index 749b7474..ece28f53 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "bchat-desktop", "productName": "BChat", "description": "Private messaging from your desktop", - "version": "2.4.0", + "version": "2.5.0", "license": "GPL-3.0", "author": { "name": "Beldex team", @@ -136,9 +136,11 @@ "sanitize.css": "^12.0.1", "semver": "5.4.1", "styled-components": "5.1.1", - "uuid": "3.3.2" + "uuid": "3.3.2", + "wavesurfer.js": "^7.8.6" }, "devDependencies": { + "@electron/notarize": "^2.3.2", "@playwright/test": "1.16.3", "@types/backbone": "1.4.2", "@types/better-sqlite3": "7.4.0", @@ -190,7 +192,6 @@ "crypto-browserify": "^3.12.0", "electron": "^17.1.2", "electron-builder": "23.0.2", - "electron-notarize": "^0.2.0", "esbuild": "^0.14.29", "eslint": "4.14.0", "eslint-config-airbnb-base": "12.1.0", diff --git a/preload.js b/preload.js index 5add2056..6d92dace 100644 --- a/preload.js +++ b/preload.js @@ -42,7 +42,11 @@ const ipc = ipcRenderer; const localeMessages = ipc.sendSync('locale-data'); window.updateZoomFactor = () => { - const zoomFactor = window.getSettingValue('zoom-factor-setting') || 100; + let zoomFactor = window.getSettingValue('zoom-factor-setting') || 100; + + if (window.screen.width <= 1440) { + zoomFactor = zoomFactor - 15; + } window.setZoomFactor(zoomFactor / 100); }; @@ -176,6 +180,16 @@ window.setSettingValue = async (settingID, value) => { await Storage.put(settingID, value); }; + +window.getLocalValue = (localId) => { + const bchatVal = Storage.get(localId); + return bchatVal; +}; +window.setLocalValue = async (localId, value) => { + // For auto updating we need to pass the value to the main process + await Storage.put(localId, value); +}; + window.getMediaPermissions = () => ipc.sendSync('get-media-permissions'); window.setMediaPermissions = value => { ipc.send('set-media-permissions', !!value); @@ -236,7 +250,7 @@ window.ReactDOM = require('react-dom'); window.clipboard = clipboard; window.networkType = 'mainnet'; - +// window.networkType = 'testnet'; if (window.networkType == 'mainnet') { window.getSeedNodeList = () => process.env.NODE_ENV == 'development' @@ -245,18 +259,18 @@ if (window.networkType == 'mainnet') { 'https://publicnode2.rpcnode.stream:443', 'https://publicnode3.rpcnode.stream:443', 'https://publicnode4.rpcnode.stream:443', - 'https://publicnode5.rpcnode.stream:443', + // 'https://publicnode5.rpcnode.stream:443', ] : [ 'https://publicnode1.rpcnode.stream:443', 'https://publicnode2.rpcnode.stream:443', 'https://publicnode3.rpcnode.stream:443', 'https://publicnode4.rpcnode.stream:443', - 'https://publicnode5.rpcnode.stream:443', + // 'https://publicnode5.rpcnode.stream:443', ]; const remotes = [ - + { host: 'publicnode1.rpcnode.stream', port: '29095', diff --git a/protos/SignalService.proto b/protos/SignalService.proto index e234a8f2..d027fa7d 100644 --- a/protos/SignalService.proto +++ b/protos/SignalService.proto @@ -6,14 +6,17 @@ message Envelope { enum Type { BCHAT_MESSAGE = 6; CLOSED_GROUP_MESSAGE = 7; + } + // @required required Type type = 1; optional string source = 2; // @required required uint64 timestamp = 5; optional bytes content = 8; + optional bool isBnsHolder = 9; } message TypingMessage { diff --git a/stylesheets/_avatar.scss b/stylesheets/_avatar.scss index b08f7034..08a2a138 100644 --- a/stylesheets/_avatar.scss +++ b/stylesheets/_avatar.scss @@ -7,12 +7,16 @@ $borderAvatarColor: unquote( position: relative; vertical-align: middle; display: inline-block; - border-radius: 50%; + // border-radius: 50%; flex-shrink: 0; + // border-radius: 7px; + overflow: hidden; + border-radius: 12px; img { object-fit: cover; - border-radius: 27%; + // border-radius: 27%; + border-radius: 7px; border: 1px solid $borderAvatarColor; } } @@ -50,16 +54,26 @@ $borderAvatarColor: unquote( } } -.module-avatar__icon-closed .module-avatar--64, -.module-avatar--64 { - height: 64px; - width: 64px; +.module-avatar__icon-closed .module-avatar--60, +.module-avatar--60 { + height:60px; + width: 60px; img { - height: 64px; - width: 64px; + height: 60px; + width: 60px; } } +// .module-avatar__icon-closed .module-avatar--64, +// .module-avatar--64 { +// height: 64px; +// width: 64px; + +// img { +// height: 64px; +// width: 64px; +// } +// } .module-avatar__icon-closed .module-avatar--80, .module-avatar--80 { @@ -67,8 +81,8 @@ $borderAvatarColor: unquote( width: 85px; img { - height: 80px; - width: 80px; + height: 85px; + width: 85px; } } @@ -83,6 +97,11 @@ $borderAvatarColor: unquote( } .module-avatar__icon-closed { + .module-avatar:first-child{ + z-index: 1; + // box-shadow: 3px 3px 0px 0px rgba(0,0,0 ,75%); + box-shadow: 2px 2px 2px 0px var(--color-chatHeader); + } .module-avatar:last-child { position: absolute; right: 0px; @@ -97,3 +116,13 @@ $borderAvatarColor: unquote( filter: grayscale(0.7); } } +.module-avatar-verify-wrapper { + position: relative; + border: 2px solid #00bd40; + border-radius: 14px; + transition: 0.25s; + &-verify-tag { + transition: 0.25s; + position: absolute; + } +} diff --git a/stylesheets/_bchat.scss b/stylesheets/_bchat.scss index bb254143..8ff4286b 100644 --- a/stylesheets/_bchat.scss +++ b/stylesheets/_bchat.scss @@ -1,4 +1,4 @@ -$onionPathLineColor: #d1d1d1; +$onionPathLineColor: #ebebeb; #root { height: 100%; @@ -7,6 +7,8 @@ $onionPathLineColor: #d1d1d1; .subtle { opacity: $bchat-subtle-factor; width: 290px; + line-height: 20px; + text-align: initial; } .soft { @@ -70,7 +72,15 @@ textarea { position: relative; } -.button-group > div { +.grey-border { + width: 70%; + height: 0.5px; + background: #6f6f6f; + margin: 10px 0; + opacity: 0.3; +} + +.button-group>div { display: inline-flex; margin-inline-start: 5px; margin-inline-end: 5px; @@ -102,181 +112,324 @@ textarea { cursor: default; } - &.default, - &.square, - &.brand { - color: var(--color-foreground-primary); + &.default { + min-width: 165px; + height: 70px; + align-items: center; + padding: 0px $bchat-margin-lg; + font-size: $bchat-font-lg; + font-weight: 600; + border-radius: 13px; - // &:not(.disabled):hover { - // // opacity: 0.8; - // } + &.primary { + background-color: #008e00; + color: #f0f0f0; + } - &.green, - &.white, - &.primary, - &.secondary, - &.success, - &.danger, - &.warning { - &.disabled { - // filter: brightness(60%); - background-color: var(--color-disableBtn); - color: var(--color-disableTxt); - cursor: not-allowed; - } + &.disabled { + background-color: #2e333d; + color: #858598; } - &.green { - // background-image: var(--button-color); - background-color: var(--button-color); + &.secondary { + background: var(--color-secondary-btn-bg); + // color: #f0f0f0; + } - color: var(--color-text-opposite); - font-family: $bchat-font-poppin-semibold; - &:hover { - background-color: $bchat-button-hovor-color; - color: white; - } + &.danger { + background-color: #ff3e3e; + color: #f0f0f0; } - &.white { + &.enable { + background-color: var(--color-enable-btn-bg); color: var(--color-text); - background-color: var(--color-cancelBtn-bg); - &:hover { - background-color: var(--color-leave-button); - } } + } + + &.default-outline { + min-width: 165px; + height: 70px; + align-items: center; + padding: 0px $bchat-margin-lg; + font-size: $bchat-font-lg; + font-weight: 600; + + border-radius: 13px; &.primary { - background-color: var(--color-background-primary); - color: var(--color-text); - border-radius: 10px; + border: 1px solid $bchat-button-green-color; + color: #f0f0f0; + } + } - &:hover { - background-color: var(--color-leave-button); - } + // &.default, + // &.square, + // &.brand { + // color: var(--color-foreground-primary); - .bchat-icon { - fill: var(--color-foreground-primary); - } + // &:not(.disabled):hover { + // // opacity: 0.8; + // } + + // &.green, + // &.white, + // &.primary, + // &.secondary, + // &.success, + // &.danger, + // &.warning { + // &.disabled { + // // filter: brightness(60%); + // background-color: var(--color-disableBtn); + // color: var(--color-disableTxt); + // cursor: not-allowed; + // } + // } + + // &.green { + // // background-image: var(--button-color); + // background-color:$bchat-button-green-color; + + // color: var(--color-text-opposite) ; + // font-family: $bchat-font-poppin-semibold; + // height: 60px; + // // &:hover { + // // background-color: $bchat-button-hovor-color; + // // color: white; + // // } + // } + + // &.white { + // color: var(--color-text); + // background-color: var(--color-cancelBtn-bg); + // &:hover { + // background-color: var(--color-leave-button); + // } + // } + + // &.primary { + // background-color: var(--color-background-primary); + // color: var(--color-text); + // border-radius: 10px; + + // &:hover { + // background-color: var(--color-leave-button); + // } + + // .bchat-icon { + // fill: var(--color-foreground-primary); + // } + // } + + // &.secondary { + // background-color: $bchat-color-secondary; + // } + + // &.success { + // // background-color: $bchat-color-success; + // background-color: #1f1f29; + // color: white; + // } + + // &.danger { + // // background-color: $bchat-color-danger; + // background-color: #e22b2b; + // color: #ffffff; + // &:hover { + // background-color: #ff2727; + // } + // } + + // &.danger-alt { + // background-color: $bchat-color-danger-alt; + // } + + // &.warning { + // background-color: $bchat-color-warning; + // } + // } + + // &.brand-outline, + // &.default-outline, + // &.square-outline { + // border: none; + + // &.green { + // @include transparent-background(white); + // // background-image: var(--button-color); + // // background-color: $bchat-button-green-color; + + // color:#F0F0F0; + // } + + // &.white { + // @include transparent-background(var(--color-text)); + // // background-color:var(--color-body-bg); + // box-shadow: 0px 0px 6px 0px #19192424; + // &:hover { + // background-color: $bchat-button-gray-hover-color; + // } + // } + + // &.primary { + // @include transparent-background($bchat-color-primary); + // } + + // &.secondary { + // @include transparent-background($bchat-color-secondary); + // } + + // &.danger { + // @include transparent-background($bchat-color-danger); + // } + + // &.warning { + // @include transparent-background($bchat-color-warning-alt); + // } + + // &.warning, + // &.danger, + // &.secondary, + // &.primary, + // &.white, + // &.green { + + // &.disabled { + // filter: brightness(60%); + + // &:hover { + // filter: brightness(60%); + // } + // } + // } + // } + + &.brand { + min-width: 200px; + height: 60px; + align-items: center; + padding: 0px $bchat-margin-lg; + // color: #f0f0f0; + font-size: 20px; + font-weight: 500; + border-radius: 16px; + + &.primary { + background: #108d32; + color: #f0f0f0; } &.secondary { - background-color: $bchat-color-secondary; + background: var(--color-secondary-btn-bg); + // color: #f0f0f0; } - &.success { - // background-color: $bchat-color-success; - background-color: #1f1f29; - color: white; + &.disabled { + background-color: var(--color-disableBtn); + color: var(--color-disableTxt); + cursor: not-allowed; + } + + &.enable { + background-color: #202329; + color: #108d32; } &.danger { - // background-color: $bchat-color-danger; - background-color: #e22b2b; - color: #ffffff; + background: var(--color-secondary-btn-bg); + color: #ff3e3e; + &:hover { - background-color: #ff2727; + background-color: #ff3e3e; + color: #f0f0f0; } } - &.danger-alt { - background-color: $bchat-color-danger-alt; + &.red { + background-color: #ff3e3e; + color: #f0f0f0; } - &.warning { - background-color: $bchat-color-warning; - } + // &:not(.disabled):hover { + // color: var(--color-text); + // border-color: var(--color-text); + // } } - &.brand-outline, - &.default-outline, - &.square-outline { - border: none; + &.medium { + min-width: 200px; + height: 50px; + align-items: center; + padding: 0px $bchat-margin-lg; + border-radius: 16px; + font-size: 16px; + font-weight: 300; - &.green { - @include transparent-background(var(--color-button-green)); - // background-image: var(--button-color); - background-color: var(--button-color); + &.secondary { + background: var(--color-secondary-btn-bg); + // color: #f0f0f0; + } - color: white; + &.danger { + background: var(--color-secondary-btn-bg); + color: #ff3e3e; } - &.white { - @include transparent-background(var(--color-text)); - // background-color:var(--color-body-bg); - box-shadow: 0px 0px 6px 0px #19192424; - &:hover { - background-color: $bchat-button-gray-hover-color; - } + &.success { + color: #f0f0f0; + background: #2f8fff; } &.primary { - @include transparent-background($bchat-color-primary); + color: #f0f0f0; + background: #108d32; } - &.secondary { - @include transparent-background($bchat-color-secondary); + &.red { + background-color: #ff3e3e; + color: #f0f0f0; } + } - &.danger { - @include transparent-background($bchat-color-danger); - } + &.default-outline, + &.default, + &.brand, + &.medium { + &.secondary:hover:not(.disabled) { - &.warning { - @include transparent-background($bchat-color-warning-alt); + background-color: var(--color-secondary-btn-hover-bg); } - &.warning, - &.danger, - &.secondary, - &.primary, - &.white, - &.green { - &.disabled { - filter: brightness(60%); - - &:hover { - filter: brightness(60%); - } - } + &.primary:hover:not(.disabled) { + background-color: var(--color-primary-btn-hover-bg); } - } - - &.brand { - min-width: 165px; - height: 60px; - align-items: center; - padding: 0px $bchat-margin-lg; - font-size: $bchat-font-md; - font-family: $bchat-font-poppins-bold; - border-radius: 13px; - &:not(.disabled):hover { - color: var(--color-text); - border-color: var(--color-text); + &.success:hover { + filter: brightness(80%); } } - &.default, - &.square, - &.default-outline, - &.square-outline { - border-radius: 7px; - height: 33px; - padding: 0px 18px; - font-size: $bchat-font-sm; - font-family: $bchat-font-poppin-semibold; - } + // &.default, + // &.square, + // &.default-outline, + // &.square-outline { + // border-radius: 7px; + // height: 33px; + // padding: 0px 18px; + // font-size: $bchat-font-sm; + // font-family: $bchat-font-poppin-semibold; + // } - &.square, - &.square-outline { - border-radius: 7px; - font-family: $bchat-font-poppin-semibold; - } + // &.square, + // &.square-outline { + // border-radius: 7px; + // font-family: $bchat-font-poppin-semibold; + // } - & > *:hover:not(svg) { - filter: brightness(80%); - } + // & > *:hover:not(svg) { + // filter: brightness(80%); + // } } .bchat-label { @@ -318,21 +471,36 @@ textarea { display: inline-block; position: relative; transform: translateZ(0); - - // &:hover { - // color: #159b24; - // width: 30px; - // height: 30px; - // background-color: $bchat-button-gray-hover-color; - // border-radius: 20px; - // } - transition: opacity $bchat-transition-duration; + padding: 5px; - &.no-opacity { - color: #159b24; - background: white; + &:hover { + border-radius: 8px; + background: var(--color-icon-btn-hover); + color: var(--color-text); } + + // &.no-opacity { + // color: #159b24; + // background: white; + // } +} + +.bchat-btn-struct { + display: flex; + align-items: center; + width: 200px; + // background-color: $bchat-button-green-color; + background-color: var(--color-disableBtn); + height: 55px; + color: #108d32; + /* text-align: center; */ + justify-content: center; + min-width: 165px; + border-radius: 12px; + font-size: 20px; + font-weight: 500; + font-family: $bchat-font-default; } /* CONVERSATION AND MESSAGES */ @@ -366,23 +534,25 @@ textarea { .module-conversation-header__title { flex-direction: column; + align-items: flex-start; } .module-conversation-header__title-flex { flex-direction: row; - .threedot-option { - width: 38px; - height: 35px; - display: flex; - justify-content: center; - align-items: center; - padding-bottom: 2px; - &:hover { - background-color: var(--color-profile-close); - border-radius: 20px; - } - } + // .threedot-option { + // width: 38px; + // height: 35px; + // display: flex; + // justify-content: center; + // align-items: center; + // padding-bottom: 2px; + // cursor: pointer; + // &:hover { + // background-color: var(--color-profile-close); + // border-radius: 20px; + // } + // } } .module-conversation__user__profile-name, @@ -392,8 +562,8 @@ textarea { .module-message__author-avatar { position: relative; - margin-inline-end: 20px; - padding-top: 5px; + margin-inline-end: 10px; + // padding-top: 5px; padding-inline-end: 4px; } @@ -427,7 +597,7 @@ pre { position: relative; display: inline-block; overflow: hidden; - min-width: 30px; + min-width: 93px; // To limit messages with things forcing them wider, like long attachment names max-width: calc(100vw - 380px - 100px); align-items: center; @@ -443,10 +613,11 @@ label { position: relative; overflow: hidden; - border-top-left-radius: $bchat_message-container-border-radius; - border-bottom-left-radius: $bchat_message-container-border-radius; - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; + // border-top-left-radius: $bchat_message-container-border-radius; + // border-bottom-left-radius: $bchat_message-container-border-radius; + // border-top-right-radius: 5px; + // border-bottom-right-radius: 5px; + padding: 10px 10px 0; } .module-message__container--outgoing--first-of-series { @@ -467,6 +638,46 @@ label { } } +.audio-message { + + // height: 40px; + .timer { + width: 60px; + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: normal; + padding-left: 10px; + } + + .timer-outgoing { + color: #f0f0f0; + } + + .play-speed-btn { + width: 36px; + height: 22px; + flex-shrink: 0; + border-radius: 12px; + background: #004f16; + color: #f0f0f0; + // font-family: Poppins; + font-size: 12px; + font-style: normal; + font-weight: 600; + line-height: normal; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + } + + .play-speed-btn-incoming { + background-color: var(--color-speedPlay-bg); + color: var(--color-text); + } +} + .module-conversation-header { position: relative; padding: 0px $bchat-margin-lg 0px $bchat-margin-sm; @@ -487,7 +698,6 @@ label { .Toastify__toast { background: var(--color-toast-success); - font-family: $bchat-font-poppin-medium; // background: linear-gradient(--color-cell-background); @@ -503,25 +713,25 @@ label { } @mixin set-toast-theme($color) { - border: 1x solid #919191 !important; - background: $color; - border-radius: 15px; + border-radius: 16px; + border-left: 4px solid $color; + background: var(--color-toast-bg); } &--success { - @include set-toast-theme(var(--color-toast-success)); + @include set-toast-theme(#00a638); } &--info { - @include set-toast-theme(var(--color-toast-success)); + @include set-toast-theme(#2f8fff); } &--warning { - @include set-toast-theme(var(--color-toast-error)); + @include set-toast-theme(#f0af13); } &--error { - @include set-toast-theme(var(--color-toast-error)); + @include set-toast-theme(#ff3e3e); } .Toastify__progress-bar { @@ -535,47 +745,55 @@ label { min-width: 300px; border-radius: 18px; box-sizing: border-box; - max-height: 70vh; + // max-height: 70vh; max-width: calc(min(70vw, 800px)); - font-family: $bchat-font-default; - background-color: var(--color-smModal-bg); + // background-color: var(--color-smModal-bg); + background-color: var(--color-modal-bg); color: var(--color-text); - border: var(--border-bchat); + // border: var(--border-bchat); box-shadow: var(--color-bchat-shadow); overflow: hidden; display: flex; flex-direction: column; + position: relative; &__header { display: flex; flex-direction: row; - justify-content: space-between; - align-items: center; + // justify-content: space-between; + // align-items: center; - padding: $bchat-margin-lg; + padding: 25px; padding-bottom: 0px; font-family: $bchat-font-poppins-bold; - text-align: center; + // text-align: center; line-height: 18px; - font-size: $bchat-font-md; - font-weight: bold; + font-size: $bchat-font-h3; + font-weight: 500; + margin-top: 10px; &.reverse { flex-direction: row-reverse; - .bchat-modal__header__close > div { + .bchat-modal__header__close>div { float: right; } - .bchat-modal__header__icons > div { + .bchat-modal__header__icons>div { float: left; padding-inline-start: 0px; padding-inline-end: 10px; } } + &__iconHeader { + display: flex; + justify-content: center; + align-items: center; + } + &__icons, &__close { display: flex; @@ -583,6 +801,7 @@ label { width: 30px; height: 30px; margin-right: 20px; + &:hover { background-color: var(--color-profile-close); border-radius: 20px; @@ -597,28 +816,32 @@ label { float: right; } - &__close > div { + &__close>div { float: left; padding: $bchat-margin-xs; margin: 0px; } - &__icons > div { + &__icons>div { float: right; padding-inline-start: 10px; } } &__body { - padding: 0px $bchat-margin-lg 0px $bchat-margin-lg; + padding: 0px $bchat-margin-sm 0px $bchat-margin-xs; font-family: $bchat-font-default; line-height: $bchat-font-md; font-size: $bchat-font-md; overflow-y: auto; overflow-x: hidden; - + max-height: 65vh; + // ::-webkit-scrollbar { + // display: none; + // } .message { text-align: center; + } .bchat-id-editable { @@ -632,28 +855,103 @@ label { width: 100%; } - &__box { - background-color: var(--color-settingIndication); - width: 70%; + &__seedPhrase { display: flex; - flex-direction: column; align-items: center; - margin: 200px auto; justify-content: center; - border-radius: 15px; - padding: 0 6%; + height: 95%; + + .box { + padding: 0 6%; + } + + .subLayer { + // margin: 200px auto; + width: 55%; + background-color: var(--color-settingIndication); + // display: flex; + // flex-direction: column; + border-radius: 15px; + overflow: hidden; + + .subText { + color: #f0af13; + font-weight: 500; + font-size: 16px; + margin-bottom: 25px; + } + } } + // &__box { + // // background-color: var(--color-settingIndication); + // // width: 70%; + // // display: flex; + // // flex-direction: column; + // // align-items: center; + // // margin: 200px auto; + // // justify-content: center; + // // border-radius: 15px; + // padding: 0 6%; + // } + + // &__subLayer { + // // margin: 200px auto; + // width: 70%; + // background-color: var(--color-settingIndication); + // // display: flex; + // // flex-direction: column; + // border-radius: 15px; + // overflow: hidden; + + // .subText { + // color: #F0AF13; + // font-weight: 500; + // font-size: 16px; + // margin-bottom: 25px; + // } + // } + &__centered { display: flex; flex-direction: column; align-items: center; // to allow new lines - white-space: pre-wrap; + // white-space: pre-wrap; + // overflow-y: auto; + overflow-x: hidden; + // max-height: 513px; + padding: 0px $bchat-margin-md 0px $bchat-margin-md; + } + + &__deleteAccountModal { + width: 550px; + text-align: left; + + .fontSemiBold { + font-family: $bchat-font-default; + font-weight: 400; + font-size: 15px; + line-height: 20px; + color: #a7a7ba; + text-align: left; + display: inline-grid; + } + + .buttons { + height: 110px; + width: 100%; + display: flex; + flex-direction: row; + // justify-content: space-between; + align-items: center; + } } &__description { - font-family: $bchat-font-poppin-semibold; + font-size: 22px; + font-weight: 700; + margin-bottom: 10px; } &__button-group { @@ -676,6 +974,7 @@ label { border-radius: 5px; box-shadow: var(--color-bchat-shadow); } + .copyIconBtn:hover { transform: scale(1.1); color: #1ced23; @@ -696,6 +995,7 @@ label { .bchat-button.brand-outline { height: 45px; } + .bchat-button.brand-outline.primary { background-color: var(--color-walcancelBtn); box-shadow: var(--color-bchat-shadow); @@ -709,6 +1009,7 @@ label { } } } + // .bchat-button.default.primary // { // background-image: var(--button-color); @@ -722,10 +1023,16 @@ label { &__text-highlight { // @include text-highlight($bchat-color-green); - font-family: $bchat-font-poppin-medium; + // font-family: $bchat-font-poppin-medium; font-size: $bchat-font-lg; - color: var(--color-seed); font-style: normal; + font-weight: 400; + background-color: var(--color-recovery-seed-bg); + border: 1px solid var(--color-search-border); + border-radius: 14px; + padding: 30px; + margin-top: 15px; + white-space: none; } &-recovery-key { @@ -748,6 +1055,7 @@ label { &__input-group { width: 87%; } + &-walletPassword { align-items: center; display: flex; @@ -762,6 +1070,7 @@ label { // background-color: #2d2d3b; // background-color: var(--color-WalcontentBg); border-radius: 10px; + &-walletImg { width: 25%; height: 103px; @@ -771,10 +1080,12 @@ label { // background-image: url('../images/wallet/Password_image.svg'); background-image: var(--img-walPassword); } + &-headerBox { display: flex; align-items: center; justify-content: center; + span { font-family: $bchat-font-poppins-bold; margin-left: 10px; @@ -785,6 +1096,7 @@ label { &-inputBox { margin: 0 auto; width: 73%; + input { outline: none; border: none; @@ -793,6 +1105,7 @@ label { text-align: center; } } + &-loader, &-forgotpasswordLoader { width: 500px; @@ -804,16 +1117,19 @@ label { display: flex; align-items: center; } + &-forgotpasswordLoader { width: 590px; height: 476px; } + &-forgotTxt { text-align: center; color: #1bb51e; font-size: 12px; text-decoration: underline; } + .bchat-button.brand-outline.green { width: 33%; margin: auto; @@ -824,176 +1140,370 @@ label { } &-imgConfirmBox { - width: 380px; - margin: 20px 20px 10px; + width: 400px; + margin: 35px 20px 25px; + font-family: $bchat-font-default; + &-header { - font-family: $bchat-font-poppin-semibold; font-size: 16px; + font-weight: 700; } + &-message { - font-family: $bchat-font-poppin-light; line-height: 20px; + color: #a7a7ba; + span { - font-family: $bchat-font-poppin-semibold; + color: var(--color-text); font-size: 14px; } } } -} - -.bchat-modal__body { - display: flex; - flex-direction: column; -} -.walletPassword .bchat-modal__body { - padding: 0; -} -.walletPassword .exitBtn { - display: flex; - justify-content: flex-end; - margin-right: 12px; - margin-top: 10px; + &-bchatConfirm { + width: 425px; + margin: 0px 0px 25px 5px; + font-family: $bchat-font-default; + font-size: 16px; + text-align: left; + } - article - { - display: flex; - width: 30px; - height: 30px; - justify-content: center; - align-items: center; + &__walletModel { + width: 390px; + margin: 10px 10px 25px; + // font-family: 'Poppins'; + background-color: var(--color-confirm-modal-inner-bg); + border-radius: 16px; + padding: 20px 20px 0px; + max-height: 300px; + overflow-x: hidden; } -} -.walletPassword .exitBtn article:hover { - background-color: var(--color-profile-close); - border-radius: 20px; -} -.blurBg { - filter: blur(10px); -} -.bchat-confirm { - &-wrapper { - .bchat-modal__body .bchat-modal__centered { - // margin: $bchat-margin-lg; - // margin-top: 30px; - // margin-bottom: 30px; - text-align: center; - // margin-top: 8px; - font-family: $bchat-font-poppin-regular; - font-size: 14px; - &-display { - user-select: text; - text-align: center; - word-break: break-all; - font-size: $bchat-font-md; - // padding: 0px $bchat-margin-lg; - // background-color: var(--color-composeMsgInput); - background-color: var(--color-background-primary); - border-radius: 10px; - padding: 10px 10px 10px 14px; - font-family: $bchat-font-default; - font-weight: 100; - color: #0bb70f; - display: flex; - justify-content: space-between; - align-items: center; - flex-direction: row; - width: 100%; - min-height: 60px; - box-shadow: var(--color-bchat-shadow); + &-setPasswordAccess { + width: 400px; + margin: 40px 10px 25px; + font-family: $bchat-font-default; - font-size: $bchat-font-md; - // padding: 0px $bchat-margin-sm; - margin: 17px 0px 0; - } + .contentbox { + text-align: left; + // width: 60%; + // width: 414px; + // background-color: var(--color-WalcontentBg); + // padding: 21px 30px; + // border-radius: 10px; + // margin: 0px 15px; + } - &-display-icon { - // background:url('../images/bchat/copy_icon.svg'); - display: flex; - justify-content: center; - align-items: center; - // background-repeat: no-repeat; - width: 40px; - height: 40px; - position: relative; - // background-color: var(--color-composeMsgInput); - background-color: var(--color-copyIconBg); - background-size: 16px; - border-radius: 30px; - background-position: center; - cursor: pointer; - color: var(--color-copyIcon); - } - &-display-icon:hover { - transform: scale(1.1); - color: #1ced23; - } + .header { + font-family: $bchat-font-default; + font-weight: 500; + font-size: 20px; + } + + .fontSemiBold { + font-family: $bchat-font-default; + font-weight: 400; + font-size: 15px; + line-height: 20px; + color: #a7a7ba; + } + + .span { + color: var(--color-text); + } + + // .bchat-button.brand.green { + // width: 168px; + // height: 40px; + // border-radius: 5px; + // } + + // .flexCenter { + // display: flex; + // justify-content: center; + // } + } + + &-setPassword { + // width: 425px; + margin: 10px 0px 15px; + font-family: $bchat-font-default; + + .contentbox { + text-align: left; + // width: 60%; + // width: 414px; + // background-color: var(--color-WalcontentBg); + // padding: 21px 30px; + // border-radius: 10px; + // margin: 0px 15px; + } + + .header { + font-family: $bchat-font-default; + font-weight: 500; + font-size: 20px; + } + + .bchat-input-with-label-container input { + border: 1px solid var(--color-search-border); + background: var(--color-input-background); + } + + .fontSemiBold { + font-family: $bchat-font-default; + font-weight: 400; + font-size: 15px; + line-height: 20px; + color: #a7a7ba; + } + + .span { + color: white; + } + + // .bchat-button.brand.green { + // width: 168px; + // height: 40px; + // border-radius: 5px; + // } + + // .flexCenter { + // display: flex; + // justify-content: center; + // } + } + + &-footer { + height: 110px; + width: 100%; + display: flex; + flex-direction: row; + justify-content: center; + background-color: var(--color-modal-footer); + align-items: center; + } +} + +.buttons { + display: flex; + width: 180px; + margin: auto 0; + // background-color: #2e333d; + font-weight: 600; + border: none; + border-radius: 12px; + font-size: 12px; + // font-family: 'Poppins'; +} + +.bchat-modal__body { + display: flex; + flex-direction: column; +} + +.walletPassword .bchat-modal__body { + padding: 0; +} + +.walletPassword .exitBtn { + display: flex; + justify-content: flex-end; + margin-right: 12px; + margin-top: 10px; + + article { + display: flex; + width: 30px; + height: 30px; + justify-content: center; + align-items: center; + } +} + +.walletPassword .exitBtn article:hover { + background-color: var(--color-profile-close); + border-radius: 20px; +} + +.blurBg { + filter: blur(10px); +} + +.bchat-confirm { + &-wrapper { + .bchat-modal__body .bchat-modal__centered { + // margin: $bchat-margin-lg; + // margin-top: 30px; + // margin-bottom: 30px; + text-align: center; + // margin-top: 8px; + font-family: $bchat-font-default; + // font-size: 14px; + + // &-display { + // user-select: text; + // text-align: center; + // word-break: break-all; + // font-size: $bchat-font-md; + // // padding: 0px $bchat-margin-lg; + // // background-color: var(--color-composeMsgInput); + // background-color: var(--color-background-primary); + // border-radius: 10px; + // padding: 10px 10px 10px 14px; + // font-family: $bchat-font-default; + // font-weight: 100; + // color: #0bb70f; + // display: flex; + // justify-content: space-between; + // align-items: center; + // flex-direction: row; + // width: 100%; + // min-height: 60px; + // box-shadow: var(--color-bchat-shadow); + + // font-size: $bchat-font-md; + // // padding: 0px $bchat-margin-sm; + // margin: 17px 0px 0; + // } + + // &-display-icon { + // // background:url('../images/bchat/copy_icon.svg'); + // display: flex; + // justify-content: center; + // align-items: center; + // // background-repeat: no-repeat; + // width: 40px; + // height: 40px; + // position: relative; + // // background-color: var(--color-composeMsgInput); + // background-size: 16px; + // border-radius: 30px; + // background-position: center; + // cursor: pointer; + // } + + // &-display-icon:hover { + // transform: scale(1.1); + // color: #1ced23; + // } &-walletModalContent { align-items: center; - justify-content: center; + // justify-content: center; width: 100%; - height: 38px; - font-family: 'poppin-semibold'; + height: 45px; + font-family: $bchat-font-default; display: flex; border-radius: 10px; + padding-left: 15px; + font-size: 16px; + + &-circle, + .selected { + width: 18px; + height: 18px; + border: 2px solid var(--color-radio-icon); + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 10px; + + &:hover { + border: 2px solid #008e00; + } + } + + .selected { + border: 2px solid var(--color-accent); + } } - &-walletModalContent:hover { - // background-color: #444455; - background-color: var(--color-walPopuphover); + &-walletModalContent:hover { + background-color: var(--color-confirm-modal-hover-bg); cursor: pointer; } + .isSelect { - background-color: #2879fb; + // background-color: #2879fb; + background-color: var(--color-icon-btn-hover); cursor: pointer; - color: #fff; + // color: #f0f0f0; + // height: 45px; } &-sendConfirm_content { text-align: initial; // width: 300px; // width: 511px; - width: 355px; + + width: 600px; + + .box-wrapper { + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + padding: 19px; + } .senderBox { display: flex; &-address { - width: 96%; padding-top: 5px; - font-size: 13px; - font-family: 'poppin-light'; + color: #108d32; + font-size: 16px; + /* font-style: normal; */ + font-weight: 400; line-height: 20px; } + &-details { width: 79%; - font-size: 14px; - font-family: $bchat-font-poppin-light; - line-height: 17px; - } - &-addressColor { - color: var(--color-confirmAddress); + + // color: #f0f0f0; + // font-family: Poppins; + font-size: 16px; + // font-style: normal; + font-weight: 600; + // line-height: 26px; /* 162.5% */ } } + &-probTitle { // width: 100px; - font-family: $bchat-font-poppin-semibold; - font-size: 15px; + // font-family: $bchat-font-poppin-semibold; + font-size: 16px; + // font-weight: 600; + color: var(--color-modal-disable-txt); + width: 150px; } &-subHeader { - font-family: $bchat-font-poppin-light; + font-size: 16px; + // font-style: normal; + font-weight: 400; + text-align: start; + // line-height: normal; } + &-passwordBox { - border-bottom: 1px solid #444455; - width: 358px; - padding-top: 20px; + width: 420px; + height: 70px; + flex-shrink: 0; + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-input-background); + display: flex; + padding: 0 13px; + input { - text-align: center; + // text-align: center; + background-color: unset; } } + &-errorTxt { height: 16px; color: red; @@ -1015,23 +1525,26 @@ label { } .bchat-toggle { - width: 50px; - height: 22px; + // width: 50px; + // height: 22px; + width: 65px; + height: 36px; /* border: 1.5px solid #e5e5ea; */ - border-radius: 11px; + border-radius: 50px; position: relative; cursor: pointer; background-color: var(--color-toggleOff); - box-shadow: var(--color-bchat-shadow); + // box-shadow: var(--color-bchat-shadow); + // background-color: #363645; .knob { position: absolute; - top: -2px; - left: -2.5px; + top: 5px; + left: 5.5px; height: 25px; width: 25px; border-radius: 28px; - background-color: #ececec; + background-color: var(--color-toggle-btn); box-shadow: 0 0 3px 1px rgba(0, 0, 0, 0.05), 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05); @@ -1045,8 +1558,9 @@ label { .knob { transform: translateX(20px); - background-color: $bchat-color-green; - left: 10px; + // background-color: $bchat-color-green; + background-color: #4e8e35; + left: 14px; } } } @@ -1056,19 +1570,25 @@ label { z-index: 30; min-width: 215 px; box-shadow: 0 10px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19) !important; - background: var(--color-cell-background); - border-radius: 10px; - font-family: $bchat-font-poppin-medium; + border-radius: 16px; + background-color: var(--color-context-menu-bg); + // background: #1b1e23; + // background: var(--color-cell-background); + // border-radius: 10px; .react-contexify__item { - background: var(--color-cell-background); + // background: var(--color-cell-background); + margin: 5px 15px; + font-size: 16px; + font-weight: 300; } - .react-contexify__item:not(.react-contexify__item--disabled):hover - > .react-contexify__item__content { - background: var(--color-composeMsgIconBG); + .react-contexify__item:not(.react-contexify__item--disabled):hover>.react-contexify__item__content { + border-radius: 14px; + // background: #333842; // color: var(--color-text-menu-highlighted); - color: '#fff'; + background-color: var(--color-context-menu-hover-bg); + color: var(--color-text); } .react-contexify__item__content { @@ -1080,7 +1600,7 @@ label { top: 0px !important; // height of an item element .react-contexify__item__content { - justify-content: center; + justify-content: start; } } @@ -1102,12 +1622,17 @@ label { padding: 0px $bchat-margin-md; font-size: $bchat-font-sm; - color: var(--color-text); - background: var(--color-composeMsgInput); + // color: var(--color-text); + // background: var(--color-composeMsgInput); // background: var(--color-cell-background); + border-radius: 16px; + background: #2e333d; + color: #f0f0f0; + font-size: 16px; + font-weight: 300; &:hover { - background: var(--color-clickable-hovered); + opacity: 0.9; } } @@ -1169,13 +1694,13 @@ label { } } - &:hover { - background: var(--color-clickable-hovered); + // &:hover { + // background: var(--color-clickable-hovered); - .bchat-icon { - opacity: 1; - } - } + // .bchat-icon { + // opacity: 1; + // } + // } } .image-upload-section { @@ -1183,7 +1708,7 @@ label { align-items: center; justify-content: center; position: absolute; - cursor: pointer; + // cursor: pointer; width: 85px; height: 85px; border-radius: 100%; @@ -1200,32 +1725,54 @@ label { // } } +.camera { + background-color: var(--color-modal-icon-bg); + border-radius: 20px; + width: 34px; + height: 34px; + position: relative; + justify-content: center; + background-size: 32px; + top: 29px; + left: 10px; + align-items: center; + display: flex; + cursor: pointer; + + &:hover { + background-color: var(--color-camera-hover-bg); + } +} + .qr-image { display: flex; justify-content: center; - border-radius: 30px; - // margin-bottom: 45px; - width: 58%; - - // background: white; - padding: 0.2rem; + background-color: var(--color-qr-outer-bg); + border: 0.73px solid var(--color-search-border); + height: 161px; + width: 161px; + border-radius: 12px; svg { - width: 212px !important; - height: 193px !important; - // border-radius: 6px; + width: 130px !important; + height: 135px !important; + border-radius: 5px; // padding: $bchat-margin-xs; // background-color: $bchat-color-white; } } .qr-box-view { - width: 100%; + width: 415px; display: flex; flex-direction: column; justify-content: center; align-items: center; position: relative; + font-family: $bchat-font-default; + font-weight: 400; + color: #a7a7ba; + // margin-top: 5px; } .qr-center-icon { @@ -1236,14 +1783,16 @@ label { } .profile-header { - font-family: $bchat-font-poppin-semibold; + // font-family: $bchat-font-poppin-semibold; font-size: 12px; + font-weight: 600; } .profile-value { width: 86%; - font-family: $bchat-font-poppin-medium; + // font-family: $bchat-font-poppin-medium; font-size: 14px; + font-weight: 600; } .conversation-loader { @@ -1252,7 +1801,7 @@ label { left: 50%; margin: -40px 0 0 -40px; - & > div { + &>div { display: block; } } @@ -1275,20 +1824,60 @@ label { // width: calc(100vw - 417px); // height: 30px; // bottom: 0; - background-color: var(--color-walSyncbar); + // background-color: var(--color-walSyncbar); // &-subParent { // padding: 0 18px; // } - &-statusTxt { - font-size: 12px; + height: 50px; + border-radius: 10px; + background: var(--color-walSyncbar); + overflow: hidden; + + .per-Wrapper { + // color: #f0f0f0; + font-weight: 600; + border-radius: 33px; + background: var(--color-wallet-status-txt-Bg); + padding: 0px 15px; + margin-right: 10px; + display: flex; + align-items: center; + } + + &-statusTxt-wrapper { + .txt { + // color: #f0f0f0; + font-weight: 400; + border-radius: 33px; + background: var(--color-wallet-status-txt-Bg); + padding: 5px 15px; + margin-right: 10px; + } + &-greenTxt { - color: #00bf25; + color: #f0f0f0; + font-weight: 600; } } + &-statusvalue { - font-size: 12px; - color: #9393b1; + // font-size: 12px; + // color: #9393b1; + padding: 3px 10px; + border-radius: 16px; + border: 1px solid var(--color-search-border); + + .type-txt { + color: var(--color-modal-disable-txt); + font-weight: 400; + } + + .type-value { + // color: #f0f0f0; + font-size: 12px; + font-weight: 600; + } } &-balance { @@ -1296,6 +1885,7 @@ label { font-size: 12px; font-family: $bchat-font-poppin-semibold; } + &-unlocked-Balance { color: #0093ff; font-size: 12px; @@ -1309,42 +1899,75 @@ label { } } +.wallet-contact-left-pane-wrapper { + min-width: 300px; + width: 24vw; + max-width: 420px; + height: 100vh; + background-color: var(--color-left-pane-bg); +} + +.address-book-wrapper { + background-color: var(--color-wallet-inner-bg); + border-radius: 16px; +} + .addressBook { + padding: 15px; + &-header { &-txt { - font-family: $bchat-font-poppin-semibold; - margin-left: 10px; - font-size: 15px; + // color: #f0f0f0; + font-size: 20px; + font-weight: 600; + line-height: 25px; + /* 125% */ } } + &-wholeBox { - height: calc(83vh - 30px); + overflow: auto; + &-contentBox { - background-color: var(--color-WalcontentBg); + // background-color: var(--color-WalcontentBg); border-radius: 10px; - padding: 15px; + // padding: 6px 15px; + padding: 6px 15px 6px 0; display: flex; justify-content: space-between; - &-nameBtn { - display: inline-block; - min-width: 130px; - background-color: #159b24; - padding: 4px 27px; - border-radius: 3px; - /* margin-bottom: 10px; */ - font-family: 'poppin-semibold'; - color: #fff; - } + + // &-nameBtn { + // display: inline-block; + // min-width: 130px; + // background-color: #159b24; + // padding: 4px 27px; + // border-radius: 3px; + // /* margin-bottom: 10px; */ + // // font-family: 'poppin-semibold'; + // color: #fff; + // } + .contact { - font-family: $bchat-font-poppin-medium; + // font-family: $bchat-font-poppin-medium; background-color: unset; padding: unset; color: unset; + // color: #f0f0f0; + font-size: 16px; + font-weight: 400; } + &-addresstxt { - font-family: $bchat-font-poppin-light; - font-size: 11px; - margin-right: 12px; + // font-family: $bchat-font-poppin-light; + // font-size: 11px; + // margin-right: 12px; + + // overflow: hidden; + color: var(--color-last-msg-txt); + // text-overflow: ellipsis; + // white-space: nowrap; + // font-size: 14px; + font-weight: 300; } .avatarBox { @@ -1353,39 +1976,13 @@ label { align-items: center; margin-right: 10px; } + // .ellipse { // width: 321px; // white-space: nowrap; // overflow: hidden; // text-overflow: ellipsis; // } - - &-sendBtn, - &-copyBtn { - width: 100px; - background-color: #2879fb; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - border-radius: 5px; - font-family: $bchat-font-poppin-semibold; - cursor: pointer; - } - &-sendBtn { - color: #fff; - - &:hover { - background-color: #0b9fff; - } - } - &-copyBtn { - background-color: var(--color-walAddressBookCopy); - margin-left: 10px; - &:hover { - background-color: var(--color-addressbook-copy-hover); - } - } } } @@ -1393,20 +1990,38 @@ label { margin: 0 auto; background-image: var(--image-EmptyAddressBook); // height: 100%; - height: 80%; + height: 42%; + // height: 27%; + width: 100%; background-repeat: no-repeat; background-position: center; background-size: 90% 98%; &-content { - font-family: $bchat-font-poppin-medium; - // font-size: 15px; - color: var(--color-disableText); - // padding-top: 50%; - margin: 0; + .address-txt { + color: #a7a7ba; + font-family: $bchat-font-open-sans; + font-size: 18px; + text-align: center; + font-style: normal; + font-weight: 600; + line-height: normal; + } + + .address-hint-txt { + color: #82828d; + text-align: center; + font-weight: 400; + } } } + + .partition:not(:last-child) { + border-bottom: 0.5px solid var(--color-search-border); + border-radius: unset; + } + } .bchat-settings { @@ -1418,19 +2033,47 @@ label { &-list { overflow-y: auto; overflow-x: hidden; - padding: 15px 15px 0 15px; + margin: 15px 15px 0 15px; height: 100%; + .bgWrapper { + border-radius: 16px; + background: var(--color-settings-right-pane-option); + } + + .hopes { + display: flex; + justify-content: center; + margin: auto; + width: 85%; + height: 100%; + + .layer { + display: flex; + flex-direction: column; + width: 90%; + // height: 72%; + margin: auto; + justify-content: center; + // background-color: #202329; + background-color: var(--color-hop-bg); + padding: 30px; + border-radius: 16px; + } + } + .noBlockedContacts { width: 100%; + height: 100%; text-align: center; margin: 0 auto; - font-family: 'poppin-semibold'; display: flex; justify-content: center; align-items: center; flex-direction: column; - color: var(--color-disableText); + color: #858598; + font-size: 24px; + font-weight: 400; .noBlockedContacts-img { width: 500px; @@ -1438,7 +2081,7 @@ label { background-image: var(--image-BlockedContact); background-repeat: no-repeat; background-size: contain; - margin-top: 16%; + // margin-top: 16%; } } } @@ -1450,19 +2093,21 @@ label { align-items: center; height: $main-view-header-height; background-color: var(--color-chatHeader); + border-bottom: 1px solid var(--color-setting-header-border); + // background: #131313; &-title { - line-height: $main-view-header-height; - font-weight: bold; - font-size: $bchat-font-lg; + // line-height: $main-view-header-height; text-align: center; flex-grow: 1; + font-size: 24px; + font-weight: 600; } - &-selectionBox { - width: 94px; - padding-left: 7px; - } + // &-selectionBox { + // width: 94px; + // padding-left: 7px; + // } .bchat-button, .bchat-icon-button { @@ -1473,14 +2118,15 @@ label { &-item { font-size: $bchat-font-md; padding: $bchat-margin-lg; - margin-bottom: 4px; - border-radius: 10px; - background-color: var(--color-settingIndication); - color: var(--color-text); - - &:hover { - background-color: var(--color-settings-options-hover); - } + // margin-bottom: 4px; + // border-radius: 10px; + // background-color: var(--color-settingIndication); + // color: var(--color-text); + border-bottom: 0.5px solid var(--color-settings-right-pane-option-border); + + // &:hover { + // background-color: var(--color-settings-options-hover); + // } &.inline { display: flex; @@ -1498,17 +2144,24 @@ label { } &__title { - line-height: 1.7; - font-size: $bchat-font-lg; - font-family: $bchat-font-poppin-semibold; + // line-height: 1.7; + // font-size: $bchat-font-lg; + // color: #f0f0f0; + font-size: 20px; + font-weight: 400; + // font-family: $bchat-font-poppin-semibold; } &__description { - font-family: $bchat-font-poppin-regular; - font-size: $bchat-font-sm; + // font-family: $bchat-font-poppin-regular; + // font-size: $bchat-font-sm; font-weight: 100; max-width: 700px; @include bchat-color-subtle(var(--color-text)); + + color: #a7a7ba; + font-size: 16px; + font-weight: 400; } &__content { @@ -1522,28 +2175,30 @@ label { transition: $bchat-transition-duration; } - .active { - background-color: var(--color-inbox-background); - } + // .active { + // background-color: var(--color-inbox-background); + // } } &__dropdownValue, &-font-Change { - width: 82px; - height: 30px; - border-radius: 4px; - background-color: var(--color-inboxBgColor); + width: 100px; + height: 45px; + border-radius: 12px; + /* background-color: var(--color-inboxBgColor); */ + background-color: var(--color-conversation-item-selected); display: flex; align-items: center; justify-content: space-around; padding-left: 10px; cursor: pointer; } + &-font-Change { width: 110px; padding: 0 0px 0 10px; justify-content: space-around; - height: 30px; + // height: 30px; } .react-select-container { @@ -1559,34 +2214,58 @@ label { &-circle, .selected { - width: 15px; - height: 15px; - border: 1px groove #ebebeb; + width: 20px; + height: 20px; + border: 2px solid var(--color-radio-icon); border-radius: 10px; display: flex; align-items: center; justify-content: center; margin-right: 10px; + &:hover { - border: 1px groove #008e00; + border: 2px solid #008e00; } } + .selected { - border: 1px solid var(--color-accent); + border: 2px solid var(--color-accent); } + &-title { - font-family: $bchat-font-poppin-medium; + // font-family: $bchat-font-poppin-medium; + // color: #f0f0f0; + font-size: 16px; + font-weight: 400; } } } + &-item:last-child { + border-bottom: unset; + } + + .notification-setting { + .notify-option-wrapper { + border-radius: 16px; + // background: #202329; + background: var(--color-settings-right-pane-option); + overflow: hidden; + } + + .bchat-settings-item { + border: unset; + background: var(--color-settings-right-pane-option); + border-radius: 16px; + } + } + &-view { flex-grow: 1; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; - background-color: var(--color-rightpaneSetting); } &__version-info { @@ -1615,40 +2294,53 @@ label { flex-grow: 1; &-box { - padding: 45px 60px; - display: flex; - flex-direction: column; - align-items: center; + width: 500px; - max-width: 90%; - width: 600px; + .subBox { + padding: 20px 35px; + display: flex; + flex-direction: column; + align-items: center; - background: var(--color-cell-background); - color: var(--color-text); + // max-width: 90%; + // width: 600px; - border: 1px solid $bchat-shade-8; - border-radius: 5px; + background: var(--color-settingIndication); + // color: #858598; + + // border: 1px solid $bchat-shade-8; + border-radius: 5px; + } - h3 { - padding: 0px; - margin-bottom: $bchat-margin-lg; + .password { + font-size: 22px; + font-weight: 700; + margin-bottom: 15px; + } + + .subtext { + font-size: 22px; + margin-bottom: 15px; + font-weight: 700; } input { width: 100%; background: var(--color-input-background); - color: var(--color-text); - + color: #858598; + height: 65px; padding: $bchat-margin-xs $bchat-margin-md; - margin-bottom: $bchat-margin-lg; + // margin-bottom: $bchat-margin-lg; + // outline: none; + border: 1px solid var(--color-search-border); + border-radius: 16px; + // text-align: center; + font-size: $bchat-font-h4; + // letter-spacing: 5px; + // font-family: $bchat-font-default; outline: none; - border: none; - border-radius: 2px; - text-align: center; - font-size: $bchat-font-xl; - letter-spacing: 5px; - font-family: $bchat-font-default; } + .confirm-Button { .bchat-button.brand { min-width: 165px; @@ -1658,7 +2350,7 @@ label { font-size: 14px; font-family: 'Poppins'; border-radius: 13px; - background-color: var(--button-color); + background-color: $bchat-button-green-color; } } } @@ -1669,27 +2361,29 @@ label { display: flex; flex-direction: row; padding-inline-end: 16px; - padding: 10px 0; + padding: 10px 15px; padding-inline-start: 16px; align-items: center; - background-color: var(--color-settingIndication); - margin-bottom: 2px; + background-color: var(--color-blockUserBg); + // background-color: #202329; + font-family: $bchat-font-default; + margin-bottom: 6px; border-radius: 10px; } &-profileName { - font-family: $bchat-font-poppin-semibold; font-size: $bchat-font-lg; + font-weight: 500; } &-acceptButton { - background-color: $bchat-button-color; + background-color: $bchat-button-green-color; color: white; padding: 8px 25px; border-radius: 8px; - font-family: $bchat-font-poppin-semibold; margin-right: 20px; cursor: pointer; + &:hover { background-color: #00ce04; } @@ -1733,44 +2427,52 @@ label { } } - &-warnUnsetpass { - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - background-color: #0000001f; - &-contentbox { - text-align: center; - // width: 60%; - width: 414px; - background-color: var(--color-WalcontentBg); - padding: 21px 30px; - border-radius: 10px; - margin: 0px 15px; - } - .fontSemiBold { - font-family: $bchat-font-poppin-semibold; - font-size: 14px; - &:hover { - background-color: var(--color-walletPriorityHover); - } - } - .bchat-button.brand.green { - width: 168px; - height: 40px; - border-radius: 5px; - } - .flexCenter { - display: flex; - justify-content: center; - } - } + // &-warnUnsetpass { + // width: 100%; + // height: 100%; + // display: flex; + // align-items: center; + // justify-content: center; + // background-color: #0000001f; + + // &-contentbox { + // text-align: left; + // // width: 60%; + // width: 414px; + // background-color: var(--color-WalcontentBg); + // padding: 21px 30px; + // border-radius: 10px; + // margin: 0px 15px; + // } + + // .header { + // font-family: $bchat-font-default; + // font-weight: 500; + // font-size: 20px; + // } + + // .fontSemiBold { + // font-family: $bchat-font-default; + // font-weight: 500; + // font-size: 14px; + + // .bchat-button.brand.green { + // width: 168px; + // height: 40px; + // border-radius: 5px; + // } + + // .flexCenter { + // display: flex; + // justify-content: center; + // } + // } .wallet { .marginLeft { margin-left: 10px; } + .marginRight { margin-right: 10px; } @@ -1778,61 +2480,117 @@ label { .font-medium { font-family: $bchat-font-poppin-medium; } + .flexCenter { display: flex; align-items: center; } + &-header { display: flex; width: 100%; justify-content: space-between; + height: 70px; + border-bottom: 1px solid #202329; + &-left-side, &-right-side { display: flex; align-items: center; } + + &-left-side { + .header-txt { + margin-left: 10px; + // color: #f0f0f0; + font-size: 22px; + font-weight: 400; + } + } } + &-button { - background-color: var(--color-WalcontentBg); - border-radius: 50px; - padding: 10px 14px; + // background-color: var(--color-WalcontentBg); + // border-radius: 50px; + // padding: 10px 14px; + padding: 14px 18px; cursor: pointer; - &:hover { - background-color: var(--color-WalcontentBgHover); - } + border-radius: 16px; + background: var(--color-secondary-btn-bg); + } + + &-button:hover { + background-color: var(--color-secondary-btn-hover-bg); } + &-squarBox-bala, &-squarBox-tran { - background-color: var(--color-WalcontentBg); - border-radius: 10px; - padding: 17px 30px 17px 30px; + // background-color: var(--color-WalcontentBg); + // border-radius: 10px; + // padding: 17px 30px 17px 30px; + border-radius: 16px; + background: var(--color-wallet-inner-bg); + padding: 15px; } + &-squarBox-bala { - width: 63%; + .innerWrapper { + border-radius: 16px; + background: var(--color-wallet-status-txt-Bg); + padding: 15px; + } + .flexWrap { display: flex; flex-wrap: wrap; justify-content: space-between; } } + &-squarBox-tran { - width: 35.4%; + // width: 35.4%; + background-color: unset; + } + + &-btn-wrapper { + border-radius: 16px; + background: var(--color-modal-bg); + padding: 10px 0; } + &-contentSpace { - height: calc(100vh - 170px); + // height: calc(100vh - 200px); overflow: auto; } + &-left-balance-Sec { - font-family: $bchat-font-poppin-semibold; &-balanceTxt { - font-size: 22px; + // color: #ebebeb; + font-size: 24px; + font-weight: 700; } - &-fiatCurrency { - font-size: 14px; - color: #8f8fa2; + + // &-fiatCurrency { + // font-size: 14px; + // color: #8f8fa2; + // } + .currencyExt { + border-radius: 33px; + background: var(--color-wallet-inner-bg); + color: var(--color-hop-txt); + font-weight: 600; + padding: 2px 15px; + } + + .currencyVal { + color: var(--color-hop-txt); + font-size: 18px; + font-weight: 700; + margin-left: 10px; } } + &-right-Button-Sec { &-fetch-btn { background-color: #2879fb; @@ -1845,37 +2603,45 @@ label { font-family: 'poppin-medium'; font-size: 10px; } + &-unlockbal-box { - background-color: var(--color-walunlockbal); - height: 60px; - display: flex; - align-items: center; - border-radius: 10px; - margin-top: 5px; - padding: 0 20px; + // height: 60px; + // display: flex; + // align-items: center; + // border-radius: 10px; + // margin-top: 5px; + // padding: 0 20px; &--Text { - font-size: 11px; - margin-right: 10px; - } - &--verticalLine { - border-left: 2px solid #afafc194; - height: 27px; + // font-size: 11px; + // margin-right: 10px; + + color: var(--color-wallet-unbalance-label); + font-size: 18px; + font-weight: 400; } + .unBalance { - font-size: 16px; - margin-left: 10px; - text-align: center; - font-family: 'poppin-semibold'; - } - .bdx { - font-family: 'poppin-semibold'; - font-size: 18px; - color: #a2a2af; - margin-left: 7px; + // font-size: 16px; + // margin-left: 10px; + // text-align: center; + // font-family: 'poppin-semibold'; + // color: #a7a7ba; + color: var(--color-hop-txt); + text-align: right; + font-size: 22px; + font-weight: 600; } + + // .bdx { + // font-family: 'poppin-semibold'; + // font-size: 18px; + // color: #a2a2af; + // margin-left: 7px; + // } } } + &-walletPassword { align-items: center; display: flex; @@ -1897,10 +2663,12 @@ label { margin: auto; background-image: var(--img-walPassword); } + &-headerBox { display: flex; align-items: center; justify-content: center; + span { font-family: $bchat-font-poppins-bold; margin-left: 10px; @@ -1911,6 +2679,7 @@ label { &-inputBox { margin: 0 auto; width: 73%; + input { outline: none; border: none; @@ -1919,6 +2688,7 @@ label { text-align: center; } } + &-loader, &-forgotpasswordLoader { width: 500px; @@ -1930,16 +2700,19 @@ label { display: flex; align-items: center; } + &-forgotpasswordLoader { width: 590px; height: 476px; } + &-forgotTxt { text-align: center; color: #1bb51e; font-size: 12px; text-decoration: underline; } + .bchat-button.brand-outline.green { width: 33%; margin: auto; @@ -1948,6 +2721,7 @@ label { } } } + &-progressSync { &-presentage { text-align: center; @@ -1955,11 +2729,13 @@ label { font-size: 20px; color: #128b17; } + &-barBg { width: 100%; height: 10px; background-color: var(--color-walSyncbar); padding-top: 2px; + .bar { background-color: #1bb51e; width: 40%; @@ -1967,109 +2743,94 @@ label { margin-top: 1px; } } + &-reloadTxt { text-align: center; font-family: $bchat-font-poppin-semibold; font-size: 14px; } + &-bRemaing { text-align: center; } } + &-myAddress-Box { display: flex; - // justify-content: space-between; + width: 100%; + padding: 15px; + border-radius: 12px; + background: var(--color-wallet-inner-bg); + justify-content: space-between; align-items: center; - // justify-content: space-between; + &-content { - // width: 90%; - // // height: 38px; - // height: 50px; - // // background-color: #1c1c26; - // background-color: var(--color-walInputBg); - // border-radius: 10px; - // display: flex; - // justify-content: center; - // align-items: center; - // // padding: 15px; - // font-family: $bchat-font-poppin-light; - // font-size: 12px; - // padding: 8px; - // width: 87%; - // width: 90%; - width: 200px; - /* height: 50px; */ - background-color: var(--color-walInputBg); - border-radius: 10px; - /* display: flex; */ - /* justify-content: center; */ - /* align-items: center; */ - font-family: 'poppin-light'; - font-size: 12px; - padding: 15px 8px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + width: 88%; margin-right: 10px; - /* cursor: pointer; */ - // margin-right: 13px; + + .addres-title { + // color: #f0f0f0; + font-size: 16px; + font-weight: 600; + } + + .address-txt { + color: #108d32; + font-size: 16px; + font-weight: 400; + } } &-copyIcon-box { display: flex; justify-content: center; align-items: center; - // width: 30px; - // height: 30px; - width: 35px; - height: 35px; - position: relative; - // background-color: #fff; - background-color: var(--button-color); - - background-size: 16px; - border-radius: 30px; - background-position: center; + width: 40px; + height: 40px; + background-color: var(--color-secondary-btn-bg); + border-radius: 12px; cursor: pointer; - // color: var(--color-copyIcon); - color: #fff; } + &-copyIcon-box:hover { // transform: scale(1.1); // color: #1ced23; - background-color: #29b52f; + background-color: var(--color-secondary-btn-hover-bg); } } + &-sendForm { // background-color: #303041; - background-color: var(--color-WalcontentBg); + // background-color: var(--color-WalcontentBg); width: 100%; border-radius: 10px; padding: 15px; + &-label { // width: 77px; // width: calc(20% + 30px); width: 90px; + color: var(--color-text); + /* font-family: Poppins; */ + font-size: 18px; + /* font-style: normal; */ + font-weight: 400; } + &-inputBox { width: 100%; // height: 60px; // background-color: #1c1c26; - background-color: var(--color-walInputBg); - border-radius: 10px; + // background-color: var(--color-walInputBg); + // border-radius: 10px; display: flex; justify-content: center; align-items: center; padding: 8px; + border-radius: 16px; + border: 1px solid var(--color-search-border); - .priortyBox { - width: 90%; - // height: 40px; - height: 55px; - display: flex; - align-items: center; - } select { width: 100%; border: none; @@ -2086,26 +2847,30 @@ label { // -webkit-padding-start: 2px; // -webkit-user-select: none; } + option { background-color: var(--color-walInputBg); padding: 8px; + i { padding: 8px; height: 40px; } } + .bchat-button.brand.green { height: 35px; border-radius: 6px; width: 139px; } + input { border: none; outline: none; width: 100%; height: 40px; - font-family: $bchat-font-poppin-light; - font-size: 12px; + font-size: 18px; + font-weight: 400; } // input::-webkit-outer-spin-button, @@ -2114,21 +2879,43 @@ label { // margin: 0; // } } + + &-priorty-wrapper { + border-radius: 16px; + background: var(--color-modal-bg); + width: 110px; + height: 46px; + flex-shrink: 0; + margin-left: 10px; + display: flex; + /* justify-content: center; */ + align-items: center; + padding: 15px; + + .txt { + color: var(--color-hop-txt); + font-size: 18px; + font-weight: 500; + margin-left: 5px; + } + } + &-textArea { width: 100%; border: 0px; height: 100px; resize: none; outline: none; - font-family: $bchat-font-poppin-light; - font-size: 12px; + font-size: 18px; + font-weight: 400; } + &-sendBtnBox { display: flex; justify-content: center; align-items: center; - height: 100%; width: 100%; + .bchat-button.brand.green { width: 10px; height: 44px; @@ -2137,72 +2924,73 @@ label { } &-receivedForm { - // background-color: #303041; - background-color: var(--color-WalcontentBg); - // height: 58%; - display: flex; + align-items: center; width: 100%; - border-radius: 10px; - // padding: 40px; - padding: 59px 40px; + display: flex; + flex-direction: column; + justify-content: center; + padding: 15px; + + &-title { + color: var(--color-text); + font-size: 18px; + font-weight: 600; + margin: 0; + } + &-qrBox { // width: 210px; // height: 210px; padding: 15px; - background-color: var(--color-walQrOutline); - border-radius: 10px; + // border-radius: 10px; + border-radius: 16px; + background: var(--color-qr-outer-bg); &-qrView { display: flex; justify-content: center; /* border-radius: 30px; */ - width: 210px; - height: 210px; + width: 177px; + height: 185px; padding: 0.2rem; - background-color: #fff; + background-color: #d9d9d9; + border-radius: 16px; + overflow: hidden; } } + &-rightSide { - margin-left: 26px; + // margin-left: 26px; + width: 100%; + &-Title { font-size: 28px; - font-family: $bchat-font-poppins-bold; } + &-label { - color: #8f8fa2; - font-family: $bchat-font-poppin-regular; - margin-bottom: 5px; + // color: #f0f0f0; + font-size: 17px; + font-weight: 400; } + &-input { border: none; outline: none; width: 100%; - // background-color: #1c1c26; - background-color: var(--color-walInputBg); - height: 50px; - border-radius: 10px; + height: 70px; padding-left: 20px; - } - &-btn { - // background-color: #128b17; - background-color: var(--button-color); - font-family: $bchat-font-poppin-semibold; - width: 157px; - display: flex; - justify-content: center; - align-items: center; - height: 39px; - border-radius: 6px; - cursor: pointer; - color: #fff; + border-radius: 16px; + border: 1px solid var(--color-search-border); } } } + &-forgotPassword { display: flex; justify-content: center; align-items: center; width: 100%; + &-content-Box { display: flex; flex-direction: column; @@ -2216,15 +3004,18 @@ label { background-color: var(--color-WalcontentBg); border-radius: 10px; margin: 5% 0px; + &-title { text-align: center; font-size: 18px; font-family: $bchat-font-poppins-bold; padding-top: 20px; } + &-seed { display: flex; flex-direction: row; + textarea { border: none; outline: none; @@ -2241,25 +3032,7 @@ label { border-radius: 10px; } } - &-paste-icon { - background: url('../images/bchat/paste.svg') no-repeat; - width: 35px; - height: 35px; - background-color: var(--color-inboxBgColor); - background-size: 14px; - border-radius: 35px; - background-position: center; - left: 10px; - top: 19px; - position: relative; - cursor: pointer; - box-shadow: var(--color-bchat-shadow); - } - &-paste-icon:hover { - // transform: scale(1.1); - background-color: var(--color-wallet-copy-hover); - // color: #1ced23; - } + &-password { input { border: none; @@ -2276,6 +3049,7 @@ label { padding: 10px; } } + &-disClaimerBox { // width: 86%; // padding-top: 12px; @@ -2289,19 +3063,29 @@ label { &-settings { &-tabBox { - // background-color: #2d2d3b; - background-color: var(--color-WalcontentBg); + background-color: #202329; + // background-color: var(--color-WalcontentBg); padding: 20px; border-radius: 10px; + background-color: var(--color-settings-right-pane-option); &-disableText { - color: #a1a1bc; + color: #a7a7ba; padding-right: 12px; } + + &-title { + font-family: $bchat-font-default; + font-size: 18px; + font-weight: 500; + } + &-subtle { - font-family: $bchat-font-poppin-semibold; + font-family: $bchat-font-default; font-size: 16px; + font-weight: 400; } + &-checkBox { display: block; border: 2px solid var(--color-text); @@ -2309,22 +3093,28 @@ label { height: 15px; border-radius: 3px; } + .subBox { padding: 0px 10px; border-radius: 7px; + &:hover { - background-color: var(--color-settings-options-hover); + // background-color: var(--color-settings-options-hover); + background-color: var(--color-context-menu-bg); + // background-color: #1b1e23; } } } &-nodeSetting { &-contentBox { - // background-color: #303041; - background-color: var(--color-WalcontentBg); + // background-color: #202329; + background-color: var(--color-settings-right-pane-option); + // background-color: var(--color-WalcontentBg); border-radius: 10px; - padding: 15px; + padding: 25px 20px 20px; } + &-FlexBox { display: flex; justify-content: center; @@ -2334,67 +3124,102 @@ label { &-outlineCircle { border: 2px solid var(--color-text); /* padding: 2px; */ - width: 20px; - height: 20px; - padding: 0; + width: 19px; + height: 19px; + padding: 3px; border-radius: 36px; display: flex; justify-content: center; align-items: center; } + + &-radio-label { + // color: #f0f0f0; + font-size: 20px; + font-weight: 400; + } } + // .bchat-modal__centered { // text-align: unset; // align-items: unset; // } &-notesTxt { - font-family: $bchat-font-poppin-light; + color: #a7a7ba; + font-size: 18px; + font-weight: 400; } + &-dropDownHeaderTxt { - font-family: $bchat-font-poppin-semibold; - color: var(--color-walletNodeHeader); - font-size: 16px; + background-color: var(--color-conversation-item-selected); + padding: 20px; + border-radius: 16px; + height: 50px; + align-items: center; + + .text { + font-size: 14px; + font-weight: 300; + } } + &-horizontalLine { background-color: #707070; width: 100%; height: 1.5px; } + &-dropDownModal, &-sendDropDown { position: absolute; // background-color: #1c1c26; - background-color: var(--color-walInputBg); + // background-color: var(--color-walInputBg); width: 95%; - top: 2px; - padding: 19px; - border-radius: 10px; + top: 2px; + // padding: 19px; + // border-radius: 10px; box-shadow: 1px -1px 10px #00000074; // max-height: 140px; max-height: 171px; overflow: auto; + padding: 15px; + border-radius: 16px; + background: var(--color-context-menu-bg); &-items { margin-bottom: 5px; display: flex; align-items: baseline; padding: 10px 19px; - &:hover { - background-color: var(--color-walletPriorityHover); - } } - } - &-dropDownModal { - padding: 19px 0px; + + &-items:hover { + border-radius: 16px; + background: var(--color-context-menu-hover-bg); + } } &-sendDropDown { - width: 97%; - top: 4px; - padding: 18px; + width: 186px; + top: 7px; + right: -10px; + max-height: 260px; + padding: 14px; + font-weight: 300; + z-index: 1; + .dropDownItem { cursor: pointer; + // color: #f0f0f0; + font-size: 16px; + font-weight: 300; + padding: 10px; + + &-selected { + border-radius: 16px; + background: var(--color-context-menu-hover-bg); + } &-checkedCircle { display: inline-block; @@ -2404,134 +3229,151 @@ label { border-radius: 10px; margin-right: 5px; } + &-blockAndMargin { display: inline-block; margin-right: 5px; } } + .fontSemiBold { - font-family: $bchat-font-poppin-semibold; + font-weight: 600; margin-bottom: 8px; } + .fontRegular { - font-family: $bchat-font-poppin-regular; font-weight: 100; } } + &-remoteContentBox { display: flex; align-items: center; - width: 45%; + width: 50%; &-content-hidden-Box { display: none; transition: display 2s; } + .d-block { display: block; } &-labelTxt { // width: 20%; - width: 97px; - margin-right: 10px; + // color: #f0f0f0; + font-size: 16px; + font-weight: 500; + width: 163px; } + &-inputBox { border: none; outline: none; - width: 80%; + width: 57%; // background-color: #1c1c26; - background-color: var(--color-walInputBg); + // background-color: var(--color-walInputBg); - height: 50px; + height: 60px; border-radius: 10px; padding-left: 20px; display: flex; justify-content: flex-end; + + align-items: center; + border-radius: 16px; + background-color: var(--color-conversation-item-selected); + &-dropDownBtn { display: flex; width: 30px; height: 30px; - background-color: #0d9e14; + // background-color: #0d9e14; justify-content: center; align-items: center; - margin-top: 10px; + // margin-top: 10px; margin-right: 10px; - border-radius: 5px; - color: #fff; + // border-radius: 5px; + // color: #fff; cursor: pointer; } - &-input { + + &-dropdown { border: none; outline: none; width: 88%; // background-color: #1c1c26; - background-color: var(--color-walInputBg); + // background-color: var(--color-walInputBg); height: 50px; border-radius: 10px; padding-left: 20px; text-overflow: ellipsis; } + + &-input { + border: none; + outline: none; + border-radius: 16px; + border: 1px solid var(--color-search-border); + background-color: var(--color-conversation-item-selected); + height: 60px; + padding: 15px; + width: 57%; + } } + &-warning-box { text-align: center; margin-top: 14px; - font-size: 12px; height: 28px; .result { - font-family: 'poppin-semibold'; - } - } - &-btnBox { - .bchat-button.default.primary, - .bchat-button.default.green, - .bchat-button.default.disable { - width: 125px; - height: 45px; + // font-family: 'poppin-semibold'; + border-radius: 33px; + background: var(--color-setting-wallet-beta-bg); + padding: 6px 15px; + color: #108d32; + font-weight: 600; + margin-right: 5px; } - .bchat-button.default.primary { - background-color: #2879fb; - // margin-right: 30px; - color: white; - &:hover { - background-color: #0b9fff; - } + + .result-msg { + border-radius: 16px; + border: 1px solid var(--color-search-border); + // background: #202329; + padding: 6px 15px; + color: #a7a7ba; + font-size: 14px; + font-weight: 400; + margin-right: 5px; } - .bchat-button.default.disable { - background-color: var(--color-disableBtn); - // margin-right: 30px; - color: var(--color-disableTxt); - cursor: not-allowed; + + .error-msg { + // color: #f0f0f0; + font-size: 13px; + font-weight: 600; + color: var(--color-text); } } } } - &-modalBtnGrp { - .bchat-button.brand-outline.primary, - .bchat-button.brand-outline.green .bchat-button.brand { - height: 35px; - border-radius: 6px; - min-width: 110px; - } - .bchat-button.brand-outline { - height: 35px; - border-radius: 6px; - min-width: 110px; - } - } } - &-syncStatusBox { - position: absolute; - width: calc(100vw - 417px); - height: 30px; - bottom: 0; - background-color: var(--color-walSyncbar); - } + // &-syncStatusBox { + // position: absolute; + // width: calc(100vw - 417px); + // height: 45px; + // background-color: var(--color-walSyncbar); + /* bottom: 0; */ + /* background-color: var(--color-walSyncbar); */ + // border-radius: 16px; + // background: #202329; + // } &-syncStatus { + // position: relative; // height: 30px; // // width: 66.5%; @@ -2542,86 +3384,103 @@ label { &-statusTxt { font-size: 12px; + &-greenTxt { color: #00bf25; } } + &-statusvalue { font-size: 12px; color: #9393b1; } } + &-syncing { - width: 100%; - // height: 85%; - height: 82%; + text-align: center; + // width: 46%; + // height: 32%; // background-position: center; - background-size: 98% 98%; - margin: 0 auto; - background-image: var(--image-walletSyncing); - background-repeat: no-repeat; + // background-size: 98% 98%; + // margin: 0 auto; + // background-repeat: no-repeat; + + &-title { + color: var(--color-noTxn-txt); + font-family: $bchat-font-open-sans; + font-size: 18px; + font-weight: 600; + margin: 0; + text-align: center; + padding: 0; + } &-content { - font-family: 'poppin-regular'; - color: #82828d; - font-size: 13px; + color: #858598; + font-size: 14px; + font-weight: 300; + margin: 0; text-align: center; - // padding-top: 324px; - // padding-top: 280px; } } &-Transaction { - // background-color: #303041; - background-color: var(--color-WalcontentBg); - /* width: 49.4%; */ - width: calc(100vw - 417px); - border-radius: 10px; padding: 15px; - // height: 58%; - height: 61%; - // overflow-y: auto; - margin-bottom: 10px; + // height: 66%; + margin-bottom: 5px; + border-radius: 16px; + background: var(--color-wallet-inner-bg); + // height: calc(100vh - 446px); + height: calc(100vh - 460px); &-title { display: flex; align-items: center; + // color: #f0f0f0; + font-size: 18px; + font-weight: 600; + } + + &-filter-wrapper { + border-radius: 16px; + border: 1px solid var(--color-search-border); + padding: 0 15px; } &-filterInput { // width: 315px; - width: 200px; + width: 150px; border: none; outline: none; height: 40px; // background-color: #1c1c26; - padding-left: 13px; - background-color: var(--color-walInputBg); - border-radius: 10px; - margin-left: 10px; + // padding-left: 13px; + margin-right: 10px; } - &-filterWithIcon { - // background-color: #1c1c26; - background-color: var(--color-walInputBg); + &-filterWithIcon { width: 150px; height: 40px; - border-radius: 10px; - // margin-left: 20px; margin-left: 15px; + border-radius: 16px; + border: 1px solid var(--color-search-border); + padding: 5px 15px; &-inputBox { display: inline-block; width: 80%; height: 100%; - padding: 10px 10px 10px 15px; - // text-align: center; + // color: #f0f0f0; + font-size: 18px; + font-weight: 600; } } + &-parentBox { - height: 84%; + height: 82%; overflow-y: auto; } + &-empty-parentBox { width: 100%; height: 100%; @@ -2629,6 +3488,7 @@ label { flex-direction: column; justify-content: center; } + &-all { width: 240px; // height: 190px; @@ -2658,6 +3518,7 @@ label { background-image: var(--image-failedTransHistory); background-repeat: no-repeat; } + &-search { // width: 300px; // height: 200px; @@ -2666,6 +3527,7 @@ label { background-image: var(--image-emptySearch); // background-repeat: no-repeat; } + &-outgoing { // width: 300px; // height: 200px; @@ -2674,6 +3536,7 @@ label { background-image: var(--image-outgoingTransHistory); // background-repeat: no-repeat; } + &-incoming { background-image: var(--image-incomingTransHistory); } @@ -2688,109 +3551,145 @@ label { } &-content { - font-family: 'poppin-medium'; - color: #82828d; - margin-top: 6px; - margin-left: 10px; - // padding-top: 146px; - font-size: 16px; - // padding-top: 112px; + color: var(--color-noTxn-txt); + /* text-align: right; */ + font-family: $bchat-font-open-sans; + font-size: 18px; + font-weight: 600; + text-align: center; } + &-subContent { - font-family: 'poppin-regular'; - color: #82828d; - font-size: 13px; + color: #858598; + text-align: center; + font-size: 14px; + font-weight: 400; } &-contentBox { // background-color: #1c1c26; - background-color: var(--color-walInputBg); + // background-color: var(--color-walInputBg); padding: 15px; - border-radius: 10px; - margin-bottom: 5px; + // border-radius: 10px; + border-bottom: 1px solid var(--color-search-border); + padding-top: 0; + &-sendIndicationBox { display: flex; // width: 15%; - width: 110px; + // width: 110px; /* text-align: center; */ flex-direction: column; align-items: center; - justify-content: center; + // justify-content: center; div { font-size: 12px; margin-top: 3px; } } - &-verticalline { - width: 1.5px; - height: 100%; - background-color: #afafc194; - } + &-balanceBox { // width: 605px; - width: 67%; - margin-left: 20px; - font-size: 12px; - font-family: $bchat-font-poppin-light; + // width: 75%; + margin-left: 15px; + + &-amount { - color: #69697c; - font-size: 18px; - font-family: $bchat-font-poppins-bold; cursor: pointer; + // color: #f0f0f0; + font-size: 18px; + font-weight: 700; } + &-address { - // width: 584px; - white-space: nowrap; overflow: hidden; + color: #858598; text-overflow: ellipsis; - cursor: pointer; - padding-top: 6px; + white-space: nowrap; + font-weight: 400; + width: 15vw; } + &-address:hover { color: var(--button-color); text-decoration: underline; } } + &-dateandheight { display: flex; flex-direction: column; // justify-content: center; - width: 181px; + // width: 242px; &-month { - font-size: 14px; - font-family: $bchat-font-poppin-semibold; + // color: #f0f0f0; + text-align: right; + font-size: 16px; + font-weight: 400; } + &-height { + color: #858598; + text-align: right; + font-weight: 400; + } + + &-title, + &-content { font-size: 12px; - // color: #69697c; - font-family: $bchat-font-poppin-light; - // padding-top: 10px; + font-weight: 400; + line-height: 20px; + } + + &-title { + color: #838894; + } + + &-content { + color: var(--color-text); } } } + &-contentBox:hover { + border-radius: 16px; + background: var(--color-clickable-hovered); + } + &-recipitentBox { &-adddressBox { // width: 601px; width: 40%; padding-right: 10px; - font-family: $bchat-font-poppin-semibold; - overflow-wrap: break-word; + word-break: break-all; + color: #858598; + font-size: 12px; + font-weight: 400; + line-height: 21px; &-address { - font-family: $bchat-font-poppin-light; - font-size: 12px; + // font-family: $bchat-font-poppin-light; + // font-size: 12px; + color: var(--color-text); } } + + &-transactionFee-header, + &-transactionFee-text { + font-size: 12px; + font-weight: 400; + line-height: 20px; + } + &-transactionFee-header { - font-family: $bchat-font-poppin-semibold; + color: #858598; } + &-transactionFee-text { - font-family: $bchat-font-poppin-light; - font-size: 12px; + color: var(--color-text); } } } @@ -2802,7 +3701,8 @@ label { width: $bchat-modal-size-sm; height: $bchat-modal-size-sm; padding: $bchat-margin-xs; - background-color: $bchat-color-white; + background-color: #d9d9d9; + margin: auto 0; // border-radius: 5px; } @@ -2852,11 +3752,11 @@ label { transition: $bchat-transition-duration; } - input:hover + label:before { + input:hover+label:before { background: var(--color-accent); } - input:checked + label:before { + input:checked+label:before { background: var(--color-accent); } } @@ -2876,9 +3776,9 @@ label { overflow-y: auto; padding: 0px 5px 20px 5px; - &.bchat-id-editable-textarea:placeholder-shown { - padding: 10px 5px 0px 5px; - } + // &.bchat-id-editable-textarea:placeholder-shown { + // padding: 10px 5px 0px 5px; + // } &.group-id-editable-textarea { margin-top: 15px; @@ -2890,9 +3790,9 @@ input { user-select: text; } -.contact-selection-list { - width: 20vw; -} +// .contact-selection-list { +// width: 20vw; +// } .bchat-confirm-wrapper { position: absolute; @@ -2903,24 +3803,45 @@ input { .bchat-modal { margin: auto auto; } + + .model-layer { + display: flex; + flex-direction: row; + } + + .mediaPermission { + display: flex; + justify-content: center; + align-items: center; + text-align: center; + width: 60px; + height: 60px; + background-color: var(--color-modal-icon-bg); + border-radius: 10px; + margin-left: 25px; + margin-top: 30px; + border-radius: 30px; + } } .onion__description { - width: 62%; - // margin: 0 auto; - font-family: $bchat-font-poppin-medium; - text-align: center; - font-size: $bchat-font-h4; - color: #82828d; + margin-bottom: 10px; + color: var(--color-hop-txt); + font-size: 20px; + font-weight: 400; } .onion__node-list { display: flex; flex-direction: column; - margin: $bchat-margin-sm; - align-items: center; + font-family: 'Poppins'; + margin: 10px 0px 0px; min-width: 10vw; position: relative; + // background-color: #2e333d; + background-color: var(--color-conversation-item-selected); + padding: 20px 30px 0px; + border-radius: 16px; .onion__node { display: flex; @@ -2946,27 +3867,47 @@ input { } .onion__node__country { - // margin: $bchat-margin-lg ; + // // margin: $bchat-margin-lg ; margin: 11px 14px; min-width: 150px; - font-size: 16px; - font-family: $bchat-font-poppin-regular; + // font-size: 16px; + // font-family: $bchat-font-default; + // font-weight: 400; height: 50px; + + // color: #f0f0f0; + font-size: 20px; + font-weight: 500; + height: 70px; + + &:nth-child(1) { + height: 32px; + } + + .ip-country { + // color: #f0f0f0; + font-size: 16px; + font-weight: 400; + } } .onion__growing-icon { flex-grow: 1; display: flex; align-items: center; - padding-bottom: 27px; + padding-bottom: 40px; + + &:nth-child(1) { + padding-bottom: 2px; + } } .onion__vertical-line { background: $onionPathLineColor; position: absolute; - height: calc(100% - 2 * 42px); - margin: 27px calc(100% / 2 - 1px); - width: 1px; + height: calc(100% - 2 * 44px); + margin: 27px calc(100% / 2 - 0px); + width: 0.5px; } } @@ -2990,49 +3931,19 @@ input { width: 40px; border-radius: 50%; opacity: 1; - background-color: var(--color-cell-background); + // background-color: var(--color-cell-background); + + background-color: #2f8fff; box-shadow: var(--color-bchat-shadow); - svg path { - transition: $bchat-transition-duration; - opacity: 0.6; - fill: var(--color-text); - } + // svg path { + // transition: $bchat-transition-duration; + // opacity: 0.6; + // fill: var(--color-text); + // } &:hover svg path { - opacity: 1; - } - } - .downArrow { - .bchat-icon-button { - background-color: var(--color-downArrowBg); - svg path { - fill: var(--color-downArrow); - } - } - .bchat-icon-button { - &:hover { - background-color: #128b17; - svg path { - fill: white; - } - } - } - .bchat-icon-button:hover + .downArrow-unreadCountBox { - background-color: #ffffff; - color: #000; - } - - &-unreadCountBox { - position: fixed; - background-color: #159b24; - padding: 0px 6px; - font-size: 10px; - border-radius: 8px; - right: 16px; - bottom: 67px; - font-family: $bchat-font-poppin-semibold; - color: white; + opacity: 0.6; } } } @@ -3043,6 +3954,7 @@ input { width: 100%; // max-height: 400px; overflow-y: auto; + height: 53%; // margin: auto 0 auto 0; // border: var(--border-bchat); // border-bottom: var(--border-bchat); @@ -3055,15 +3967,16 @@ input { } &__no-contacts { - font-family: $bchat-font-poppin-medium; + // font-family: $bchat-font-poppin-medium; // background: var(--color-cell-background); text-align: center; padding: 20px; margin: 35% 0 0 0; } + &__addImg { - width: 111px; - height: 103px; + width: 170px; + height: 182px; background-image: var(--image-EmptyContact); background-repeat: no-repeat; background-size: contain; @@ -3072,16 +3985,73 @@ input { } } +.floated-downArrow { + // .bchat-icon-button { + // background-color: var(--color-downArrowBg); + + // svg path { + // fill: var(--color-downArrow); + // } + // } + + // .bchat-icon-button { + // &:hover { + // background-color: #128b17; + + // svg path { + // fill: white; + // } + // } + // } + &-btn-wrapper { + background-color: var(--color-downArrowBg); + height: 40px; + width: 40px; + border-radius: 50px; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + position: relative; + + &:hover { + background-color: #128b17; + + svg path { + fill: white; + } + } + } + + .floated-downArrow-btn-wrapper+.downArrow-unreadCountBox { + background-color: #ffffff; + color: #000; + } + + &-unreadCountBox { + position: absolute; + background-color: #159b24; + padding: 0px 6px; + font-size: 10px; + border-radius: 8px; + right: 6px; + top: 41px; + font-weight: 600; + color: white; + } +} + .create-group-name-input { - display: flex; - justify-content: center; - width: 100%; + // display: flex; + // justify-content: center; + // width: 100%; .bchat-id-editable { - height: 60px !important; + height: 80px !important; textarea { padding-bottom: 0px !important; + height: 40px; } &-disabled { @@ -3097,56 +4067,62 @@ input { .bchat-member-item, .bchat-blockedMember-item { - cursor: pointer; + // cursor: pointer; flex-shrink: 0; font-family: $bchat-font-default; - padding: 0px $bchat-margin-lg; - height: 60px; + padding: 0px $bchat-margin-md; + height: 70px; display: flex; justify-content: space-between; + align-items: center; transition: $bchat-transition-duration; + cursor: pointer; // border:var(--color-bchat-border); - border-bottom: var(--color-bchat-border); + // border-bottom: var(--color-bchat-border); &:not(:last-child) { border-bottom: var(--border-bchat); + margin-bottom: 6px; } &.selected { background-color: var(--color-conversation-item-selected) !important; + border-radius: 16px; + // background-color: #202329; } &.zombie { opacity: 0.5; } - &__checkmark, - &__checkmarkbox { - width: 20px; - height: 20px; - border: 1px solid var(--color-text); - border-radius: 10px; - margin: auto 0; - padding: 2px; - // opacity: 0; - transition: $bchat-transition-duration; + // &__checkmark, + // &__checkmarkbox { + // width: 23px; + // height: 23px; + // border: 2px solid #bcbdbe; + // border-radius: 6px; + // margin: auto 0; + // // opacity: 0; + // transition: $bchat-transition-duration; + + // &.selected { + // opacity: 1; + // border: unset; + + // svg { + // fill: var(--color-accent) !important; + // } + // } + // } - &.selected { - opacity: 1; - border: 2px solid green; + // &__checkmarkbox { + // // border-radius: 2px; + // border: 1.5px solid #f0f0f0; - svg { - fill: var(--color-accent) !important; - } - } - } - &__checkmarkbox { - border-radius: 2px; - border: 3px solid var(--color-disableBorder); - &.selected { - border: unset; - } - } + // &.selected { + // border: unset; + // } + // } &__info { display: flex; @@ -3161,16 +4137,17 @@ input { display: flex; align-items: center; - &:hover { - border: 1px solid #008e00; - } + // &:hover { + // border: 1px solid #008e00; + // } } &__name { - font-weight: bold; margin-inline-start: $bchat-margin-md; margin-inline-end: $bchat-margin-md; - font-family: $bchat-font-poppin-medium; + // color: #f0f0f0; + font-size: 16px; + font-weight: 400; } &__pubkey { @@ -3178,38 +4155,63 @@ input { opacity: 0.8; } - &__avatar > div { + &__avatar>div { margin-bottom: 0px !important; } + + &_admin-txt { + width: 58px; + display: flex; + align-items: center; + color: #108d32; + font-size: 14px; + font-weight: 500; + } } + .bchat-member-item { &:hover { - background-color: var(--color-clickable-hovered); + border-radius: 16px; + // background: #2e333d; + background-color: var(--color-conversation-item-selected); } } + .bchat-blockedMember-item { background-color: var(--color-blockUserBg); + // background-color: #202329; border-radius: 15px; + .selected { background-color: var(--color-blockseletedUserBg); } + &__name { - font-weight: normal; - font-family: $bchat-font-poppin-semibold; - margin-inline-start: 10px; + font-size: $bchat-font-lg; + font-weight: 500; } + &-selectionBox { display: flex; width: 119px; justify-content: flex-end; - padding-right: 30px; + // padding-right: 30px; } + &-btnBox { display: flex; justify-content: center; align-items: center; + + .btnSize { + width: 45px; + height: 45px; + font-weight: 400; + font-size: 16px; + } } } + .module-message-detail { .module-message { pointer-events: none; @@ -3237,3 +4239,18 @@ input { } } } + +.menu { + &:hover { + color: var(--color-context-menu-hover-bg); + } +} + +.submenu { + display: flex; + width: 100%; + + &:hover { + color: var(--color-context-menu-hover-bg); + } +} \ No newline at end of file diff --git a/stylesheets/_bchat_constants.scss b/stylesheets/_bchat_constants.scss index 4eae01b4..ac1dfea8 100644 --- a/stylesheets/_bchat_constants.scss +++ b/stylesheets/_bchat_constants.scss @@ -2,73 +2,102 @@ // /////////////////// Fonts //////////////////// // ////////////////////////////////////////////// -$bchat-font-default: 'poppin-medium'; +$bchat-font-default: 'Poppins'; $bchat-font-poppins-bold: 'Poppins'; $bchat-font-mono: 'SpaceMono'; $bchat-font-poppin-semibold: 'poppin-semibold'; $bchat-font-poppin-light: 'poppin-light'; $bchat-font-poppin-medium: 'poppin-medium'; $bchat-font-poppin-regular: 'poppin-regular'; - -@font-face { - font-family: $bchat-font-mono; - src: url('../fonts/SpaceMono-Regular.ttf') format('truetype'); -} +$bchat-font-open-sans:'OpenSans'; +// $bchat-font-open-sans-light:'OpenSans-light'; +// @font-face { +// font-family: $bchat-font-mono; +// src: url('../fonts/SpaceMono-Regular.ttf') format('truetype'); +// } // Roboto is an open replacement for $bchat-font-default +// @font-face { +// font-family: $bchat-font-default; +// src: url('../fonts/Roboto-Regular.ttf') format('truetype'); +// font-weight: 300; +// } +// @font-face { +// font-family: $bchat-font-default; +// src: url('../fonts/Roboto-Italic.ttf') format('truetype'); +// font-style: italic; +// font-weight: 300; +// } +// @font-face { +// font-family: $bchat-font-default; +// src: url('../fonts/Roboto-Bold.ttf') format('truetype'); +// font-weight: 600; +// } +// @font-face { +// font-family: $bchat-font-default; +// src: url('../fonts/Roboto-BoldItalic.ttf') format('truetype'); +// font-weight: 600; +// font-style: italic; +// } + +// Accented font @font-face { - font-family: $bchat-font-default; - src: url('../fonts/Roboto-Regular.ttf') format('truetype'); - font-weight: 300; -} -@font-face { - font-family: $bchat-font-default; - src: url('../fonts/Roboto-Italic.ttf') format('truetype'); - font-style: italic; + font-family:$bchat-font-open-sans; + src: url('../fonts/OpenSans-Light.ttf') format('truetype'); + line-height: 1.4rem; font-weight: 300; } @font-face { - font-family: $bchat-font-default; - src: url('../fonts/Roboto-Bold.ttf') format('truetype'); + font-family:$bchat-font-open-sans; + src: url('../fonts/OpenSans_Condensed-SemiBold.ttf') format('truetype'); + line-height: 1.4rem; font-weight: 600; } @font-face { - font-family: $bchat-font-default; - src: url('../fonts/Roboto-BoldItalic.ttf') format('truetype'); - font-weight: 600; - font-style: italic; + font-family: $bchat-font-open-sans; + src: url('../fonts/OpenSans-ExtraBold.ttf') format('truetype'); + line-height: 1.4rem; + font-weight: 800; } -// Accented font + +// popins font includes + @font-face { - font-family: $bchat-font-poppins-bold; - src: url('../fonts/Poppins-Bold.ttf') format('truetype'); + font-family:$bchat-font-default; + src: url('../fonts/Poppins-Light.ttf') format('truetype'); line-height: 1.4rem; - font-weight: bold; + font-weight: 300; } + @font-face { - font-family: $bchat-font-poppin-semibold; - src: url('../fonts/Poppins-SemiBold.ttf') format('truetype'); + font-family: $bchat-font-default; + src: url('../fonts/Poppins-Regular.ttf') format('truetype'); line-height: 1.4rem; + font-weight: 400; } @font-face { - font-family: $bchat-font-poppin-light; - src: url('../fonts/Poppins-Light.ttf') format('truetype'); + font-family: $bchat-font-default; + src: url('../fonts/Poppins-Medium.ttf') format('truetype'); line-height: 1.4rem; + font-weight: 500; } @font-face { - font-family: $bchat-font-poppin-regular; - src: url('../fonts/Poppins-Regular.ttf') format('truetype'); + font-family: $bchat-font-default; + src: url('../fonts/Poppins-SemiBold.ttf') format('truetype'); line-height: 1.4rem; + font-weight: 600; } - @font-face { - font-family: $bchat-font-poppin-medium; - src: url('../fonts/Poppins-Medium.ttf') format('truetype'); + font-family: $bchat-font-default; + src: url('../fonts/Poppins-Bold.ttf') format('truetype'); line-height: 1.4rem; + font-weight: 700; } + + // ////////////////////////////////////////////// // ////////////////// Colors //////////////////// // ////////////////////////////////////////////// @@ -143,15 +172,15 @@ $bchat-font-h4: 16px; // Button -$bchat-button-color: #00a803; +$bchat-button-green-color: #00A638; $bchat-button-hovor-color: #00a705; $bchat-button-gray-color: #403e4b; $bchat-button-gray-hover-color: #52505f; // Mixins @mixin fontAccentBold { - font-weight: bold; - font-family: $bchat-font-poppins-bold; + font-weight: 700; + } @mixin text-highlight($color) { @@ -199,13 +228,13 @@ $bchat-subtle-factor: 0.6; // Default Components $bchat-search-input-height: 34px; // $main-view-header-height: 63px; -$main-view-header-height: 67px; +$main-view-header-height: 70px; $bchat-left-pane-width: 300px; // Various Components $bchat-modal-size-sm: 220px; -$bchat-modal-size-md: 400px; +$bchat-modal-size-md: 450px; $bchat-modal-size-lg: 650px; $bchat_message-container-border-radius: 13px; @@ -215,6 +244,7 @@ $bchat-margin-xs: 5px; $bchat-margin-sm: 10px; $bchat-margin-md: 15px; $bchat-margin-lg: 20px; +$bchat-margin-xl: 30px; // Animations $bchat-transition-duration: 0.25s; @@ -232,7 +262,7 @@ $bchat-transition-duration: 0.25s; // ///////////////// Various //////////////////// // ////////////////////////////////////////////// -$composition-container-height: 60px; +$composition-container-height: 70px; ////////////////////////////////////////////// // ///////////////// placeholder //////////////////// diff --git a/stylesheets/_bchat_conversation.scss b/stylesheets/_bchat_conversation.scss index 93e23d5c..4ecc9081 100644 --- a/stylesheets/_bchat_conversation.scss +++ b/stylesheets/_bchat_conversation.scss @@ -62,45 +62,41 @@ justify-content: center; width: 100%; - svg { - color: var(--color-chatIcons); - } - .connectWalletBtn { - display: flex; - width: 155px; - justify-content: space-evenly; - align-items: center; - font-size: 10px; - font-family: $bchat-font-poppin-medium; - background-color: #128817; - color: white; - height: 35px; - border-radius: 10px; - margin-right: 14px; - cursor: pointer; - - } - .connectWalletBtn:hover - { - background-color: #00a705; - } - - .call { - // margin-top: 10px; - margin-right: 14px; - padding-left: 14px; - display: flex; - justify-content: center; - justify-items: center; - align-items: center; - width: 35px; - height: 35px; + // .connectWalletBtn { + // display: flex; + // width: 155px; + // justify-content: space-evenly; + // align-items: center; + // font-size: 10px; + // font-family: $bchat-font-poppin-medium; + // background-color: #128817; + // color: white; + // height: 35px; + // border-radius: 10px; + // margin-right: 14px; + // cursor: pointer; + // } + // .connectWalletBtn:hover { + // background-color: #00a705; + // } - &:hover { - background-color: var(--color-profile-close); - border-radius: 20px; - } - } + // .call { + // // margin-top: 10px; + // margin-right: 14px; + // padding-left: 14px; + // display: flex; + // justify-content: center; + // justify-items: center; + // align-items: center; + // width: 35px; + // height: 35px; + // cursor: pointer; + + // &:hover { + // background-color: var(--color-profile-close); + // border-radius: 20px; + // } + // } } .message-selection-overlay { @@ -113,7 +109,7 @@ align-items: center; justify-content: space-between; height: $main-view-header-height; - background: var(--color-cell-background); + background: var(--color-chat-multi-select-bg); z-index: 93; .close-button { @@ -121,27 +117,20 @@ padding-right: 10px; } - .bchat-button.default.danger { - display: flex; - border-radius: 10px; - background-color: var(--color-inboxBgColor); - color: red; - } - .bchat-button.default.red { - display: flex; - color: #ffffff; - background-color: red; - border-radius: 10px; + .seleted-count { + width: 160px; + // color: #F0F0F0; + font-size: 18px; + font-weight: 400; } } - .message-selection-overlay div[role='button'] { - display: inline-block; - } + // .message-selection-overlay div[role='button'] { + // display: inline-block; + // } .message-selection-overlay .button-group { display: flex; - width: 97%; justify-content: center; } } @@ -150,8 +139,8 @@ flex-grow: 1; display: flex; flex-direction: column; - max-width: calc(100vw - 380px); - background: var(--image-BgDoodle); + // max-width: calc(100vw - 380px); + // background: var(--image-BgDoodle); // background-repeat: no-repeat; // background-position: center; background-size: 100%; @@ -160,7 +149,7 @@ // background-image: url("../images/bchat/doodle_white.svg"); .bchat-conversation-doodle { - background-image: var(--image-BgDoodle); + // background-image: var(--image-BgDoodle); width: '100%'; height: '100%'; } @@ -214,6 +203,79 @@ background: var(--color-inbox-background); } } + .pinned-msg { + border-radius: 10px; + background: var(--color-invite-card-icon-bg); + margin: 15px; + padding: 10px 15px; + .msg-title { + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: normal; + margin-left: 5px; + } + .msg-sub-title { + color: #a7a7ba; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: normal; + margin-left: 5px; + } + } +} + +.voiceCall { + // height: 350px; + width: 534px; + margin: 10px 0; + max-height: 450px; + + .local-video { + position: relative; + z-index: 1; + } +} + +.videoCall { + margin: 10px 0px; + position: absolute; + z-index: 10; + /* width: 750px; */ + display: flex; + top: 1%; + + .remote-video { + // background-color: aliceblue; + height: 500px; + width: 619px; + border-radius: 20px; + } + + .local-video { + // background-color: green; + width: 229px; + height: 300px; + margin: auto 10px; + border-radius: 20px; + } +} + +.hangingBtn { + width: 60px; + height: 60px; + display: flex; + justify-content: center; + align-items: center; + color: #fff; + border-radius: 50px; + margin: 10px 10px; + cursor: pointer; +} + +.hangingBtn:hover { + opacity: 0.8; } .messages-container { @@ -230,76 +292,138 @@ .composition-container { display: flex; justify-content: center; - align-items: center; + // align-items: center; + align-items: flex-end; padding: 0px $bchat-margin-md; min-height: min-content; - background: var(--color-composeMsgBg); - border-top: var(--border-bchat); + // border-top: var(--border-bchat); z-index: 1; - .bchat-icon-button { - // margin-right: $bchat-margin-sm; + // .bchat-icon-button { + // // margin-right: $bchat-margin-sm; - display: flex; - justify-content: center; - align-items: center; - // opacity: 0.7; + // display: flex; + // justify-content: center; + // align-items: center; + // opacity: 0.7; - // &:hover { - // opacity: 1; - // filter: brightness(0.9); + // &:hover { + // opacity: 1; + // filter: brightness(0.9); - // transition: $bchat-transition-duration; - // } + // transition: $bchat-transition-duration; + // } - .send { - padding: $bchat-margin-xs; - border-radius: 50%; - height: 30px; - width: 30px; - } - } + // .send { + // padding: $bchat-margin-xs; + // border-radius: 50%; + // height: 30px; + // width: 30px; + // } + // } .attachment-box { - background-color: var(--color-composeMsgIconBG); - padding: 8px 13px; - color: #85858f; + padding: 17px 8px; + // color: #85858f; border-radius: 10px; + margin-bottom: 5px; + cursor: pointer; + // &-icon { + // width: 25px; + // height: 25px; + // padding: 2px; + // } - &-icon { - width: 25px; - height: 25px; - padding: 2px; + &:hover { + background-color: var(--color-icon-btn-hover); + color: var(--color-text); } + } + + .recorded-btn { + border-radius: 16px; + padding: 15px 13px; + background: #2f8fff; + margin-bottom: 5px; &:hover { - background-color: #20a1ff; + opacity: 0.9; + color: white; } } .send-message-input { - width: 80%; + // width: 80%; + width: 100%; cursor: text; - display: flex; - align-items: center; - flex-grow: 1; - min-height: 43px; + /* display: flex; */ + /* align-items: center; */ + /* flex-grow: 1; */ + /* min-height: 60px; */ padding: 5px 0; - z-index: 1; - background-color: inherit; - margin-left: 27px; - background: var(--color-composeMsgInput); + /* z-index: 1; */ + /* margin-left: 27px; */ + border-radius: 16px; + background-color: var(--color-composeMsgInput); margin: 5px 7px; border-radius: 10px; - padding-left: 20px; - box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.2); + padding: 0 20px; + position: relative; + // box-shadow: 0px 3px 5px 0px rgb(0 0 0 / 20%); + + .wallet-sync-box, + .amount-tap-box { + border-radius: 16px; + border: 2px solid #108d32; + background-color: var(--color-wallet-Sync-box-bg); + width: 254px; + height: 66px; + flex-shrink: 0; + position: absolute; + right: 0px; + top: -74px; + display: none; + align-items: center; + justify-content: center; + padding: 15px; + z-index: 2; + + .sync-txt { + // color: #f0f0f0; + font-family: $bchat-font-open-sans; + font-size: 18px; + font-weight: 600; + margin-right: 21px; + } - svg { - color: var(--color-composeMsgRecordIcon); + .inner-perc-txt { + // color: #f0f0f0; + text-align: center; + font-size: 12px; + font-weight: 700; + } } - svg:hover { - transform: scale(1.1); + + .amount-tap-box { + display: block; + min-width: 224px; + width: unset; + cursor: pointer; + .sync-txt { + margin-right: unset; + } } + + .coin-logo-wrapper { + cursor: pointer; + padding: 7px; + border-radius: 26px; + border: 2px solid #888a8d; + } + + // svg:hover { + // transform: scale(1.1); + // } ul { max-height: 70vh; overflow: auto; @@ -333,6 +457,10 @@ letter-spacing: 0.5px; color: rgba(0, 0, 0, 0); } + + .circular-bar-wrapper:hover + .wallet-sync-box { + display: flex; + } } } @@ -429,24 +557,27 @@ } .send-message-button { - background-color: #128b17; - border-radius: 10px; + border-radius: 16px; + background: #108d32; /* padding: 8px; */ cursor: pointer; - animation: fadein 0.25s; + // animation: fadein 0.25s; // width: 47px; - width: 90px; - height: 50px; + // width: 90px; + // height: 50px; display: flex; justify-content: center; align-items: center; - animation: fadein $bchat-transition-duration; + margin-bottom: 5px; + color: white; + + // animation: fadein $bchat-transition-duration; // padding-left: 15px; - .text { - font-family: $bchat-font-poppin-medium; - margin-left: 3px; - color: #ffffff; - } + // .text { + // font-family: $bchat-font-poppin-medium; + // margin-left: 3px; + // color: #ffffff; + // } &---scale { animation: scaling 2s ease-in-out; @@ -476,6 +607,11 @@ &:hover { background-color: #00a705; } + .bchat-icon-button:hover { + background: #1a973c; + color: white; + // color: var(--color-text); + } } .bchat-recording { @@ -492,37 +628,40 @@ padding: 10px; display: flex; width: 100%; - margin-right: 12px; + border-radius: 10px; + margin: 5px 7px; + // background: #202329; background-color: var(--color-composeMsgInput); - margin-left: 13px; - height: 47px; - border-radius: 13px; + margin-left: 12px; + height: 60px; + // border-radius: 13px; justify-content: space-between; + align-items: center; } &--actions { display: flex; align-items: center; - width: $actions-element-size; - height: $actions-element-size; + // width: $actions-element-size; + // height: $actions-element-size; border-radius: 50%; - margin-right: 50px; + // margin-right: 50px; - .bchat-button { - animation: fadein $bchat-transition-duration; - } + // .bchat-button { + // animation: fadein $bchat-transition-duration; + // } - .bchat-icon-button { - animation: fadein $bchat-transition-duration; - border-radius: 50%; - width: $actions-element-size; - height: $actions-element-size; - margin-right: var(--margins-sm); + // .bchat-icon-button { + // // animation: fadein $bchat-transition-duration; + // border-radius: 50%; + // // width: $actions-element-size; + // // height: $actions-element-size; + // // margin-right: var(--margins-sm); - .play { - margin-left: 4px; - } - } + // .play { + // margin-left: 4px; + // } + // } } &--visualisation { @@ -587,14 +726,33 @@ } } + &-micIcon { + display: flex; + align-items: center; + justify-content: center; + width: 35px; + height: 35px; + margin-right: 10px; + color: var(--color-icon); + background-color: var(--color-disappear-time-hover); + border-radius: 10px; + } + + &-wrapper { + border: 1px solid red; + padding: 3px; + border-radius: 36px; + margin-right: 10px; + } + &-light { height: 15px; width: 15px; border-radius: 50%; - background-color: $bchat-color-success; - margin: 0 $bchat-margin-sm; + background-color: #ff3e3e; + // margin: 0 $bchat-margin-sm; - @include pulse-color($bchat-color-success, 1s, infinite); + // @include pulse-color($bchat-color-success, 1s, infinite); } } } diff --git a/stylesheets/_bchat_group_panel.scss b/stylesheets/_bchat_group_panel.scss index 6cf51bc3..137be013 100644 --- a/stylesheets/_bchat_group_panel.scss +++ b/stylesheets/_bchat_group_panel.scss @@ -1,48 +1,74 @@ .group-settings { display: flex; flex-direction: column; - height: 94vh; - // width: -webkit-fill-available; + height: 100vh; + /* width: 25vw; */ + min-width: 300px; width: 25vw; - background: var(--color-cell-background); + max-width: 420px; + // background: var(--color-cell-background); // background: #181821; - border-left: var(--border-bchat); + // background: #131313; + border:1px solid var(--color-profile-info-border); align-items: center; + padding: 15px; + background: var(--color-inbox-background); &-header { - margin-top: $bchat-margin-lg; - margin-inline-start: $bchat-margin-sm; - margin-inline-end: $bchat-margin-sm; + // margin-top: $bchat-margin-lg; + // margin-inline-start: $bchat-margin-sm; + // margin-inline-end: $bchat-margin-sm; width: -webkit-fill-available; - display: flex; - flex-direction: row; + // display: flex; + // flex-direction: row; flex-shrink: 0; - &-avatarBox { - width: 86%; - text-align: center; - padding-left: 17%; + &-title-wrapper{ + background-color: var(--color-profile-header-bg); + border-radius: 16px; + } + &-titleTxt { + // color: #f0f0f0; + font-size: 20px; + font-weight: 400; + } + &-avatarBox { + display: flex; + flex-direction: column; + align-items: center; p { - font-family: $bchat-font-poppin-semibold; - font-size: 24px; margin: 0; + // color: #f0f0f0; + font-size: 18px; + font-weight: 600; } } &-chatIdBox { - text-align: center; + border-radius: 12px; + border: 1px solid var(--color-search-border); + padding: 20px; p { - font-family: $bchat-font-poppin-medium; + margin: 0; + // color: #f0f0f0; font-size: 18px; - margin-top: 30px; - margin-bottom: 0; + font-weight: 500; } - div { - width: 85%; - margin: 0 auto; + .id-wrapper { color: #159b24; + border-radius: 16px; + border: 1px solid var(--color-chatId-border); + background: var(--color-profile-id-bg); + padding: 15px; + .txt { + width: 90%; + color: #108d32; + font-size: 16px; + font-weight: 500; + line-height: 30px; + } } } @@ -68,6 +94,7 @@ display: flex; justify-content: center; width: 100%; + align-items: center; h2 { margin-right: 10px; @@ -77,7 +104,15 @@ h2 { word-break: break-word; max-width: 82%; + font-size: 18px; + /* font-style: normal; */ + font-weight: 600; + margin: 0; + } + &-media-txt { + color:var(--color-profile-info-media-title); font-size: 16px; + font-weight: 500; } .description { @@ -95,23 +130,28 @@ &-item { display: flex; align-items: center; - min-height: 3rem; - font-size: 0.8rem; - color: var(--color-text); - background: var(--color-cell-background); + min-height: 2rem; + // font-size: 0.8rem; + // color: var(--color-text); + // background: var(--color-cell-background); // background: #181821; // border-top: var(--border-bchat); - border-bottom: var(--color-bchat-border); + // border-bottom: var(--color-bchat-border); // border-bottom: var(--border-bchat); - width: -webkit-fill-available; - padding: 0 $bchat-margin-md; + // width: -webkit-fill-available; + // padding: 0 5px; transition: $bchat-transition-duration; - cursor: pointer; + // cursor: pointer; + color: var(--color-text); + /* font-family: Poppins; */ + font-size: 18px; + /* font-style: normal; */ + font-weight: 500; - &:hover { - background: var(--color-clickable-hovered); - } + // &:hover { + // background: var(--color-clickable-hovered); + // } } // no double border (top and bottom) between two elements @@ -119,6 +159,143 @@ border-top: none; } + .profile-name { + display: flex; + // margin-top: $bchat-margin-sm; + // margin-bottom: $bchat-margin-sm; + justify-content: center; + // width: 100%; + // font-family: $bchat-font-default; + font-weight: 400; + align-items: center; + + .inputBox { + display: flex; + // width: 200px; + padding-left: 45px; + } + + .saveIcon { + // width: 35px; + color: var(--color-accent); + cursor: pointer; + // margin: auto 0; + margin-left: 7px; + } + + input { + height: 42px; + border-radius: 16px; + text-align: center; + font-size: $bchat-font-md; + background: var(--color-input-background); + color: var(--color-text); + border: 1px solid #46465d; + outline: none; + } + + &-uneditable { + display: flex; + align-items: center; + justify-content: space-around; + width: 100%; + margin-right: 25px; + font-family: $bchat-font-default; + + p { + font-size: 16px; + padding: 0px $bchat-margin-sm; + margin-left: 33px; + line-height: 22px; + } + + .qr-icon-btn { + width: 30px; + height: 30px; + // left: 103px; + position: relative; + cursor: pointer; + + &:hover { + color: #128b17; + } + } + + .bchat-icon-button { + padding: 0px; + } + } + } + .disppear-wrapper { + width: 100%; + height: 50px; + align-items: center; + display: flex; + justify-content: space-between; + border-radius: 16px; + background: var(--color-profile-id-bg); + margin-top: 15px; + padding: 0 15px; + // color: #f0f0f0; + cursor: pointer; + } + .disappear-option { + display: grid; + grid-template-columns: auto auto auto auto; + gap: 7px; + margin: 15px 0; + text-align: left; + span { + padding:0 10px; + color: #a7a7ba; + font-size: 16px; + font-weight: 400; + } + span:hover { + border-radius: 16px; + background: var(--color-disappear-time-hover); + cursor: pointer; + } + } + .hr-line { + width: 100%; + height: 4px; + background:var(--color-modal-footer); + margin-bottom: 15px; + } + .grp_btn_wrapper { + width: 100%; + border-radius: 12px; + border: 1px solid #202329; + /* background: #131313; */ + padding: 10px; + margin: 15px 0px; + + .add-btn { + border-radius: 50px; + background: #108d32; + color: #f0f0f0; + font-size: 12px; + font-weight: 500; + padding: 5px 7px 5px 0; + display: flex; + align-items: center; + cursor: pointer; + } + .list-wrapper { + padding-top: 10px; + max-height: 294px; + overflow: auto; + .bchat-member-item { + height: 60px; + } + .bchat-member-item:hover { + background: unset !important; + cursor: default; + } + } + } + // bottom button .bchat-button.square-outline.danger { margin-top: auto; @@ -139,10 +316,24 @@ text-align: center; } + .grp_more_member { + .module-media-gallery__content { + height: 191px !important; + } + } + .img-wrapper { + .module-media-gallery__content { + overflow-y: hidden; + height: 303px; + } + } + .module-attachment-section__items { &-media { display: grid; grid-template-columns: repeat(3, 1fr); + row-gap: 15px; + column-gap: 15px; width: 100%; } @@ -168,15 +359,16 @@ &--active { border-bottom: none; opacity: 1; - - &:after { - content: ''; /* This is necessary for the pseudo element to work. */ - display: block; - margin: 0 auto; - width: 70%; - padding-top: 0.5rem; - border-bottom: var(--border-unread); - } + border-radius: 16px; + background: var(--color-profile-header-bg); + // &:after { + // content: ''; /* This is necessary for the pseudo element to work. */ + // display: block; + // margin: 0 auto; + // width: 70%; + // padding-top: 0.5rem; + // border-bottom: var(--border-unread); + // } } } @@ -186,14 +378,16 @@ .module-media-grid-item__image, .module-media-grid-item { - height: calc( - 30vw / 4 - ); //.group-settings is 22vw and we want three rows with some space so divide it by 4 - width: calc( - 29vw / 4 - ); //.group-settings is 22vw and we want three rows with some space so divide it by 4 + // height: calc( + // 30vw / 4 + // ); //.group-settings is 22vw and we want three rows with some space so divide it by 4 + // width: calc( + // 29vw / 4 + // ); //.group-settings is 22vw and we want three rows with some space so divide it by 4 // margin: auto; - border-radius: 5px; + height: calc(22vw / 4); + width: calc(26vw / 4); + border-radius: 8px; } } } @@ -210,7 +404,8 @@ bottom: 10px; border-radius: 10px; color: red; - font-family: $bchat-font-poppin-medium; + // font-family: $bchat-font-poppin-medium; + font-weight: 500; cursor: pointer; &:hover { diff --git a/stylesheets/_bchat_left_pane.scss b/stylesheets/_bchat_left_pane.scss index e71823fb..727792fd 100644 --- a/stylesheets/_bchat_left_pane.scss +++ b/stylesheets/_bchat_left_pane.scss @@ -1,20 +1,31 @@ $bchat-compose-margin: 20px; .gutter { - width: 380px !important; + // width: 380px !important; transition: none; - background: var(--color-cell-background); + // background: var(--color-cell-background); +} + +.d-none { + display: none !important; } .module-conversation { + // default conversation list item text color &__user__profile { + &-number, &-name { - font-weight: bold; - font-size: 15px; - - color: var(--color-text-subtle); + // font-weight: bold;bchat-noMsgRequest + // font-size: 15px; + + // color: var(--color-text-subtle); + // color: #f0f0f0; + font-size: 18px; + // font-style: normal; + font-weight: 400; + // line-height: normal; } } @@ -23,17 +34,21 @@ $bchat-compose-margin: 20px; &:hover { background: var(--color-clickable-hovered); - box-shadow: var(--color-Bchat-shadow); + // box-shadow: var(--color-Bchat-shadow); // background: #242431; + border-radius: 16px; + // background: #2e333d; } &--is-selected { background: var(--color-conversation-item-selected); + border-radius: 16px; + // background: #2e333d; .module-conversation__user__profile-number, - .module-conversation__user__profile-name, + // .module-conversation__user__profile-name, .module-conversation-list-item__message__text { - color: var(--color-text); + color: var(--color-last-msg-txt); } } @@ -41,43 +56,62 @@ $bchat-compose-margin: 20px; // border-left: var(--border-unread); background: var(--color-conversation-item-has-unread); // background-color: #39394A; - margin-bottom: 2px; + // margin-bottom: 2px; // border-radius: 10px; - padding-left: 6px; + // padding-left: 6px; // border-top: 1px solid #1c1c26; - border-bottom: 1px solid var(--color-borderBottomColor); + // border-bottom: 1px solid var(--color-borderBottomColor); // border-bottom: 1px solid #1c1c26; + border-radius: 16px; + + // background: #2e333d; .verticalLine { - width: 5px; + // width: 5px; // background-color: #128B17; - margin-right: 5px; + // margin-right: 5px; height: 100%; border-radius: 20px; } } + &_unread-count_wrapper { + display: flex; + flex-direction: row; + justify-content: flex-end; + /* width: 17%; */ + flex-shrink: 0; + flex: 4; + } + &__unread-count { // color: var(--color-text); /* background: var(--color-clickable-hovered); */ - color: white; - background-color: #128b17; - position: relative; + // color: white; + // background-color: #128b17; + // position: relative; // font-weight: 700 !important; - box-shadow: none !important; + // box-shadow: none !important; margin: 0 !important; - flex-shrink: 0; + // flex-shrink: 0; // left: 68%; - top: -2px; + // top: -2px; /* margin-top: 13px; */ - width: 25px; - height: 25px; - display: flex; - justify-content: center; - align-items: center; - border-radius: 30px; - font-size: 9px; - font-family: $bchat-font-poppin-medium; + // width: 25px; + // height: 25px; + // display: flex; + // justify-content: center; + // align-items: center; + // border-radius: 30px; + // font-size: 9px; + + border-radius: 22px; + background: #108d32; + flex-shrink: 0; + color: #f0f0f0; + font-size: 12px; + font-weight: 600; + padding: 1px 10px; } &__header__date, @@ -87,11 +121,11 @@ $bchat-compose-margin: 20px; } &__message__text { - color: $bchat-shade-17; + color: var(--color-last-msg-txt); text-align: left; &--has-unread { - color: var(--color-text); + color: var(--color-last-msg-txt); } } @@ -108,13 +142,87 @@ $bchat-compose-margin: 20px; } } +.offline-msg { + margin: 11px; + // border: 1px solid #4b4b64; + height: 50px; + display: flex; + /* justify-content: center; */ + align-items: center; + padding: 10px; + border-radius: 6px; + background-color: var(--color-offline-content-bg); + + .txt { + font-size: 11px; + margin-left: 11px; + // color: #a7a7ba; + } +} + +.connection-Wrapper { + margin: 10px; + font-size: 16px; + padding: 30px 15px; + border-radius: 16px; + + .dotIcon { + display: flex; + align-items: center; + justify-content: center; + color: #108D32; + margin-right: 10px; + } + + // color: #3bd110; + // .dots { + // display: flex; + // justify-content: space-between; + // width: 30px; + // margin-left: 5px; + // } + + .dot { + width: 6px; + height: 6px; + background-color: #a4a6a9; + border-radius: 50%; + animation: dot-blink 1.5s infinite ease-in-out; + } + + .dot:nth-child(1) { + animation-delay: 0s; + } + + .dot:nth-child(2) { + animation-delay: 0.3s; + } + + .dot:nth-child(3) { + animation-delay: 0.6s; + } + + @keyframes dot-blink { + + 0%, + 80%, + 100% { + opacity: 0; + } + + 40% { + opacity: 1; + } + } +} + .module-left-pane { // width: $bchat-left-pane-width; position: relative; height: 100vh; flex-shrink: 0; // background: var(--color-inbox-background); - background-color: var(--color-overlayBg); + // background-color: var(--color-overlayBg); @include placeholder { color: #7e7e8d; @@ -124,10 +232,12 @@ $bchat-compose-margin: 20px; display: flex; height: 100vh; } + .addContactFloating { position: absolute; bottom: 75px; left: 313px; + &-content { width: 50px; height: 50px; @@ -138,11 +248,13 @@ $bchat-compose-margin: 20px; align-items: center; border-radius: 44px; cursor: pointer; + &:hover { background-color: $bchat-button-hovor-color; } } } + &__header { display: flex; flex-direction: row; @@ -158,11 +270,16 @@ $bchat-compose-margin: 20px; // background-color: #F2F2F2; &__title { + display: flex; padding: 0 var(--margins-sm); flex-grow: 1; color: var(--color-text); font-family: $bchat-font-poppin-semibold; font-size: 22px; + + .bchat-icon-button { + cursor: unset; + } } &_gearIcon { @@ -178,7 +295,7 @@ $bchat-compose-margin: 20px; background-size: contain; cursor: pointer; background-repeat: no-repeat; - margin-top: 7px; + // margin-top: 7px; margin-right: 18px; } @@ -223,90 +340,210 @@ $bchat-compose-margin: 20px; &__chatHeader { position: relative; left: 12px; - font-family: $bchat-font-default; - font-size: 24px; - font-weight: bold; + /* font-family: "Poppins"; */ + /* font-size: 24px; */ + /* font-weight: bold; */ + color: #108d32; + font-size: 28px; + font-weight: 700; + margin: 40px 0px 5px 5px; } &__subHeader { text-align: center; - font-family: $bchat-font-poppin-medium; - font-size: $bchat-font-h4; margin-bottom: 10px; + border-radius: 13px; + border: 1px solid var(--color-search-border); + background-color: var(--color-left-pane-bg); + color: #108d32; + font-size: 24px; + font-weight: 700; + width: 141px; + position: absolute; + top: -42px; + left: 30%; } &-overlay { // background: var(--color-left-pane-overlay-background); - + background-color: var(--color-left-pane-bg); display: flex; flex-direction: column; flex-grow: 1; // align-items: center; overflow-y: auto; overflow-x: hidden; + min-width: 300px; + width: 25vw; + max-width: 420px; + position: relative; + + // background: #202329; &-loadingWrapper { position: absolute; width: 100%; - height: 91%; - background-color:rgba(0, 0, 0, 0.6); + height: 100%; + background-color: rgba(0, 0, 0, 0.6); display: flex; + z-index: 99; + left: 0; + top: 0; } + &-closed { &--header { - font-family: $bchat-font-poppins-bold; - font-size: 22px; - justify-content: flex-start; - width: 87%; - margin-left: 20px; - margin-top: 30px; + font-size: 24px; + // justify-content: flex-start; + // width: 87%; + // margin-left: 20px; + // margin-top: 30px; } &--subHeader { - display: flex; - justify-content: flex-start; - font-family: $bchat-font-poppin-regular; + // color: #f0f0f0; font-size: 18px; - width: 88%; - margin: 30px 0 8px 20px; + font-weight: 400; + // display: flex; + // justify-content: flex-start; + // font-family: $bchat-font-poppin-regular; + // font-size: 18px; + // width: 88%; + // margin: 30px 0 8px 20px; // margin-top: 13px; // margin-left: 20px; // margin-bottom: 8px; } + + &--search-label { + color: #a7a7ba; + font-size: 18px; + font-weight: 500; + } + } + + .bchatId_input_wrapper { + padding: 15px; + border-radius: 16px; + border: 2px solid var(--color-search-border); + // background: #202329; + margin: 15px; + } + + .ourDetails_wrapper { + border-radius: 16px; + border: 2px solid var(--color-search-border); + background-color: var(--color-left-pane-bg); + margin: 15px; + padding: 15px; + position: relative; + + .avatar-Wrapper { + display: flex; + align-items: center; + } + + .profile-name { + margin-left: 15px; + // color: #f0f0f0; + font-size: 24px; + font-weight: 700; + word-break: break-all; + } + + .label-txt { + color: #a7a7ba; + font-size: 16px; + font-weight: 500; + } + + .id-Wrapper { + border-radius: 16px; + border: 1px solid var(--color-profile-id-border); + background: var(--color-profile-id-bg); + display: flex; + padding: 10px; + + p { + color: #108d32; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-weight: 500; + font-size: 16px; + } + + .blue-color { + color: #2d81ff; + } + } + + .back-btn-txt { + // color: #f0f0f0; + font-size: 18px; + font-weight: 500; + margin-left: 5px; + } + + .qr-wrapper { + border-radius: 15.147px; + // border: 0.947px solid #4b4b64; + // background: #282836; + padding: 10px; + + // width: 70%; + } + + .qr-txt { + color: #a7a7ba; + font-size: 18px; + font-weight: 400; + } } &-open { &hint-message { width: 100%; - margin: 10px auto 0px; - font-size: 14px; - color: #6e6e84; - padding: 15px 34px 15px 20px; - font-family: $bchat-font-poppin-regular; - line-height: 1.8; + // margin: 10px auto 0px; + // font-size: 14px; + // color: #6e6e84; + // padding: 15px 34px 15px 20px; + // font-family: $bchat-font-poppin-regular; + // line-height: 1.8; + color: #858598; + font-size: 15px; + font-weight: 400; + padding: 5px; } &-title { margin-top: 53px; - margin-left: 20px; margin-bottom: 10px; - font-family: $bchat-font-poppin-medium; + color: #a7a7ba; + font-size: 18px; + font-weight: 500; } } ::placeholder { - font-family: $bchat-font-poppin-medium; + color: #858598; + font-family: $bchat-font-default; + font-weight: 400; } .buttonBox { - // width: 100%; - width: 378px; + width: 100%; + // padding: 0 90px; + display: flex; + justify-content: center; + // justify-items: center; + // width: 378px; // background-color: var(--color-overlayBg); - padding: 0 0; - text-align: center; - margin: 5px auto; - z-index: 1; - padding-top: 10px; + // padding: 0 0; + // text-align: center; + // margin: 5px auto; + // z-index: 1; + // padding-top: 10px; .bchat-button.brand-outline.danger { width: 79%; @@ -317,23 +554,28 @@ $bchat-compose-margin: 20px; } } - .nextButton { - width: 79%; - height: 50px; - border: none; - border-radius: 10px; - color: #fff; - font-family: $bchat-font-poppin-semibold; - // background-image: var(--button-color); - background-color: var(--button-color); - - margin: 15px auto; - - &:hover { - background-color: $bchat-button-hovor-color; - } + .messageRequestButton { + display: flex; + justify-content: center; } + // .nextButton { + // width: 79%; + // height: 50px; + // border: none; + // border-radius: 10px; + // color: #fff; + // font-family: $bchat-font-poppin-semibold; + // // background-image: var(--button-color); + // background-color: var(--button-color); + + // margin: 15px auto; + + // &:hover { + // background-color: $bchat-button-hovor-color; + // } + // } + .bchat-icon .exit { padding: 13px; } @@ -381,10 +623,10 @@ $bchat-compose-margin: 20px; align-self: flex-start; } - .bchat-search-input { - margin: 10px $bchat-compose-margin 0 $bchat-compose-margin; - width: -webkit-fill-available; - } + // .bchat-search-input { + // margin: 10px $bchat-compose-margin 0 $bchat-compose-margin; + // width: -webkit-fill-available; + // } .bchat-description-long { font-size: $bchat-font-sm; @@ -394,31 +636,31 @@ $bchat-compose-margin: 20px; color: var(--color-HintMessageText); } - .bchat-id-editable { - width: 90%; - background-color: var(--color-inboxBgColor); - margin: 0 auto; - border: none; - margin-bottom: 10px; - box-shadow: var(--color-bchat-shadow); - - textarea::-webkit-inner-spin-button { - margin: 0px 20px; - width: -webkit-fill-available; - flex-shrink: 0; - } - } + // .bchat-id-editable { + // width: 90%; + // background-color: var(--color-inboxBgColor); + // margin: 0 auto; + // border: none; + // margin-bottom: 10px; + // box-shadow: var(--color-bchat-shadow); + + // textarea::-webkit-inner-spin-button { + // margin: 0px 20px; + // width: -webkit-fill-available; + // flex-shrink: 0; + // } + // } .bchat-id-editable-disabled { border: none; } - .bchat-button { - width: fit-content; - margin-top: 1rem; - margin-bottom: 3rem; - flex-shrink: 0; - } + // .bchat-button { + // width: fit-content; + // margin-top: 1rem; + // margin-bottom: 3rem; + // flex-shrink: 0; + // } .bchat-noMsgRequest-box { width: 100%; @@ -426,6 +668,13 @@ $bchat-compose-margin: 20px; justify-content: center; display: flex; flex-direction: column; + + .content-txt { + color: #858598; + text-align: center; + font-size: 24px; + font-weight: 400; + } } .bchat-noMsgRequest { @@ -441,6 +690,7 @@ $bchat-compose-margin: 20px; margin: 0 auto; margin-bottom: 23px; } + .bchat-noMsgRequest-leftPane { display: flex; width: 291px; @@ -461,12 +711,18 @@ $bchat-compose-margin: 20px; display: flex; flex-direction: column; // flex-grow: 1; - height: 82.8%; + height: 100%; transition: none; - background: var(--color-left-pane-overlay-background); + // background: var(--color-left-pane-overlay-background); // text-align: center; justify-content: center; + min-width: 300px; + width: 25vw; + // height: 96vh; + max-width: 420px; + padding: 15px; + .bchatEmptyScrBox { display: flex; flex-direction: column; @@ -474,15 +730,15 @@ $bchat-compose-margin: 20px; height: 100%; } - .addContactImg { - width: 111px; - height: 103px; - background-image: var(--image-AddContact); - background-repeat: no-repeat; - background-size: contain; - /* text-align: center; */ - margin: 0 auto; - } + // .addContactImg { + // width: 111px; + // height: 103px; + // background-image: var(--image-AddContact); + // background-repeat: no-repeat; + // background-size: contain; + // /* text-align: center; */ + // margin: 0 auto; + // } .left-pane-contact-bottom-buttons .bchat-button { vertical-align: middle; @@ -490,21 +746,22 @@ $bchat-compose-margin: 20px; text-align: center; } - .nextButton { - width: 79%; - height: 50px; - border: none; - border-radius: 10px; - color: #fff; - font-family: $bchat-font-poppin-semibold; - // background-image: var(--button-color); - background-color: var(--button-color); - margin: 15px auto; - - &:hover { - background-color: $bchat-button-hovor-color; - } - } + // .nextButton { + // width: 79%; + // height: 50px; + // border: none; + // border-radius: 10px; + // color: #fff; + // // font-family: $bchat-font-poppin-semibold; + // // background-image: var(--button-color); + // background-color: var(--button-color); + // margin: 15px auto; + // font-weight: 600; + + // &:hover { + // background-color: $bchat-button-hovor-color; + // } + // } } .bchat-left-pane-section-content { @@ -512,6 +769,7 @@ $bchat-compose-margin: 20px; flex-direction: column; flex: 1; overflow: hidden; + background-color: var(--color-left-pane-bg); } .user-search-dropdown { @@ -523,43 +781,50 @@ $bchat-compose-margin: 20px; .bchat-search-input { height: 60px; - width: 100%; + // width: 420px; margin-inline-end: 1px; margin-bottom: 10px; display: inline-flex; flex-shrink: 0; - background: var(--color-inboxBgColor); + // background: var(--color-inboxBgColor); padding: 0 21px; - box-shadow: var(--color-Bchat-shadow); + // box-shadow: var(--color-Bchat-shadow); + border-radius: 16px; + // margin: 15px; + border: 1px solid var(--color-search-border); + // background: #202329; + display: flex; + align-items: center; - .search { - margin-top: 13px; - display: flex; - justify-content: center; - justify-items: center; - align-items: center; - width: 32px; - height: 32px; - &:hover { - background-color: var(--color-profile-close); - border-radius: 20px; - } - } + // .search { + // margin-top: 13px; + // display: flex; + // justify-content: center; + // justify-items: center; + // align-items: center; + // width: 32px; + // height: 32px; + // &:hover { + // background-color: var(--color-profile-close); + // border-radius: 20px; + // } + // } .bchat-icon-button { margin: auto 10px; } input { - width: inherit; + width: 70%; height: inherit; border: none; flex-grow: 1; - font-size: $bchat-font-sm; - font-family: $bchat-font-default; + font-size: $bchat-font-lg; + // font-family: $bchat-font-default; + font-weight: 300; text-overflow: ellipsis; background: none; - color: var(--color-text); + // color: var(--color-text); &:focus { outline: none !important; @@ -567,8 +832,8 @@ $bchat-compose-margin: 20px; } ::placeholder { - font-family: $bchat-font-poppin-medium; - color: #bababa; + color: #a7a7ba; + font-weight: 300; } } @@ -583,40 +848,47 @@ $bchat-compose-margin: 20px; .bchat-full-logo { display: flex; - flex-direction: column; + flex-direction: row; align-items: center; justify-content: center; // for bchat style .bchat-brand-logo { - height: 200px; + height: 450px; // filter: brightness(0) saturate(100%) invert(75%) sepia(84%) saturate(3272%) hue-rotate(103deg) brightness(106%) contrast(103%); } .bchat-text { - font-family: $bchat-font-poppin-semibold; - /* color: #fff; */ - color: #4e4e5f; - font-size: 24px; - text-align: center; + // font-family: $bchat-font-poppin-semibold; + // /* color: #fff; */ + // color: #4e4e5f; + // font-size: 24px; + // text-align: center; + color: #108d32; + font-size: 28px; + font-style: normal; + font-weight: 700; + line-height: normal; } .bchat-text-logo { display: flex; - flex-direction: column; + flex-direction: row; align-items: center; justify-content: flex-end; margin-top: 12px; - width: 668px; + // width: 668px; // max-width: 615px; + width: 32vw; + max-width: 668px; height: 570px; // filter: var(--filter-bchat-text); background-image: var(--image-EmptyChatImg); background-repeat: no-repeat; transition: 0s; background-position: center; - background-size: 75%; + background-size: 100%; .path { fill: red; @@ -636,6 +908,7 @@ $bchat-compose-margin: 20px; height: $composition-container-height; border: var(--border-bchat); } + .bchat-button.square-outline.square.danger { flex-grow: 1; height: $composition-container-height; @@ -649,6 +922,7 @@ $bchat-compose-margin: 20px; } .left-pane-contact { + &-section, &-content { display: flex; @@ -657,6 +931,7 @@ $bchat-compose-margin: 20px; flex: 1; .module-conversation-list-item { + &__header__date, &__message { display: none; @@ -722,29 +997,39 @@ $bchat-compose-margin: 20px; } } - &-content, + // &-content, &-section { display: flex; flex-direction: column; - // flex: 1; - background-color: var(--color-leftpaneSetting); - // height: 93%; - height: calc(100% - 63px); - overflow-y: auto; + height: calc(100%); + min-width: 300px; + width: 25vw; + max-width: 420px; + background: var(--color-left-pane-bg); + padding: 15px; + overflow: auto; + + h6 { + // color: #f0f0f0; + font-size: 24px; + font-weight: 600; + margin: 0; + } } &-category-list-item { background: none; display: flex; flex-direction: row; - justify-content: space-between; + // justify-content: space-between; align-items: center; - height: 60px; + height: 65px; line-height: 1.4; padding: 0px 12px; flex-shrink: 0; cursor: pointer; transition: $bchat-transition-duration !important; + margin: 5px 0; &-icons { width: 19px; @@ -757,34 +1042,38 @@ $bchat-compose-margin: 20px; } &-span { - font-family: $bchat-font-poppin-medium; - font-size: 17px; + font-size: 18px; + font-weight: 400; } .beta { margin-left: 5px; - background-color: #9494a0; - height: 11px; - // border-radius: 2px; - border-radius: 4px; - padding: 0 5px; + background-color: var(--color-setting-wallet-beta-bg); + height: 18px; + border-radius: 6px; + padding: 4px 5px; font-size: 8px; - font-family: 'poppin-semibold'; letter-spacing: 1px; + font-weight: 600; + margin-top: -7px; } - & > div { + &>div { display: block; } + // &.active { + // // background: var(--color-conversation-item-selected); + // border-radius: 16px; + // background: #2e333d; + // } + + &:hover, &.active { + border-radius: 16px; background: var(--color-conversation-item-selected); } - &:hover { - background-color: var(--color-settings-leftpane-options-hover); - } - &__buttons { display: flex; @@ -840,7 +1129,7 @@ $bchat-compose-margin: 20px; margin: 50px 0 50px; .panel-text-divider-line { - border-bottom: 1px solid var(--color-pill-divider); + border-bottom: 2px solid var(--color-pill-divider); line-height: 0.1em; flex-grow: 1; @@ -857,4 +1146,4 @@ $bchat-compose-margin: 20px; font-family: $bchat-font-default; font-size: $bchat-font-sm; } -} +} \ No newline at end of file diff --git a/stylesheets/_bchat_password.scss b/stylesheets/_bchat_password.scss index da83232b..06a63e50 100644 --- a/stylesheets/_bchat_password.scss +++ b/stylesheets/_bchat_password.scss @@ -15,9 +15,17 @@ justify-content: space-around; } } + .unlock-button { - .bchat-button.brand-outline.green, .bchat-button.default-outline.green, .bchat-button.square-outline.green{ - background-image: linear-gradient(to bottom , #13B71A, #006004); + + .bchat-button.brand-outline.green, + .bchat-button.default-outline.green, + .bchat-button.square-outline.green { + background-image: linear-gradient(to bottom, #13b71a, #006004); + } + + .bchat-button.brand.primary:hover:not(.disabled) { + background-color: #32B10E; } } @@ -26,24 +34,33 @@ display: flex; justify-content: center; align-items: center; - background-color: $bchat-password-color-black; + // background-color: $bchat-password-color-black; + background: #131313; width: 100%; height: 100%; padding: 3 * $bchat-margin-lg; } &-error-section { - width: 75%; + // width: 84%; color: $bchat-color-white; - margin: -$bchat-margin-sm 0px 2 * $bchat-margin-lg 0px; + // margin: 6 0px 2 * $bchat-margin-lg 0px; + margin: 0 0px 17px 0px; .bchat-label { &.primary { - background-color: #FF2424; + background-color: #ff2424; } + padding: $bchat-margin-xs $bchat-margin-sm; text-align: center; - border-radius: 5px; + border-radius: 10px; + color: #f0f0f0; + font-family: Poppins; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 24px; } } @@ -55,13 +72,15 @@ align-items: center; justify-content: center; - width: 600px; + width: 580px; min-width: 420px; - padding: 3 * $bchat-margin-lg 2 * $bchat-margin-lg; + // padding: 0 2 * $bchat-margin-lg; box-sizing: border-box; - background-color: $bchat-shade-4; + // background-color: $bchat-shade-4; // border: 1px solid $bchat-shade-19; border-radius: 10px; + background: #2e333d; + overflow: hidden; .warning-info-area, .password-info-area { @@ -72,13 +91,26 @@ h1 { color: $bchat-color-white; } + svg { margin-inline-end: $bchat-margin-lg; } } - p, - input { + .input-wrapper { + display: flex; + border-radius: 16px; + border: 1px solid #46465d; + background: #202329; + padding: 10px; + margin: 10px 0; + width: 88.5%; + } + + p // , + + // input + { margin: $bchat-margin-lg 0px; } @@ -87,21 +119,67 @@ } #password-prompt-input { - width: 100%; + width: 94%; color: #fff; // background-color: #2e2e2e; - -webkit-text-security: square; - margin-top: 2 * $bchat-margin-lg; + // -webkit-text-security: square; + // margin-top: 2 * $bchat-margin-lg; padding: $bchat-margin-xs $bchat-margin-lg; outline: none; border: none; - border-bottom: 1px solid $bchat-shade-19; - border-radius: 2px; - text-align: center; + // border-bottom: 1px solid $bchat-shade-19; + // border-radius: 2px; + // text-align: center; font-size: 24px; - letter-spacing: 5px; + // letter-spacing: 5px; font-family: $bchat-font-default; + + ::placeholder { + color: #858598; + } + } + + .clearData-icon-wrapper { + background-color: #202329; + border-radius: 40px; + margin-right: 15px; + padding: 10px; + } + + .clearData-title { + color: #f0f0f0; + font-family: Poppins; + font-size: 24px; + font-weight: 500; + margin: 0; + } + + .clearData-content { + color: #a7a7ba; + font-family: Poppins; + font-size: 18px; + font-weight: 400; + margin-bottom: 0; + margin-top: 5px; + } + + .btn-grp-wrapper { + width: 580px; + height: 100px; + display: flex; + align-items: center; + justify-content: center; + // background-color: #202329; + + .bchat-button.brand { + min-width: 250px; + } + + .bchat-button.brand.danger { + background: #ff3e3e; + color: white; + } } } } -} +} \ No newline at end of file diff --git a/stylesheets/_bchat_signin.scss b/stylesheets/_bchat_signin.scss index df146b24..7dd91de4 100644 --- a/stylesheets/_bchat_signin.scss +++ b/stylesheets/_bchat_signin.scss @@ -1,6 +1,9 @@ .bchat { &-head { - color: var(--color-text); + // color: var(--color-text); + font-weight: 700; + font-size: 32px; + color: #f0f0f0; } &-fullscreen { @@ -15,7 +18,7 @@ } &_conversation-doodle { - background-image: var(--image-BgDoodle); + // background-image: var(--image-BgDoodle); width: 100%; height: 100%; } @@ -37,25 +40,31 @@ &-accent { &-text { - font-family: $bchat-font-poppins-bold; + font-family: $bchat-font-open-sans; + font-weight: 800; + width: 390px; .title { - font-size: 31px; - font-weight: bold; - line-height: 37px; - text-align: center; + font-size: 40px; + // font-weight: bold; + line-height: 48px; + // text-align: center; color: var(--color-text); - padding: 2px 0px 14px 0; + margin-top: $bchat-margin-xl; + margin-bottom: $bchat-margin-md; } .title2 { - font-size: 13px; - padding: 7px 0px 8px 0px; - line-height: 17px; - text-align: center; + font-size: 20px; + // padding: 7px 0px 8px 0px; + line-height: 32px; + // text-align: center; // color:var(--color-Bchat-hint); - color: #ffffff; - font-family: $bchat-font-poppin-regular; + color: #a7a7ba; + font-family: $bchat-font-open-sans; + font-weight: 300; + margin-bottom: $bchat-margin-xl; + // margin-top: $bchat-margin-md; } } } @@ -86,41 +95,47 @@ &-container { display: flex; flex-direction: column; - width: 500px; + // width: 470px; + height: 100%; - .bchat-button { - width: 100%; - } &-walletHintText { margin: 0; - margin-left: 59px; - margin-bottom: 35px; - color: var(--color-text); + // margin-left: 59px; + margin-left: 38px; + margin-bottom: 30px; + font-size: 16px; + // color: var(--color-text); + color: rgba(167, 167, 186, 0.92); } + .warning-notes { - color: #c1c1c1; - // text-align: center; - font-family: 'poppin-regular'; - font-size: 12px; - width: 88%; - margin-top: 45px; - /* display: flex; */ - margin-left: 58px; + width: 97%; + margin-top: 30px; + line-height: 25px; + color: #a9aeba; + font-size: 16px; + font-weight: 300; + line-height: 30px; span { - color: #f23333; + color: #ff9649; + font-size: 16px; + font-weight: 500; } + strong { - font-size: 12px; - font-family: $bchat-font-poppin-semibold; + font-size: 16px; + color: #ebebeb; } } } &__content { - width: 92%; - padding-top: 20px; - margin-left: 26px; + // width: 92%; + // padding-top: 20px; + // margin-left: 26px; + margin-bottom: $bchat-margin-md; + width: 417px } &__content1 { @@ -141,9 +156,9 @@ // color: white; font-family: $bchat-font-poppins-bold; font-weight: bold; - padding: 0px 50px !important; - font-size: 20px; - font-weight: bold; + // padding: 0px 50px !important; + font-size: 32px; + // font-weight: bold; line-height: 26px; padding-top: 2em; text-align: center; @@ -156,16 +171,18 @@ &__entry-fields { margin: 0px; - padding-bottom: 40px; - margin-top: 40px; + padding-bottom: 25px; + padding-top: 30px; + // margin-top: 40px; } &__backbutton { position: relative; color: white; - top: 33px; + top: 39px; width: 30px; height: 30px; + &:hover { background-color: #52505f; border-radius: 20px; @@ -173,26 +190,31 @@ } &-header { - text-align: center; - color: var(--color-text); - font-size: 24px; + // text-align: center; + color: #f0f0f0; + font-size: 32px; padding-bottom: 25px; - font-weight: 600; - font-family: $bchat-font-poppins-bold; + font-weight: 700; + padding-left: 35px; } &-hr { - width: 50%; - color: #353543; - margin-top: 37px; + width: 78%; + // color: #353543; + // margin-top: 25px; + border-color: #23232f; + margin-top: 25px; + margin-bottom: 25px; } &-goback-icon { position: relative; - color: white; + // color: #A9AEBA; + margin-right: $bchat-margin-xs; + &:hover { - background-color: #52505f; - border-radius: 20px; + background-color: #2e333d; + border-radius: 8px; } } @@ -208,29 +230,32 @@ } &-welcome-screen-container { - width: 75%; - margin: 0 auto; - text-align: center; + width: 450px; + // margin: 0 auto; + // text-align: center; + color: #f0f0f0; .iconBox { - width: 40px; - height: 40px; - background-color: var(--color-inboxBgColor); - background-size: 16px; - border-radius: 35px; - background-position: center; + width: 26px; + height: 26px; + // background-color: var(--color-inboxBgColor); + // background-size: 16px; + // border-radius: 35px; + // background-position: center; cursor: pointer; - margin-top: 207px; - margin-left: 35px; - color: var(--color-copyIcon); - display: flex; - align-items: center; - justify-content: center; + // margin-top: 207px; + // margin-left: 35px; + // display: flex; + // align-items: center; + justify-content: flex-end; } + .iconBox:hover { // transform: scale(1.1); // color: #1ced23; - background-color: #008d00; + background-color: #2E333D; + border-radius: 10px; + // opacity: 0.5; } } @@ -240,141 +265,165 @@ top: 32px; width: 30px; height: 30px; + &:hover { background-color: #52505f; border-radius: 20px; } } - &-welcome-screen-back { - padding: 20px; - background-color: var(--color-body-bg); - border-radius: 10px; - margin: 10px 0 37px; - height: 375px; - box-shadow: 0px 0px 6px 0px #d1d1d1; - } + // &-welcome-screen-back { + // // padding: 20px; + // // background-color: var(--color-body-bg); + // // border-radius: 10px; + // margin: 10px 0 37px; + // height: 375px; + // // box-shadow: 0px 0px 6px 0px #d1d1d1; + // } &-welcome-screen-chat { - color: var(--color-text); + // color: var(--color-text); font-size: 18px; margin: 0; padding: 10px 0px; - font-family: $bchat-font-poppin-semibold; + font-weight: 500; + // font-family: $bchat-font-poppin-semibold; } &-welcome-screen-chat-content { - width: 80%; + // width: 80%; display: flex; - font-size: 10px; - color: #82828d; - margin: 10px auto; + font-size: 16px; + color: #a7a7ba; + font-weight: 300; + + p { + margin-top: 10px; + } } &-welcome-screen-chat-value { - background-color: var(--color-inboxBgColor); - border-radius: 13px; + border-radius: 16px; + border: 1px solid #3a3a41; + background: #202329; display: flex; - padding: 0px 15px; - font-size: 12px; - font-family: $bchat-font-poppin-medium; - box-shadow: 0px 0px 6px 0px #19192424; + padding: 10px 30px; + font-size: 16px; + /* box-shadow: 0px 0px 6px 0px #19192424; */ + font-weight: 500; + // /* padding: 10px; } &-recovery-phrase { - padding: 5px 20px; - background-color: var(--color-inboxBgColor); - border-radius: 12px; - margin: 10px 0 25px; + padding: 10px 10px 10px 20px; + // background-color: var(--color-inboxBgColor); + // border-radius: 12px; + // margin: 10px 0 25px; display: flex; - width: 100%; - height: 135px; - // justifyContent: "center", - font-size: 12px; - color: #0bb70f; - align-items: center; - box-shadow: 0px 0px 6px 0px #19192424; + /* width: 100%; */ + // height: 135px; + /* font-size: 12px; */ + /* color: #0bb70f; */ + // align-items: center; + + border-radius: 16px; + border: 1px solid #46465d; + background: #202329; + // height: 118px; + } + + // &-recovery-phrase-textarea { + // outline: none; + // border: none; + // resize: none; + // text-align: center; + // height: 118px; + // padding-top: 18px; + // } + + &-recovery-phrase-txt { + color: #f0f0f0; + font-size: 14px; + margin: 0; + padding: 10px 10px 10px 0px; } - &-recovery-phrase-textarea { - outline: none; - border: none; - resize: none; - text-align: center; - height: 118px; - padding-top: 18px; + &-recovery-phrase-hintTxt { + color: #a9aeba; + font-size: 11px; + + span { + color: #ff9649; + } } } &-restore-seed { &__address-container { - width: 90%; - margin: 0 auto; - text-align: center; + // width: 90%; + // margin: 0 auto; } &-parent-box { // display: flex; // flex-direction: row; // width: 100%; - margin-bottom: 47px; + // margin-bottom: 47px; + margin-bottom: 25px; } &-text-box { - background-color: var(--color-inboxBgColor); - width: 95%; - // min-height: 60px; - border-radius: 13px; - text-align: center; - color: #0bb70f; - box-shadow: 0px 0px 6px 0px #19192424; + width: 450px; + display: flex; + border-radius: 16px; + border: 1px solid #46465d; + background: #202329; + padding: 15px; + color: #f0f0f0; } &-text-area { outline: none; border: none; resize: none; - text-align: center; - padding: 15px; + // text-align: center; + // padding: 15px; width: 90%; - min-height: 120px; + min-height: 95px; overflow-y: hidden; } ::placeholder { - color: #77778b; - font-family: $bchat-font-poppin-semibold; + color: #858598; + font-family: $bchat-font-default; + font-weight: 400; } &-icon-box { display: flex; - width: 24vw; + /* width: 24vw; */ /* background: antiquewhite; */ - align-items: center; - margin-left: 1.5vw; - position: relative; + /* align-items: center; */ + /* margin-left: 1.5vw; */ + /* position: relative; */ + justify-content: flex-end; + width: 10%; .paste-icon { // background-image: url('../images/bchat/paste.svg') no-repeat; // background: url(images/bchat/paste.svg) no-repeat; - width: 40px; - height: 40px; - background-color: var(--color-inboxBgColor); - background-size: 16px; - border-radius: 35px; - background-position: center; - left: 430px; - top: -92px; - position: absolute; - cursor: pointer; - + width: 30px; + height: 30px; display: flex; justify-content: center; align-items: center; + cursor: pointer; + border-radius: 8px; + &:hover { - background-color: #52505f; + // opacity: 0.5; // background-color: var(--color-profile-close); - + background-color: #2E333D; } } } @@ -402,16 +451,20 @@ } &-textbox-message { - color: #77778b; - padding-top: 10px; - font-size: 12px; - padding-left: 60px; + color: #a7a7ba; + // padding-top: 10px; + font-size: 16px; + margin: 0; + margin-bottom: 5px; + // padding-left: 60px; } &-or { color: white; - margin-top: 40px; text-align: center; + font-weight: 600; + margin-top: 25px; + margin-bottom: 25px; } } @@ -420,15 +473,15 @@ } &-input-with-label-container { - height: 23px; + height: 70px; // height: 46.5px; - // width: 100px; - font-family: $bchat-font-poppins-bold; - color: var(--color-text); - - padding: 2px 0 2px 0; - transition: opacity $bchat-transition-duration; - opacity: 1; + width: 450px; + // font-family: $bchat-font-poppins-bold; + // color: var(--color-text); + font-size: $bchat-font-h4; + // padding: 2px 0 2px 0; + // transition: opacity $bchat-transition-duration; + // opacity: 1; position: relative; label { @@ -457,35 +510,59 @@ } input { - border: none; - border-radius: 4px; + // border: none; + // border-radius: 4px; outline: 0; - height: 50px; - width: 75%; - background-color: #353543; + height: 100%; + width: 100%; // background: var(--color-body-bg); // background: transparent; // color: var(--color-text); - color: #0bb70f; - padding: 0px 8px 0px 15px; - font-family: $bchat-font-poppin-regular; - font-size: 12px; - line-height: 14px; - position: absolute; - top: 80%; - transform: translateY(-50%); - margin-left: 58px; - box-shadow: 0px 0px 6px 0px #19192424; + color: var(--color-input-text); + // padding: 0px 8px 0px 15px; + // font-family: $bchat-font-poppin-regular; + // font-size: 12px; + // line-height: 14px; + // position: absolute; + // top: 80%; + // transform: translateY(-50%); + // margin-left: 58px; + // box-shadow: 0px 0px 6px 0px #19192424; + padding-left: 19px; + border-radius: 16px; + border: 1px solid #46465d; + background: #202329; } ::placeholder { - color: #77778b; + color: #858598; + font-family: $bchat-font-default; + font-weight: 400; } input::-webkit-calendar-picker-indicator { - width: 27px; - height: 27px; + display: flex; + align-items: center; + justify-content: center; + width: 35px; + height: 35px; color: white; + opacity: 1; + background-image: url("../images/bchat/calendar.svg"); + background-repeat: no-repeat; + background-position: center; + background-size: 27px; + // margin-right: 20px; + border-radius: 10px; + // padding: 10px; + cursor: pointer; + + &:hover { + // width: 35px; + // height: 35px; + // padding: 10px; + background-color: #2E333D; + } } hr { @@ -498,27 +575,29 @@ .bchat-icon-button { position: absolute; - top: 67%; - transform: translateY(-50%); + top: 36%; + // transform: translateY(-50%); right: 27px; + color: var(--color-icon); } } &-terms-conditions-agreement { // padding-top: $bchat-margin-md; - padding-left: 12px; + // padding-left: 12px; @include bchat-color-subtle(var(white)); text-align: center; - font-size: 12px; + font-size: 14px; // font-family: $bchat-font-poppins-bold; font-weight: normal; + width: 417px; a { white-space: nowrap; text-decoration: none; - font-family: $bchat-font-poppin-regular; - color: white; - opacity: 0.8; + color: #a7a7ba; + // opacity: 0.8; + font-weight: 400; // @include bchat-color-subtle(var(--color-text)); // @include bchat-color-subtle(white); @@ -556,25 +635,22 @@ display: flex; align-items: center; justify-content: center; - padding: 20px; - border-radius: 8px; - border: 1px solid subtle(#353535); - margin-bottom: 20px; + border-radius: 16px; + border: 1px solid var(--color-search-border); + // background: #202329; textarea { width: 100%; outline: 0; border: none; - background: transparent; - color: var(--color-TextAreaColor); - - font-size: 15px; - line-height: 18px; - text-align: center; + font-size: 16px; + /* background: transparent; */ + /* font-size: 15px; */ + /* line-height: 18px; */ + /* text-align: center; */ overflow-wrap: break-word; - padding: 1px 5px 20px 5px; + // padding: 1px 5px 20px 5px; display: inline-block; - font-family: $bchat-font-poppin-medium; user-select: all; overflow: hidden; resize: none; @@ -587,4 +663,4 @@ @include bchat-color-subtle(var(--color-text)); font-size: 13px; -} +} \ No newline at end of file diff --git a/stylesheets/_bchat_theme.scss b/stylesheets/_bchat_theme.scss index f40492c9..75606033 100644 --- a/stylesheets/_bchat_theme.scss +++ b/stylesheets/_bchat_theme.scss @@ -5,6 +5,8 @@ .module-conversation-header { // background: var(--color-cell-background); background-color: var(--color-chatHeader); + border-bottom: 1px solid var(--color-setting-header-border); + } .module-message { @@ -35,11 +37,12 @@ &__container--incoming { &--opaque { background: var(--color-received-message-background); - box-shadow: 0px 3px 5px 0px #00000029; - &:hover{ - background-color: var(--color-received-message-background-hover); + // background-color: #2E333D; + // box-shadow: 0px 3px 5px 0px #00000029; + &:hover { + // background-color: var(--color-received-message-background-hover); + opacity: 0.9; } - } &--transparent { @@ -61,14 +64,23 @@ // &--last-of-series { // border-bottom-left-radius: $message-container-border-radius; // } + .timeStamp{ + color: #858598; + font-size: 12px; + font-weight: 400; + width: 100%; + text-align: end; + padding-right: 18px; + } .module-message__text { color: var(--color-received-message-text); display: flex; flex-direction: row; align-items: center; - line-height: 15px; - + font-size: 16px; + // line-height: 15px; + word-break: break-all; svg { margin-right: $bchat-margin-xs; } @@ -90,14 +102,14 @@ border-top-right-radius: 0px; // padding: 5px; &--opaque { - background: var(--color-sent-message-background); - box-shadow: 0px 3px 5px 0px #00000029; - &:hover{ - background-color: #0B9FFF; + // background: var(--color-sent-message-background); + // box-shadow: 0px 3px 5px 0px #00000029; + background-color: #108D32; + &:hover { + opacity: 0.9; } - } - + &--transparent { background: none; } @@ -109,10 +121,19 @@ // &--last-of-series { // // border-bottom-right-radius: $message-container-border-radius; // } - + .timeStamp{ + color: #F0F0F0; + font-size: 12px; + font-weight: 400; + width: 100%; + font-size: 12px; + text-align: end; + padding-right: 15px; + } .module-message__text { color: var(--color-sent-message-text); - line-height: 17px; + // line-height: 17px; + word-break: break-all; a { text-decoration: underline; color: var(--color-sent-message-text); @@ -130,8 +151,6 @@ // border-left: 15px solid transparent; // border-bottom: 15px solid #2879FB; // } - - } .bchat-message-wrapper { @@ -144,44 +163,40 @@ animation: highlightedMessageAnimation 1s ease-in-out; } - .message-box - { + .message-box { display: flex; width: 100%; - align-items: center; + // align-items: center; // height: 68px; - padding-right: 10px; - - } - .checkedCircle,.isSelected{ - width: 20px; - height: 20px; - display: flex; - justify-content: center; - align-items: center; - border-radius: 20px; - margin-right: 10px; - + padding-right: 15px; + // align-items: center; } - .checkedCircle - { - border: 2px solid var(--color-text); - } + // .checkedCircle, + // .isSelected { + // width: 20px; + // height: 20px; + // display: flex; + // justify-content: center; + // align-items: center; + // border-radius: 20px; + // margin-right: 10px; + // } + // .checkedCircle { + // border: 2px solid var(--color-text); + // } &.message-selected { - background-color: rgba(40, 121, 251, .3); - + background-color: var(--color-chat-multi-select-bg); + // .isSelected{ - + // border: 1px solid rgba(17, 193, 25, 1); - + // } .module-message { &__container { box-shadow: var(--color-bchat-shadow); - } - } } } diff --git a/stylesheets/_conversation.scss b/stylesheets/_conversation.scss index 1b830b12..95a724a0 100644 --- a/stylesheets/_conversation.scss +++ b/stylesheets/_conversation.scss @@ -1,8 +1,11 @@ .message-detail-wrapper { - height: calc(100% - 48px); - width: 100%; - overflow-y: auto; - z-index: 2; + // height: calc(100% - 48px); + // width: 100%; + // overflow-y: auto; + // z-index: 2; + .bchat-message-wrapper { + padding: 0; + } } .public-chat-message-wrapper { @@ -13,80 +16,171 @@ .group-invitation-container { display: flex; flex-direction: column; + padding-right: 15px; + align-items: flex-end; + padding-left: 15px; + padding-bottom: 3px; } .payment { - background-color: #128b17; - color: #FFFFFF; display: inline-block; - margin: 4px 16px; + // margin: 4px 16px; padding: 16px; border-radius: 15px; - align-self: flex-start; + // align-self: flex-start; box-shadow: none; cursor: pointer; + // width: 352px; + background: var(--color-received-message-background); + // border-top-right-radius: 0px; + border-top-left-radius: 0px; + &.invitation-outgoing { - background: var(--color-sent-message-background); + // background: var(--color-sent-message-background); + // align-self: flex-end; + // margin-right: 26px; align-self: flex-end; - margin-right: 26px; + background-color: #108d32; + border-top-right-radius: 0px; + border-top-left-radius: 15px; + color: white; } .contents-incoming, .contents { display: flex; align-items: center; // margin: 6px; - justify-content: space-between; + // justify-content: space-between; // min-width: 202px; - min-width: 217px; + min-width: 300px; /* margin: 10px; */ max-width: 465px; margin: 0px 0px 7px; - background-color: #3e88ff; + background-color: #0a6f0a; border-radius: 10px; // padding: 5px 10px; - padding: 5px 16px; + padding-left: 15px; + height: 80px; } .contents-incoming { - background-color: #20a826; + background-color: var(--color-untrust-media-bg); + .amount { + color:var(--color-text); + } } .amount { - font-family: $bchat-font-poppins-bold; - font-size: 18px; + font-family: $bchat-font-open-sans; + color: #f0f0f0; + font-size: 28px; + font-style: normal; + font-weight: 700; + line-height: normal; + margin-left: 10px; } .hint-out, .hintTxt { display: flex; - align-self: flex-end; + // align-self: flex-end; + // font-size: 12px; + font-weight: 400; + .txn-status { + margin-right: 10px; + overflow: hidden; + color: #f0f0f0; + text-overflow: ellipsis; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; + } + } + // .hint-out { + // justify-content: flex-end; + // } + .timeStamp { + color: #858598; font-size: 12px; + font-weight: 400; + width: 100%; + text-align: end; + padding-right: 18px; } - .hint-out { - justify-content: flex-end; + .timeStamp-outgoing { + color: #f0f0f0; } } -.payment:hover -{ -opacity: 0.9; +.payment:hover { + opacity: 0.9; +} +.inviteWrapper-incoming, +.payment-Wrapper-incoming { + align-self: flex-start; +} +.inviteWrapper-outgoing, +.payment-Wrapper-outgoing { + // align-self: flex-end; + align-items: center; + display: flex; } .group-invitation { background: var(--color-received-message-background); + cursor: pointer; &.invitation-outgoing { - background: var(--color-sent-message-background); - align-self: flex-end; - margin-right: 26px; + // background: var(--color-sent-message-background); + // align-self: flex-end; + // margin-right: 26px; + align-items: center; + background-color: #108d32; + border-top-right-radius: 0px; + border-top-left-radius: 15px; + color: white; } display: inline-block; - margin: 4px 16px; - padding: 4px; - + // margin: 4px 16px; + padding: 15px; border-radius: 15px; - + border-top-left-radius: 0px; align-self: flex-start; - box-shadow: none; - + .group-details { + display: flex; + align-items: center; + justify-content: space-between; + padding: 15px; + border-radius: 16px; + width: 305px; + background-color: var(--color-untrust-media-bg); + cursor: pointer; + .group-name { + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; + } + .group-type { + overflow: hidden; + + text-overflow: ellipsis; + font-size: 16px; + font-style: normal; + font-weight: 300; + line-height: normal; + } + } + .timeStamp { + color: #858598; + font-size: 12px; + font-weight: 400; + width: 100%; + text-align: end; + padding-right: 18px; + } + .timeStamp-outgoing { + color: #f0f0f0; + } .title { margin: 6px; color: darkslategray; @@ -109,10 +203,6 @@ opacity: 0.9; flex-direction: column; padding: 0px 12px; - .group-name { - font-weight: bold; - font-size: 18px; - } } .bchat-icon-button { @@ -142,5 +232,12 @@ opacity: 0.9; .group-invitation.invitation-outgoing { .group-details { color: var(--color-sent-message-text); + background: #0a6f0a; + .group-name { + color: #f0f0f0; + } + .group-type { + color: #f0f0f0; + } } } diff --git a/stylesheets/_global.scss b/stylesheets/_global.scss index e133db74..03288c2e 100644 --- a/stylesheets/_global.scss +++ b/stylesheets/_global.scss @@ -12,26 +12,31 @@ body { height: 100%; width: 100%; margin: 0; - font-family: $bchat-font-poppin-regular; + font-family: $bchat-font-default; font-size: 14px; letter-spacing: 0.3px; } // scrollbars ::-webkit-scrollbar { - width: 7px; + width: 5px; + height:5px + } + ::-webkit-scrollbar-thumb { background: var(--color-scroll-bar-thumb); border-radius: 10px; - &:hover { - background: $color-light-45; - } + // &:hover { + // background: $color-light-45; + // } } + ::-webkit-scrollbar-track { border-radius: 10px; + background: var(--color-scroll-bar-track); } audio { @@ -43,6 +48,7 @@ audio { display: table; content: ' '; } + .clearfix:after { clear: both; } @@ -56,6 +62,7 @@ button { font-size: inherit; &[disabled='disabled'] { + &, &:hover { opacity: 0.5; @@ -64,6 +71,7 @@ button { } } } + button.grey { border-radius: $border-radius; border: solid 1px #ccc; @@ -80,6 +88,7 @@ button.grey { } &[disabled='disabled'] { + &, &:hover { opacity: 0.5; @@ -96,6 +105,7 @@ a { .file-input { position: relative; + .choose-file { cursor: pointer; } @@ -121,6 +131,7 @@ a { .members .contact { box-shadow: none; border-bottom: 1px solid #eee; + .last-message, .last-timestamp { display: none; @@ -173,6 +184,7 @@ $loading-height: 16px; .loading { position: relative; + &::before { display: block; margin: 0px auto; @@ -216,6 +228,7 @@ $loading-height: 16px; transform: scale(1); opacity: 1; } + 100% { opacity: 0; } @@ -233,7 +246,7 @@ $loading-height: 16px; user-select: none; // force this to black, to stay consistent with the password prompt being in dark mode too. // background-color: var(--color-inbox-background); - background-color: #1C1C26; + background-color: #131313; .content { margin-inline-start: auto; @@ -241,12 +254,14 @@ $loading-height: 16px; text-align: center; width: 250px; } + .container { margin-inline-start: auto; margin-inline-end: auto; width: 78px; height: 22px; } + .message { -webkit-user-select: text; max-width: 35em; @@ -262,13 +277,16 @@ $loading-height: 16px; transform: scale(0); animation: loading 1500ms ease infinite 0ms; + &:nth-child(2) { animation: loading 1500ms ease infinite 333ms; } + &:nth-child(3) { animation: loading 1500ms ease infinite 666ms; } } + .bchat-text-logo { filter: brightness(0) saturate(100%); } @@ -283,21 +301,25 @@ $loading-height: 16px; position: relative; } -.tooltipDesign{ +.tooltipDesign { background-color: #F7F7F7 !important; padding: 1px 6px !important; - color: black !important; - border:1px solid #D9D9D9 !important; - font-family: $bchat-font-poppin-medium !important; - &.place-top,&.place-bottom { - &:after { - border: none !important; - } + color: black !important; + border: 1px solid #D9D9D9 !important; + font-family: $bchat-font-default !important; + + &.place-top, + &.place-bottom { + &:after { + border: none !important; } - &.place-right { - // display: none; - &:after { - border: none !important; - } + } + + &.place-right { + + // display: none; + &:after { + border: none !important; } - } + } +} \ No newline at end of file diff --git a/stylesheets/_index.scss b/stylesheets/_index.scss index 0bd53bf6..a980332b 100644 --- a/stylesheets/_index.scss +++ b/stylesheets/_index.scss @@ -41,10 +41,11 @@ .module-avatar { display: block; - margin-bottom: 1em; + // margin-bottom: 1em; } .avatar-center { + margin-left: 25px; display: flex; justify-content: center; } diff --git a/stylesheets/_mentions.scss b/stylesheets/_mentions.scss index b7e6f97e..1f74d34c 100644 --- a/stylesheets/_mentions.scss +++ b/stylesheets/_mentions.scss @@ -1,7 +1,7 @@ // used for the list after adding a `@` in the compose text input .contact-selection-list { - max-height: 240px; - overflow-y: auto; + // max-height: 240px; + // overflow-y: auto; margin: 4px; .check-mark { @@ -11,6 +11,14 @@ margin: 4px; min-width: 20px; } + .bchat-member-item:hover { + cursor:pointer !important; + } +} +.remove-contact-list{ + .bchat-member-item:hover { + cursor:pointer !important; + } } .member-list-container { diff --git a/stylesheets/_modal.scss b/stylesheets/_modal.scss index 1f1c46f2..516e64a7 100644 --- a/stylesheets/_modal.scss +++ b/stylesheets/_modal.scss @@ -23,20 +23,24 @@ // height: 87vh; flex-direction: column; justify-content: center; + .progressSyncBox { display: flex; flex-direction: column; justify-content: center; align-items: center; } + &-contentBox { width: 500px; // background-color: var(--color-WalcontentBg); border-radius: 10px; - .progress { - width: 70px; + width: 90px; + background-color: var(--color-hop-bg); + border-radius: 68px; + .CircularProgressbar { /* * This fixes an issue where the CircularProgressbar svg has @@ -57,7 +61,7 @@ } .CircularProgressbar .CircularProgressbar-trail { - stroke: #d6d6d6; + stroke: #858598; /* Used when trail is not full diameter, i.e. when props.circleRatio is set */ stroke-linecap: round; } @@ -97,6 +101,7 @@ .CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-trail { stroke: transparent; } + // .circle-wrap { // // margin: 150px auto; // width: 150px; @@ -168,174 +173,221 @@ margin: auto; background-image: var(--img-walPassword); } + &-headerBox { display: flex; align-items: center; justify-content: center; + span { - font-family: $bchat-font-poppins-bold; - margin-left: 10px; - font-size: 18px; + // color: #f0f0f0; + font-size: 26px; + font-weight: 700; } } &-inputBox { margin: 0 auto; - width: 73%; + width: 91%; + input { outline: none; border: none; width: 100%; - border-bottom: 1px solid #444455; text-align: center; + + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + height: 70px; } } + &-loader, &-forgotpasswordLoader { width: 500px; height: 360px; - background-color:var(--color-BgModalColor); + background-color: var(--color-BgModalColor); border-radius: 10px; z-index: 99; justify-content: center; display: flex; align-items: center; } + &-forgotpasswordLoader { width: 590px; height: 476px; } + &-forgotTxt { text-align: center; - color: #1bb51e; - font-size: 12px; text-decoration: underline; - } - .bchat-button.brand-outline.green { - width: 33%; - margin: auto; - height: 45px; - border-radius: 10px; + + color: #108d32; + font-size: 18px; + font-weight: 400; + text-transform: capitalize; } } } + &-progressSync { &-presentage { + color: #108d32; text-align: center; - font-family: $bchat-font-poppins-bold; - font-size: 20px; - color: #1bb51e; + font-size: 30px; + font-weight: 700; } + &-barBg { width: 100%; height: 10px; - background-color: var(--color-walSyncbar); + // background-color: var(--color-walSyncbar); + background-color: #858598; padding-top: 2px; + .bar { - background-color: #1bb51e; + background-color: #108d32; width: 40%; height: 4px; margin-top: 1px; } } + &-reloadTxt { + color: var(--color-modal-disable-txt); text-align: center; - font-family: $bchat-font-poppin-semibold; - font-size: 14px; + font-size: 18px; + font-weight: 400; } + &-bRemaing { text-align: center; + // color: #f0f0f0; + font-size: 18px; + font-weight: 400; } } + &-forgotPassword { display: flex; justify-content: center; align-items: center; width: 100%; flex-direction: column; + &-content-Box { display: flex; flex-direction: column; justify-content: center; align-items: center; // width: 538px; - width: 580px; + width: 550px; // height: 417px; // background-color: #2d2d3b; // background-color: var(--color-WalcontentBg); border-radius: 10px; + // margin: 5% 0px; &-title { - text-align: center; - font-size: 18px; - font-family: $bchat-font-poppins-bold; padding-top: 20px; + // color: #f0f0f0; + font-size: 26px; + font-weight: 700; + text-align: left; } + &-seed { display: flex; flex-direction: row; + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-input-background); + width: 505px; + textarea { border: none; outline: none; resize: none; // width: 435px; // height: 126px; - width: 500px; - height: 97px; + width: 463px; + height: 140px; // background-color: #353543; // background-color: var(--color-walInputBg); - background-color: var(--color-background-primary); - padding: 15px; + // background-color: var(--color-background-primary); + padding: 15px 25px; + // box-shadow: 1px 2px 5px #00000074; border-radius: 10px; + + font-size: 18px; + line-height: 22px; } } - &-paste-icon { - background: url('../images/bchat/paste.svg') no-repeat; - width: 35px; - height: 35px; - // background-color: var(--color-inboxBgColor); - background-color: var(--color-background-primary); - background-size: 14px; - border-radius: 35px; - background-position: center; - left: 10px; - top: 19px; - position: relative; - cursor: pointer; - box-shadow: var(--color-bchat-shadow); - } - &-paste-icon:hover { - // transform: scale(1.1); - // background-color: var(--color-wallet-copy-hover); - // color: #1ced23; - background-color: var(--color-profile-close); + + // &-paste-icon { + // background: url('../images/bchat/paste.svg') no-repeat; + // width: 35px; + // height: 35px; + // // background-color: var(--color-inboxBgColor); + // background-color: var(--color-background-primary); + // background-size: 14px; + // border-radius: 35px; + // background-position: center; + // left: 10px; + // top: 19px; + // position: relative; + // cursor: pointer; + // box-shadow: var(--color-bchat-shadow); + // } + + // &-paste-icon:hover { + // // transform: scale(1.1); + // // background-color: var(--color-wallet-copy-hover); + // // color: #1ced23; + // background-color: var(--color-profile-close); + // } + &-password-label { + display: flex; + // color: #f0f0f0; + font-size: 16px; + font-weight: 400; } &-password { + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-input-background); + width: 505px; input { border: none; outline: none; // background-color: #353543; // background-color: var(--color-walInputBg); - background-color: var(--color-background-primary); - + // background-color: var(--color-background-primary); + background-color: unset; // width: 438px; - width: 500px; - height: 45px; + width: 453px; + height: 70px; // box-shadow: 1px 2px 5px #00000074; margin-right: 10px; border-radius: 10px; - padding: 10px; + padding: 15px 25px; } } + &-disClaimerBox { // width: 86%; // padding-top: 12px; + width: 505px; padding-bottom: 25px; - font-size: 13px; - display: flex; - justify-content: center; + color: #a7a7ba; + font-size: 16px; + font-weight: 400; + text-align: start; + line-height: 20px; } } } @@ -364,13 +416,16 @@ &-UpdateModal { &-discription { font-family: $bchat-font-poppin-light; + &-fontMedium { font-family: $bchat-font-poppin-medium; } } + &-header { font-family: $bchat-font-poppin-semibold; } + &-icon { // color:red width: 50px; @@ -384,6 +439,7 @@ background-color: #2075ff; } } + &-loader { width: 552px; height: 362px; @@ -407,9 +463,15 @@ // width: 100%; max-width: 350px; min-width: 300px; - background-color: #313143; + // background-color: #313143; box-shadow: var(--color-bchat-shadow); } + + .invite-friends-list { + width: 400px; + max-height: 500px; + overflow-y: auto; + } } .create-group-dialog, @@ -568,8 +630,25 @@ .groupNameBox { display: flex; - border-bottom: var(--border-bchat); + justify-content: center; + align-items: center; + width: 443px; + height: 70px; + background: var(--color-input-background); + color: var(--color-text); + border: 1px solid #46465d; + border-radius: 16px; + + input { + width: 371px; + height: 65px; + + // text-align: center; + background: unset; + padding: 0 20px; + } } + .changepass { &-forgot-seed { textarea { @@ -579,29 +658,42 @@ height: 76px; // background-color: #353543; background-color: var(--color-walInputBg); - padding: 15px; // box-shadow: 1px 2px 5px #00000074; } } + &-oldpassInput { + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + height: 70px; + width: 100%; + padding: 10px; input { - background-color: var(--color-walInputBg); - width: 435px; - height: 55px; - margin-bottom: 10px; + background: var(--color-hop-bg); + height: 100%; + width: 430px; + + // margin-bottom: 10px; // box-shadow: 1px 2px 5px #00000074; } } &-newPassInput { + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + height: 70px; + width: 100%; + padding: 10px; input { // background-color: #353543; - background-color: var(--color-walInputBg); - width: 435px; - height: 52px; + background: var(--color-hop-bg); + height: 100%; + width: 430px; // box-shadow: 1px 2px 5px #00000074; - margin-right: 12px; + // margin-right: 12px; } } } @@ -631,6 +723,7 @@ display: flex; align-items: center; } + .walletChangePasswordHeader { display: flex; flex-direction: row; @@ -661,10 +754,10 @@ .avatar-center-inner { position: relative; - .module-avatar { - left: 10px; - box-shadow: 0px 0px 13px 0.5px var(--color-bchat-shadow); - } + // .module-avatar { + // left: 10px; + // box-shadow: 0px 0px 13px 0.5px var(--color-bchat-shadow); + // } .qr-view-button { cursor: pointer; @@ -702,30 +795,30 @@ &-display { user-select: text; - text-align: center; + text-align: left; word-break: break-all; font-size: $bchat-font-md; - // padding: 0px $bchat-margin-lg; - // background-color: var(--color-composeMsgInput); - background-color: var(--color-background-primary); + // background-color: var(--color-background-primary); + background-color: var(--color-hop-bg); border-radius: 10px; - padding: 10px 10px 10px 14px; + padding: 0px 10px 10px 14px; font-family: $bchat-font-default; font-weight: 100; color: #0bb70f; display: flex; justify-content: space-between; - align-items: center; + // align-items: center; flex-direction: row; width: 100%; min-height: 60px; box-shadow: var(--color-bchat-shadow); font-size: $bchat-font-md; + // padding: 0px $bchat-margin-sm; .profile-value { width: 86%; - font-family: $bchat-font-poppin-medium; + font-weight: 600; font-size: 14px; } } @@ -745,11 +838,6 @@ border-radius: 30px; background-position: center; cursor: pointer; - color: var(--color-copyIcon); - - &:hover { - background-color: var(--color-copy-hover); - } } .bchat-button { @@ -757,59 +845,56 @@ } } - &-modalLoader { - // width: 400px; - // height: 455px; - width: 402px; - height: 447px; - // top: 22.3%; - background-color: #0000009e; - border-radius: 25px; - z-index: 99; - justify-content: center; + .profileHeader { + width: 100%; display: flex; - align-items: center; + justify-content: end; } .profileClose { display: flex; - justify-content: center; - margin-left: 350px; + // justify-content: center; + margin-left: 20px; margin-top: 12px; width: 28px; height: 28px; - &:hover { - background-color: var(--color-profile-close); - border-radius: 20px; - } + // &:hover { + // background-color: var(--color-profile-close); + // border-radius: 20px; + // } } .profile-name { display: flex; margin-top: $bchat-margin-sm; - justify-content: space-between; + margin-bottom: $bchat-margin-sm; + justify-content: center; width: 100%; + font-family: $bchat-font-default; + font-weight: 400; .inputBox { display: flex; - /* width: 134px; */ - padding-left: 73px; + width: 200px; + padding-left: 45px; } .saveIcon { width: 35px; color: var(--color-accent); cursor: pointer; + margin: auto 0; + margin-left: 7px; } input { height: 38px; - border-radius: 5px; + border-radius: 16px; text-align: center; font-size: $bchat-font-md; background: var(--color-input-background); color: var(--color-text); - border: var(--border-bchat); + border: 1px solid #46465d; } &-uneditable { @@ -817,7 +902,8 @@ align-items: center; justify-content: space-around; width: 100%; - font-family: $bchat-font-poppin-semibold; + margin-right: 25px; + font-family: $bchat-font-default; p { font-size: 16px; @@ -832,6 +918,7 @@ // left: 103px; position: relative; cursor: pointer; + &:hover { color: #128b17; } @@ -842,6 +929,246 @@ } } } + + .link_bns_wrapper { + display: flex; + flex-direction: column; + width: 100%; + align-items: center; + } + + .link_bns_Btn { + width: 55%; + border-radius: 12px; + background-color: #128b17; + font-weight: 600; + border: none; + font-size: 12px; + height: 45px; + font-family: $bchat-font-default; + font-weight: 600; + } + + .hintTxt { + color: #a7a7ba; + font-size: 12px; + display: flex; + margin-top: 7px; + align-items: flex-start; + margin-bottom: 15px; + } + + .bnsVerfiedTxt { + display: flex; + align-items: flex-start; + margin-bottom: 15px; + color: #0bb70f; + font-size: 14px; + font-family: $bchat-font-default; + font-weight: 700; + } +} + +// .bns_enable_modal { +// .bchat-modal__body { +// border: 2px solid #00bd40; +// box-shadow: inset 0 0 24px 0px rgba(0, 189, 64, 0.45); +// border-radius: 17px; +// } +// } +.bns_link_modal { + width: 500px; + padding-top: 20px; + text-align: left; + header { + margin-bottom: 25px; + margin-top: 15px; + // color: #f0f0f0; + font-size: 26px; + font-weight: 700; + } + + .label_id { + // font-weight: 700; + // font-family: $bchat-font-poppin-semibold; + font-family: $bchat-font-poppins-bold; + margin-bottom: 10px; + font-size: 12x; + } + + .linked_bns { + padding: 0px 0px 35px; + font-size: 20px; + font-weight: 700; + color: #108d32; + } + + .id_wrapper { + // height: 90px; + display: flex; + flex-direction: column; + // align-items: center; + background-color: var(--color-BnsLinkIdBg); + // background-color: #202329; + border: 1px solid var(--color-search-border); + padding: 0px 25px; + border-radius: 16px; + margin-bottom: 15px; + // box-shadow: var(--color-bchat-shadow); + .id-label { + // color: #f0f0f0; + font-size: 16px; + font-weight: 600; + } + .id_content { + color: #108d32; + font-size: 16px; + font-weight: 400; + line-height: normal; + margin-top: 0; + margin-bottom: 0; + } + } + + .hr_line { + background-color: var(--color-pill-divider); + width: 100%; + height: 2px; + } + + .label_input { + color: #a7a7ba; + font-size: 16px; + font-weight: 400; + } + + .inputBox-wrapper { + // margin: 15px auto; + height: 65px; + background-color: var(--color-BnsLinkIdBg); + // background-color: #202329; + border: 1px solid var(--color-search-border); + border-radius: 16px; + padding: 0px 25px; + // box-shadow: var(--color-bchat-shadow); + + input { + width: 100%; + height: 100%; + background-color: transparent; + } + } + + .divided-btn-wrapper { + align-items: center; + display: flex; + justify-content: center; + // padding: 0 32px; + + margin-bottom: 10px; + + .button { + height: 55px; + border-radius: 12px; + background-color: #202329; + color: #858598 !important; + font-size: 18px; + cursor: pointer; + } + } + + .success { + font-family: $bchat-font-default; + font-size: 22px; + margin-bottom: 35px; + margin-top: 20px; + font-weight: 700; + color: #108d32; + } +} +.nickNameDialog { + .input-wrapper { + width: 420px; + height: 70px; + flex-shrink: 0; + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-input-background); + display: flex; + padding: 0 13px; + align-items: center; + input { + background-color: unset; + } + } +} +.about-bns { + section { + text-align: left; + width: 600px; + height: 450px; + overflow: auto; + margin-bottom: 25px; + } + + article { + padding: 0 10px; + } + + .bchat-modal__header__title { + font-size: 18px; + } + + &-header { + font-family: $bchat-font-default; + font-weight: 600; + font-size: 16px; + margin-top: $bchat-margin-md; + margin-bottom: $bchat-margin-sm; + } + + &-txt { + font-family: $bchat-font-default; + font-weight: 400; + font-size: 14px; + margin-bottom: $bchat-margin-lg; + line-height: 22px; + } + + &-txt-bold { + line-height: 22px; + + span { + font-family: $bchat-font-default; + font-weight: 600; + } + + span:first-child { + font-family: $bchat-font-default; + } + } +} +.community-guidelines { + article { + font-size: 18px; + font-weight: 400; + line-height: normal; + line-height: 22px; + overflow: auto; + overflow-x: hidden; + // height: 482px; + width: 581px; + text-align: left; + padding: 0 26px; + + div { + margin-bottom: 10px; + } + a { + color: #108d32; + } + + } } .onion-status-dialog { @@ -904,3 +1231,33 @@ } } } + +.user-details { + .user-name { + // color: #f0f0f0; + font-size: 20px; + font-weight: 600; + } + .user-id-wrapper { + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + padding: 15px; + text-align: left; + &-label { + // color: #f0f0f0; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; + } + .user-id { + color: #108d32; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 17px; + padding-right: 20px; + } + } +} diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index 5171aee5..0ff92f36 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -5,13 +5,13 @@ display: flex; flex-direction: column; align-items: flex-start; - overflow-x: hidden; + // overflow-x: hidden; font-weight: 400; } .module-contact-name span { - text-overflow: ellipsis; - overflow-x: hidden; + // text-overflow: ellipsis; + // overflow-x: hidden; width: 100%; text-align: left; user-select: none; @@ -62,12 +62,33 @@ flex-direction: row; align-items: center; padding: 10px; + + border-radius: 16px; + background: var(--color-untrust-media-bg); + margin: 15px 15px 0; +} + +.module-message__generic-attachment-outgoing { + background-color: #0a6f0a; +} + +// .module-message__generic-attachment + .attachment-with-quote ,.module-message__attachment-container + +.attachment-with-quote { + min-width: 500px; +} + +.module-message__attachment-container-displayBgBlur { + background-image: url('../images/bchat/bgBlurLogo.png'); + width: 100%; + height: 100%; + background-size: cover; } .module-message__generic-attachment__icon-container { position: relative; cursor: pointer; } + .module-message__generic-attachment__spinner-container { padding-inline-start: 4px; padding-inline-end: 4px; @@ -89,7 +110,7 @@ .module-message__generic-attachment__icon__extension { font-size: 10px; - line-height: 13px; + line-height: 16px; letter-spacing: 0.1px; text-transform: uppercase; @@ -112,12 +133,13 @@ margin-inline-start: 8px; // The width of the icon plus our 8px margin max-width: calc(100% - 37px); + cursor: pointer; } .module-message__generic-attachment__file-name { color: $color-gray-90; font-size: 14px; - line-height: 18px; + // line-height: 18px; font-weight: 300; margin-top: 2px; @@ -147,15 +169,52 @@ cursor: pointer; border-top-left-radius: $bchat_message-container-border-radius; border-top-right-radius: $bchat_message-container-border-radius; + display: flex; + align-items: center; + margin: 10px 10px 5px 10px; + + .noImage { + width: 68px; + height: 68px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 10px; + + &__incoming { + background-color: var(--color-hop-bg); + // color: var(--color-text); + } + + &__outgoing { + background-color: #0A6F0A; + // color: white; + } + } } .module-message__link-preview__content { padding: 8px; + min-height: 80px; background-color: $color-white; display: flex; flex-direction: row; align-items: flex-start; border: 1px solid $color-black-015; + + width: 87%; + margin: 5px; + border-radius: 10px; + + &__incoming { + background-color: var(--color-untrust-media-bg); + color: var(--color-text); + } + + &__outgoing { + background-color: #0A6F0A; + color: white; + } } .module-message__link-preview__image_container { @@ -208,9 +267,8 @@ } .module-message__link-preview__title { - color: $color-gray-90; font-size: 16px; - font-weight: 300; + font-weight: 600; letter-spacing: 0.15px; line-height: 22px; @@ -218,17 +276,38 @@ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; + margin-top: 5px; + + .incoming { + // color: var(--color-hop-txt); + color: var(--color-text); + + } + + .outgoing { + color: var(--color-sent-message-text); + } } .module-message__link-preview__location { - margin-top: 4px; - color: $color-gray-60; + margin-top: 10px; + // color: var(--color-sent-message-text); font-size: 12px; height: 16px; letter-spacing: 0.4px; line-height: 16px; text-transform: uppercase; + + .incoming { + color: var(--color-text); + } + + .outgoing { + color: var(--color-sent-message-text); + } + } + .module-conversation__user, .module-message__author { text-align: start; @@ -242,6 +321,7 @@ white-space: nowrap; text-overflow: ellipsis; } + .module-conversation__user__profile-name, .module-message__author__profile-name { font-style: italic; @@ -309,7 +389,7 @@ .module-conversation-header__avatar { cursor: pointer; - min-width: 28px; + // min-width: 28px; user-select: none; } @@ -331,13 +411,49 @@ align-items: center; -webkit-user-select: text; - cursor: pointer; + // cursor: pointer; .module-contact-name__profile-name { - width: 100%; - overflow: hidden !important; + // color: #f0f0f0; + font-size: 18px; + font-weight: 400; + white-space: nowrap; + overflow: hidden; text-overflow: ellipsis; - padding-top: 3px; + width: 380px; + } +} + +.module-contact-name__profile-name { + // color: #f0f0f0; + font-size: 16px; + font-weight: 600; + line-height: normal; +} + +.module-contact-name__profile-number { + color: #108d32; + font-size: 16px; + font-weight: 400; + line-height: 15px; +} + +.module-left-pane__header, +.module-conversation-header__title { + .module-contact-name-bns-tag { + font-weight: bold; + background-color: white; + color: #1c1c26; + font-size: 10px; + top: -11px; + left: 40px; + /* letter-spacing: 0px; */ + text-align: center; + outline: none; + border: none; + padding: 1px; + border-radius: 3px; + margin-left: 5px; } } @@ -348,14 +464,19 @@ padding-inline-start: 8px; padding-inline-end: 18px; flex-shrink: 0; - margin-top: 9px; + margin-right: 15px; + padding-left: 15px; + height: 40px; + border-radius: 25px; + background-color: var(--color-input-background); } .module-conversation-header__expiration__clock-icon { - @include color-svg('../images/timer.svg', $color-gray-60); - height: 20px; - width: 20px; + @include color-svg('../images/timer.svg', $color-icon-green); + height: 18px; + width: 18px; display: inline-block; + margin-right: 5px; } .module-conversation-header__expiration__setting { @@ -369,12 +490,28 @@ max-width: 650px; margin-inline-start: auto; margin-inline-end: auto; - padding: 20px; + // padding: 20px; + // padding: 0 20px; + text-align: left; + padding-right: 3px; + + .module-message--outgoing { + margin-inline-end: unset; + margin-inline-start: unset; + } + + .module-message__container--incoming--opaque { + background-color: var(--color-moreInfo-incomming-chat-bg); + } } .module-message-detail__message-container { - padding-top: 20px; - padding-bottom: 20px; + // text-align: left; + // padding: 20px; + // border-radius: 16px; + // display: inline-block; + // max-height: 225px; + // overflow: auto; &:after { content: '.'; @@ -385,11 +522,35 @@ } } +// .message-direction-incoming { +// border-top-left-radius: 0px; +// background: var(--color-moreInfo-incomming-chat-bg); +// } +// .message-direction-outgoing { +// border-top-right-radius: 0px; +// background: #108d32; +// } + +.module-message-detail__info { + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + width: 100%; + overflow: hidden; + padding: 20px; + border-collapse: unset; +} + .module-message-detail__label { - font-weight: 300; - padding-inline-end: 5px; - font-family: $bchat-font-poppin-semibold; + color: #a7a7ba; + font-size: 16px; + font-weight: 400; +} + +.module-message-detail__direction_label { + color: #a7a7ba; font-size: 16px; + font-weight: 400; } .module-message-detail__delete-button-container { @@ -410,15 +571,20 @@ padding: 1em; } -.module-message-detail__contact-container { - margin: 20px 0 20px 0; -} +// .module-message-detail__contact-container { +// margin: 20px 0 20px 0; +// } .module-message-detail__contact { margin-bottom: 8px; display: flex; flex-direction: row; align-items: center; + + border-radius: 16px; + border: 1px solid var(--color-search-border); + background: var(--color-hop-bg); + padding: 20px; } .module-message-detail__contact__text { @@ -554,9 +720,9 @@ width: 94px; cursor: pointer; background-color: $color-light-10; - margin-inline-end: 8px; - margin-bottom: 8px; - margin-left: 8%; + // margin-inline-end: 8px; + // margin-bottom: 8px; + // margin-left: 8%; position: relative; } @@ -631,6 +797,7 @@ /* justify-content: center; */ align-items: center; } + .noMediaImg { width: 159px; height: 129px; @@ -641,7 +808,7 @@ } p { - font-family: $bchat-font-poppin-semibold; + font-weight: 600; color: #646474; font-size: 14px; } @@ -653,50 +820,52 @@ // max-width: 380px; display: flex; flex-direction: row; - padding-inline-end: 16px; + padding-inline-end: 15px; padding-top: 8px; padding-bottom: 8px; - padding-inline-start: 16px; + padding-inline-start: 15px; align-items: center; - border-bottom: var(--color-bchat-border); - background-color: var(--color-conversation-list); + margin: 10px 0; + // position: relative; + // border-bottom: var(--color-bchat-border); + // background-color: var(--color-conversation-list); // background-color: brown; cursor: pointer; - &:hover { - background-color: $color-dark-70; - } + // &:hover { + // background-color: $color-dark-70; + // } &--is-blocked { border-left: 4px solid var(--color-destructive) !important; } } -.module-conversation-list-item__unread-count { - color: $color-white; - background-color: $color-bchat-green; - text-align: center; +// .module-conversation-list-item__unread-count { +// color: $color-white; +// background-color: $color-bchat-green; +// text-align: center; - padding-top: 1px; - padding-inline-start: 3px; - padding-inline-end: 3px; +// padding-top: 1px; +// padding-inline-start: 3px; +// padding-inline-end: 3px; - position: absolute; - right: -6px; - top: -6px; +// position: absolute; +// right: -6px; +// top: -6px; - font-weight: 300; - font-size: 11px; - letter-spacing: 0.25px; +// font-weight: 300; +// font-size: 11px; +// letter-spacing: 0.25px; - height: 16px; - min-width: 16px; - line-height: 16px; - border-radius: 8px; +// height: 16px; +// min-width: 16px; +// line-height: 16px; +// border-radius: 8px; - box-shadow: 0px 0px 0px 1px $color-dark-85; -} +// box-shadow: 0px 0px 0px 1px $color-dark-85; +// } .module-conversation-list-item__content { flex-grow: 1; @@ -711,6 +880,7 @@ flex-direction: row; width: 100%; } + .bchat-icon-button:first-child { margin-right: $bchat-margin-sm; } @@ -752,11 +922,12 @@ display: flex; flex-direction: row; align-items: center; - width: 81%; + width: 80%; } .module-conversation-list-item__message__text { - flex-grow: 1; + // flex-grow: 1; + width: 120px; flex-shrink: 1; font-size: 13px; @@ -768,6 +939,8 @@ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; + + .text-selectable { user-select: none; } @@ -803,7 +976,9 @@ } &::placeholder { - color: $color-gray-45; + color: #858598; + font-family: $bchat-font-default; + font-weight: 400; } } @@ -814,8 +989,10 @@ background: none; position: relative; display: inline-block; - margin: 1px; + // margin: 1px; vertical-align: middle; + margin: 4px; + border-radius: 16px; } .module-image__caption-icon { @@ -826,10 +1003,12 @@ .module-image__with-click-handler { cursor: pointer; + // margin-right: 10px; } .module-image--soft-corners { - border-radius: 4px; + border-radius: 16px; + // margin-right: 10px; } .module-image__border-overlay { @@ -863,12 +1042,10 @@ .module-image__bottom-overlay { height: 48px; - background-image: linear-gradient( - to bottom, - rgba(0, 0, 0, 0), - rgba(0, 0, 0, 0) 9%, - rgba(0, 0, 0, 0.6) - ); + background-image: linear-gradient(to bottom, + rgba(0, 0, 0, 0), + rgba(0, 0, 0, 0) 9%, + rgba(0, 0, 0, 0.6)); position: absolute; bottom: 0; z-index: 1; @@ -919,14 +1096,14 @@ .module-image__close-button { cursor: pointer; position: absolute; - top: 5px; - right: 5px; - width: 16px; - height: 16px; + top: 2px; + right: 2px; + // width: 16px; + // height: 16px; z-index: 2; - background-image: url('../images/x-shadow-16.svg'); - background-color: #2879fbc2; - border-radius: 10px; + // background-image: url('../images/x-shadow-16.svg'); + // background-color: #2879fbc2; + // border-radius: 10px; } // Module: Image Grid @@ -937,6 +1114,8 @@ align-items: center; margin: -1px; + border-radius: 16px; + overflow: hidden; } .module-image-grid__column { @@ -968,6 +1147,7 @@ font-size: 12px; margin-right: 3px; } + .module-typing-animation__dot { border-radius: 50%; background-color: $color-gray-60; @@ -991,10 +1171,12 @@ 0% { opacity: 0.4; } + 20% { transform: scale(1.3); opacity: 1; } + 40% { opacity: 0.4; } @@ -1004,10 +1186,12 @@ 10% { opacity: 0.4; } + 30% { transform: scale(1.3); opacity: 1; } + 50% { opacity: 0.4; } @@ -1017,10 +1201,12 @@ 20% { opacity: 0.4; } + 40% { transform: scale(1.3); opacity: 1; } + 60% { opacity: 0.4; } @@ -1044,9 +1230,9 @@ // Module: Attachments -.module-attachments { - border-top: 1px solid $color-black-015; -} +// .module-attachments { +// border-top: 1px solid $color-black-015; +// } .module-attachments__header { height: 24px; @@ -1067,15 +1253,30 @@ } .module-attachments__rail { - margin-top: 12px; - margin-inline-start: 16px; - padding-inline-end: 16px; - overflow-x: scroll; - max-height: 142px; - background-color: var(--color-received-message-background); + // margin-top: 12px; + // margin-inline-start: 16px; + // padding-inline-end: 16px; + padding: 10px; + overflow-x: auto; + max-height: 160px; + // background-color: var(--color-received-message-background); + background-color: var(--color-untrust-media-bg); white-space: nowrap; overflow-y: hidden; margin-bottom: 6px; + border-radius: 12px; + // background: #131313; + margin-top: 20px; + + display: flex; + align-items: center; +} + +.module-inner-img-wrapper { + max-width: calc(100vw - 795px); + overflow-x: auto; + margin-right: 20px; + cursor: pointer; } // Module: Staged Generic Attachment @@ -1207,6 +1408,7 @@ flex-grow: 1; flex-shrink: 1; } + .module-caption-editor__video { max-width: 100%; max-height: 100%; @@ -1215,6 +1417,7 @@ flex-grow: 1; flex-shrink: 1; } + .module-caption-editor__placeholder { width: 100%; height: 100%; @@ -1251,6 +1454,7 @@ width: 30vw; border-radius: 100px; + #bchat-input-floating-label { padding: $bchat-margin-sm; color: black; @@ -1284,33 +1488,35 @@ // Module: Staged Placeholder Attachment .module-staged-placeholder-attachment { - margin: 1px; - border-radius: 4px; - border: 1px solid $color-gray-25; - height: 120px; - width: 120px; + /* margin: 1px; */ + // border-radius: 42px; + // border: 1px solid #bbbdbe; + // height: 30px; + // width: 30px; display: inline-block; vertical-align: middle; cursor: pointer; position: relative; + // background-color: #f0f0f0; - &:hover { - background: $color-gray-05; - } + // &:hover { + // background: $color-gray-05; + // } } -.module-staged-placeholder-attachment__plus-icon { - position: absolute; - left: 50%; - top: 50%; +// .module-staged-placeholder-attachment__plus-icon { +// position: absolute; +// left: 50%; +// top: 50%; - transform: translate(-50%, -50%); +// transform: translate(-50%, -50%); - height: 36px; - width: 36px; +// height: 21px; +// width: 21px; +// // background-color: #131313; - @include color-svg('../images/plus-36.svg', $color-gray-45); -} +// // @include color-svg('../images/plus-36.svg', $color-gray-45); +// } // Module: Staged Link Preview @@ -1318,16 +1524,24 @@ position: relative; display: flex; flex-direction: row; - background-color: var(--color-conversation-item-selected); - align-items: flex-start; + /* background-color: var(--color-conversation-item-selected); */ + /* align-items: flex-start; */ min-height: 65px; - margin: $bchat-margin-xs; + margin: 5px; + overflow-y: hidden; + margin-bottom: 6px; + border-radius: 12px; + // background: #131313; + margin-top: 20px; + align-items: center; + background-color: var(--color-untrust-media-bg); } .module-staged-link-preview--is-loading { align-items: center; justify-content: center; } + .module-staged-link-preview__loading { color: var(--color-text); @@ -1341,10 +1555,12 @@ margin-inline-end: 8px; padding: $bchat-margin-sm; } + .module-staged-link-preview__content { margin-inline-end: 20px; padding: $bchat-margin-sm; } + .module-staged-link-preview__title { color: $color-gray-90; font-weight: 300; @@ -1356,6 +1572,7 @@ -webkit-line-clamp: 2; -webkit-box-orient: vertical; } + .module-staged-link-preview__location { margin-top: 4px; color: $color-gray-60; @@ -1364,24 +1581,26 @@ letter-spacing: 0.25px; text-transform: uppercase; } + .module-staged-link-preview__close-button { cursor: pointer; position: absolute; top: 5px; right: 5px; + border: none; - height: 16px; - width: 16px; + // height: 16px; + // width: 16px; - @include color-svg('../images/x-16.svg', $color-gray-60); + // @include color-svg('../images/x-16.svg', $color-gray-60); } // Module: Left Pane .module-left-pane { display: inline-flex; - flex-direction: column; - width: 380px; + flex-direction: row; + // width: 380px; height: 100%; } @@ -1395,15 +1614,53 @@ flex-shrink: 1; overflow-y: auto; overflow-x: hidden; + scrollbar-width: none; + ::-webkit-scrollbar { + display: none; + width: 0 !important; +} } +// .bchat-search-input + .module-left-pane__list ::-webkit-scrollbar { +// .module-left-pane__list ::-webkit-scrollbar{ +// display: none !important; +// width: 0 !important; +// } + +.module-left-pane__list { + /* Hide scrollbar for Webkit-based browsers */ + -webkit-overflow-scrolling: touch; +} + +.module-left-pane__list::-webkit-scrollbar { + display: none !important; + width: 0 !important; +} + +// .module-left-pane__list { +// /* Hide scrollbar for Firefox */ +// scrollbar-width: none !important; +// } + +// .module-left-pane__list { +// /* Hide scrollbar for IE, Edge and legacy browsers */ +// -ms-overflow-style: none !important; +// } + .module-left-pane__virtual-list { outline: none; } .module-left-pane__empty_contact { - font-family: $bchat-font-poppin-medium; - font-size: 15px; - color: var(--color-disableText); - margin: 10px 0 0 0; -} + // font-family: $bchat-font-poppin-medium; + // font-size: 15px; + // color: var(--color-disableText); + // margin: 10px 0 0 0; + + color: #858598; + // font-family: Poppins; + font-size: 18px; + // font-style: normal; + font-weight: 300; + // line-height: normal; +} \ No newline at end of file diff --git a/stylesheets/_quote.scss b/stylesheets/_quote.scss index 231b840a..4424e47c 100644 --- a/stylesheets/_quote.scss +++ b/stylesheets/_quote.scss @@ -7,8 +7,8 @@ flex-direction: row; align-items: stretch; overflow: hidden; - border-left-width: 4px; - border-left-style: solid; + // border-left-width: 4px; + // border-left-style: solid; &__primary__type-label { border-color: var(--color-text); @@ -86,11 +86,27 @@ } .module-quote-container { - margin-bottom: 5px; - margin-top: 10px; - padding-left: 10px; + // margin-bottom: 5px; + // margin-top: 10px; + // padding-left: 10px; + + // background-color: #0A6F0A; + // margin: 10px; + // padding: 10px; + // border-radius: 10px; +} +.module-quote--outgoing{ + background-color: #0A6F0A; + margin: 10px; + padding: 10px; + border-radius: 10px; +} +.module-quote--incoming{ + background-color: var(--color-untrust-media-bg); + margin: 10px; + padding: 10px; + border-radius: 10px; } - .module-quote--no-click { cursor: auto; } @@ -241,8 +257,8 @@ } &-file__text { font-size: 14px; - line-height: 18px; - color: $color-gray-90; + // line-height: 18px; + // color: $color-gray-90; max-width: calc(100% - 26px); overflow-x: hidden; diff --git a/stylesheets/_theme_dark.scss b/stylesheets/_theme_dark.scss index 07c32fe3..cc8760c2 100644 --- a/stylesheets/_theme_dark.scss +++ b/stylesheets/_theme_dark.scss @@ -373,9 +373,9 @@ } } - .module-staged-placeholder-attachment__plus-icon { - @include color-svg('../images/plus-36.svg', $color-gray-60); - } + // .module-staged-placeholder-attachment__plus-icon { + // @include color-svg('../images/plus-36.svg', $color-gray-60); + // } // Module: Staged Link Preview diff --git a/stylesheets/_variables.scss b/stylesheets/_variables.scss index b270761e..3b623edb 100644 --- a/stylesheets/_variables.scss +++ b/stylesheets/_variables.scss @@ -5,6 +5,7 @@ $color-bchat-extra-dark-gray: #101010; $color-bchat-green: #3bd110; $color-bchat-green-dark: #32b10e; $color-bchat-green-gradient: linear-gradient(to right, rgb(120, 190, 32) 0%, rgb(0, 133, 34) 100%); +$color-icon-green: #108D32; $color-white: #ffffff; $color-gray-02: #f8f9f9; diff --git a/ts/bchat/apis/push_notification_api/PnServer.ts b/ts/bchat/apis/push_notification_api/PnServer.ts index e6cca115..0531b263 100644 --- a/ts/bchat/apis/push_notification_api/PnServer.ts +++ b/ts/bchat/apis/push_notification_api/PnServer.ts @@ -6,8 +6,8 @@ const pnServerPubkeyHex = '54e8ce6a688f6decd414350408cae373ab6070d91d4512e17454d export const hrefPnServerProd = 'notification.rpcnode.stream'; export const hrefPnServerDev = 'notification.rpcnode.stream'; -const pnServerUrl = `http://${hrefPnServerProd}`; +const pnServerUrl = `http://${hrefPnServerProd}`; export async function notifyPnServer(wrappedEnvelope: ArrayBuffer, sentTo: string) { const options: ServerRequestOptionsType = { method: 'post', @@ -16,7 +16,7 @@ export async function notifyPnServer(wrappedEnvelope: ArrayBuffer, sentTo: strin send_to: sentTo, }, }; - const endpoint = 'notify'; + const endpoint = 'notify'; const ret = await serverRequest(`${pnServerUrl}/${endpoint}`, options); if (!ret) { window?.log?.warn('Push notification server request returned false'); @@ -46,6 +46,7 @@ const serverRequest = async ( fetchOptions.headers = headers; fetchOptions.method = method; } catch (e) { + window?.log?.error('onionSend:::notifyPnServer - set up error:', e.code, e.message); return false; } diff --git a/ts/bchat/crypto/DecryptedAttachmentsManager.ts b/ts/bchat/crypto/DecryptedAttachmentsManager.ts index 1d2c7b08..7c358925 100644 --- a/ts/bchat/crypto/DecryptedAttachmentsManager.ts +++ b/ts/bchat/crypto/DecryptedAttachmentsManager.ts @@ -107,7 +107,6 @@ export const getDecryptedMediaUrl = async ( forceRetain: isAvatar, }); } - window.log.info(' file decrypted :', url, ' as ', obj); urlToDecryptingPromise.delete(url); resolve(obj); return; diff --git a/ts/bchat/crypto/MessageEncrypter.ts b/ts/bchat/crypto/MessageEncrypter.ts index 72ab40fa..2d55e6fb 100644 --- a/ts/bchat/crypto/MessageEncrypter.ts +++ b/ts/bchat/crypto/MessageEncrypter.ts @@ -7,9 +7,16 @@ import { getLatestClosedGroupEncryptionKeyPair } from '../../data/data'; import { UserUtils } from '../utils'; import { addMessagePadding } from './BufferPadding'; +import { getConversationController } from '../conversations'; +// import { ConversationTypeEnum } from '../../models/conversation'; +import { getOurPubKeyStrFromCache } from '../utils/User'; +// import { getOurNumber } from '../../state/selectors/user'; +// import { useSelector } from 'react-redux'; + type EncryptResult = { envelopeType: SignalService.Envelope.Type; cipherText: Uint8Array; + isBnsHolder?: boolean; }; /** @@ -56,8 +63,14 @@ export async function encrypt( }; } const cipherText = await MessageEncrypter.encryptUsingBchatProtocol(device, plainText); - - return { envelopeType: BCHAT_MESSAGE, cipherText }; + // const conversation= + const conversation = getConversationController().get(getOurPubKeyStrFromCache()); + + return { + envelopeType: BCHAT_MESSAGE, + cipherText, + isBnsHolder: conversation?.attributes?.isBnsHolder ? true : false , + }; } export async function encryptUsingBchatProtocol( @@ -81,14 +94,13 @@ export async function encryptUsingBchatProtocol( const userED25519SecretKeyBytes = fromHexToArray(userED25519KeyPairHex.privKey); // const walletAddress="bxdis3VF318i2QDjvqwoG9GyfP4sVjTvwZyf1JGLNFyTJ8fbtBgzW6ieyKnpbMw5bU9dggbAiznaPGay96WAmx1Z2B32B86PE"; - let walletAddress :any = localStorage.getItem("userAddress"); + let walletAddress: any = localStorage.getItem('userAddress'); let utf8Encode = new TextEncoder(); const beldexWalletAddress = utf8Encode.encode(walletAddress); const walletAddressConCatPlaintext = concatUInt8Array(beldexWalletAddress, plaintext); - // merge all arrays into one const verificationData = concatUInt8Array( walletAddressConCatPlaintext, @@ -101,7 +113,11 @@ export async function encryptUsingBchatProtocol( throw new Error("Couldn't sign message"); } - const plaintextWithMetadata = concatUInt8Array(walletAddressConCatPlaintext, userED25519PubKeyBytes, signature); + const plaintextWithMetadata = concatUInt8Array( + walletAddressConCatPlaintext, + userED25519PubKeyBytes, + signature + ); const ciphertext = sodium.crypto_box_seal(plaintextWithMetadata, recipientX25519PublicKey); if (!ciphertext) { diff --git a/ts/bchat/sending/MessageSender.ts b/ts/bchat/sending/MessageSender.ts index 72582586..12ad2707 100644 --- a/ts/bchat/sending/MessageSender.ts +++ b/ts/bchat/sending/MessageSender.ts @@ -84,7 +84,7 @@ export async function send( networkTimestamp, } = overwriteOutgoingTimestampWithNetworkTimestamp(message); - const { envelopeType, cipherText } = await MessageEncrypter.encrypt( + const { envelopeType, cipherText,isBnsHolder } = await MessageEncrypter.encrypt( recipient, overRiddenTimestampBuffer, encryption @@ -94,9 +94,10 @@ export async function send( envelopeType, recipient.key, networkTimestamp, - cipherText - ); + cipherText, + isBnsHolder + ); const data = wrapEnvelope(envelope); // make sure to update the local sent_at timestamp, because sometimes, we will get the just pushed message in the receiver side // before we return from the await below. @@ -162,6 +163,8 @@ export async function sendMessageToSnode( isSyncMessage, // I don't think that's of any use messageId, // I don't think that's of any use namespace, + // isBnsHolder:false + }; const usedNodes = _.slice(swarm, 0, DEFAULT_CONNECTIONS); @@ -230,7 +233,8 @@ async function buildEnvelope( type: SignalService.Envelope.Type, sskSource: string | undefined, timestamp: number, - content: Uint8Array + content: Uint8Array, + isBnsHolder?:boolean ): Promise { let source: string | undefined; @@ -243,6 +247,7 @@ async function buildEnvelope( source, timestamp, content, + isBnsHolder, }); } diff --git a/ts/bchat/utils/calling/CallManager.ts b/ts/bchat/utils/calling/CallManager.ts index 7f02568b..5473857f 100644 --- a/ts/bchat/utils/calling/CallManager.ts +++ b/ts/bchat/utils/calling/CallManager.ts @@ -24,10 +24,22 @@ import { getMessageQueue } from '../..'; import { MessageSender } from '../../sending'; import { DURATION } from '../../constants'; import { hasConversationOutgoingMessage } from '../../../data/data'; -import { getCallMediaPermissionsSettings } from '../../../components/settings/BchatSettings'; +import { + BchatSettingCategory, + getCallMediaPermissionsSettings, +} from '../../../components/settings/BchatSettings'; import { PnServer } from '../../apis/push_notification_api'; import { getNowWithNetworkOffset } from '../../apis/snode_api/SNodeAPI'; import { approveConvoAndSendResponse } from '../../../interactions/conversationInteractions'; +import { updateConfirmModal } from '../../../state/ducks/modalDialog'; +import { BchatButtonColor } from '../../../components/basic/BchatButton'; + + +import { + SectionType, + showLeftPaneSection, + showSettingsSection, +} from '../../../state/ducks/section'; // tslint:disable: function-name @@ -1114,13 +1126,35 @@ export async function handleMissedCall( ) { const incomingCallConversation = getConversationController().get(sender); + const displayname = incomingCallConversation?.getNickname() || incomingCallConversation?.getProfileName() || 'Unknown'; + const openPrivacySettings = () => { + window.inboxStore?.dispatch(showLeftPaneSection(SectionType.Settings)); + window.inboxStore?.dispatch(showSettingsSection(BchatSettingCategory.Privacy)); + }; switch (reason) { case 'permissions': + window.inboxStore?.dispatch( + updateConfirmModal({ + title: window.i18n('callMissedTitle'), + message: window.i18n('callMissedCausePermission', [displayname]), + okTheme: BchatButtonColor.Primary, + onClickOk: async () => { + openPrivacySettings(); + }, + onClickCancel: async () => { + window.inboxStore?.dispatch(updateConfirmModal(null)); + }, + iconShow: true, + bchatIcon: 'callMissedConfirm', + iconSize: 30, + }) + ); + ToastUtils.pushedMissedCallCauseOfPermission(displayname); break; case 'another-call-ongoing': diff --git a/ts/components/BchatInboxView.tsx b/ts/components/BchatInboxView.tsx index 0f5e1dfe..35acca7a 100644 --- a/ts/components/BchatInboxView.tsx +++ b/ts/components/BchatInboxView.tsx @@ -34,6 +34,9 @@ import { initialWalletSectionState } from '../state/ducks/walletSection'; import { initialDaemonState } from '../state/ducks/daemon'; import { initialWalletInnerSectionState } from '../state/ducks/walletInnerSection'; import { initialWalletConfigState } from '../state/ducks/walletConfig'; +// import { isLinkedBchatIDWithBnsForDeamon } from './conversation/BnsVerification'; +import { initialisVerifyBnsCalledState } from '../state/ducks/bnsConfig'; +import { ProfileInfo } from './BchatProfileInfo'; // Default to the locale from env. It will be overriden if moment // does not recognize it with what moment knows which is the closest. @@ -60,6 +63,7 @@ export class BchatInboxView extends React.Component { public componentDidMount() { this.setupLeftPane(); + // isLinkedBchatIDWithBnsForDeamon(); } public render() { @@ -79,6 +83,12 @@ export class BchatInboxView extends React.Component { {this.renderLeftPane()} +
+
+ +
+ +
@@ -109,14 +119,15 @@ export class BchatInboxView extends React.Component { defaultRooms: initialDefaultRoomState, search: initialSearchState, theme: initialThemeState, + isVerifyBnsCalled:initialisVerifyBnsCalledState, wallet: initialWalletState, - daemon : initialDaemonState, + daemon: initialDaemonState, onionPaths: initialOnionPathState, modals: initialModalState, userConfig: initialUserConfigState, - walletConfig:initialWalletConfigState, - walletFocused:initialWalletSectionState, - walletInnerFocused:initialWalletInnerSectionState, + walletConfig: initialWalletConfigState, + walletFocused: initialWalletSectionState, + walletInnerFocused: initialWalletInnerSectionState, timerOptions: { timerOptions, }, diff --git a/ts/components/BchatPasswordPrompt.tsx b/ts/components/BchatPasswordPrompt.tsx index 2150243e..32c00fc7 100644 --- a/ts/components/BchatPasswordPrompt.tsx +++ b/ts/components/BchatPasswordPrompt.tsx @@ -1,22 +1,39 @@ import React from 'react'; import classNames from 'classnames'; -import { BchatIcon } from './icon'; +import { BchatIcon, BchatIconButton } from './icon'; import { withTheme } from 'styled-components'; import autoBind from 'auto-bind'; import { BchatButton, BchatButtonColor, BchatButtonType } from './basic/BchatButton'; // import { Constants } from '../bchat'; -import { BchatSpinner } from './basic/BchatSpinner'; +import { Flex } from './basic/Flex'; +// import { ToastUtils } from '../bchat/utils'; interface State { error: string; errorCount: number; clearDataView: boolean; loading: boolean; + PasswordVisible: boolean; } export const MAX_LOGIN_TRIES = 3; - +type Props = { + loading: boolean; +}; +const BchatSpinner = (props: Props) => { + const { loading } = props; + + const imgsrc='images/bchat/Load_animation.gif'; + return loading ? ( +
+
+ +
+
+ + ) : null; +}; class BchatPasswordPromptInner extends React.PureComponent<{}, State> { private inputRef?: any; @@ -28,6 +45,7 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> { errorCount: 0, clearDataView: false, loading: false, + PasswordVisible: true, }; autoBind(this); @@ -41,75 +59,101 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> { public render() { const showResetElements = this.state.errorCount >= MAX_LOGIN_TRIES; - let checkError:any = this.state.error; + let checkError: any = this.state.error; // console.log("checkError:",checkError) - if(checkError){ + if (checkError) { // console.log("checkErrorr:try:",checkError) } - const wrapperClass = this.state.clearDataView - ? 'clear-data-wrapper' - : 'password-prompt-wrapper'; - const containerClass = this.state.clearDataView - ? 'clear-data-container' - : 'password-prompt-container'; + // const wrapperClass = this.state.clearDataView + // ? 'clear-data-wrapper' + // : 'password-prompt-wrapper'; + // const containerClass = this.state.clearDataView + // ? 'clear-data-container' + // : 'password-prompt-container'; const infoAreaClass = this.state.clearDataView ? 'warning-info-area' : 'password-info-area'; - const infoTitle = this.state.clearDataView - ? window.i18n('clearAllData') - : window.i18n('passwordViewTitle'); + // const infoTitle = this.state.clearDataView + // ? window.i18n('clearAllData') + // : window.i18n('passwordViewTitle'); const buttonGroup = this.state.clearDataView ? this.renderClearDataViewButtons() : this.renderPasswordViewButtons(); const featureElement = this.state.clearDataView ? (

{window.i18n('deleteAccountWarning')}

) : ( - { - this.inputRef = input; - }} - /> +
+ { + this.inputRef = input; + }} + /> + this.setState({ PasswordVisible: !this.state.PasswordVisible })} + /> +
); - const infoIcon = this.state.clearDataView ? ( - - ) : ( - + // const infoIcon = this.state.clearDataView ? ( + // + // ) : ( + // <> + // ); + const errorSection = !this.state.clearDataView && this.state.error && ( + <> +
+ {showResetElements ? ( +
{window.i18n('maxPasswordAttempts')}
+ ) : ( +
{this.state.error}
+ )} +
+ ); - const errorSection = !this.state.clearDataView && ( -
- {this.state.error && ( - <> - {showResetElements ? ( -
{window.i18n('maxPasswordAttempts')}
- ) : ( -
{this.state.error}
- )} - - )} + const clearDataView = this.state.clearDataView && ( +
+ +
+ +
+ +
+

{window.i18n('clearAllData')}

+

{window.i18n('deleteAccountWarning')}

+
+
); const spinner = this.state.loading ? : null; return (
-
-
-
- {infoIcon} - -

{infoTitle}

-
+
+
+ {!this.state.clearDataView ? ( + <> +
+ +
- {spinner || featureElement} - {errorSection} - {buttonGroup} +
+

{window.i18n('passwordViewTitle')}

+
+ {spinner || featureElement} + {errorSection} + + ) : ( + clearDataView + )} +
{buttonGroup}
@@ -148,10 +192,15 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> { } private initLogin() { + const passPhrase = String((this.inputRef as HTMLInputElement)?.value); + + // if (passPhrase.trim()) { + // ToastUtils.pushToastError('validatePassword', window.i18n('emptyPassword')); + // return; + // } this.setState({ loading: true, }); - const passPhrase = String((this.inputRef as HTMLInputElement).value); global.setTimeout(() => this.onLogin(passPhrase), 100); } @@ -173,19 +222,19 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> { <> )}
- +
); @@ -196,8 +245,8 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> {
{ this.setState({ clearDataView: false }); }} @@ -205,7 +254,7 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> { @@ -214,4 +263,89 @@ class BchatPasswordPromptInner extends React.PureComponent<{}, State> { } } +const LockImg = () => ( + + + + + + + + + + + + + + + + + + + + + +); export const BchatPasswordPrompt = withTheme(BchatPasswordPromptInner); diff --git a/ts/components/BchatProfileInfo.tsx b/ts/components/BchatProfileInfo.tsx new file mode 100644 index 00000000..553a0683 --- /dev/null +++ b/ts/components/BchatProfileInfo.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import { getSelectedConversation, isRightPanelShowing } from '../state/selectors/conversations'; +import { BchatRightPanelWithDetails } from './conversation/BchatRightPanel'; + +export const ProfileInfo = () => { + const isShowing: boolean = useSelector(isRightPanelShowing) || false; + const selectedConversation = useSelector(getSelectedConversation); + if (isShowing && selectedConversation) { + return ; + } + return <>; +}; diff --git a/ts/components/BchatScrollButton.tsx b/ts/components/BchatScrollButton.tsx index e02c006a..58a2b32c 100644 --- a/ts/components/BchatScrollButton.tsx +++ b/ts/components/BchatScrollButton.tsx @@ -3,37 +3,43 @@ import { useSelector } from 'react-redux'; import styled from 'styled-components'; import { getShowScrollButton } from '../state/selectors/conversations'; -import { BchatIconButton } from './icon'; +import { BchatIcon } from './icon'; const BchatScrollButtonDiv = styled.div` - position: fixed; + position: absolute; z-index: 2; right: 26px; animation: fadein var(--default-duration); - bottom: 72px; + bottom: 88px; `; -export const BchatScrollButton = (props: { onClickScrollBottom: () => void, unreadCount: number | undefined }) => { +export const BchatScrollButton = (props: { + onClickScrollBottom: () => void; + unreadCount: number | undefined; +}) => { const show = useSelector(getShowScrollButton); return ( -
- -
- {props.unreadCount} - -
+
+ {show && (<> +
+ + +
+
{props.unreadCount}
+ + )}
- ); }; diff --git a/ts/components/BchatSearchInput.tsx b/ts/components/BchatSearchInput.tsx index fa06f70a..25c5a30a 100644 --- a/ts/components/BchatSearchInput.tsx +++ b/ts/components/BchatSearchInput.tsx @@ -4,7 +4,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { clearSearch, search, updateSearchTerm } from '../state/ducks/search'; import { getConversationsCount } from '../state/selectors/conversations'; import { cleanSearchTerm } from '../util/cleanSearchTerm'; -import { BchatIconButton } from './icon'; +import { BchatIcon, BchatIconButton } from './icon'; const doTheSearch = (dispatch: Dispatch, cleanedTerm: string) => { @@ -47,7 +47,8 @@ export const BchatSearchInput = () => { return (
- + {/* */} +
{ /> {!!currentSearchTerm.length && ( { setCurrentSearchTerm(''); diff --git a/ts/components/BchatToastContainer.tsx b/ts/components/BchatToastContainer.tsx index 34b5ab6a..69ad4f27 100644 --- a/ts/components/BchatToastContainer.tsx +++ b/ts/components/BchatToastContainer.tsx @@ -1,6 +1,8 @@ import React from 'react'; import { Slide, ToastContainer, ToastContainerProps } from 'react-toastify'; import styled from 'styled-components'; +import { BchatIconButton } from './icon'; +import { Flex } from './basic/Flex'; const BchatToastContainerPrivate = () => { return ( @@ -20,13 +22,18 @@ const BchatToastContainerPrivate = () => { /> ); }; - +const CloseButton = ({ closeToast }:{closeToast:any}) => ( + + + +); const WrappedToastContainer = ({ className, ...rest }: ToastContainerProps & { className?: string }) => (
- + +
); diff --git a/ts/components/BchatWrapperModal.tsx b/ts/components/BchatWrapperModal.tsx index b20d1a43..8c474840 100644 --- a/ts/components/BchatWrapperModal.tsx +++ b/ts/components/BchatWrapperModal.tsx @@ -5,6 +5,11 @@ import { BchatIconButton } from './icon'; // tslint:disable-next-line: no-submodule-imports import useKey from 'react-use/lib/useKey'; +import styled from 'styled-components'; +import { BchatSpinner } from './basic/BchatSpinner'; +import { BchatButton, BchatButtonColor, BchatButtonType } from './basic/BchatButton'; +import { useSelector } from 'react-redux'; +import { getTheme } from '../state/selectors/theme'; export type BchatWrapperModalType = { title?: string; @@ -19,9 +24,32 @@ export type BchatWrapperModalType = { children: any; headerReverse?: boolean; additionalClassName?: string; + isloading?: boolean; + buttons?: any; + okButton?: any; + cancelButton?: any; + iconShow?: boolean; + customIcon?: any; }; +interface LoaderProps { + darkMode: boolean; +} +export const Loader = styled.div` + position: absolute; + top: 0; + left: 0; + background-color: ${props => (props.darkMode ? '#0000009e' : '#ffffff9e')}; + display: flex; + justify-content: center; + width: 100%; + height: 100%; + align-items: center; + z-index: 101; +`; export const BchatWrapperModal = (props: BchatWrapperModalType) => { + const darkMode = useSelector(getTheme) === 'dark'; + // const zoomLevel = window.getSettingValue('zoom-factor-setting'); const { title, showHeader = true, @@ -29,6 +57,11 @@ export const BchatWrapperModal = (props: BchatWrapperModalType) => { headerIconButtons, headerReverse, additionalClassName, + isloading, + okButton, + cancelButton, + iconShow = false, + customIcon, } = props; useKey( @@ -48,51 +81,97 @@ export const BchatWrapperModal = (props: BchatWrapperModalType) => { undefined, [props.onClose] ); - - const modalRef = useRef(null); - + const modalRef = useRef(null); return (
- {showHeader ? ( -
-
- {showExitIcon ? ( - - ) : null} -
-
{title}
-
- {headerIconButtons - ? headerIconButtons.map((iconItem: any) => { - return ( +
+ {iconShow &&
{customIcon}
} +
+ {showHeader ? ( +
+
+
{title}
+
+ {headerIconButtons + ? headerIconButtons.map((iconItem: any) => { + return ( + + ); + }) + : null} +
+
+
+ {showExitIcon && ( +
- ); - }) - : null} -
-
- ) : null} +
+ )} +
+
+ ) : null} -
-
- {props.children} +
+
100 ? '311px' : '' }} + > + {props.children} +
+
+
+ {cancelButton?.status && ( + + )} + +
+ {isloading && ( +
+ + + +
+ )}
diff --git a/ts/components/MainViewController.tsx b/ts/components/MainViewController.tsx index 74ab7210..3ffe8a81 100644 --- a/ts/components/MainViewController.tsx +++ b/ts/components/MainViewController.tsx @@ -1,19 +1,31 @@ -import React from 'react'; +import React, { useState } from 'react'; -import { ToastUtils } from '../bchat/utils'; +import { ToastUtils } from '../bchat/utils'; import { createClosedGroup as createClosedGroupV2 } from '../receiver/closedGroups'; import { VALIDATION } from '../bchat/constants'; +import SmileSymbolIcon from './icon/SmileSymbolIcon'; +// import { BchatInput } from './basic/BchatInput'; +import { BchatButton, BchatButtonColor, BchatButtonType } from './basic/BchatButton'; +import { SpacerLG } from './basic/Text'; +import { BchatIdEditable } from './basic/BchatIdEditable'; +import { PubKey } from '../bchat/types/PubKey'; +import { getConversationController } from '../bchat/conversations'; +import { ConversationTypeEnum } from '../models/conversation'; +import { openConversationWithMessages } from '../state/ducks/conversations'; +import { SNodeAPI } from '../bchat/apis/snode_api'; +import styled from 'styled-components'; export class MessageView extends React.Component { public render() { - return (
-
-

Much empty. Such wow.

Get some friends to BChat!

+
+ {/*

+ Much empty. Such wow.

Get some friends to BChat! +

*/}
@@ -22,6 +34,95 @@ export class MessageView extends React.Component { } } +export const AddNewContactInEmptyConvo = () => { + const [bchatId, setBchatId] = useState(''); + async function handleMessageButtonClick() { + const pubkeyorOnsTrimmed = bchatId.trim(); + if ( + (!pubkeyorOnsTrimmed || pubkeyorOnsTrimmed.length !== 66) && + !pubkeyorOnsTrimmed.toLowerCase().endsWith('.bdx') + ) { + ToastUtils.pushToastError('invalidPubKey', window.i18n('invalidNumberError')); // or Bns name + return; + } + if (!PubKey.validateWithError(pubkeyorOnsTrimmed)) { + // this is a pubkey + await getConversationController().getOrCreateAndWait( + pubkeyorOnsTrimmed, + ConversationTypeEnum.PRIVATE + ); + + await openConversationWithMessages({ conversationKey: pubkeyorOnsTrimmed, messageId: null }); + // closeOverlay(); + } else { + // setLoading(true); + try { + const resolvedBchatID = await SNodeAPI.getBchatIDForOnsName(pubkeyorOnsTrimmed); + if (PubKey.validateWithError(resolvedBchatID)) { + throw new Error('Got a resolved BNS but the returned entry is not a valid bchatID'); + } + // this is a pubkey + await getConversationController().getOrCreateAndWait( + resolvedBchatID, + ConversationTypeEnum.PRIVATE + ); + await openConversationWithMessages({ + conversationKey: resolvedBchatID, + messageId: null, + bns: pubkeyorOnsTrimmed, + }); + } catch (e) { + window?.log?.warn('failed to resolve bns name', pubkeyorOnsTrimmed, e); + + ToastUtils.pushToastError('invalidPubKey', window.i18n('failedResolveOns')); + } finally { + } + } + } + return ( +
+
+
+
+
+ +
+ {window.i18n('startConversation')} +
+ + {/* */} +
+ +
+ +
+ handleMessageButtonClick()} + /> +
+
+
+
+
+ ); +}; +const StartConvoWrapper = styled.div` +width: 24vw; +max-width: 470px; +margin-left: 43px; + +`; // ///////////////////////////////////// // //////////// Management ///////////// // ///////////////////////////////////// diff --git a/ts/components/MemberListItem.tsx b/ts/components/MemberListItem.tsx index a171564c..e46579ed 100644 --- a/ts/components/MemberListItem.tsx +++ b/ts/components/MemberListItem.tsx @@ -1,21 +1,31 @@ import React from 'react'; import classNames from 'classnames'; -import { Avatar, AvatarSize, CrownIcon } from './avatar/Avatar'; -import { Constants } from '../bchat'; -import { BchatIcon } from './icon'; -import { useConversationUsernameOrShorten } from '../hooks/useParamSelector'; +import { Avatar, AvatarSize, BNSWrapper } from './avatar/Avatar'; +// import { Constants } from '../bchat'; +import { + useConversationBnsHolder, + useConversationUsernameOrShorten, +} from '../hooks/useParamSelector'; import styled from 'styled-components'; +import CheckBoxTickIcon from './icon/CheckBoxTickIcon'; +import { BchatIcon } from './icon'; const AvatarContainer = styled.div` position: relative; `; -const AvatarItem = (props: { memberPubkey: string; isAdmin: boolean }) => { - const { memberPubkey, isAdmin } = props; +const AvatarItem = (props: { memberPubkey: string; isBnsHolder: any }) => { + const { memberPubkey, isBnsHolder } = props; return ( - - {isAdmin && } + + + ); }; @@ -23,6 +33,8 @@ const AvatarItem = (props: { memberPubkey: string; isAdmin: boolean }) => { export const MemberListItem = (props: { pubkey: string; isSelected: boolean; + removeMem?:boolean; + onlyList?: boolean; // this bool is used to make a zombie appear with less opacity than a normal member isZombie?: boolean; disableBg?: boolean; @@ -40,39 +52,58 @@ export const MemberListItem = (props: { onUnselect, disableBg, dataTestId, + onlyList, + removeMem } = props; - const memberName = useConversationUsernameOrShorten(pubkey); + const memberName:any = useConversationUsernameOrShorten(pubkey); + const isBnsHolder = useConversationBnsHolder(pubkey); + + const validateMemberName = (memberName: string) => { + if (memberName?.length == 66) { + let staringTwoString = memberName.substring(0, 2); + let lastString = memberName.substring(58, 66) + return `(${staringTwoString}...${lastString})`; + } + return memberName; + } + + const selectionValidation=removeMem? !onlyList && !isSelected :!onlyList &&isSelected return ( // tslint:disable-next-line: use-simple-attributes
{ - isSelected ? onUnselect?.(pubkey) : onSelect?.(pubkey); + !onlyList && (isSelected ? onUnselect?.(pubkey) : onSelect?.(pubkey)); }} - style={ - !disableBg - ? { - } - : {} - } + style={!disableBg ? {} : {}} role="button" data-testid={dataTestId} > -
+
- + - {memberName} + + {validateMemberName(memberName)} + + {/* {isAdmin && } */}
- - {isSelected&& } - + {!onlyList && !isAdmin && ( + + {selectionValidation ? ( + + ) : ( + + )} + + )} + {isAdmin && Admin}
); }; diff --git a/ts/components/avatar/Avatar.tsx b/ts/components/avatar/Avatar.tsx index 33c37ba1..2075af49 100644 --- a/ts/components/avatar/Avatar.tsx +++ b/ts/components/avatar/Avatar.tsx @@ -11,12 +11,13 @@ import { AvatarPlaceHolder } from './AvatarPlaceHolder/AvatarPlaceHolder'; import { ClosedGroupAvatar } from './AvatarPlaceHolder/ClosedGroupAvatar'; import { useDisableDrag } from '../../hooks/useDisableDrag'; import styled from 'styled-components'; +// import { BchatIcon } from '../icon/BchatIcon'; export enum AvatarSize { XS = 28, S = 36, M = 48, - L = 64, + L = 60, XL = 80, HUGE = 300, } @@ -40,32 +41,59 @@ const Identicon = (props: Props) => { }; const CrownWrapper = styled.div` + // height: 15px; + // width: 15px; + height: 18px; + width: 18px; position: absolute; - display: flex; - bottom: 0%; - right: 12%; - top: 24px; - height: 20px; - width: 20px; - transform: translate(25%, 25%); - color: #f7c347; - background: var(--color-inbox-background); - border-radius: 50%; - filter: drop-shadow(0px 0px 4px rgba(0, 0, 0, 0.3)); - - align-items: center; - justify-content: center; + top: -12px; + left: 22px; `; export const CrownIcon = () => { return ( - - + ); }; +export const BNSWrapper = (props: any) => { + const { position, isBnsHolder, size } = props; + return ( + <> + {isBnsHolder ? ( +
+ {props.children} + + + + + +
+ ) : ( + props.children + )} + + ); +}; const NoImage = ( props: Pick & { isClosedGroup: boolean; @@ -153,6 +181,7 @@ const AvatarInner = (props: Props) => { > {hasImage ? ( // tslint:disable-next-line: use-simple-attributes + => { // key is the pubkey, value is the hash const cachedHashes = new Map(); -const avatarPlaceholderColors = ['#FF5722', '#2979FB', '#FF6663', '#009688',"#FE64A3",'#00B1FF','#673AB7','#E91E63','#9C27B0']; +const avatarPlaceholderColors = [ + { + bgColor: '#4AAC67', + bodyColor: '#2C7040', + }, + { + bgColor: '#A9D1FD', + bodyColor: '#3C7ABD', + }, + { + bgColor: '#FFE5A6', + bodyColor: '#BA8555', + }, + { + bgColor: '#CE413B', + bodyColor: '#802A2A', + }, + + // '#FE64A3', + // '#00B1FF', + // '#673AB7', + // '#E91E63', + // '#9C27B0', +]; + const avatarBorderColor = '#00000059'; function useHashBasedOnPubkey(pubkey: string) { @@ -82,17 +106,17 @@ export const AvatarPlaceHolder = (props: Props) => { return ( - + ); @@ -104,36 +128,68 @@ export const AvatarPlaceHolder = (props: Props) => { const bgColorIndex = hash % avatarPlaceholderColors.length; - const bgColor = avatarPlaceholderColors[bgColorIndex]; -// console.log(bgColor); + const avatarColors = avatarPlaceholderColors[bgColorIndex]; + console.log(avatarColors.bgColor, fontSize); return ( - - - + + + - - {initials} - - - + + + + + + + + + +
+ // + // + // + // + // {initials} + // + // + // ); }; diff --git a/ts/components/basic/BchatButton.tsx b/ts/components/basic/BchatButton.tsx index 7f7059f2..c0dc3810 100644 --- a/ts/components/basic/BchatButton.tsx +++ b/ts/components/basic/BchatButton.tsx @@ -1,5 +1,6 @@ import React, { ReactNode } from 'react'; import classNames from 'classnames'; +import { BchatIcon, BchatIconSize, BchatIconType } from '../icon'; export enum BchatButtonType { Brand = 'brand', @@ -9,6 +10,7 @@ export enum BchatButtonType { Square = 'square', SquareOutline = 'square-outline', Simple = 'simple', + Medium='medium' } export enum BchatButtonColor { @@ -16,11 +18,13 @@ export enum BchatButtonColor { White = 'white', Primary = 'primary', Success = 'success', + Secondary = 'secondary', Danger = 'danger', Warning = 'warning', None = '', - Red="red", - Disable="disable", + Red = 'red', + Disable = 'disable', + Enable = 'enable' } type Props = { @@ -32,12 +36,27 @@ type Props = { children?: ReactNode; dataTestId?: string; icon?: boolean; - style?:object; - + style?: object; + iconType?: BchatIconType; + iconSize?: BchatIconSize | number; + fillRule?: 'iherit' | 'evenodd'; + clipRule?: 'iherit' | 'evenodd'; }; export const BchatButton = (props: Props) => { - const { buttonType, dataTestId, buttonColor,style={}, text, disabled, onClick } = props; + const { + buttonType, + dataTestId, + buttonColor, + style = {}, + text, + disabled, + onClick, + iconSize, + iconType, + fillRule, + clipRule + } = props; const clickHandler = (e: any) => { if (onClick) { @@ -50,31 +69,34 @@ export const BchatButton = (props: Props) => { const onClickFn = disabled ? () => null : clickHandler; buttonTypes.push(buttonType); - if (buttonType.includes('-outline')) { - buttonTypes.push(buttonType.replace('-outline', '')); - } + // if (buttonType.includes('-outline')) { + // buttonTypes.push(buttonType.replace('-outline', '')); + // } return ( - <> - {props.icon ?
- {props.children || text} -
- :
- {props.children || text} -
} - - + <> + {props.icon ? ( +
+ {props.children || text} +
+ ) : ( +
+ {iconType && iconSize && } + {props.children || text} +
+ )} + ); }; diff --git a/ts/components/basic/BchatDropdown.tsx b/ts/components/basic/BchatDropdown.tsx index d8ec04a9..cb961821 100644 --- a/ts/components/basic/BchatDropdown.tsx +++ b/ts/components/basic/BchatDropdown.tsx @@ -2,11 +2,13 @@ import React, { useState } from 'react'; import { BchatIcon, BchatIconType } from '../icon'; import { BchatDropdownItem, BchatDropDownItemType } from './BchatDropdownItem'; +import { MenuWrapper } from '../menu/Menu'; // THIS IS DROPDOWN ACCORDIAN STYLE OPTIONS SELECTOR ELEMENT, NOT A CONTEXTMENU type Props = { label: string; + labelIcon?: BchatIconType; onClick?: any; expanded?: boolean; options: Array<{ @@ -20,7 +22,7 @@ type Props = { }; export const BchatDropdown = (props: Props) => { - const { label, options } = props; + const { label, options, labelIcon } = props; const [expanded, setExpanded] = useState(!!props.expanded); const chevronOrientation = expanded ? 180 : 0; @@ -33,7 +35,16 @@ export const BchatDropdown = (props: Props) => { }} role="button" > - {label} +
+ {labelIcon ? ( + <> + + {label} + + ) : ( + { label } + )} +
diff --git a/ts/components/basic/BchatInput.tsx b/ts/components/basic/BchatInput.tsx index 2970d289..b9196ffd 100644 --- a/ts/components/basic/BchatInput.tsx +++ b/ts/components/basic/BchatInput.tsx @@ -47,7 +47,7 @@ const ErrorItem = (props: { error: string | undefined }) => { const ShowHideButton = (props: { toggleForceShow: () => void,forceShow:boolean }) => { - return ; + return ; }; export const BchatInput = (props: Props) => { @@ -79,9 +79,10 @@ export const BchatInput = (props: Props) => { return (
- {error ? ( + {error && ( - ) : ( + ) } + { label &&( )} { } }} /> - + {enableShowHide && ( { diff --git a/ts/components/basic/BchatSpinner.tsx b/ts/components/basic/BchatSpinner.tsx index 242eb7f9..0aabcf5c 100644 --- a/ts/components/basic/BchatSpinner.tsx +++ b/ts/components/basic/BchatSpinner.tsx @@ -1,4 +1,6 @@ import React from 'react'; +import { useSelector } from 'react-redux'; +import { getTheme } from '../../state/selectors/theme'; type Props = { loading: boolean; @@ -6,11 +8,12 @@ type Props = { export const BchatSpinner = (props: Props) => { const { loading } = props; - + const darkMode = useSelector(getTheme) === 'dark'; + const imgsrc=darkMode?'images/bchat/Load_animation.gif':'images/bchat/Loading__white_theme.gif'; return loading ? (
- +
diff --git a/ts/components/basic/BchatToast.tsx b/ts/components/basic/BchatToast.tsx index 9c02c5da..33c19382 100644 --- a/ts/components/basic/BchatToast.tsx +++ b/ts/components/basic/BchatToast.tsx @@ -23,11 +23,10 @@ type Props = { }; const TitleDiv = styled.div` - font-size: 12px; - line-height: var(--font-size-md); - font-family: poppin-medium - color: var(--color-text); - text-overflow: ellipsis; + + font-size: 18px; + font-weight: 400; + `; const DescriptionDiv = styled.div` @@ -52,30 +51,30 @@ export const BchatToast = (props: Props) => { // Set a custom icon or allow the theme to define the icon let toastIcon = icon || undefined; - let toastColor :any; + let toastColor: any; if (!toastIcon) { switch (type) { case BchatToastType.Info: - toastIcon = 'info'; - toastColor = '#2879FB'; + toastIcon = 'infoCircle'; + toastColor = '#2F8FFF'; break; case BchatToastType.Success: toastIcon = 'check'; - toastColor = '#17a61b' + toastColor = '#00A638'; break; case BchatToastType.Error: toastIcon = 'error'; - toastColor = '#FF3C3C' + toastColor = '#FF3C3C'; break; case BchatToastType.Warning: toastIcon = 'warning'; - toastColor = '#ff3c3c' + toastColor = '#F0AF13'; break; default: toastIcon = 'info'; } } - + return ( // tslint:disable-next-line: use-simple-attributes { onClick={props?.onToastClick || noop} data-testid="bchat-toast" > - - + + React.ReactNode; +} + +const ChangingProgressProvider: React.FC = ({ + values, + interval = 1000, + children, +}) => { + const [valuesIndex, setValuesIndex] = useState(0); + + useEffect(() => { + const id = setInterval(() => { + setValuesIndex((prevIndex) => (prevIndex + 1) % values.length); + }, interval); + + return () => clearInterval(id); + }, [values, interval]); + + return <>{children(values[valuesIndex])}; +}; + +export default ChangingProgressProvider; diff --git a/ts/components/basic/PillContainer.tsx b/ts/components/basic/PillContainer.tsx index 48e7f908..95bb0096 100644 --- a/ts/components/basic/PillContainer.tsx +++ b/ts/components/basic/PillContainer.tsx @@ -12,35 +12,33 @@ type PillContainerProps = { const StyledPillContainerHoverable = styled.div` background: none; - position: relative; - flex-direction: 'row'; + flex-direction: 'column'; flex-shrink: 0; - min-width: 50%; max-width: 100%; white-space: nowrap; text-overflow: ellipsis; align-items: center; padding: ${props => props.padding || ''}; - margin: ${props => props.margin || ''}; `; const StyledPillInner = styled.div` - - background:var(--color-inboxBgColor); display: flex; - flex-direction: 'row'; + flex-direction: column; flex-grow: 1; flex-shrink: 0; - + font-family: 'OpenSans'; + font-weight: 400; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; - align-items: center; + align-items: center; padding: ${props => props.padding || ''}; margin: ${props => props.margin || ''}; - border-radius: 7px; + border-radius: 16px; + padding: 20px 0; + background-color: var(--color-conversation-item-selected); cursor: pointer; // border: 1px solid var(--color-pill-divider); transition: var(--default-duration); diff --git a/ts/components/calling/CallButtons.tsx b/ts/components/calling/CallButtons.tsx index 057dd674..53a71c96 100644 --- a/ts/components/calling/CallButtons.tsx +++ b/ts/components/calling/CallButtons.tsx @@ -1,4 +1,4 @@ -import { BchatIconButton } from '../icon'; +import { BchatIcon, BchatIconButton } from '../icon'; import { animation, contextMenu, Item, Menu } from 'react-contexify'; import { InputItem } from '../../bchat/utils/calling/CallManager'; import { setFullScreenCall } from '../../state/ducks/call'; @@ -27,6 +27,7 @@ export const VideoInputButton = ({ { void handleCameraToggle(currentConnectedCameras, localStreamVideoIsMuted); }} @@ -55,6 +56,7 @@ export const AudioInputButton = ({ { void handleMicrophoneToggle(currentConnectedAudioInputs, isAudioMuted); }} @@ -179,7 +181,6 @@ const ShowInFullScreenButton = ({ isFullScreen }: { isFullScreen: boolean }) => const dispatch = useDispatch(); const showInFullScreen = () => { - if (isFullScreen) { dispatch(setFullScreenCall(false)); } else { @@ -212,16 +213,25 @@ export const HangUpButton = () => { }; return ( - +
+ > + +
); }; @@ -318,25 +328,26 @@ const handleSpeakerToggle = async ( } }; -const StyledCallWindowControls = styled.div<{ makeVisible: boolean,isFullScreen:boolean }>` - position: absolute; +const StyledCallWindowControls = styled.div<{ makeVisible: boolean; isFullScreen: boolean }>` + // position: absolute; - bottom: 0px; - width: ${props => (props.isFullScreen ? "100vw" :'100%')}; + // bottom: 0px; + width: ${props => (props.isFullScreen ? '100vw' : '100%')}; height: 100%; - align-items: flex-end; + // align-items: flex-end; padding: 10px; - border-radius: 10px; + // border-radius: 10px; margin-left: auto; margin-right: auto; - left: 0; - right: 0; - transition: all 0.25s ease-in-out; + // left: 0; + // right: 0; + // transition: all 0.25s ease-in-out; display: flex; justify-content: center; - opacity: ${props => (props.makeVisible ? 1 : 0)}; + align-items:center; + // opacity: ${props => (props.makeVisible ? 1 : 0)}; `; export const CallWindowControls = ({ @@ -364,7 +375,7 @@ export const CallWindowControls = ({ setMakeVisible(true); }; const setMakeVisibleFalse = () => { - setMakeVisible(false); + setMakeVisible(true); }; useEffect(() => { @@ -377,12 +388,14 @@ export const CallWindowControls = ({ document.removeEventListener('mouseleave', setMakeVisibleFalse); }; }, [isFullScreen]); - return ( - {!remoteStreamVideoIsMuted && } - + - + ); diff --git a/ts/components/calling/CallInFullScreenContainer.tsx b/ts/components/calling/CallInFullScreenContainer.tsx index 03e5ed60..b2136e13 100644 --- a/ts/components/calling/CallInFullScreenContainer.tsx +++ b/ts/components/calling/CallInFullScreenContainer.tsx @@ -14,7 +14,7 @@ import { StyledVideoElement } from './DraggableCallContainer'; const CallInFullScreenVisible = styled.div` position: absolute; - z-index: 9; + z-index: 13; top: 0; bottom: 0; right: 0; @@ -33,6 +33,7 @@ const StyledLocalVideoElement = styled.video<{ isVideoMuted: boolean }>` bottom: 0; right: 0; position: absolute; + transform: rotateY(180deg); opacity: ${props => (props.isVideoMuted ? 0 : 1)}; `; diff --git a/ts/components/calling/DraggableCallContainer.tsx b/ts/components/calling/DraggableCallContainer.tsx index c95d739e..31793496 100644 --- a/ts/components/calling/DraggableCallContainer.tsx +++ b/ts/components/calling/DraggableCallContainer.tsx @@ -23,11 +23,17 @@ export const DraggableCallWindow = styled.div` border: var(--bchat-border); `; -export const StyledVideoElement = styled.video<{ isVideoMuted: boolean }>` - padding: 0 1rem; +export const StyledVideoElement = styled.video<{ isVideoMuted: boolean; width?: string }>` + // padding: 0 1rem; height: 100%; - width: 100%; + width: ${props => (props.width ? props.width : '100%')}; opacity: ${props => (props.isVideoMuted ? 0 : 1)}; + display: ${props => (props.isVideoMuted ? 'none' : 'block')}; + /*Mirror code starts*/ + transform: rotateY(180deg); + -webkit-transform: rotateY(180deg); /* Safari and Chrome */ + -moz-transform: rotateY(180deg); /* Firefox */ + /*Mirror code ends*/ `; const StyledDraggableVideoElement = styled(StyledVideoElement)` diff --git a/ts/components/calling/InConversationCallContainer.tsx b/ts/components/calling/InConversationCallContainer.tsx index 50e49ef6..0281d657 100644 --- a/ts/components/calling/InConversationCallContainer.tsx +++ b/ts/components/calling/InConversationCallContainer.tsx @@ -12,7 +12,7 @@ import { getHasOngoingCallWithPubkey, } from '../../state/selectors/call'; import { StyledVideoElement } from './DraggableCallContainer'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; +import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; import { useVideoCallEventsListener } from '../../hooks/useVideoEventListener'; import { useModuloWithTripleDots } from '../../hooks/useModuloWithTripleDots'; @@ -22,60 +22,77 @@ import { DEVICE_DISABLED_DEVICE_ID } from '../../bchat/utils/calling/CallManager import useInterval from 'react-use/lib/useInterval'; import moment from 'moment'; import { BchatSpinner } from '../basic/BchatSpinner'; +import { getSelectedConversation } from '../../state/selectors/conversations'; +import { getConversationController } from '../../bchat/conversations'; +import { Flex } from '../basic/Flex'; +import { SpacerLG, SpacerMD, SpacerXS } from '../basic/Text'; const VideoContainer = styled.div` height: 100%; - width: 50%; + width: 100%; z-index: 0; - padding-top: 30px; // leave some space at the top for the connecting/duration of the current call + display:flex; + justify-content:center; + // padding-top: 30px; // leave some space at the top for the connecting/duration of the current call `; const InConvoCallWindow = styled.div` padding: 1rem; - display: flex; + // display: flex; - background-color: var(--color-inbox-background); + // background-color: var(--color-inbox-background); - flex-shrink: 1; - min-height: 80px; - align-items: center; - flex-grow: 1; + // flex-shrink: 1; + // min-height: 80px; + // align-items: center; + // flex-grow: 1; + + border-radius: 32px; + background-color: var(--color-hop-bg); + height: 100%; + // margin-top: 20px; `; const RelativeCallWindow = styled.div` - position: relative; - height: 100%; - display: flex; - flex-grow: 1; + // position: relative; + // height: 100%; + // display: flex; + // flex-grow: 1; `; const CenteredAvatarInConversation = styled.div` - top: -50%; - transform: translateY(-50%); - position: relative; - bottom: 0; - left: 0; - right: 50%; + // top: -50%; + // transform: translateY(-50%); + // position: relative; + // bottom: 0; + // left: 0; + // right: 50%; display: flex; justify-content: center; align-items: center; + width: 157px; + flex-direction: column; +`; +const UserNameTxt = styled.div` + font-size: 20px; `; const StyledCenteredLabel = styled.div` - position: absolute; - left: 50%; - transform: translateX(-50%); - height: min-content; - white-space: nowrap; + // position: absolute; + // left: 50%; + // transform: translateX(-50%); + // height: min-content; + // white-space: nowrap; color: var(--color-text); - text-shadow: 0px 0px 8px white; - z-index: 5; + // text-shadow: 0px 0px 8px white; + // z-index: 5; + font-size: 22px; + text-align: center; `; const RingingLabel = () => { const ongoingCallWithFocusedIsRinging = useSelector(getCallWithFocusedConvoIsOffering); - const modulatedStr = useModuloWithTripleDots(window.i18n('ringing'), 3, 1000); if (!ongoingCallWithFocusedIsRinging) { return null; @@ -87,7 +104,6 @@ const ConnectingLabel = () => { const ongoingCallWithFocusedIsConnecting = useSelector(getCallWithFocusedConvosIsConnecting); const modulatedStr = useModuloWithTripleDots(window.i18n('establishingConnection'), 3, 1000); - if (!ongoingCallWithFocusedIsConnecting) { return null; } @@ -142,10 +158,11 @@ export const InConversationCallContainer = () => { const ongoingCallPubkey = useSelector(getHasOngoingCallWithPubkey); const ongoingCallWithFocused = useSelector(getHasOngoingCallWithFocusedConvo); + const selectedConversation = useSelector(getSelectedConversation); const videoRefRemote = useRef(null); const videoRefLocal = useRef(null); - const ourPubkey = UserUtils.getOurPubKeyStrFromCache(); + const conversation = getConversationController().get(ourPubkey); const { currentConnectedAudioInputs, @@ -188,49 +205,128 @@ export const InConversationCallContainer = () => { return null; } + + const validateMemberName = (memberName: any) => { + if (memberName == selectedConversation?.id) { + let staringTwoString = memberName.substring(0, 2); + let lastString = memberName.substring(58, 66); + return `${staringTwoString}...${lastString}`; + } + return memberName; + }; + return ( - - - - - - - - {remoteStreamVideoIsMuted && ( - - - +
+ + + + + + {remoteStreamVideoIsMuted && ( + + + + + + {validateMemberName(selectedConversation?.profileName || selectedConversation?.id)} + + )} + + + {/* {localStreamVideoIsMuted && ( + + + + + + {conversation.attributes.profileName} + + )} */} + + + + {localStreamVideoIsMuted && ( + + + + + + {validateMemberName(conversation.attributes.profileName)} + + )} + + + + {!localStreamVideoIsMuted && !remoteStreamVideoIsMuted && ( +
+ + + +
)} - - - + + + + + - {localStreamVideoIsMuted && ( - - - - )} - - - -
-
+ + +
+ {!localStreamVideoIsMuted && !remoteStreamVideoIsMuted && ( + + + + )} +
+
); }; diff --git a/ts/components/calling/IncomingCallDialog.tsx b/ts/components/calling/IncomingCallDialog.tsx index 93d56ce0..2663a436 100644 --- a/ts/components/calling/IncomingCallDialog.tsx +++ b/ts/components/calling/IncomingCallDialog.tsx @@ -2,15 +2,17 @@ import React, { useEffect } from 'react'; import { useSelector } from 'react-redux'; import styled from 'styled-components'; -import { useConversationUsername } from '../../hooks/useParamSelector'; +import { useConversationBnsHolder, useConversationUsername } from '../../hooks/useParamSelector'; import { ed25519Str } from '../../bchat/onions/onionPath'; import { CallManager } from '../../bchat/utils'; import { callTimeoutMs } from '../../bchat/utils/calling/CallManager'; import { getHasIncomingCall, getHasIncomingCallFrom } from '../../state/selectors/call'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; -import { BchatWrapperModal } from '../BchatWrapperModal'; -import { SpacerLG } from '../basic/Text'; +import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; +// import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +// import { BchatWrapperModal } from '../BchatWrapperModal'; +import { SpacerLG, SpacerSM } from '../basic/Text'; +import { BchatIcon } from '../icon'; +import { useModuloWithTripleDots } from '../../hooks/useModuloWithTripleDots'; export const CallWindow = styled.div` position: absolute; @@ -21,17 +23,35 @@ export const CallWindow = styled.div` transform: translate(-50%, -50%); display: flex; flex-direction: column; - background-color: var(--color-modal-background); + background-color:var(--color-hop-bg); border: var(--bchat-border); `; const IncomingCallAvatarContainer = styled.div` padding: 0 0 1rem 0; + width: 400px; + text-align: center; +`; +const UserName = styled.div` + font-size: 24px; + font-style: normal; + font-weight: 500; + line-height: normal; +`; +const IncomingTxt = styled.div` + color: var(--color-hop-txt); + text-align: center; + font-family: Poppins; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; `; - export const IncomingCallDialog = () => { const hasIncomingCall = useSelector(getHasIncomingCall); const incomingCallFromPubkey = useSelector(getHasIncomingCallFrom); + const isBnsHolder = useConversationBnsHolder(incomingCallFromPubkey); + const modulatedStr = useModuloWithTripleDots('Incoming...', 3, 1000); useEffect(() => { let timeout: NodeJS.Timeout; @@ -69,30 +89,60 @@ export const IncomingCallDialog = () => { } }; const from = useConversationUsername(incomingCallFromPubkey); + if (!hasIncomingCall || !incomingCallFromPubkey) { return null; } if (hasIncomingCall) { return ( - - - - - -
- - + // +
+
+ + + + + + {from} + + {modulatedStr} + +
+ {/* */} +
+ +
+
+ +
+
- +
+ //
); } // display spinner while connecting diff --git a/ts/components/conversation/BchatConditionalSyncStatusBar.tsx b/ts/components/conversation/BchatConditionalSyncStatusBar.tsx index ef58117b..90d5c8f9 100644 --- a/ts/components/conversation/BchatConditionalSyncStatusBar.tsx +++ b/ts/components/conversation/BchatConditionalSyncStatusBar.tsx @@ -1,14 +1,14 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; -import { getWalletSyncBarShowInChat } from '../../state/selectors/walletConfig'; -import { MemoSyncStatusBar } from '../wallet/BchatWalletSyncSatusBar'; -import { daemon } from '../../wallet/daemon-rpc'; +// import React from 'react'; +// import { useSelector } from 'react-redux'; +// import { getWalletSyncBarShowInChat } from '../../state/selectors/walletConfig'; +// import { MemoSyncStatusBar } from '../wallet/BchatWalletSyncSatusBar'; +// import { daemon } from '../../wallet/daemon-rpc'; -export default function ConditionalSyncBar() { - const walletSyncBarShowInChat = useSelector(getWalletSyncBarShowInChat); - if (walletSyncBarShowInChat) { - daemon.daemonHeartbeat(); - return ; - } - return <>; -} +// export default function ConditionalSyncBar() { +// const walletSyncBarShowInChat = useSelector(getWalletSyncBarShowInChat); +// if (walletSyncBarShowInChat) { +// daemon.daemonHeartbeat(); +// return ; +// } +// return <>; +// } diff --git a/ts/components/conversation/BchatConversation.tsx b/ts/components/conversation/BchatConversation.tsx index 7a144c55..fca3febe 100644 --- a/ts/components/conversation/BchatConversation.tsx +++ b/ts/components/conversation/BchatConversation.tsx @@ -15,13 +15,12 @@ import { perfEnd, perfStart } from '../../bchat/utils/Performance'; const DEFAULT_JPEG_QUALITY = 0.85; // import classNames from 'classnames'; - import { BchatMessagesListContainer } from './BchatMessagesListContainer'; import { BchatFileDropzone } from './BchatFileDropzone'; import { InConversationCallContainer } from '../calling/InConversationCallContainer'; -import { SplitViewContainer } from '../SplitViewContainer'; +// import { SplitViewContainer } from '../SplitViewContainer'; import { LightboxGallery, MediaItemType } from '../lightbox/LightboxGallery'; import { getLastMessageInConversation, getPubkeysInPublicConversation } from '../../data/data'; import { getConversationController } from '../../bchat/conversations'; @@ -34,16 +33,16 @@ import { SortedMessageModelProps, updateMentionsMembers, } from '../../state/ducks/conversations'; -import { updateConfirmModal } from '../../state/ducks/modalDialog'; +import { updateCommunityGuidelinesModal, updateConfirmModal } from '../../state/ducks/modalDialog'; import { BchatTheme } from '../../state/ducks/BchatTheme'; import { addStagedAttachmentsInConversation } from '../../state/ducks/stagedAttachments'; import { MIME } from '../../types'; import { AttachmentTypeWithPath } from '../../types/Attachment'; import { arrayBufferToObjectURL, AttachmentUtil, GoogleChrome } from '../../util'; -import { BchatButtonColor } from '../basic/BchatButton'; -import { MessageView } from '../MainViewController'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +import { AddNewContactInEmptyConvo, MessageView } from '../MainViewController'; import { ConversationHeaderWithDetails } from './ConversationHeader'; -import { MessageDetail } from './message/message-item/MessageDetail'; +// import { MessageDetail } from './message/message-item/MessageDetail'; import { makeImageThumbnailBuffer, makeVideoScreenshot, @@ -51,14 +50,19 @@ import { } from '../../types/attachments/VisualAttachment'; import { blobToArrayBuffer } from 'blob-util'; import { MAX_ATTACHMENT_FILESIZE_BYTES } from '../../bchat/constants'; -import { ConversationMessageRequestButtons } from './ConversationRequestButtons'; +// import { ConversationMessageRequestButtons } from './ConversationRequestButtons'; import { ConversationRequestinfo } from './ConversationRequestInfo'; import { getCurrentRecoveryPhrase } from '../../util/storage'; import loadImage from 'blueimp-load-image'; -import { BchatRightPanelWithDetails } from './BchatRightPanel'; +// import { BchatRightPanelWithDetails } from './BchatRightPanel'; // import { SyncStatusBar } from '../wallet/BchatWalletSyncSatusBar'; -import { SettingsKey } from '../../data/settings-key'; -import ConditionalSyncBar from './BchatConditionalSyncStatusBar'; +// import { SettingsKey } from '../../data/settings-key'; +// import ConditionalSyncBar from './BchatConditionalSyncStatusBar'; +import { SectionType } from '../../state/ducks/section'; +import { BchatScrollButton } from '../BchatScrollButton'; +import { Flex } from '../basic/Flex'; +import { BchatIcon } from '../icon'; +import styled from 'styled-components'; // import { PaymentMessage } from './message/message-item/PaymentMessage'; // import { useConversationBeldexAddress } from '../../hooks/useParamSelector'; // import { getWalletSyncInitiatedWithChat } from '../../state/selectors/walletConfig'; @@ -82,12 +86,14 @@ interface Props { showMessageDetails: boolean; isRightPanelShowing: boolean; hasOngoingCallWithFocusedConvo: boolean; - isMe:boolean; + isMe: boolean; // lightbox options lightBoxOptions?: LightBoxOptions; stagedAttachments: Array; + convoList: any; + focusedSection: any; } export class BchatConversation extends React.Component { @@ -196,9 +202,23 @@ export class BchatConversation extends React.Component { if (msg.body.replace(/\s/g, '').includes(recoveryPhrase.replace(/\s/g, ''))) { window.inboxStore?.dispatch( updateConfirmModal({ - title: window.i18n('sendRecoveryPhraseTitle'), - message: window.i18n('sendRecoveryPhraseMessage'), + // title: window.i18n('sendRecoveryPhraseTitle'), + title: 'Warning', + // message: window.i18n('sendRecoveryPhraseMessage'), + message: + 'This is your recovery phrase. if you send it to someone they will have full access to your account.', okTheme: BchatButtonColor.Danger, + okText: window.i18n('send'), + iconShow: true, + customIcon: ( + + ), onClickOk: () => { void sendAndScroll(); }, @@ -223,37 +243,39 @@ export class BchatConversation extends React.Component { const { selectedConversation, messagesProps, - showMessageDetails, + // showMessageDetails, selectedMessages, - isRightPanelShowing, + // isRightPanelShowing, lightBoxOptions, - isMe + // isMe, + convoList, + focusedSection, } = this.props; const selectionMode = selectedMessages.length > 0; - const chatWithWallet = window.getSettingValue(SettingsKey.settingsChatWithWallet) || false; - + // const chatWithWallet = window.getSettingValue(SettingsKey.settingsChatWithWallet) || false; + if ( + convoList?.conversations?.length == 0 && + (!selectedConversation || !messagesProps) && + focusedSection !== SectionType.Opengroup && + focusedSection !== SectionType.NewChat + ) { + return ; + } if (!selectedConversation || !messagesProps) { - // return an empty message view return ; } - // const belAddress = useConversationBeldexAddress(selectedConversation.id); - const syncbarCondition=chatWithWallet && selectedConversation?.isPrivate && !isMe && selectedConversation?.didApproveMe && selectedConversation?.isApproved - // const msgProps={ amount:'0.1', - // txnId: "1234567890", - // direction: 'outgoing', - // acceptUrl: "qwerty", - // messageId: "qwert12345", - // receivedAt: "123456", - // isUnread: true, - // } - - // console.log("selectedConversation ::",syncbarCondition,selectedConversation) - + // const belAddress = useConversationBeldexAddress(selectedConversation.id); + // const syncbarCondition = + // chatWithWallet && + // selectedConversation?.isPrivate && + // !isMe && + // selectedConversation?.didApproveMe && + // selectedConversation?.isApproved; + return ( -
@@ -263,50 +285,85 @@ export class BchatConversation extends React.Component { tabIndex={0} onKeyDown={this.onKeyDown} role="navigation" - > -
- {syncbarCondition &&} -
-
+ > + {selectedConversation?.isPublic && ( +
+ + + +
+
Pinned Message
+
Community guidelines
+
+
+ window.inboxStore?.dispatch(updateCommunityGuidelinesModal({}))} + /> +
+
+ )} + {/*
{syncbarCondition && }
*/} + {/*
-
+
*/} {lightBoxOptions?.media && this.renderLightBox(lightBoxOptions)}
- - */} + {this.props.hasOngoingCallWithFocusedConvo && ( + + {/*
*/}{' '} + {/*
*/} +
+ )} + + {/* } bottom={ <> - - {/*
*/} + } disableTop={!this.props.hasOngoingCallWithFocusedConvo} + /> */} + {isDraggingFile && }
- + -
-
-
- +
*/} ); } @@ -519,7 +576,8 @@ export class BchatConversation extends React.Component { const allPubKeys = await getPubkeysInPublicConversation(this.props.selectedConversationKey); window?.log?.debug( - `[perf] getPubkeysInPublicConversation returned '${allPubKeys?.length + `[perf] getPubkeysInPublicConversation returned '${ + allPubKeys?.length }' members in ${Date.now() - start}ms` ); @@ -625,4 +683,10 @@ const renderImagePreview = async (contentType: string, file: File, fileName: str }; }; - +const VerticalLine = styled.div` + width: 5px; + background-color: var(--color-untrusted-vertical-bar); + height: 38px; + border-radius: 10px; + margin-right: 10px; +`; diff --git a/ts/components/conversation/BchatMessagesListContainer.tsx b/ts/components/conversation/BchatMessagesListContainer.tsx index 72fc3c93..2ac50e37 100644 --- a/ts/components/conversation/BchatMessagesListContainer.tsx +++ b/ts/components/conversation/BchatMessagesListContainer.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { BchatScrollButton } from '../BchatScrollButton'; +// import { BchatScrollButton } from '../BchatScrollButton'; import { contextMenu } from 'react-contexify'; import { connect } from 'react-redux'; @@ -135,11 +135,13 @@ class BchatMessagesListContainerInner extends React.Component { /> - + /> */} +
); } diff --git a/ts/components/conversation/BchatQuotedMessageComposition.tsx b/ts/components/conversation/BchatQuotedMessageComposition.tsx index 0cf9b2f0..bd856da9 100644 --- a/ts/components/conversation/BchatQuotedMessageComposition.tsx +++ b/ts/components/conversation/BchatQuotedMessageComposition.tsx @@ -11,16 +11,22 @@ import { Image } from './Image'; const QuotedMessageComposition = styled.div` width: 100%; - padding-inline-end: var(--margins-md); - padding-inline-start: var(--margins-md); + margin-top: 15px; + // padding-inline-end: var(--margins-md); + // padding-inline-start: var(--margins-md); `; const QuotedMessageCompositionReply = styled.div` - background: var(--color-quote-bottom-bar-background); - border-radius: var(--margins-sm); + // background: var(--color-quote-bottom-bar-background); + // border-radius: var(--margins-sm); padding: var(--margins-xs); box-shadow: var(--color-bchat-shadow); - margin: var(--margins-xs); + // margin: var(--margins-xs); + background: var(--color-untrust-media-bg); + border-radius: 16px; + min-height: 70px; + width: 100%; + margin-right: 10px; `; const Subtle = styled.div` @@ -32,10 +38,16 @@ const Subtle = styled.div` display: -webkit-box; color: var(--color-text); `; - -const ReplyingTo = styled.div` - color: var(--color-text); +const VerticalLine = styled.div` + width: 5px; + background-color: var(--color-untrusted-vertical-bar); + height: 60px; + border-radius: 10px; + margin-right: 10px; `; +// const ReplyingTo = styled.div` +// color: var(--color-text); +// `; export const BchatQuotedMessageComposition = () => { const quotedMessageProps = useSelector(getQuotedMessage); @@ -73,12 +85,14 @@ export const BchatQuotedMessageComposition = () => { justifyContent="space-between" flexGrow={1} margin={'var(--margins-xs)'} + alignItems='center' > - {window.i18n('replyingToMessage')} - - + {/* {window.i18n('replyingToMessage')} */} + - + + + {(hasAttachments && window.i18n('mediaMessage')) || body} {hasImageAttachment && ( @@ -94,6 +108,9 @@ export const BchatQuotedMessageComposition = () => { {hasAudioAttachment && } + + + ); }; diff --git a/ts/components/conversation/BchatRecording.tsx b/ts/components/conversation/BchatRecording.tsx index 94db6628..af954b46 100644 --- a/ts/components/conversation/BchatRecording.tsx +++ b/ts/components/conversation/BchatRecording.tsx @@ -2,7 +2,7 @@ import React from 'react'; import classNames from 'classnames'; import moment from 'moment'; -import { BchatIconButton } from '../icon'; +import { BchatIcon, BchatIconButton } from '../icon'; import autoBind from 'auto-bind'; import MicRecorder from 'mic-recorder-to-mp3'; import styled from 'styled-components'; @@ -10,6 +10,8 @@ import { Constants } from '../../bchat'; import { ToastUtils } from '../../bchat/utils'; import { MAX_ATTACHMENT_FILESIZE_BYTES } from '../../bchat/constants'; import { SendMessageButton } from './composition/CompositionButtons'; +import StopIcon from '../icon/StopIcon'; +import { CustomIconButton } from '../icon/CustomIconButton'; interface Props { onExitVoiceNoteView: () => void; @@ -32,20 +34,24 @@ function getTimestamp() { return Date.now() / 1000; } -interface StyledFlexWrapperProps { - marginHorizontal: string; -} +// interface StyledFlexWrapperProps { +// marginHorizontal: string; +// } /** * Generic wrapper for quickly passing in theme constant values. */ -const StyledFlexWrapper = styled.div` +const StyledFlexWrapper = styled.div` display: flex; flex-direction: row; align-items: center; - width:100% - .bchat-button { - margin: ${props => props.marginHorizontal}; + // width:100%; + justify-content: space-between; + width: 65px; + .bchat-icon-button{ + border-radius:30px; + } + } `; @@ -105,8 +111,8 @@ export class BchatRecording extends React.Component { const displayTimeMs = isRecording ? (nowTimestamp - startTimestamp) * 1000 : (this.audioElement && - (this.audioElement?.currentTime * 1000 || this.audioElement?.duration)) || - 0; + (this.audioElement?.currentTime * 1000 || this.audioElement?.duration)) || + 0; const displayTimeString = moment.utc(displayTimeMs).format('m:ss'); const recordingDurationMs = this.audioElement?.duration @@ -124,62 +130,83 @@ export class BchatRecording extends React.Component {
- {hasRecording && !isRecording ? ( -
- {displayTimeString + remainingTimeString} + {hasRecording && !isRecording ? ( +
+
+ +
+ {displayTimeString + remainingTimeString}
) : null} -
- - {isRecording ? ( -
-
- {displayTimeString} - + +
+ {isRecording ? ( +
+
+
+
+ {displayTimeString} +
+ ) : null}
- ) : null} - - - - - - - - {actionPauseAudio && ( - - )} - {hasRecordingAndPaused && ( - - )} - {hasRecording && ( - - )} - - - {actionDefault && } +
+ + {actionPauseAudio && ( + + )} + {hasRecordingAndPaused && ( + + )} + {hasRecording && ( + + )} + + + {actionDefault && } +
+ {isRecording && ( + // + } onClick={actionPauseFn} /> + )}
- {isRecording && ( - - )} - +
+ {!isRecording && ( + + ) + // : ( + // { }} /> + // ) + }
-
- {!isRecording ? :{}}/>} -
); } diff --git a/ts/components/conversation/BchatRightPanel.tsx b/ts/components/conversation/BchatRightPanel.tsx index bf1bfe53..a8de67c6 100644 --- a/ts/components/conversation/BchatRightPanel.tsx +++ b/ts/components/conversation/BchatRightPanel.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; import { BchatIcon, BchatIconButton } from '../icon'; import _ from 'lodash'; // tslint:disable-next-line: no-submodule-imports @@ -10,26 +10,48 @@ import { } from '../../data/data'; import { deleteAllMessagesByConvoIdWithConfirmation, + deleteGroupByConvoId, setDisappearingMessagesByConvoId, showAddModeratorsByConvoId, showInviteContactByConvoId, showLeaveGroupByConvoId, showRemoveModeratorsByConvoId, - showUpdateGroupMembersByConvoId, - showUpdateGroupNameByConvoId, + // showUpdateGroupMembersByConvoId, + // showUpdateGroupNameByConvoId, } from '../../interactions/conversationInteractions'; import { Constants } from '../../bchat'; import { closeRightPanel } from '../../state/ducks/conversations'; import { getSelectedConversation, isRightPanelShowing } from '../../state/selectors/conversations'; import { getTimerOptions } from '../../state/selectors/timerOptions'; import { AttachmentTypeWithPath } from '../../types/Attachment'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; -import { BchatDropdown } from '../basic/BchatDropdown'; -import { SpacerLG } from '../basic/Text'; +import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; +// import { BchatDropdown } from '../basic/BchatDropdown'; +import { SpacerLG, SpacerMD, SpacerSM, SpacerXS } from '../basic/Text'; import { MediaItemType } from '../lightbox/LightboxGallery'; import { MediaGallery } from './media-gallery/MediaGallery'; import { getAbsoluteAttachmentPath } from '../../types/MessageAttachment'; -import { useConversationUsername } from '../../hooks/useParamSelector'; +import { + useConversationPropsById, + useConversationUsername, + useWeAreAdmin, +} from '../../hooks/useParamSelector'; +import { Flex } from '../basic/Flex'; +// import { CopyIconButton } from '../icon/CopyIconButton'; +import { clipboard } from 'electron'; +import { pushUserCopySuccess } from '../../bchat/utils/Toast'; +import { getConversationController } from '../../bchat/conversations'; +import { initiateOpenGroupUpdate } from '../../bchat/group/open-group'; +import { initiateClosedGroupUpdate } from '../../bchat/group/closed-group'; +import { useSet } from '../../hooks/useSet'; +import { ToastUtils, UserUtils } from '../../bchat/utils'; +import { MemberListItem } from '../MemberListItem'; +import classNames from 'classnames'; +import { InviteContact, onClickRef } from './InviteContacts'; +import { BchatButton } from '../basic/BchatButton'; +import { BchatButtonType } from '../basic/BchatButton'; +import { BchatButtonColor } from '../basic/BchatButton'; +import { MenuWrapper } from '../menu/Menu'; +import { getTheme } from '../../state/selectors/theme'; async function getMediaGalleryProps( conversationId: string @@ -101,6 +123,101 @@ async function getMediaGalleryProps( }; } +// Adjust the import path as necessary + +const MAX_USERNAME_LENGTH = 20; + +const ProfileName = (props: { onCloseEdit: () => void; grpName: any }) => { + const [profileName, setProfileName] = useState(props.grpName); + const [errorDisplayed, setErrorDisplayed] = useState(false); + const [errorMessage, setErrorMessage] = useState('placeholder'); + const selectedConversation = useSelector(getSelectedConversation); + if (!selectedConversation) { + return null; + } + const convo = getConversationController().get(selectedConversation.id); + // const groupName = convo.getName(); + + const oldAvatarPath = convo.getAvatarPath(); + const newAvatarObjecturl = null; + const onNameEdited = useCallback((event: React.ChangeEvent) => { + setProfileName(event.target.value); + }, []); + + function onClickOK() { + const trimmedGroupName = profileName?.trim(); + if (!trimmedGroupName) { + onShowError(window.i18n('emptyGroupNameError')); + + return; + } + + if (trimmedGroupName !== convo.getName() || newAvatarObjecturl !== oldAvatarPath) { + if (convo.isPublic()) { + void initiateOpenGroupUpdate(convo.id, trimmedGroupName, { + objectUrl: newAvatarObjecturl, + }); + } else { + const members = convo.get('members') || []; + void initiateClosedGroupUpdate(convo.id, trimmedGroupName, members); + setProfileName(''); + } + } + props.onCloseEdit(); + } + function onShowError(msg: string) { + if (errorDisplayed) { + return; + } + + setErrorDisplayed(true); + setErrorMessage(msg); + setTimeout(() => { + setErrorDisplayed(false); + }, 3000); + } + // const onClickOK = useCallback(() => { + // console.log('Save icon clicked', selectedConversation); + // // Handle the save action + // }, [profileName]); + + return ( +
+
+
+ +
+ +
+ onClickOK()} + // dataTestId="modal-close-button" + /> +
+
+ {errorDisplayed ? ( + <> + +

{errorMessage}

+ + ) : null} +
+ ); +}; + const HeaderItem = () => { const selectedConversation = useSelector(getSelectedConversation); const dispatch = useDispatch(); @@ -108,30 +225,86 @@ const HeaderItem = () => { if (!selectedConversation) { return null; } - const { id, profileName } = selectedConversation; + const { id, profileName, isBnsHolder, isGroup } = selectedConversation; return (
+ + + {isGroup ? 'Group Info' : 'Profile Info'} + + dispatch(closeRightPanel())} + className="group-settings-header-closeBox" + > + + + + +
- + + + + +

{profileName}

+ +
+ ); +}; +const ClassicMemberList = (props: { + convoId: string; + selectedMembers: Array; + onSelect: (m: string) => void; + onUnselect: (m: string) => void; + removeMem?: boolean; +}) => { + const { onSelect, convoId, onUnselect, selectedMembers, removeMem } = props; + const weAreAdmin = useWeAreAdmin(convoId); + const convoProps = useConversationPropsById(convoId); + if (!convoProps) { + throw new Error('MemberList needs convoProps'); + } + let currentMembers = convoProps.members || []; + const { groupAdmins } = convoProps; + currentMembers = [...currentMembers].sort(m => (groupAdmins?.includes(m) ? -1 : 0)); -
dispatch(closeRightPanel())} className="group-settings-header-closeBox"> - - - + return ( + <> +
+ {currentMembers.map(member => { + const isSelected = (weAreAdmin && selectedMembers.includes(member)) || false; + const isAdmin = groupAdmins?.includes(member); + + return ( + + ); + })}
-
+ ); }; @@ -140,10 +313,23 @@ const HeaderItem = () => { export const BchatRightPanelWithDetails = () => { const [documents, setDocuments] = useState>([]); const [media, setMedia] = useState>([]); + const [fullView, setFullView] = useState(false); + const [edit, setEdit] = useState(false); + const [removeMem, setRemoveMem] = useState(false); + const [addMem, setAddMem] = useState(false); + const [expanded, setExpanded] = useState(false); const selectedConversation = useSelector(getSelectedConversation); const isShowing = useSelector(isRightPanelShowing); - + const convoProps = useConversationPropsById(selectedConversation?.id); + const existingMembers = convoProps?.members || []; + const ref = useRef(null); + const { addTo, removeFrom, uniqueValues: membersToKeepWithUpdate } = useSet( + existingMembers + ); + const darkMode = useSelector(getTheme) === 'dark'; + const { uniqueValues: selectedContacts } = useSet(); + const zoomLevel = window.getSettingValue('zoom-factor-setting'); useEffect(() => { let isRunning = true; @@ -193,9 +379,7 @@ export const BchatRightPanelWithDetails = () => { isGroup, isPrivate, } = selectedConversation; - const username = String(useConversationUsername(id)); - const showMemberCount = !!(subscriberCount && subscriberCount > 0); const commonNoShow = isKickedFromGroup || left || isBlocked; const hasDisappearingMessages = !isPublic && !commonNoShow; @@ -217,7 +401,7 @@ export const BchatRightPanelWithDetails = () => { }, }; }); - + // console.log('disappearingMessagesOptions --->', disappearingMessagesOptions); const showUpdateGroupNameButton = isGroup && (!isPublic || (isPublic && weAreAdmin)) && !commonNoShow; const showAddRemoveModeratorsButton = weAreAdmin && !commonNoShow && isPublic; @@ -227,155 +411,404 @@ export const BchatRightPanelWithDetails = () => { ? () => { deleteAllMessagesByConvoIdWithConfirmation(id); } + : left + ? () => { + deleteGroupByConvoId(id, username); + } : () => { - showLeaveGroupByConvoId(id, username); + showLeaveGroupByConvoId( + id, + username, + + ); }; - return ( -
- - {isPrivate && ( -
-

BChat ID:

-
{id}
-
- )} -
-

{name}

- {showUpdateGroupNameButton && ( - { - await showUpdateGroupNameByConvoId(id); - }} - dataTestId="edit-profile-icon" - /> - )} -
- {showMemberCount && ( - <> - -
- {window.i18n('members', [`${subscriberCount}`])} -
- - - )} - {showAddRemoveModeratorsButton && ( + const handleCopy = () => { + clipboard.writeText(id, 'clipboard'); + pushUserCopySuccess(); + }; + const dispalyMedia = (value: boolean) => { + setFullView(value); + }; + const onAdd = (member: string) => { + if (!weAreAdmin) { + ToastUtils.pushOnlyAdminCanRemove(); + return; + } + + addTo(member); + }; + const onRemove = (member: string) => { + if (!weAreAdmin) { + window?.log?.warn('Only group admin can remove members!'); + + ToastUtils.pushOnlyAdminCanRemove(); + return; + } + if (convoProps?.groupAdmins?.includes(member)) { + ToastUtils.pushCannotRemoveCreatorFromGroup(); + window?.log?.warn( + `User ${member} cannot be removed as they are the creator of the closed group.` + ); + return; + } + + removeFrom(member); + }; + + async function onSubmit(convoId: string, membersAfterUpdate: Array) { + // not ideal to get the props here, but this is not run often + const convoProps = getConversationController() + .get(convoId) + .getConversationModelProps(); + if (!convoProps || !convoProps.isGroup || convoProps.isPublic) { + throw new Error('Invalid convo for updateGroupMembersDialog'); + } + if (!convoProps.weAreAdmin) { + window.log.warn('Skipping update of members, we are not the admin'); + return; + } + const ourPK = UserUtils.getOurPubKeyStrFromCache(); + + const allMembersAfterUpdate = _.uniq(_.concat(membersAfterUpdate, [ourPK])); + + // membersAfterUpdate won't include the zombies. We are the admin and we want to remove them not matter what + + // We need to NOT trigger an group update if the list of member is the same. + // We need to merge all members, including zombies for this call. + // We consider that the admin ALWAYS wants to remove zombies (actually they should be removed + // automatically by him when the LEFT message is received) + + const existingMembers = convoProps.members || []; + const existingZombies = convoProps.zombies || []; + + const allExistingMembersWithZombies = _.uniq(existingMembers.concat(existingZombies)); + + const notPresentInOld = allMembersAfterUpdate.filter( + m => !allExistingMembersWithZombies.includes(m) + ); + + // be sure to include zombies in here + const membersToRemove = allExistingMembersWithZombies.filter( + m => !allMembersAfterUpdate.includes(m) + ); + + // do the xor between the two. if the length is 0, it means the before and the after is the same. + const xor = _.xor(membersToRemove, notPresentInOld); + if (xor.length === 0) { + window.log.info('skipping group update: no detected changes in group member list'); + + return; + } + + // If any extra devices of removed exist in newMembers, ensure that you filter them + // Note: I think this is useless + const filteredMembers = allMembersAfterUpdate.filter( + memberAfterUpdate => !_.includes(membersToRemove, memberAfterUpdate) + ); + + void initiateClosedGroupUpdate(convoId, convoProps.name || 'Unknown', filteredMembers); + } + const onClickOK = async () => { + // const members = getWouldBeMembers(this.state.contactList).map(d => d.id); + // do not include zombies here, they are removed by force + if (removeMem) { + await onSubmit(id, membersToKeepWithUpdate); + setRemoveMem(false); + } + if (addMem) { + console.log('selectedContacts ...', selectedContacts); + // await submitForClosedGroup(id, selectedContacts); + await ref.current?.onclick(); + setAddMem(false); + } + }; + return ( +
100 ? 'absolute' : 'unset', + overflowY: zoomLevel > 100 ? 'auto' : 'unset', + right:0, + zIndex:2 + }} + > + {!fullView ? ( <> + + {isPrivate && ( +
+

BChat ID

+ +
+ + {id} + + {/* */} + +
+
+ )} + {!edit ? ( +
+

{name}

+ {showUpdateGroupNameButton && ( +
+ { + // await showUpdateGroupNameByConvoId(id); + setEdit(true); + }} + dataTestId="edit-profile-icon" + /> +
+ )} +
+ ) : ( + <> + {/* */} + setEdit(false)} grpName={name} /> + + )} + {hasDisappearingMessages && ( +
+
setExpanded(!expanded)} + > + + + + {window.i18n('disappearingMessages')} + + + + {/* */} +
+ {expanded && ( +
+ {disappearingMessagesOptions.map((item, key) => { + return ( + { + setExpanded(false); + item.onClick(); + }} + > + {item.content} + + ); + })} +
+ )} +
+ )} + {showMemberCount && ( + <> + +
+ {window.i18n('members', [`${subscriberCount}`])} +
+ + + )} + {showAddRemoveModeratorsButton && ( + <> +
{ + showAddModeratorsByConvoId(id); + }} + > + {window.i18n('addModerators')} +
+
{ + showRemoveModeratorsByConvoId(id); + }} + > + {window.i18n('removeModerators')} +
+ + )} + {showUpdateGroupMembersButton && ( +
+ +
{ + // await showUpdateGroupMembersByConvoId(id); + // }} + > +
+ {window.i18n('groupMembers')} +
+ + {removeMem || addMem ? ( + <> + { + setRemoveMem(false); + setAddMem(false); + }} + /> + + onClickOK()} + /> + + ) : ( + <> + {weAreAdmin && ( + setRemoveMem(true)} + /> + )} +
{ + setAddMem(true); + // if (selectedConversation) { + // showInviteContactByConvoId(selectedConversation.id); + // } + }} + > +
{ + if (selectedConversation) { + showInviteContactByConvoId(selectedConversation.id); + } + }} + >
+ {/* {window.i18n('addingContacts')} */} + Add + +
+ + )} +
+
+ +
+ {addMem ? ( + + ) : ( + + )} +
+
+ )} + + {isGroup && ( + // tslint:disable-next-line: use-simple-attributes +
+ + + {/*
+ +
{leaveGroupString}
*/} + {/*
*/} +
+ )} + +
+ + Media, docs + dispalyMedia(true)} + /> + + +
{ - showAddModeratorsByConvoId(id); - }} - > - {window.i18n('addModerators')} -
-
{ - showRemoveModeratorsByConvoId(id); - }} + className={classNames('img-wrapper', existingMembers.length >= 3 && 'grp_more_member')} > - {window.i18n('removeModerators')} +
+ - )} - {showUpdateGroupMembersButton && ( -
{ - if (selectedConversation) { - showInviteContactByConvoId(selectedConversation.id); - } - }} - > -
{ - if (selectedConversation) { - showInviteContactByConvoId(selectedConversation.id); - } - }} + ) : ( + <> + - - - -
- {window.i18n('addingContacts')} -
- )} - - {showUpdateGroupMembersButton && ( -
{ - await showUpdateGroupMembersByConvoId(id); - }} - > -
- dispalyMedia(false)} + className="group-settings-header-closeBox" + style={{ marginRight: '10px' }} > - - -
- {window.i18n('groupMembers')} -
- )} - - {hasDisappearingMessages && ( -
- -
- )} - - - {isGroup && ( - // tslint:disable-next-line: use-simple-attributes -
-
- -
{leaveGroupString}
-
-
+ + Media & Documents + + + + )}
); diff --git a/ts/components/conversation/BnsVerification.ts b/ts/components/conversation/BnsVerification.ts new file mode 100644 index 00000000..75b85ad1 --- /dev/null +++ b/ts/components/conversation/BnsVerification.ts @@ -0,0 +1,63 @@ +import { SNodeAPI } from '../../bchat/apis/snode_api'; +import { getConversationController } from '../../bchat/conversations/ConversationController'; +import { ToastUtils, UserUtils } from '../../bchat/utils'; +import { setIsVerifyBnsCalled } from '../../state/ducks/bnsConfig'; + +export async function setIsBnsHolder(value: Boolean) { + const conversation = getConversationController().get(UserUtils.getOurPubKeyStrFromCache()); + await conversation.setIsBnsHolder(value); +} +export async function linkBns(ourBnsName: string) { + window.setLocalValue('ourBnsName', ourBnsName); + await setIsBnsHolder(true); +} +const failureBnsLinkHandler = async () => { + const i18n = window.i18n; + window.setLocalValue('ourBnsName', ''); + await setIsBnsHolder(false); + ToastUtils.pushToastError('invalid',i18n( 'bnsNameAndIDNotMatch')); + return false; +}; +export function bnsVerificationConvo( + senderConversationModel: any, + isPrivateConversationMessage: boolean, + envelope: { isBnsHolder: boolean } +) { + const ourPubkey: string = UserUtils.getOurPubKeyStrFromCache(); + if ( + senderConversationModel?.attributes?.id === ourPubkey && + !window.getLocalValue('ourBnsName') && + isPrivateConversationMessage + ) { + senderConversationModel.setIsBnsHolder(false); + console.log('verify tag disabled'); + } else { + isPrivateConversationMessage && senderConversationModel.setIsBnsHolder(envelope.isBnsHolder); + } +} +export async function isLinkedBchatIDWithBnsForDeamon(bnsName?: string) { + try { + const i18n = window.i18n; + const ourBnsName = bnsName || window.getLocalValue('ourBnsName'); + console.log(' ourBnsName -------->', ourBnsName); + if (!ourBnsName) { + return false; + } + if (!window.navigator.onLine) { + !!bnsName && ToastUtils.pushToastError('invalid', 'Please check your internet connection'); + return false; + } + const resolvedBchatID = await SNodeAPI.getBchatIDForOnsName(ourBnsName); + const ourNumber = UserUtils.getOurPubKeyStrFromCache(); + window.inboxStore?.dispatch(setIsVerifyBnsCalled(true)); + if (ourNumber === resolvedBchatID) { + !!bnsName && ToastUtils.pushToastSuccess('success', i18n('bnsNameverified')); + return true; + } else { + return failureBnsLinkHandler(); + } + } catch (error) { + console.log(error); + return failureBnsLinkHandler(); + } +} diff --git a/ts/components/conversation/ContactName.tsx b/ts/components/conversation/ContactName.tsx index c5efb6e2..e97a9f9f 100644 --- a/ts/components/conversation/ContactName.tsx +++ b/ts/components/conversation/ContactName.tsx @@ -15,17 +15,17 @@ type Props = { }; export const ContactName = (props: Props) => { - const { pubkey, name, profileName, module, boldProfileName, compact, shouldShowPubkey } = props; + const { pubkey, name, profileName, module, compact, shouldShowPubkey } = props; const prefix = module ? module : 'module-contact-name'; const convoName = useConversationUsernameOrShorten(pubkey); const isPrivate = useIsPrivate(pubkey); const shouldShowProfile = Boolean(convoName || profileName || name); - const styles = (boldProfileName - ? { - fontWeight: 'bold', - } - : {}) as React.CSSProperties; + // const styles = (boldProfileName + // ? { + // fontWeight: 'bold', + // } + // : {}) as React.CSSProperties; const textProfile = profileName || name || convoName || window.i18n('anonymous'); return ( @@ -35,7 +35,7 @@ export const ContactName = (props: Props) => { data-testid={`${prefix}__profile-name`} > {shouldShowProfile ? ( - + ) : null} diff --git a/ts/components/conversation/ConversationHeader.tsx b/ts/components/conversation/ConversationHeader.tsx index d970173b..85080bd4 100644 --- a/ts/components/conversation/ConversationHeader.tsx +++ b/ts/components/conversation/ConversationHeader.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; +import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; import { contextMenu } from 'react-contexify'; import styled from 'styled-components'; @@ -21,6 +21,7 @@ import { isMessageDetailView, isMessageSelectionMode, isRightPanelShowing, + // isRightPanelShowing, } from '../../state/selectors/conversations'; import { useDispatch, useSelector } from 'react-redux'; @@ -30,7 +31,7 @@ import { } from '../../interactions/conversations/unsendingInteractions'; import { closeMessageDetailsView, - closeRightPanel, + // closeRightPanel, openRightPanel, resetSelectedMessageIds, } from '../../state/ducks/conversations'; @@ -43,7 +44,7 @@ import { useIsKickedFromGroup, } from '../../hooks/useParamSelector'; import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; -import { BchatIcon, BchatIconButton } from '../icon'; +import { BchatIconButton } from '../icon'; import { ConversationHeaderMenu } from '../menu/ConversationHeaderMenu'; import { Flex } from '../basic/Flex'; import { ExpirationTimerOptions } from '../../util/expiringMessages'; @@ -53,6 +54,9 @@ import { getConversationController } from '../../bchat/conversations'; import { getWalletSyncBarShowInChat } from '../../state/selectors/walletConfig'; import { SettingsKey } from '../../data/settings-key'; import { updateBchatWalletPasswordModal } from '../../state/ducks/modalDialog'; +import { getTheme } from '../../state/selectors/theme'; +// import { CustomIconButton } from '../icon/CustomIconButton'; +// import CallIcon from '../icon/CallIcon'; // import { BchatButtonIcon } from '../wallet/BchatWalletPaymentSection'; export interface TimerOption { @@ -96,6 +100,7 @@ const SelectionOverlay = () => { const selectedConversationKey = useSelector(getSelectedConversationKey); const isPublic = useSelector(getSelectedConversationIsPublic); const dispatch = useDispatch(); + const darkMode = useSelector(getTheme) === 'dark'; const { i18n } = window; @@ -120,38 +125,48 @@ const SelectionOverlay = () => { return (
+ +
+ +
+ +
+ {selectedMessageIds.length} + Selected +
+
+
{!isOnlyServerDeletable && ( )}
-
- -
); }; const TripleDotsMenu = (props: { triggerId: string; showBackButton: boolean }) => { const { showBackButton } = props; + const isShowing: boolean = useSelector(isRightPanelShowing); if (showBackButton) { return null; } - let width = window.innerWidth; + let width = isShowing ? window.innerWidth - 370 : window.innerWidth; return (
{ contextMenu.show({ @@ -159,13 +174,13 @@ const TripleDotsMenu = (props: { triggerId: string; showBackButton: boolean }) = event: e, position: { x: width - 300, - y: 55, + y: 70, }, }); }} data-testid="three-dots-conversation-options" > - +
); }; @@ -193,23 +208,30 @@ const ExpirationLength = (props: { expirationSettingName?: string }) => { const AvatarHeader = (props: { pubkey: string; showBackButton: boolean; + conversation: any; onAvatarClick?: (pubkey: string) => void; }) => { - const { pubkey, onAvatarClick, showBackButton } = props; - + const { pubkey, onAvatarClick, showBackButton, conversation } = props; return ( - { - // do not allow right panel to appear if another button is shown on the BchatConversation - if (onAvatarClick && !showBackButton) { - onAvatarClick(pubkey); - } - }} - pubkey={pubkey} - dataTestId="conversation-options-avatar" - /> + + { + // do not allow right panel to appear if another button is shown on the BchatConversation + if (onAvatarClick && !showBackButton) { + onAvatarClick(pubkey); + } + }} + pubkey={pubkey} + dataTestId="conversation-options-avatar" + /> + ); }; @@ -246,16 +268,17 @@ const CallButton = () => { } return ( - { +
+ {/* { + void callRecipient(selectedConvoKey, canCall); + }} + customIcon={} + /> */} + { void callRecipient(selectedConvoKey, canCall); - }} - /> + }} /> +
); }; @@ -284,55 +307,26 @@ export type ConversationHeaderTitleProps = { }; const ConversationHeaderTitle = () => { - // console.log("convertion header 1::") const headerTitleProps = useSelector(getConversationHeaderTitleProps); - // console.log("convertion header 2::",headerTitleProps) - - // const notificationSetting = useSelector(getCurrentNotificationSettingText); - const isRightPanelOn = useSelector(isRightPanelShowing); - // console.log("convertion header 3::",isRightPanelOn) - + // const isRightPanelOn = useSelector(isRightPanelShowing); const convoName = useConversationUsername(headerTitleProps?.conversationKey); - // console.log("convertion header 4::",convoName) - const dispatch = useDispatch(); const convoProps = useConversationPropsById(headerTitleProps?.conversationKey); - // console.log("convertion header 5::",convoProps) - const conversationKey: any = useSelector(getSelectedConversationKey); - // console.log("convertion header 6::",conversationKey) - const conversation: any = useSelector(getSelectedConversation); - // console.log("convertion header 7::",conversation) - + // const dispatch = useDispatch(); let displayedName = null; if (conversation?.type === ConversationTypeEnum.PRIVATE) { displayedName = getConversationController().getContactProfileNameOrShortenedPubKey( conversationKey ); } - // console.log("convertion header 8::",displayedName) - const activeAt = convoProps?.activeAt; if (!headerTitleProps) { - return null; + return <>; } - // console.log("convertion header 9::",activeAt) - - const { isGroup, isPublic, members, subscriberCount, isMe, isKickedFromGroup } = headerTitleProps; - // console.log("convertion header 10::",headerTitleProps) - + const { isGroup, isPublic, members, subscriberCount, isKickedFromGroup } = headerTitleProps; const { i18n } = window; - // console.log("convertion header 11::",isMe) - - if (isMe) { - // console.log("convertion header 12::",isMe) - - // return
{window.i18n('noteToSelf')}
; - return
Note to Self
; - - } - // console.log("convertion header 13::",headerTitleProps) let memberCount = 0; if (isGroup) { @@ -342,7 +336,6 @@ const ConversationHeaderTitle = () => { memberCount = members.length; } } - // console.log("convertion header 14::",headerTitleProps) const SubTxt = styled.div` font-size: 11px; @@ -358,20 +351,24 @@ const ConversationHeaderTitle = () => { const count = String(memberCount); memberCountText = i18n('members', [count]); } + if (conversation?.isMe) { + return
Note to Self
; + } return ( -
{ - if (isRightPanelOn) { - dispatch(closeRightPanel()); - } else { - dispatch(openRightPanel()); - } - }} - role="button" - > - +
+ { + // if (isRightPanelOn) { + // dispatch(closeRightPanel()); + // } else { + // dispatch(openRightPanel()); + // } + // }} + // role="button" + > {convoName} {isGroup ? ( @@ -411,14 +408,20 @@ export const ConversationHeaderSubtitle = (props: { text?: string | null }): JSX export const ConversationHeaderWithDetails = () => { const isSelectionMode = useSelector(isMessageSelectionMode); const isMessageDetailOpened = useSelector(isMessageDetailView); - const selectedConvoKey = useSelector(getSelectedConversationKey); + const selectedConvoKey: any = useSelector(getSelectedConversationKey); const conversation = useSelector(getSelectedConversation); const WalletSyncBarShowInChat = useSelector(getWalletSyncBarShowInChat); const chatwithWallet = window.getSettingValue(SettingsKey.settingsChatWithWallet) || false; const dispatch = useDispatch(); - const displayConnectWalletBtn=chatwithWallet && !WalletSyncBarShowInChat && conversation?.type == 'private' && conversation?.isApproved && conversation?.didApproveMe + const displayConnectWalletBtn = + chatwithWallet && + !WalletSyncBarShowInChat && + conversation?.type == 'private' && + conversation?.isApproved && + conversation?.didApproveMe && + !conversation?.isMe; if (!selectedConvoKey) { return null; @@ -431,6 +434,7 @@ export const ConversationHeaderWithDetails = () => { : undefined; const triggerId = 'conversation-header'; + const isMe = useSelector(getIsSelectedNoteToSelf); // function displayWalletPassword() { @@ -439,6 +443,7 @@ export const ConversationHeaderWithDetails = () => { // // return; // // } // } + return (
@@ -456,37 +461,40 @@ export const ConversationHeaderWithDetails = () => { dispatch(openRightPanel()); }} pubkey={selectedConvoKey} + conversation={conversation} showBackButton={isMessageDetailOpened} /> - { displayConnectWalletBtn &&
dispatch(updateBchatWalletPasswordModal({}))} - > - -
- {window.i18n('connectWallet')} -
- {/* dispatch(updateBchatWalletPasswordModal({}))} + // > + // + //
{window.i18n('connectWallet')}
+ dispatch(updateBchatWalletPasswordModal({}))} // disabled={!caption} - /> */} -
- } + /> + //
+ )} {!isKickedFromGroup && ( )} - {conversation?.type == 'private' && ( -
+ {conversation?.type == 'private' && conversation?.didApproveMe && !isMe && ( +
)} diff --git a/ts/components/conversation/ConversationRequestButtons.tsx b/ts/components/conversation/ConversationRequestButtons.tsx index 089b3a4a..5766e22d 100644 --- a/ts/components/conversation/ConversationRequestButtons.tsx +++ b/ts/components/conversation/ConversationRequestButtons.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { useSelector,useDispatch } from 'react-redux'; +import { useSelector, useDispatch } from 'react-redux'; import styled from 'styled-components'; import { getMessageCountByType } from '../../data/data'; import { @@ -11,12 +11,13 @@ import { getConversationController } from '../../bchat/conversations'; import { getSelectedConversation } from '../../state/selectors/conversations'; import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { setOverlayMode } from '../../state/ducks/section'; +import DeclineMessageRequest from '../icon/DeclineMessageRequest'; export const ConversationMessageRequestButtons = () => { const selectedConversation = useSelector(getSelectedConversation); const [hasIncoming, setHasIncomingMsgs] = useState(false); const [incomingChecked, setIncomingChecked] = useState(false); - const dispatch=useDispatch(); + const dispatch = useDispatch(); useEffect(() => { async function getIncomingMessages() { @@ -38,6 +39,7 @@ export const ConversationMessageRequestButtons = () => { getIncomingMessages(); }, []); + if (!selectedConversation || !hasIncoming || !incomingChecked) { return null; } @@ -46,18 +48,20 @@ export const ConversationMessageRequestButtons = () => { const showMsgRequestUI = convoModel && convoModel.isIncomingRequest(); const handleDeclineConversationRequest = () => { - declineConversationWithConfirm(selectedConversation.id, true); + console.log("handleDeclineConversationRequest:") + const customIcon = + declineConversationWithConfirm(selectedConversation.id, true, customIcon); }; const handleAcceptConversationRequest = async () => { - + const { id } = selectedConversation; const convo = getConversationController().get(selectedConversation.id); await convo.setDidApproveMe(true); await convo.addOutgoingApprovalMessage(Date.now()); dispatch(setOverlayMode(undefined)); await approveConvoAndSendResponse(id, true); - + }; if (!showMsgRequestUI) { @@ -68,7 +72,7 @@ export const ConversationMessageRequestButtons = () => { Allow this person to chat with you? - + { )} /> {closeButton ? ( -
{ + // e.stopPropagation(); + // if (onClickClose) { + // onClickClose(attachment); + // } + // }} + // className="module-image__close-button" + // /> +
+ { e.stopPropagation(); if (onClickClose) { onClickClose(attachment); } }} - className="module-image__close-button" /> - ) : null} +
+ ) : // + null} {bottomOverlay ?
: null} {!(pending || loading) && playIconOverlay ? (
diff --git a/ts/components/dialog/InviteContactsDialog.tsx b/ts/components/conversation/InviteContacts.tsx similarity index 85% rename from ts/components/dialog/InviteContactsDialog.tsx rename to ts/components/conversation/InviteContacts.tsx index 745869e3..d9cacf4b 100644 --- a/ts/components/dialog/InviteContactsDialog.tsx +++ b/ts/components/conversation/InviteContacts.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { forwardRef, useImperativeHandle } from 'react'; import { getConversationController } from '../../bchat/conversations'; import { ToastUtils, UserUtils } from '../../bchat/utils'; @@ -11,16 +11,22 @@ import { useDispatch, useSelector } from 'react-redux'; import { updateInviteContactModal } from '../../state/ducks/modalDialog'; // tslint:disable-next-line: no-submodule-imports import useKey from 'react-use/lib/useKey'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +// import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; import { MemberListItem } from '../MemberListItem'; -import { BchatWrapperModal } from '../BchatWrapperModal'; +// import { BchatWrapperModal } from '../BchatWrapperModal'; import { getPrivateContactsPubkeys } from '../../state/selectors/conversations'; import { useConversationPropsById } from '../../hooks/useParamSelector'; import { useSet } from '../../hooks/useSet'; import { initiateClosedGroupUpdate } from '../../bchat/group/closed-group'; +// Define the ref type +export type onClickRef = { + onclick: () => void; +}; + type Props = { conversationId: string; + ref: onClickRef; }; // const submitFortxnDetails = async (conversationId: string, pubkeys: Array) => { @@ -55,7 +61,6 @@ type Props = { // }); // }; - const submitForOpenGroup = async (conversationId: string, pubkeys: Array) => { const completeUrl = await getCompleteUrlForV2ConvoId(conversationId); const convo = getConversationController().get(conversationId); @@ -84,7 +89,7 @@ const submitForOpenGroup = async (conversationId: string, pubkeys: Array }); }; -const submitForClosedGroup = async (convoId: string, pubkeys: Array) => { + const submitForClosedGroup = async (convoId: string, pubkeys: Array) => { const convo = getConversationController().get(convoId); if (!convo || !convo.isGroup()) { throw new Error('submitForClosedGroup group not found'); @@ -123,7 +128,7 @@ const submitForClosedGroup = async (convoId: string, pubkeys: Array) => }; // tslint:disable-next-line: max-func-body-length -const InviteContactsDialogInner = (props: Props) => { +const InviteContactsInner = forwardRef((props, ref) => { const { conversationId } = props; const dispatch = useDispatch(); @@ -149,17 +154,24 @@ const InviteContactsDialogInner = (props: Props) => { ); } - const chatName = convoProps.name; + // const chatName = convoProps.name; const isPublicConvo = convoProps.isPublic; const closeDialog = () => { dispatch(updateInviteContactModal(null)); }; + // Pass the ref to the useImperativeHandle hook + useImperativeHandle(ref, () => ({ + onclick: () => { + onClickOK(); + }, + })); + const onClickOK = () => { if (selectedContacts.length > 0) { if (isPublicConvo) { - void submitForOpenGroup(conversationId, selectedContacts); + void submitForOpenGroup(conversationId, selectedContacts); // submitFortxnDetails(conversationId, selectedContacts) } else { void submitForClosedGroup(conversationId, selectedContacts); @@ -177,16 +189,17 @@ const InviteContactsDialogInner = (props: Props) => { return event.key === 'Esc' || event.key === 'Escape'; }, closeDialog); - const unknown = window.i18n('unknown'); + // const unknown = window.i18n('unknown'); - const titleText = `${window.i18n('addingContacts', [chatName || unknown])}`; - const cancelText = window.i18n('cancel'); - const okText = window.i18n('ok'); + // const titleText = `${window.i18n('addingContacts', [chatName || unknown])}`; + // const cancelText = window.i18n('cancel'); + // const okText = window.i18n('ok'); const hasContacts = validContactsForInvite.length > 0; return ( - + <> + {/* */}
@@ -210,7 +223,7 @@ const InviteContactsDialogInner = (props: Props) => {
-
+ {/*
{ onClick={onClickOK} buttonColor={BchatButtonColor.Green} /> -
- +
*/} + + + // {/*
*/} ); -}; +}); -export const InviteContactsDialog = InviteContactsDialogInner; +export const InviteContact = InviteContactsInner; diff --git a/ts/components/conversation/StagedAttachmentList.tsx b/ts/components/conversation/StagedAttachmentList.tsx index ebd2c7aa..85cd3281 100644 --- a/ts/components/conversation/StagedAttachmentList.tsx +++ b/ts/components/conversation/StagedAttachmentList.tsx @@ -12,10 +12,11 @@ import { } from '../../types/Attachment'; import { useDispatch, useSelector } from 'react-redux'; import { - removeAllStagedAttachmentsInConversation, + // removeAllStagedAttachmentsInConversation, removeStagedAttachmentInConversation, } from '../../state/ducks/stagedAttachments'; import { getSelectedConversationKey } from '../../state/selectors/conversations'; +import { getTheme } from '../../state/selectors/theme'; type Props = { attachments: Array; @@ -23,21 +24,23 @@ type Props = { onAddAttachment: () => void; }; -const IMAGE_WIDTH = 120; +const IMAGE_WIDTH = 100; const IMAGE_HEIGHT = 120; export const StagedAttachmentList = (props: Props) => { const { attachments, onAddAttachment, onClickAttachment } = props; + const darkMode = useSelector(getTheme) === 'dark'; const dispatch = useDispatch(); const conversationKey = useSelector(getSelectedConversationKey); - const onRemoveAllStaged = () => { - if (!conversationKey) { - return; - } - dispatch(removeAllStagedAttachmentsInConversation({ conversationKey })); - }; + // before revamp design to call close all the attachment + // const onRemoveAllStaged = () => { + // if (!conversationKey) { + // return; + // } + // dispatch(removeAllStagedAttachmentsInConversation({ conversationKey })); + // }; const onRemoveByFilename = (filename: string) => { if (!conversationKey) { @@ -54,7 +57,7 @@ export const StagedAttachmentList = (props: Props) => { return (
- {attachments.length > 1 ? ( + {/* {attachments.length > 1 ? (
{ className="module-attachments__close-button" />
- ) : null} + ) : null} */}
- {(attachments || []).map((attachment, index) => { - const { contentType } = attachment; - if (isImageTypeSupported(contentType) || isVideoTypeSupported(contentType)) { - const imageKey = getUrl(attachment) || attachment.fileName || index; - const clickCallback = attachments.length > 1 ? onClickAttachment : undefined; +
+ {(attachments || []).map((attachment, index) => { + const { contentType } = attachment; + if (isImageTypeSupported(contentType) || isVideoTypeSupported(contentType)) { + const imageKey = getUrl(attachment) || attachment.fileName || index; + const clickCallback = attachments.length > 1 ? onClickAttachment : undefined; + + return ( + {window.i18n('stagedImageAttachment', { + onRemoveByFilename(attachment.fileName); + }} + /> + ); + } + + const genericKey = getUrl(attachment) || attachment.fileName || index; return ( - {window.i18n('stagedImageAttachment', { + onClose={() => { onRemoveByFilename(attachment.fileName); }} + /> ); - } - - const genericKey = getUrl(attachment) || attachment.fileName || index; - - return ( - { - onRemoveByFilename(attachment.fileName); - }} - /> - ); - })} - {allVisualAttachments ? : null} + })} +
+ {allVisualAttachments ? : null}
); diff --git a/ts/components/conversation/StagedLinkPreview.tsx b/ts/components/conversation/StagedLinkPreview.tsx index b090fad2..5f62c038 100644 --- a/ts/components/conversation/StagedLinkPreview.tsx +++ b/ts/components/conversation/StagedLinkPreview.tsx @@ -7,6 +7,7 @@ import { BchatSpinner } from '../basic/BchatSpinner'; import { StagedLinkPreviewImage } from './composition/CompositionBox'; import { isImage } from '../../types/MIME'; import { fromArrayBufferToBase64 } from '../../bchat/utils/String'; +import { BchatIcon } from '../icon'; type Props = { isLoaded: boolean; @@ -68,7 +69,9 @@ export const StagedLinkPreview = (props: Props) => { onClose(url || ''); }} aria-label={window.i18n('close')} - /> + > + +
); }; diff --git a/ts/components/conversation/StagedPlaceholderAttachment.tsx b/ts/components/conversation/StagedPlaceholderAttachment.tsx index 910ba8b4..9e5b0715 100644 --- a/ts/components/conversation/StagedPlaceholderAttachment.tsx +++ b/ts/components/conversation/StagedPlaceholderAttachment.tsx @@ -1,16 +1,42 @@ import React from 'react'; +// import { BchatIcon } from '../icon'; interface Props { onClick: () => void; + darkMode: boolean; } export class StagedPlaceholderAttachment extends React.Component { public render() { - const { onClick } = this.props; + const { onClick, darkMode } = this.props; return (
-
+ {/*
*/} + {/* */} + {/*
*/} + + + +
); } diff --git a/ts/components/conversation/Timestamp.tsx b/ts/components/conversation/Timestamp.tsx index 0e8da858..c44032db 100644 --- a/ts/components/conversation/Timestamp.tsx +++ b/ts/components/conversation/Timestamp.tsx @@ -44,7 +44,7 @@ export const Timestamp = (props: Props) => { const { timestamp, momentFromNow } = props; - if (timestamp === null || timestamp === undefined) { + if (timestamp === null || timestamp === undefined || timestamp === 0) { return null; } diff --git a/ts/components/conversation/WaveFormAudioPlayer.tsx b/ts/components/conversation/WaveFormAudioPlayer.tsx new file mode 100644 index 00000000..50673f6b --- /dev/null +++ b/ts/components/conversation/WaveFormAudioPlayer.tsx @@ -0,0 +1,145 @@ +import React, { useEffect, useRef, useState } from 'react'; +import WaveSurfer from 'wavesurfer.js'; +import { useEncryptedFileFetch } from '../../hooks/useEncryptedFileFetch'; +import { Flex } from '../basic/Flex'; +import { BchatIconButton } from '../icon'; +import { SpacerSM } from '../basic/Text'; +import { MessageModelType } from '../../models/messageType'; +import classNames from 'classnames'; +import { useSelector } from 'react-redux'; +import { getTheme } from '../../state/selectors/theme'; + +interface WaveFormAudioPlayerProps { + src: string; + contentType: string; + messageId: string; + direction: MessageModelType; +} + +const WaveFormAudioPlayerWithEncryptedFile: React.FC = props => { + const { contentType, src, direction } = props; + const { urlToLoad } = useEncryptedFileFetch(src, contentType, false); + const waveformRef = useRef(null); + + const waveSurferRef = useRef(null); + // const [wavesurfer, setWavesurfer] = useState(null); + const [isPlaying, setIsPlaying] = useState(false); + const [remainingTime, setRemainingTime] = useState('0.00'); + const [playbackSpeed, setPlaybackSpeed] = useState(1.0); + const darkMode = useSelector(getTheme) === 'dark'; + function validColor() { + const incomingColors = { + waveColor: darkMode ? '#647494' : '#ACACAC', + progressColor: '#2F8FFF', + cursorColor: '#2F8FFF', + }; + + const outgoingColors = { + waveColor: '#00AA2E', + progressColor: '#00DE16', + cursorColor: '#00DE16', + }; + + const colors = direction === 'incoming' ? incomingColors : outgoingColors; + // console.log(direction, { colors }); + return colors; + } + + useEffect(() => { + let surfer: any; + if (waveformRef.current) { + surfer = WaveSurfer.create({ + container: waveformRef.current, + + waveColor: validColor().waveColor, + progressColor: validColor().progressColor, + cursorColor: validColor().cursorColor, + + barWidth: 3, + barRadius: 1, // This is crucial for rounded bars + cursorWidth: 0, + height: 50, + barGap: 2, + barHeight: 2, + }); + + surfer.load(urlToLoad); + + surfer.on('ready', () => { + waveSurferRef.current = surfer; + const remainingTime = (surfer.getDuration() - surfer.getCurrentTime()) / 60; + setRemainingTime(remainingTime.toFixed(2)); + setPlaybackSpeed(surfer.getPlaybackRate()); + }); + surfer.on('play', () => { + setIsPlaying(true); + }); + + surfer.on('pause', () => { + setIsPlaying(false); + }); + + surfer.on('audioprocess', () => { + if (surfer.isPlaying()) { + const totalTime = surfer.getDuration(); + const currentTime = surfer.getCurrentTime(); + const remainingTime = (totalTime - currentTime) / 60; + if (remainingTime.toFixed(2) == '0.00') { + const remainingTime = (surfer.getDuration()) / 60; + setRemainingTime(remainingTime.toFixed(2)); + } else { + setRemainingTime(remainingTime.toFixed(2)); + } + } + }); + // setWavesurfer(surfer); + } + console.log('surfer', surfer) + return () => surfer.destroy(); + }, [urlToLoad]); + + const playAndPause = () => { + if (waveSurferRef.current) { + waveSurferRef.current.playPause(); + setIsPlaying(waveSurferRef.current.isPlaying()); + } + }; + + const playSpeed = () => { + if (waveSurferRef.current) { + let newSpeed = playbackSpeed >= 3 ? 1 : playbackSpeed + 1; + waveSurferRef.current.setPlaybackRate(newSpeed); + setPlaybackSpeed(newSpeed); + } + }; + + return ( +
+ + + +
+ {playbackSpeed}x +
+ +
+
{remainingTime}
+ {/* */} +
+
+ ); +}; + +export default WaveFormAudioPlayerWithEncryptedFile; diff --git a/ts/components/conversation/composition/CompositionBox.tsx b/ts/components/conversation/composition/CompositionBox.tsx index 9a62d4b7..6cad19c3 100644 --- a/ts/components/conversation/composition/CompositionBox.tsx +++ b/ts/components/conversation/composition/CompositionBox.tsx @@ -5,6 +5,7 @@ import * as MIME from '../../../types/MIME'; import { BchatEmojiPanel } from '../BchatEmojiPanel'; import { BchatRecording } from '../BchatRecording'; +import { CircularProgressbarWithChildren } from 'react-circular-progressbar'; import { getPreview, @@ -19,14 +20,17 @@ import { getMediaPermissionsSettings } from '../../settings/BchatSettings'; import { getDraftForConversation, updateDraftForConversation } from '../BchatConversationDrafts'; import { AddStagedAttachmentButton, - SendFundButton, + // SendFundButton, SendFundDisableButton, SendMessageButton, StartRecordingButton, } from './CompositionButtons'; import { AttachmentType } from '../../../types/Attachment'; import { connect } from 'react-redux'; -import { showLinkSharingConfirmationModalDialog } from '../../../interactions/conversationInteractions'; +import { + showLinkSharingConfirmationModalDialog, + unblockConvoById, +} from '../../../interactions/conversationInteractions'; import { getConversationController } from '../../../bchat/conversations'; import { ToastUtils } from '../../../bchat/utils'; import { ReduxConversationType } from '../../../state/ducks/conversations'; @@ -60,20 +64,32 @@ import { LinkPreviews } from '../../../util/linkPreviews'; import { SettingsKey, walletSettingsKey } from '../../../data/settings-key'; import { updateBchatAlertConfirmModal, + updateConfirmModal, + updateInsufficientBalanceModal, // updateBchatWalletPasswordModal, updateSendConfirmModal, updateTransactionInitModal, } from '../../../state/ducks/modalDialog'; -import { showLeftPaneSection } from '../../../state/ducks/section'; -import { BchatButtonColor } from '../../basic/BchatButton'; -import { getRescaning, getWalletSyncBarShowInChat } from '../../../state/selectors/walletConfig'; +import { SectionType, setOverlayMode, showLeftPaneSection } from '../../../state/ducks/section'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../../basic/BchatButton'; +import { + getHeight, + getRescaning, + getWalletSyncBarShowInChat, +} from '../../../state/selectors/walletConfig'; import { wallet } from '../../../wallet/wallet-rpc'; import { saveRecipientAddress } from '../../../data/data'; import { ConversationTypeEnum } from '../../../models/conversation'; import { pushToastError } from '../../../bchat/utils/Toast'; import { updateWalletPaymentDetailsSend } from '../../../state/ducks/walletConfig'; import { getBchatAlertConfirmModal } from '../../../state/selectors/modal'; - +import { BchatIcon } from '../../icon/BchatIcon'; +import { getdaemonHeight } from '../../../state/selectors/daemon'; +import ChangingProgressProvider from '../../basic/ChangingProgressProvider'; +import classNames from 'classnames'; +// import MicrophoneIcon from '../../icon/MicrophoneIcon'; +import { SpacerLG } from '../../basic/Text'; +import BeldexCoinLogo from '../../icon/BeldexCoinLogo'; export interface ReplyingToMessageProps { convoId: string; @@ -130,6 +146,8 @@ interface Props { onChoseAttachments: (newAttachments: Array) => void; walletDetails: any; BchatAlertConfirmModal: any; + walletHeight: any; + deamonHeight: any; } interface State { @@ -145,7 +163,7 @@ const sendMessageStyle = { control: {}, input: { overflow: 'auto', - maxHeight: '60px', + maxHeight: '80px', wordBreak: 'break-word', padding: '0px', margin: '0px', @@ -153,11 +171,11 @@ const sendMessageStyle = { highlighter: { boxSizing: 'border-box', overflow: 'hidden', - maxHeight: '40px', + maxHeight: '80px', }, flexGrow: 1, - maxHeight: '40px', + maxHeight: '80px', width: '100%', ...styleForCompositionBoxSuggestions, }; @@ -271,6 +289,26 @@ class CompositionBoxInner extends React.Component { div?.removeEventListener('paste', this.handlePaste); } + sendAmountValidation() { + const { selectedConversation, WalletSyncBarShowInChat, isMe } = this.props; + const { draft } = this.state; + const getSyncStatus = window.getSettingValue('syncStatus'); + const re = /^\d+\.?\d*$/; + + const results = + selectedConversation?.type === 'private' && + re.test(draft) && + // && (draft.length-1 - draft.indexOf(".")) < 4 + selectedConversation?.isApproved && + selectedConversation?.didApproveMe && + !selectedConversation?.isBlocked && + this.chatwithWallet && + WalletSyncBarShowInChat && + !isMe && + getSyncStatus && draft.length <= 16; + + return results; + } chatWithWalletInstruction() { const { WalletSyncBarShowInChat } = this.props; // if (this.chatwithWallet && !WalletSyncBarShowInChat) { @@ -282,7 +320,12 @@ class CompositionBoxInner extends React.Component { updateBchatAlertConfirmModal({ onClickOk: async () => { window.inboxStore?.dispatch(updateBchatAlertConfirmModal(null)); - window.inboxStore?.dispatch(showLeftPaneSection(3)); + window.inboxStore?.dispatch(showLeftPaneSection(SectionType.Settings)); + + // dispatch(setOverlayMode()); + window.inboxStore?.dispatch(setOverlayMode(undefined)); + // window.inboxStore?.dispatch(updateBchatAlertConfirmModal(null)); + // window.inboxStore?.dispatch(showLeftPaneSection(3)); // window.setSettingValue(SettingsKey.settingChatwithWalletInstruction,false); // forceUpdate(); }, @@ -294,7 +337,7 @@ class CompositionBoxInner extends React.Component { sendConfirmModal() { const messagePlaintext = cleanMentions(this.state.draft); - const priority = window.getSettingValue(walletSettingsKey.settingsPriority) || "Flash"; + const priority = window.getSettingValue(walletSettingsKey.settingsPriority) || 'Flash'; if (!this.props.selectedConversation?.walletAddress) { return pushToastError( @@ -322,7 +365,7 @@ class CompositionBoxInner extends React.Component { sendFund = async () => { const draft: any = this.state.draft; - const priority = window.getSettingValue(walletSettingsKey.settingsPriority) || "Flash"; + const priority = window.getSettingValue(walletSettingsKey.settingsPriority) || 'Flash'; if (draft == 0) { window.inboxStore?.dispatch(updateSendConfirmModal(null)); @@ -332,7 +375,10 @@ class CompositionBoxInner extends React.Component { if (draft > this.props.walletDetails.unlocked_balance / 1e9) { window.inboxStore?.dispatch(updateSendConfirmModal(null)); window.inboxStore?.dispatch(updateTransactionInitModal(null)); - return ToastUtils.pushToastError('notEnoughBalance', 'Not enough unlocked balance'); + // return ToastUtils.pushToastError('notEnoughBalance', 'Not enough unlocked balance..'); + return window.inboxStore?.dispatch(updateInsufficientBalanceModal(true)); + + } let decimalValue: any = window.getSettingValue(walletSettingsKey.settingsDecimal) || '2 - Two (0.00)'; @@ -343,22 +389,22 @@ class CompositionBoxInner extends React.Component { let transactionInitiatDetails: any = { message: { - messageType: "payment", + messageType: 'payment', props: { id: this.props.selectedConversation?.id, - acceptUrl: "", + acceptUrl: '', amount: this.state.draft, - direction: "outgoing", + direction: 'outgoing', isUnread: false, - messageId: "1234-567-7890", + messageId: '1234-567-7890', receivedAt: 1678799702674, - txnId: "", + txnId: '', }, showDateBreak: 1678799702809, showUnreadIndicator: false, - } - } + }, + }; window.inboxStore?.dispatch(updateWalletPaymentDetailsSend(transactionInitiatDetails)); let data: any = await wallet.transfer( this.props.selectedConversation?.walletAddress, @@ -392,7 +438,6 @@ class CompositionBoxInner extends React.Component { window.inboxStore?.dispatch(updateWalletPaymentDetailsSend(null)); if (privateConvo) { - void privateConvo.sendMessage({ body: '', attachments: undefined, @@ -405,8 +450,6 @@ class CompositionBoxInner extends React.Component { }, }); - - // Empty composition box and stagedAttachments this.setState({ showEmojiPanel: false, @@ -448,9 +491,8 @@ class CompositionBoxInner extends React.Component { public render() { return ( - - {this.renderStagedLinkPreview()} - {this.renderAttachmentsStaged()} + {/* {this.renderStagedLinkPreview()} */} + {/* {this.renderAttachmentsStaged()} */}
{this.renderCompositionView()}
); @@ -523,6 +565,27 @@ class CompositionBoxInner extends React.Component { } } + private percentageCalc() { + const { walletHeight, deamonHeight } = this.props; + let currentHeight = 0; + let valdatedDaemonHeight = 0; + const currentDaemon = window.getSettingValue(walletSettingsKey.settingsCurrentDeamon); + if (currentDaemon?.type === 'Local') { + currentHeight = Number(deamonHeight); + valdatedDaemonHeight = Number(walletHeight); + } else { + currentHeight = walletHeight; + valdatedDaemonHeight = deamonHeight; + } + let pct: any = + currentHeight == 0 || valdatedDaemonHeight == 0 + ? 0 + : ((100 * currentHeight) / valdatedDaemonHeight).toFixed(1); + + let percentage = pct == 100.0 && currentHeight < valdatedDaemonHeight ? 99.9 : pct; + return percentage; + } + private renderRecordingView() { return ( { private bchatWalletView() { const { selectedConversation, WalletSyncBarShowInChat } = this.props; - const { draft } = this.state; - // console.log('selectedConversation :: ', selectedConversation) - - const re = /^\d+\.?\d*$/; - // console.log('beldex btn ::', this.chatwithWallet && WalletSyncBarShowInChat,this.chatwithWallet , WalletSyncBarShowInChat) + // const { draft } = this.state; + // const re = /^\d+\.?\d*$/; return ( <> - {selectedConversation?.type === 'private' && selectedConversation?.isApproved - && selectedConversation?.didApproveMe - && re.test(draft) && + {selectedConversation?.type === 'private' && + selectedConversation?.isApproved && + selectedConversation?.didApproveMe && + !selectedConversation?.isBlocked && + // re.test(draft) && this.chatwithWallet && WalletSyncBarShowInChat ? ( - + <>{this.renderCurcularBar()} ) : ( this.chatWithWalletInstruction()} /> )} @@ -557,7 +619,7 @@ class CompositionBoxInner extends React.Component { // private sendMessageValidation() { // const { draft } = this.state; - // const re = /^\d+\.?\d*$/; + // const re = /^\d+\.?\d*$/; // const { selectedConversation, isMe, WalletSyncBarShowInChat ,walletSyncStatus} = this.props; // const getSyncStatus = window.getSettingValue('syncStatus'); @@ -566,7 +628,7 @@ class CompositionBoxInner extends React.Component { // selectedConversation?.type === 'private' && // re.test(draft) && // this.chatwithWallet && - // WalletSyncBarShowInChat + // WalletSyncBarShowInChat // ) { // this.sendConfirmModal(); // } else { @@ -574,79 +636,219 @@ class CompositionBoxInner extends React.Component { // } // } private sendButton() { - const { selectedConversation, WalletSyncBarShowInChat, isMe } = this.props; - const { draft } = this.state; - const getSyncStatus = window.getSettingValue('syncStatus'); - - const re = /^\d+\.?\d*$/; - // console.log('beldex btn ::', this.chatwithWallet && WalletSyncBarShowInChat,this.chatwithWallet , WalletSyncBarShowInChat) + // const { selectedConversation, WalletSyncBarShowInChat, isMe } = this.props; + // const { draft } = this.state; + // const getSyncStatus = window.getSettingValue('syncStatus'); + // const re = /^\d+\.?\d*$/; return ( <> - {selectedConversation?.type === 'private' && - re.test(draft) - // && (draft.length-1 - draft.indexOf(".")) < 4 - && selectedConversation?.isApproved - && selectedConversation?.didApproveMe - && - this.chatwithWallet && - WalletSyncBarShowInChat && - !isMe && getSyncStatus ? ( - this.sendConfirmModal()} /> - ) : ( - this.onSendMessage()} /> + {/* {selectedConversation?.type === 'private' && + re.test(draft) && + // && (draft.length-1 - draft.indexOf(".")) < 4 + selectedConversation?.isApproved && + selectedConversation?.didApproveMe && + !selectedConversation?.isBlocked && + this.chatwithWallet && + WalletSyncBarShowInChat && + !isMe && + getSyncStatus ? ( */} + {/* {this.sendAmountValidation() ? ( + this.sendConfirmModal()} /> + ) : */} + + this.onSendMessage()} />{/* } */} + + ); + } + private renderCurcularBar(ispopover?: boolean) { + // console.log('this.percentageCalc() ----->', this.percentageCalc()); + const pathColor = this.percentageCalc() !== 0 ? '#108D32' : '#FDB12A'; + return ( + + {() => ( + + {/* Put any JSX content in here that you'd like. It'll be vertically and horizonally centered. */} + + {ispopover ? ( + {Math.floor(this.percentageCalc())}% + ) : ( + + )} + )} - + + ); + } + deleteContact() { + const convoId: any = this.props.selectedConversationKey; + window?.inboxStore?.dispatch( + updateConfirmModal({ + title: window.i18n('editMenuDeleteContact'), + message: 'Permanently delete the Contact?', + onClickClose: () => window?.inboxStore?.dispatch(updateConfirmModal(null)), + onClickOk: async () => { + await getConversationController().deleteContact(convoId); + }, + okText: 'Delete', + okTheme: BchatButtonColor.Danger, + }) ); } + private renderBlockedContactBottoms() { + const convoId: any = this.props.selectedConversationKey; + return ( + + this.deleteContact()} + /> + + unblockConvoById(convoId)} + /> + + ); + } private renderCompositionView() { const { showEmojiPanel } = this.state; - const { typingEnabled } = this.props; - const { selectedConversation, isMe } = this.props; - // const {WalletSyncBarShowInChat}=this.props - // console.log('isMe ::',selectedConversation?.isPrivate && !isMe,selectedConversation?.isPrivate,isMe); + const { typingEnabled, stagedAttachments } = this.props; + const { selectedConversation, isMe, WalletSyncBarShowInChat } = this.props; + const { draft } = this.state; + const syncStatus = + this.percentageCalc() === 0 + ? 'Scanning..' + : this.percentageCalc() > 0 && this.percentageCalc() < 98 + ? 'Syncronizing..' + : 'Synchronized'; + + // console.log( + // 'stagedAttachments.length!==0 --> ', + // stagedAttachments.length !== 0, + // draft || stagedAttachments.length !== 0, + // 'typingEnabled', + // typingEnabled && (draft || stagedAttachments.length !== 0) + // ); + // const {WalletSyncBarShowInChat}=this.props return ( <> - {typingEnabled && } - - - - {this.state.showRecordingView ? ( - this.renderRecordingView() + {selectedConversation?.isBlocked ? ( + this.renderBlockedContactBottoms() ) : ( <> -
{ - this.container = el; - }} - data-testid="message-input" - > - { } - {this.renderTextArea()} - {selectedConversation?.isPrivate && typingEnabled && !isMe ? this.bchatWalletView() : ''} - {typingEnabled && } -
- {this.sendButton()} - - )} - {typingEnabled && ( -
- {showEmojiPanel && ( - + {typingEnabled && } + + + + {this.state.showRecordingView && typingEnabled ? ( + this.renderRecordingView() + ) : ( + <> +
{ + this.container = el; + }} + data-testid="message-input" + > + + + {this.renderStagedLinkPreview()} + {this.renderAttachmentsStaged()} + + + {this.renderTextArea()} + +
+ {selectedConversation?.isPrivate && typingEnabled && !isMe + ? this.bchatWalletView() + : ''} +
+
+
+ Wallet {syncStatus} +
+
{this.renderCurcularBar(true)}
+
+ {this.sendAmountValidation() && ( +
this.sendConfirmModal()}> +
+ Tap to send {draft} BDX{' '} + +
+
+ )} +
+
+ {typingEnabled && (draft || stagedAttachments.length !== 0) ? ( +
{this.sendButton()}
+ ) : ( + + )} + )} -
+ {typingEnabled && ( +
+ {showEmojiPanel && ( + + )} +
+ )} + )} ); @@ -960,6 +1162,7 @@ class CompositionBoxInner extends React.Component { private renderAttachmentsStaged() { const { stagedAttachments } = this.props; const { showCaptionEditor } = this.state; + if (stagedAttachments && stagedAttachments.length) { return ( <> @@ -1008,15 +1211,26 @@ class CompositionBoxInner extends React.Component { // If shift, newline. If in IME composing mode, leave it to IME. Else send message. event.preventDefault(); // await this.onSendMessage(); - const { selectedConversation, WalletSyncBarShowInChat, isMe, BchatAlertConfirmModal } = this.props; + const { + selectedConversation, + WalletSyncBarShowInChat, + isMe, + BchatAlertConfirmModal, + } = this.props; const getSyncStatus = window.getSettingValue('syncStatus'); const { draft } = this.state; const re = /^\d+\.?\d*$/; // const { WalletSyncBarShowInChat } = this.props; - if (selectedConversation?.type === 'private' - && re.test(draft) && this.chatwithWallet && selectedConversation?.isApproved && selectedConversation?.didApproveMe - && WalletSyncBarShowInChat && - !isMe && getSyncStatus) { + if ( + selectedConversation?.type === 'private' && + re.test(draft) && + this.chatwithWallet && + selectedConversation?.isApproved && + selectedConversation?.didApproveMe && + WalletSyncBarShowInChat && + !isMe && + getSyncStatus + ) { await this.sendConfirmModal(); } else { if (!BchatAlertConfirmModal) { @@ -1192,7 +1406,15 @@ class CompositionBoxInner extends React.Component { if (!this.state.showRecordingView) { return; } - + const { selectedConversation } = this.props; + if (selectedConversation?.isBlocked && selectedConversation?.isPrivate) { + ToastUtils.pushUnblockToSend(); + return; + } + if (selectedConversation?.isBlocked && !selectedConversation?.isPrivate) { + ToastUtils.pushUnblockToSendGroup(); + return; + } const savedAudioFile = await processNewAttachment({ data: await audioBlob.arrayBuffer(), isRaw: true, @@ -1225,7 +1447,31 @@ class CompositionBoxInner extends React.Component { private async onLoadVoiceNoteView() { if (!getMediaPermissionsSettings()) { - ToastUtils.pushAudioPermissionNeeded(); + window.inboxStore?.dispatch( + updateConfirmModal({ + title: window.i18n('audioPermissionNeededTitle'), + message: window.i18n('audioPermissionNeeded'), + okText: window.i18n('allow'), + cancelText: window.i18n('deny'), + okTheme: BchatButtonColor.Primary, + onClickOk: async () => { + await window.toggleMediaPermissions(); + // this.forceUpdate(); + window.inboxStore?.dispatch(updateConfirmModal(null)); + }, + closeAfterInput: false, + iconShow: true, + customIcon: ( + + ), + }) + ); return; } this.setState({ @@ -1302,6 +1548,8 @@ const mapStateToProps = (state: StateType) => { walletSyncStatus: getRescaning(state), walletDetails: state.wallet, BchatAlertConfirmModal: getBchatAlertConfirmModal(state), + deamonHeight: getdaemonHeight(state), + walletHeight: getHeight(state), }; }; diff --git a/ts/components/conversation/composition/CompositionButtons.tsx b/ts/components/conversation/composition/CompositionButtons.tsx index 596e9d25..db598d58 100644 --- a/ts/components/conversation/composition/CompositionButtons.tsx +++ b/ts/components/conversation/composition/CompositionButtons.tsx @@ -1,28 +1,32 @@ import React from 'react'; -import { BchatIconButton } from '../../icon'; +import { BchatIcon, BchatIconButton } from '../../icon'; import { BchatToolTip } from '../../leftpane/ActionsPanel'; +import MicrophoneIcon from '../../icon/MicrophoneIcon'; +import { CustomIconButton } from '../../icon/CustomIconButton'; -export const AddStagedAttachmentButton = ( - props: { onClick: () => void } - ) => { +export const AddStagedAttachmentButton = (props: { onClick: () => void }) => { return ( -
- - - - +
+ +
); }; export const StartRecordingButton = (props: { onClick: () => void }) => { return ( - + + //
+ } onClick={props.onClick} /> ); @@ -44,75 +48,65 @@ export const ToggleEmojiButton = React.forwardRef void,name?:string }) => { +export const SendMessageButton = (props: { onClick: () => void; name?: string}) => { return ( -
- {props.name==="Send"? - : - - } -
{props.name}
-
+
+ {/* {props.name === 'Send' ? ( */} + + {/* ) */} + {/* : ( + + )} +
{props.name}
*/} +
); }; -export const SendFundButton = (props:any) => { +// export const SendFundButton = (props: any) => { +// return ( +//
+// {/* */} +//
+// +//
+//
+// ); +// }; +export const SendFundDisableButton = (props: { onClick: () => void }) => { return ( -
+
- - {/* */} -
- - +
-
+
); }; -export const SendFundDisableButton = (props: { onClick: () => void}) => { - return ( -
- - {/* */} -
- - -
-
- ); -}; \ No newline at end of file diff --git a/ts/components/conversation/media-gallery/MediaGallery.tsx b/ts/components/conversation/media-gallery/MediaGallery.tsx index b6544962..17e73513 100644 --- a/ts/components/conversation/media-gallery/MediaGallery.tsx +++ b/ts/components/conversation/media-gallery/MediaGallery.tsx @@ -4,10 +4,12 @@ import classNames from 'classnames'; import { AttachmentSection } from './AttachmentSection'; import { EmptyState } from './EmptyState'; import { MediaItemType } from '../../lightbox/LightboxGallery'; +import { SpacerMD} from '../../basic/Text'; type Props = { documents: Array; media: Array; + fullView: boolean; }; type TabType = 'media' | 'documents'; @@ -56,7 +58,7 @@ const Sections = (props: Props & { selectedTab: TabType }) => { export const MediaGallery = (props: Props) => { const [selectedTab, setSelectedTab] = useState('media'); - + const { fullView } = props; const isDocumentSelected = selectedTab === 'documents'; const isMediaSelected = selectedTab === 'media'; @@ -70,14 +72,18 @@ export const MediaGallery = (props: Props) => { return (
-
- - -
+ {fullView && ( +
+ + + +
+ )} +
diff --git a/ts/components/conversation/message/message-content/ClickToTrustSender.tsx b/ts/components/conversation/message/message-content/ClickToTrustSender.tsx index 9b0c3d67..eccaca40 100644 --- a/ts/components/conversation/message/message-content/ClickToTrustSender.tsx +++ b/ts/components/conversation/message/message-content/ClickToTrustSender.tsx @@ -5,21 +5,70 @@ import { getConversationController } from '../../../../bchat/conversations'; import { AttachmentDownloads } from '../../../../bchat/utils'; import { updateConfirmModal } from '../../../../state/ducks/modalDialog'; import { BchatButtonColor } from '../../../basic/BchatButton'; -import { BchatIcon } from '../../../icon'; +import { BchatIcon, BchatIconType } from '../../../icon'; +import { Flex } from '../../../basic/Flex'; +import { PropsForAttachment } from '../../../../state/ducks/conversations'; +import { isAudio, isImage, isVideo } from '../../../../types/Attachment'; const StyledTrustSenderUI = styled.div` padding-inline: var(--margins-sm); display: flex; align-items: center; + margin: 15px 15px 5px; + padding: 15px; + border-radius: 16px; + background: var(--color-untrust-media-bg); `; const ClickToDownload = styled.div` cursor: pointer; - padding: var(--margins-xs) var(--margins-md); + // padding: var(--margins-xs) var(--margins-md); white-space: nowrap; + overflow: hidden; + // color: #f0f0f0; + text-overflow: ellipsis; + font-size: 16px; + font-weight: 300; `; -export const ClickToTrustSender = (props: { messageId: string }) => { +const VerticalLine = styled.div` + width: 5px; + background-color: var(--color-untrusted-vertical-bar); + height: 60px; + border-radius: 10px; + margin-right: 10px; +`; +const ImageTxt = styled.span` + margin-left: 5px; + // color: #f0f0f0; + font-family: Poppins; + font-size: 16px; + font-weight: 600; +`; +interface AttachmentTypeProps { + txt: string; + icon: BchatIconType; +} +export const ClickToTrustSender =(props: { messageId: string, attachments: Array }) => { +const {attachments}=props; + +const attachmentProps: { [key: string]: AttachmentTypeProps } = { + image: { txt: "Image", icon: "gallery" }, + audio: { txt: "Audio", icon: "audio" }, + video: { txt: "Video", icon: "video" }, + document: { txt: "Document", icon: "document" } +}; + +const getAttachmentType = (attachments: any): AttachmentTypeProps => { + if (isImage(attachments)) return attachmentProps.image; + if (isAudio(attachments)) return attachmentProps.audio; + if (isVideo(attachments)) return attachmentProps.video; + return attachmentProps.document; +}; + +const attachmentType: AttachmentTypeProps = getAttachmentType(attachments); + + const openConfirmationModal = async (e: any) => { e.stopPropagation(); e.preventDefault(); @@ -38,7 +87,10 @@ export const ClickToTrustSender = (props: { messageId: string }) => { message: window.i18n('trustThisContactDialogDescription', [ convo.getContactProfileNameOrShortenedPubKey(), ]), - okTheme: BchatButtonColor.Green, + okTheme: BchatButtonColor.Primary, + okText: window.i18n('autoUpdateDownloadButtonLabel'), + iconShow: true, + customIcon: , onClickOk: async () => { convo.set({ isTrustedForAttachmentDownload: true }); await convo.commit(); @@ -81,12 +133,12 @@ export const ClickToTrustSender = (props: { messageId: string }) => { const image = message.isTrustedForAttachmentDownload() ? await AttachmentDownloads.addJob(item.image, { - messageId: message.id, - type: 'preview', - index, - isOpenGroupV2: false, - openGroupV2Details: undefined, - }) + messageId: message.id, + type: 'preview', + index, + isOpenGroupV2: false, + openGroupV2Details: undefined, + }) : null; return { ...item, image }; @@ -106,8 +158,14 @@ export const ClickToTrustSender = (props: { messageId: string }) => { return ( - - {window.i18n('clickToTrustContact')} + + + + + {attachmentType.txt} + + {window.i18n('clickToTrustContact')} + ); }; diff --git a/ts/components/conversation/message/message-content/MessageAttachment.tsx b/ts/components/conversation/message/message-content/MessageAttachment.tsx index b831d0a0..d732385e 100644 --- a/ts/components/conversation/message/message-content/MessageAttachment.tsx +++ b/ts/components/conversation/message/message-content/MessageAttachment.tsx @@ -26,10 +26,12 @@ import { } from '../../../../types/Attachment'; import { saveAttachmentToDisk } from '../../../../util/attachmentsUtil'; import { Spinner } from '../../../basic/Spinner'; -import { AudioPlayerWithEncryptedFile } from '../../H5AudioPlayer'; +// import { AudioPlayerWithEncryptedFile } from '../../H5AudioPlayer'; import { ImageGrid } from '../../ImageGrid'; import { LightBoxOptions } from '../../BchatConversation'; import { ClickToTrustSender } from './ClickToTrustSender'; +import WaveFormAudioPlayerWithEncryptedFile from '../../WaveFormAudioPlayer'; +// import { useEncryptedFileFetch } from '../../../../hooks/useEncryptedFileFetch'; export type MessageAttachmentSelectorProps = Pick< MessageRenderingProps, @@ -46,13 +48,14 @@ export type MessageAttachmentSelectorProps = Pick< type Props = { messageId: string; imageBroken: boolean; + displayBgBlur:boolean; handleImageError: () => void; }; // tslint:disable: use-simple-attributes // tslint:disable-next-line max-func-body-length cyclomatic-complexity export const MessageAttachment = (props: Props) => { - const { messageId, imageBroken, handleImageError } = props; + const { messageId, imageBroken, handleImageError,displayBgBlur } = props; const dispatch = useDispatch(); const attachmentProps = useSelector(state => getMessageAttachmentProps(state as any, messageId)); @@ -111,7 +114,7 @@ export const MessageAttachment = (props: Props) => { const displayImage = canDisplayImage(attachments); if (!isTrustedForAttachmentDownload) { - return ; + return ; } if ( @@ -120,16 +123,21 @@ export const MessageAttachment = (props: Props) => { ((isImage(attachments) && hasImage(attachments)) || (isVideo(attachments) && hasVideoScreenshot(attachments))) ) { + // const { loading, urlToLoad } = useEncryptedFileFetch(attachments[0]?.url || '', attachments[0]?.contentType, false); + // // data will be url if loading is finished and '' if not + // const srcData = !loading ? urlToLoad : ''; + // console.log('message__attachment ::',srcData,'displayBgBlur -->',displayBgBlur) return ( -
+
); - } else if (!firstAttachment.pending && !firstAttachment.error && isAudio(attachments)) { + } else if ( !firstAttachment.pending && !firstAttachment.error && isAudio(attachments)) { return (
{ }} style={{ padding: '5px 10px' }} > - + {/* + /> */}
); } else { @@ -154,7 +165,7 @@ export const MessageAttachment = (props: Props) => { const extension = getExtensionForDisplay({ contentType, fileName }); return ( -
+
{pending ? (
@@ -174,7 +185,7 @@ export const MessageAttachment = (props: Props) => {
)} -
+
{ updateConfirmModal({ title: window.i18n('linkVisitWarningTitle'), message: window.i18n('linkVisitWarningMessage', url), - okText: window.i18n('open'), + okText: window.i18n('openLink'), cancelText: window.i18n('editMenuCopy'), showExitIcon: true, - okTheme:BchatButtonColor.Green, + iconShow: true, + customIcon: , + okTheme: BchatButtonColor.Primary, onClickOk: openLink, onClickClose: () => { dispatch(updateConfirmModal(null)); @@ -169,6 +172,8 @@ const Linkify = (props: LinkifyProps): JSX.Element => { onClickCancel: () => { MessageInteraction.copyBodyToClipboard(url); }, + okIcon: { icon: "openLinkBtn", size: 20 }, + cancelIcon: { icon: "copy", size: 20 } }) ); }, []); diff --git a/ts/components/conversation/message/message-content/MessageContent.tsx b/ts/components/conversation/message/message-content/MessageContent.tsx index 75f10da7..38635747 100644 --- a/ts/components/conversation/message/message-content/MessageContent.tsx +++ b/ts/components/conversation/message/message-content/MessageContent.tsx @@ -11,23 +11,24 @@ import { getQuotedMessageToAnimate, getShouldHighlightMessage, } from '../../../../state/selectors/conversations'; -import { - canDisplayImage, - getGridDimensions, - getImageDimensionsInAttachment, - hasImage, - hasVideoScreenshot, - isImage, - isImageAttachment, - isVideo, -} from '../../../../types/Attachment'; +// import { +// canDisplayImage, +// // getGridDimensions, +// // getImageDimensionsInAttachment, +// hasImage, +// hasVideoScreenshot, +// isImage, +// isImageAttachment, +// isVideo, +// } from '../../../../types/Attachment'; import { Flex } from '../../../basic/Flex'; -import { MINIMUM_LINK_PREVIEW_IMAGE_WIDTH } from '../message-item/Message'; +// import { MINIMUM_LINK_PREVIEW_IMAGE_WIDTH } from '../message-item/Message'; import { MessageAttachment } from './MessageAttachment'; import { MessagePreview } from './MessagePreview'; import { MessageQuote } from './MessageQuote'; import { MessageText } from './MessageText'; import { ScrollToLoadedMessageContext } from '../../BchatMessagesListContainer'; +import { SpacerXS } from '../../../basic/Text'; export type MessageContentSelectorProps = Pick< MessageRenderingProps, @@ -47,39 +48,39 @@ type Props = { isDetailView?: boolean; }; -function getIsShowingImage( - props: Pick & { imageBroken: boolean } -): boolean { - const { attachments, previews, text, imageBroken } = props; +// function getIsShowingImage( +// props: Pick & { imageBroken: boolean } +// ): boolean { +// const { attachments, previews, text, imageBroken } = props; - if (imageBroken) { - return false; - } +// if (imageBroken) { +// return false; +// } - if (attachments && attachments.length) { - const displayImage = canDisplayImage(attachments); - const hasText = text?.length; - return Boolean( - displayImage && - !hasText && - ((isImage(attachments) && hasImage(attachments)) || - (isVideo(attachments) && hasVideoScreenshot(attachments))) - ); - } +// if (attachments && attachments.length) { +// const displayImage = canDisplayImage(attachments); +// const hasText = text?.length; +// return Boolean( +// displayImage && +// !hasText && +// ((isImage(attachments) && hasImage(attachments)) || +// (isVideo(attachments) && hasVideoScreenshot(attachments))) +// ); +// } - if (previews && previews.length) { - const first = previews[0]; - const { image } = first; +// if (previews && previews.length) { +// const first = previews[0]; +// const { image } = first; - if (!image) { - return false; - } +// if (!image) { +// return false; +// } - return isImageAttachment(image); - } +// return isImageAttachment(image); +// } - return false; -} +// return false; +// } function onClickOnMessageInnerContainer(event: React.MouseEvent) { const selection = window.getSelection(); @@ -162,24 +163,27 @@ export const MessageContent = (props: Props) => { firstMessageOfSeries, lastMessageOfSeries, previews, - quote, - attachments, + // quote, + attachments=[], } = contentProps; const selectedMsg = useSelector(state => getMessageTextProps(state as any, props.messageId)); - let isDeleted = false; if (selectedMsg && selectedMsg.isDeleted !== undefined) { isDeleted = selectedMsg.isDeleted; } - const width = getWidth({ previews, attachments }); - const isShowingImage = getIsShowingImage({ attachments, imageBroken, previews, text }); + // const width = getWidth({ previews, attachments }); + // console.log('width --->',width); + // const isShowingImage = getIsShowingImage({ attachments, imageBroken, previews, text }); const hasText = Boolean(text); - const hasQuote = !isEmpty(quote); + // const hasQuote = !isEmpty(quote); + const hasAttachment=attachments.length>0; const hasContentAfterAttachmentAndQuote = !isEmpty(previews) || !isEmpty(text); - const bgShouldBeTransparent = isShowingImage && !hasText && !hasQuote; + // console.log('isShowingImage->',isShowingImage,'hasText->',hasText,'hasQuote',hasQuote,'attachments->',hasAttachment) + + // const bgShouldBeTransparent = isShowingImage && !hasText && !hasQuote; const toolTipTitle = moment(serverTimestamp || timestamp).format('llll'); return ( @@ -187,9 +191,10 @@ export const MessageContent = (props: Props) => { className={classNames( 'module-message__container', `module-message__container--${direction}`, - bgShouldBeTransparent - ? `module-message__container--${direction}--transparent` - : `module-message__container--${direction}--opaque`, + // bgShouldBeTransparent + // ? `module-message__container--${direction}--transparent` + // : + `module-message__container--${direction}--opaque`, firstMessageOfSeries || props.isDetailView ? `module-message__container--${direction}--first-of-series` : '', @@ -198,9 +203,9 @@ export const MessageContent = (props: Props) => { : '', flashGreen && 'flash-green-once' )} - style={{ - width: isShowingImage ? width : undefined, - }} + // style={{ + // width: isShowingImage ? width : undefined, + // }} role="button" onClick={onClickOnMessageInnerContainer} title={toolTipTitle} @@ -220,52 +225,57 @@ export const MessageContent = (props: Props) => { messageId={props.messageId} imageBroken={imageBroken} handleImageError={handleImageError} + displayBgBlur={hasAttachment && hasText} /> )} {hasContentAfterAttachmentAndQuote ? ( <> {!isDeleted && ( - + )} - + {/* attachment-with-quote class is used to only refer the design validation in css */} + ) : null} + +
{moment(timestamp).format('hh:mm A')}
+
); }; -function getWidth( - props: Pick -): number | undefined { - const { attachments, previews } = props; - - if (attachments && attachments.length) { - const dimensions = getGridDimensions(attachments); - if (dimensions) { - return dimensions.width; - } - } - - if (previews && previews.length) { - const first = previews[0]; - - if (!first || !first.image) { - return; - } - const { width } = first.image; - - if (isImageAttachment(first.image) && width && width >= MINIMUM_LINK_PREVIEW_IMAGE_WIDTH) { - const dimensions = getImageDimensionsInAttachment(first.image); - if (dimensions) { - return dimensions.width; - } - } - } - - return; -} +// function getWidth( +// props: Pick +// ): number | undefined { +// const { attachments, previews } = props; + +// if (attachments && attachments.length) { +// const dimensions = getGridDimensions(attachments); +// if (dimensions) { +// return dimensions.width; +// } +// } + +// if (previews && previews.length) { +// const first = previews[0]; + +// if (!first || !first.image) { +// return; +// } +// const { width } = first.image; + +// if (isImageAttachment(first.image) && width && width >= MINIMUM_LINK_PREVIEW_IMAGE_WIDTH) { +// const dimensions = getImageDimensionsInAttachment(first.image); +// if (dimensions) { +// return dimensions.width; +// } +// } +// } + +// return; +// } diff --git a/ts/components/conversation/message/message-content/MessageContentWithStatus.tsx b/ts/components/conversation/message/message-content/MessageContentWithStatus.tsx index 47963474..353a9717 100644 --- a/ts/components/conversation/message/message-content/MessageContentWithStatus.tsx +++ b/ts/components/conversation/message/message-content/MessageContentWithStatus.tsx @@ -31,7 +31,6 @@ export const MessageContentWithStatuses = (props: Props) => { getMessageContentWithStatusesSelectorProps(state as any, props.messageId) ); const dispatch = useDispatch(); -// console.log('MessageContentWithStatuses ::',contentProps,props) const multiSelectMode = useSelector(isMessageSelectionMode); const onClickOnMessageOuterContainer = useCallback( @@ -68,8 +67,6 @@ export const MessageContentWithStatuses = (props: Props) => { return null; } const { direction, isDeleted, hasAttachments, isTrustedForAttachmentDownload } = contentProps; - // console.log("isDeleted isDeleted::",isDeleted); - const isIncoming = direction === 'incoming'; return ( @@ -82,20 +79,22 @@ export const MessageContentWithStatuses = (props: Props) => { data-testid={dataTestId} > +
+ {!isDeleted && }
); diff --git a/ts/components/conversation/message/message-content/MessageContextMenu.tsx b/ts/components/conversation/message/message-content/MessageContextMenu.tsx index 3cab4c06..8ca0d343 100644 --- a/ts/components/conversation/message/message-content/MessageContextMenu.tsx +++ b/ts/components/conversation/message/message-content/MessageContextMenu.tsx @@ -17,11 +17,15 @@ import { import { MessageRenderingProps } from '../../../../models/messageType'; import { pushUnblockToSend } from '../../../../bchat/utils/Toast'; import { - showMessageDetailsView, + // MessagePropsDetails, + // showMessageDetailsView, toggleSelectedMessageId, } from '../../../../state/ducks/conversations'; import { getMessageContextMenuProps } from '../../../../state/selectors/conversations'; import { saveAttachmentToDisk } from '../../../../util/attachmentsUtil'; +import { BchatIcon } from '../../../icon'; +import CopyIcon from '../../../icon/CopyIcon'; +import { updateMessageMoreInfoModal } from '../../../../state/ducks/modalDialog'; export type MessageContextMenuSelectorProps = Pick< MessageRenderingProps, @@ -91,7 +95,8 @@ export const MessageContextMenu = (props: Props) => { const found = await getMessageById(messageId); if (found) { const messageDetailsProps = await found.getPropsForMessageDetail(); - dispatch(showMessageDetailsView(messageDetailsProps)); + // dispatch(showMessageDetailsView(messageDetailsProps)); + dispatch(updateMessageMoreInfoModal(messageDetailsProps)); } else { window.log.warn(`Message ${messageId} not found in db`); } @@ -183,28 +188,45 @@ export const MessageContextMenu = (props: Props) => { animation={animation.fade} > {attachments?.length ? ( - {window.i18n('downloadAttachment')} + + + {window.i18n('downloadAttachment')} + ) : null} - - {window.i18n('copyMessage')} - {(isSent || !isOutgoing) && {window.i18n('replyToMessage')}} + {!attachments?.length && + + + {window.i18n('copyMessage')} + } + {(isSent || !isOutgoing) && ( + + + {window.i18n('replyToMessage')} + + )} {(!isPublic || isOutgoing) && ( - {window.i18n('moreInformation')} + + + {window.i18n('moreInformation')} )} - {showRetry ? {window.i18n('resend')} : null} + {showRetry ? + {window.i18n('resend')} : null} {isDeletable ? ( <> - {selectMessageText} + + {selectMessageText} ) : null} {isDeletable && !isPublic ? ( <> - {deleteMessageJustForMeText} + + {deleteMessageJustForMeText} ) : null} {isDeletableForEveryone ? ( <> - {unsendMessageText} + + {unsendMessageText} ) : null} {weAreAdmin && isPublic ? {window.i18n('banUser')} : null} @@ -220,3 +242,6 @@ export const MessageContextMenu = (props: Props) => { ); }; + + + diff --git a/ts/components/conversation/message/message-content/MessagePreview.tsx b/ts/components/conversation/message/message-content/MessagePreview.tsx index f438f9fd..9d47b82e 100644 --- a/ts/components/conversation/message/message-content/MessagePreview.tsx +++ b/ts/components/conversation/message/message-content/MessagePreview.tsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import React from 'react'; import { isImageAttachment } from '../../../../types/Attachment'; -import { ImageGrid } from '../../ImageGrid'; +// import { ImageGrid } from '../../ImageGrid'; import { Image } from '../../Image'; import { MessageRenderingProps } from '../../../../models/messageType'; import { useSelector } from 'react-redux'; @@ -14,6 +14,7 @@ export type MessagePreviewSelectorProps = Pick void; messageId: string; + direction: String }; export const MessagePreview = (props: Props) => { @@ -36,7 +37,6 @@ export const MessagePreview = (props: Props) => { if (!first) { return null; } - const previewHasImage = first.image && isImageAttachment(first.image); const width = first.image && first.image.width; const isFullSizeImage = width && width >= MINIMUM_LINK_PREVIEW_IMAGE_WIDTH; @@ -44,9 +44,22 @@ export const MessagePreview = (props: Props) => { return (
{first.image && previewHasImage && isFullSizeImage ? ( - - ) : null} -
+ // + {window.i18n('previewThumbnail', + ) : +
+ +
+ } +
{first.image && previewHasImage && !isFullSizeImage ? (
{ ) : !first.image || !previewHasImage ? (
-
+ {/*
-
+
*/}
) : null} @@ -76,8 +89,8 @@ export const MessagePreview = (props: Props) => { : null )} > -
{first.title}
-
{first.domain}
+
{first.title}
+
{first.domain}
diff --git a/ts/components/conversation/message/message-content/MessageStatus.tsx b/ts/components/conversation/message/message-content/MessageStatus.tsx index 9c6d917b..4c2faee0 100644 --- a/ts/components/conversation/message/message-content/MessageStatus.tsx +++ b/ts/components/conversation/message/message-content/MessageStatus.tsx @@ -8,29 +8,27 @@ type Props = { isCorrectSide: boolean; messageId: string; dataTestId?: string; + }; export type MessageStatusSelectorProps = Pick; export const MessageStatus = (props: Props) => { const { isCorrectSide, dataTestId } = props; - const selected = useSelector(state => getMessageStatusProps(state as any, props.messageId)); if (!selected) { + return null; } - // console.log('MessageStatusMessageStatus ::',selected) const { status, direction } = selected; - if (!isCorrectSide) { return null; } const isIncoming = direction === 'incoming'; - + const margin=isIncoming?{marginLeft:'10px'}:{marginRight:'10px'} const showStatus = !isIncoming && Boolean(status); if (!showStatus) { return null; } - - return ; + return ; }; diff --git a/ts/components/conversation/message/message-content/OutgoingMessageStatus.tsx b/ts/components/conversation/message/message-content/OutgoingMessageStatus.tsx index 092b1b71..cc80590c 100644 --- a/ts/components/conversation/message/message-content/OutgoingMessageStatus.tsx +++ b/ts/components/conversation/message/message-content/OutgoingMessageStatus.tsx @@ -3,40 +3,46 @@ import React from 'react'; import styled from 'styled-components'; import { MessageDeliveryStatus } from '../../../../models/messageType'; import { BchatIcon } from '../../../icon'; +import { useSelector } from 'react-redux'; +import { getTheme } from '../../../../state/selectors/theme'; const MessageStatusSendingContainer = styled.div` display: inline-block; - align-self: flex-end; + // align-self: flex-end; margin-bottom: 2px; margin-inline-start: 5px; cursor: pointer; `; const MessageStatusSending = ({ dataTestId }: { dataTestId?: string }) => { - const iconColor = 'var(--color-text)'; + const darkMode = useSelector(getTheme) === 'dark'; + const imgsrc=darkMode?'images/bchat/message_send_loading_dark_theme.gif':'images/bchat/message_send_loading_white_theme.gif'; + return ( - + {/* */} +
+ +
); }; const MessageStatusSent = ({ dataTestId }: { dataTestId?: string }) => { - const iconColor = 'var(--color-text)'; - + return ( - + ); }; const MessageStatusRead = ({ dataTestId }: { dataTestId?: string }) => { - const iconColor = 'var(--color-text)'; + return ( - + ); }; @@ -53,7 +59,7 @@ const MessageStatusError = ({ dataTestId }: { dataTestId?: string }) => { onClick={showDebugLog} title={window.i18n('sendFailed')} > - + ); }; diff --git a/ts/components/conversation/message/message-content/Quote.tsx b/ts/components/conversation/message/message-content/Quote.tsx index 0a1792af..dc651ccd 100644 --- a/ts/components/conversation/message/message-content/Quote.tsx +++ b/ts/components/conversation/message/message-content/Quote.tsx @@ -17,6 +17,7 @@ import { import { ContactName } from '../../ContactName'; import { MessageBody } from './MessageBody'; import { useIsPrivate } from '../../../../hooks/useParamSelector'; +import styled from 'styled-components'; export type QuotePropsWithoutListener = { attachment?: QuotedAttachmentType; @@ -363,6 +364,9 @@ export const Quote = (props: QuotePropsWithListener) => { referencedMessageNotFound ? 'module-quote--with-reference-warning' : null )} > +
+ +
{
); }; + +type VerticalLineProps = { + isIncoming:boolean +} +const VerticalLine = styled.div` + width: 5px; + background-color:${props=>props.isIncoming?'var(--color-untrusted-vertical-bar)':'#F0F0F0'}; + height: 100%; + border-radius: 10px; +`; \ No newline at end of file diff --git a/ts/components/conversation/message/message-item/DateBreak.tsx b/ts/components/conversation/message/message-item/DateBreak.tsx index a4d35dc6..2fec3464 100644 --- a/ts/components/conversation/message/message-item/DateBreak.tsx +++ b/ts/components/conversation/message/message-item/DateBreak.tsx @@ -5,22 +5,34 @@ import styled from 'styled-components'; const DateBreakContainer = styled.div` display: flex; justify-content: center; + + // width: 90%; + // height: 1px; + // margin: 25px auto; + // background: #2e333d; `; const DateBreakText = styled.div` margin-top: 0.3rem; margin-bottom: 0.3rem; - letter-spacing: 0.6px; - font-size: 0.8rem; - font-weight: bold; - text-align: center; + // letter-spacing: 0.6px; + // font-size: 0.8rem; + // font-weight: bold; + // text-align: center; color: var(--color-chat-timestamp); background-color: var(--message-bubbles-received-background-color); - border-radius: 20px; + border-radius: 40px; display: flex; justify-content: center; align-items: center; - padding: 5px 10px; + padding: 5px 20px; + + height: 40px; + // margin-top: -20px; + border-radius: 22px; + + font-size: 14px; + font-weight: 400; `; export const MessageDateBreak = (props: { timestamp: number; messageId: string }) => { @@ -31,7 +43,7 @@ export const MessageDateBreak = (props: { timestamp: number; messageId: string } return ( - {text} + {text} ); }; diff --git a/ts/components/conversation/message/message-item/GenericReadableMessage.tsx b/ts/components/conversation/message/message-item/GenericReadableMessage.tsx index 39bd579d..2c55f63e 100644 --- a/ts/components/conversation/message/message-item/GenericReadableMessage.tsx +++ b/ts/components/conversation/message/message-item/GenericReadableMessage.tsx @@ -8,10 +8,7 @@ import _ from 'lodash'; import { removeMessage } from '../../../../data/data'; import { MessageRenderingProps } from '../../../../models/messageType'; import { getConversationController } from '../../../../bchat/conversations'; -import { - messageExpired, - toggleSelectedMessageId -} from '../../../../state/ducks/conversations'; +import { messageExpired, toggleSelectedMessageId } from '../../../../state/ducks/conversations'; import { getGenericReadableMessageSelectorProps, getIsMessageSelected, @@ -23,6 +20,7 @@ import { MessageAvatar } from '../message-content/MessageAvatar'; import { MessageContentWithStatuses } from '../message-content/MessageContentWithStatus'; import { ReadableMessage } from './ReadableMessage'; import { BchatIcon } from '../../../icon/BchatIcon'; +import { getTheme } from '../../../../state/selectors/theme'; // import styled from 'styled-components'; export type GenericReadableMessageSelectorProps = Pick< @@ -112,7 +110,6 @@ export const GenericReadableMessage = (props: Props) => { ); const isSelectionMode = useSelector(isMessageSelectionMode); - const expiringProps: ExpiringProps = { convoId: msgProps?.convoId, expirationLength: msgProps?.expirationLength, @@ -163,14 +160,18 @@ export const GenericReadableMessage = (props: Props) => { const selected = isMessageSelected || false; const isGroup = conversationType === 'group'; const isIncoming = direction === 'incoming'; - - const onSelect = useCallback((messageId) => { - - // if(isSelectionMode) - // { - dispatch(toggleSelectedMessageId(messageId)); - // } - }, [messageId]); + const darkMode = useSelector(getTheme) === 'dark'; + const iconColor=darkMode?'#F0F0F0':selected?'#3E4A53':'#ACACAC'; + + const onSelect = useCallback( + messageId => { + // if(isSelectionMode) + // { + dispatch(toggleSelectedMessageId(messageId)); + // } + }, + [messageId] + ); return ( { isUnread={!!isUnread} key={`readable-message-${messageId}`} > -
isSelectionMode && onSelect(messageId)} > -
- {selected &&
} +
isSelectionMode && onSelect(messageId)}> + {/*
*/} +
+ {isSelectionMode &&isIncoming && ( +
+ +
+ )}
{expirationLength && expirationTimestamp && ( @@ -211,9 +223,20 @@ export const GenericReadableMessage = (props: Props) => { expirationTimestamp={expirationTimestamp} /> )} +
+ {!isIncoming && isSelectionMode && ( +
+ +
+ )} +
); }; - - diff --git a/ts/components/conversation/message/message-item/GroupInvitation.tsx b/ts/components/conversation/message/message-item/GroupInvitation.tsx index bd4a6051..9b1197a0 100644 --- a/ts/components/conversation/message/message-item/GroupInvitation.tsx +++ b/ts/components/conversation/message/message-item/GroupInvitation.tsx @@ -2,34 +2,63 @@ import React from 'react'; import classNames from 'classnames'; import { PropsForGroupInvitation } from '../../../../state/ducks/conversations'; import { acceptOpenGroupInvitation } from '../../../../interactions/messageInteractions'; -import { BchatIconButton } from '../../../icon'; +// import { BchatIconButton } from '../../../icon'; import { ReadableMessage } from './ReadableMessage'; +import { Flex } from '../../../basic/Flex'; +import styled from 'styled-components'; +import { SpacerMD } from '../../../basic/Text'; + +import { useSelector } from 'react-redux'; +import { StateType } from '../../../../state/reducer'; +import { BchatJoinableRoomAvatar } from '../../../leftpane/overlay/BchatJoinableDefaultRooms'; +import { + getMessageContentSelectorProps, + getMessageStatusProps, +} from '../../../../state/selectors/conversations'; +import moment from 'moment'; +import { MessageStatus } from '../message-content/MessageStatus'; + + +interface Room { + completeUrl: string; + name: string; + id: string; + base64Data?: string; +} export const GroupInvitation = (props: PropsForGroupInvitation) => { const { messageId, receivedAt, isUnread } = props; - const classes = ['group-invitation']; + const joinableRooms = useSelector((state: StateType) => state.defaultRooms); + const contentProps = useSelector(state => + getMessageContentSelectorProps(state as any, props.messageId) + ); + const socialGrp: Room[] = joinableRooms.rooms.filter( + (item: Room) => props.serverName === item.name + ); + const isIncoming = contentProps?.direction === 'incoming'; + const classes = ['group-invitation']; if (props.direction === 'outgoing') { classes.push('invitation-outgoing'); } const socialGroupInvitation = window.i18n('socialGroupInvitation'); - const currentValueFromSettings = window.getSettingValue('font-size-setting') || "Small"; + const currentValueFromSettings = window.getSettingValue('font-size-setting') || 'Small'; + + const selected = useSelector(state => getMessageStatusProps(state as any, props.messageId)); + if (!selected) { + return null; + } - function FontSizeChanger(fontSize:number) - { + function FontSizeChanger(fontSize: number) { let size; - if(currentValueFromSettings==="Small") - { - size= fontSize - } - else if(currentValueFromSettings==="Medium") - { - size=fontSize+2 - } - else{ - size=fontSize+4 - } - return size; + if (currentValueFromSettings === 'Small') { + size = fontSize; + } else if (currentValueFromSettings === 'Medium') { + size = fontSize + 2; + } else { + size = fontSize + 4; + } + return size; } return ( { key={`readable-message-${messageId}`} >
-
-
{ acceptOpenGroupInvitation(props.acceptUrl, props.serverName)}}> - +
+ +
{ + acceptOpenGroupInvitation(props.acceptUrl, props.serverName); + }} + > +
+ + + + + {props.serverName} + + + {socialGroupInvitation} + + + + { + acceptOpenGroupInvitation(props.acceptUrl, props.serverName); + }} + direction={contentProps?.direction} + + /> + +
+ + + {props.url} + +
+ {moment(contentProps?.timestamp).format('hh:mm A')} +
+ {/*
{ + acceptOpenGroupInvitation(props.acceptUrl, props.serverName); + }} + > + - {props.serverName} - {socialGroupInvitation} - {props.url} + + +
*/}
); }; +interface VerticalLineProps { + direcrion?: string; +} +const VerticalLine = styled.div` + width: 5px; + background-color: ${props => + props.direcrion === 'incoming' ? 'var(--color-untrusted-vertical-bar)' : ' #f0f0f0'}; + height: 60px; + border-radius: 10px; + margin-right: 10px; +`; + + diff --git a/ts/components/conversation/message/message-item/MessageDetail.tsx b/ts/components/conversation/message/message-item/MessageDetail.tsx index 2157a4ab..ee52c02b 100644 --- a/ts/components/conversation/message/message-item/MessageDetail.tsx +++ b/ts/components/conversation/message/message-item/MessageDetail.tsx @@ -3,15 +3,20 @@ import classNames from 'classnames'; import moment from 'moment'; import { Message } from './Message'; -import { useSelector } from 'react-redux'; +// import { useSelector } from 'react-redux'; import { Avatar, AvatarSize } from '../../../avatar/Avatar'; // import { deleteMessagesById } from '../../../../interactions/conversations/unsendingInteractions'; -import { ContactPropsMessageDetail } from '../../../../state/ducks/conversations'; -import { - getMessageDetailsViewProps, - // getMessageIsDeletable, -} from '../../../../state/selectors/conversations'; +import { ContactPropsMessageDetail, MessagePropsDetails } from '../../../../state/ducks/conversations'; +// import { +// getMessageDetailsViewProps, +// // getMessageIsDeletable, +// } from '../../../../state/selectors/conversations'; import { ContactName } from '../../ContactName'; +import { BchatWrapperModal } from '../../../BchatWrapperModal'; +import { useDispatch } from 'react-redux'; +import { updateMessageMoreInfoModal } from '../../../../state/ducks/modalDialog'; +// import { getMessageTextProps } from '../../../../state/selectors/conversations'; +import { SpacerSM, SpacerXS } from '../../../basic/Text'; const AvatarItem = (props: { pubkey: string }) => { const { pubkey } = props; @@ -88,62 +93,90 @@ const ContactItem = (props: { contact: ContactPropsMessageDetail }) => { ); }; -export const MessageDetail = () => { +export const MessageMoreInfoModal = (props:MessagePropsDetails) => { const { i18n } = window; - - const messageDetailProps = useSelector(getMessageDetailsViewProps); + const dispatch=useDispatch(); + const { + errors, + receivedAt, + sentAt, + // convoId, + direction, + messageId, + } = props; + // const selectedMsg = useSelector(state => getMessageTextProps(state as any, messageId)); +// console.log('selected -->',selectedMsg) + // const messageDetailProps = useSelector(getMessageDetailsViewProps); // const isDeletable = useSelector(state => // getMessageIsDeletable(state as any, messageDetailProps?.messageId || '') // ); - if (!messageDetailProps) { + if (!props) { return null; } - const { errors, receivedAt, sentAt, - // convoId, - direction, messageId } = messageDetailProps; + return (
-
-
-

More Info

- -
- - - {(errors || []).map((error, index) => ( - - - - - ))} - - - - - {receivedAt ? ( + { dispatch(updateMessageMoreInfoModal(null))}} + showExitIcon={false} + showHeader={true} + headerReverse={false} + okButton={{ + text: 'Close', + onClickOkHandler: () => {dispatch(updateMessageMoreInfoModal(null))}, + + disabled: false, + }} + > + +
+
+ {/*

More Info

*/} + + {/* {selectedMsg?.text} */} +
+ +
{i18n('error')} - {' '} - {error.message}{' '} -
{i18n('send')} - {moment(sentAt).format('LLLL')} -
+ + {(errors || []).map((error, index) => ( + + + + + ))} - + - ) : null} - - - - -
{i18n('error')} + {' '} + {error.message}{' '} +
{i18n('received')}{i18n('send')} - {moment(receivedAt).format('LLLL')} + {moment(sentAt).format('LLLL')}
- {direction === 'incoming' ? i18n('from') : i18n('to')} -
- -
+ {receivedAt ? ( + + {i18n('received')} + + {moment(receivedAt).format('LLLL')} + + + ) : null} + {/* + + {direction === 'incoming' ? i18n('from') : i18n('to')} + + */} + + + +
{direction === 'incoming' ? i18n('from') : i18n('to')}
+ + +
+
); }; diff --git a/ts/components/conversation/message/message-item/PaymentMessage.tsx b/ts/components/conversation/message/message-item/PaymentMessage.tsx index 432afcee..3ce5f8e7 100644 --- a/ts/components/conversation/message/message-item/PaymentMessage.tsx +++ b/ts/components/conversation/message/message-item/PaymentMessage.tsx @@ -6,60 +6,72 @@ import classNames from 'classnames'; import { ReadableMessage } from './ReadableMessage'; import { BchatIcon } from '../../../icon'; import { shell } from 'electron/common'; +import { MessageStatus } from '../message-content/MessageStatus'; +import { useSelector } from 'react-redux'; +import { getMessageContentSelectorProps } from '../../../../state/selectors/conversations'; +import { Flex } from '../../../basic/Flex'; +import moment from 'moment'; // export const PaymentMessage = (props: PropsForPayment) => { export const PaymentMessage = (props: any) => { - const { messageId, receivedAt, isUnread } = props; const classes = ['payment']; - const currentValueFromSettings = window.getSettingValue('font-size-setting') || "Small"; + const currentValueFromSettings = window.getSettingValue('font-size-setting') || 'Small'; + const contentProps = useSelector(state => + getMessageContentSelectorProps(state as any, props.messageId) + ); + const isIncoming = contentProps?.direction === 'incoming'; if (props.direction === 'outgoing') { classes.push('invitation-outgoing'); } -// const socialGroupInvitation = window.i18n('socialGroupInvitation'); -function openToExplore(traxId: string) { - if (window.networkType === 'mainnet') { - void shell.openExternal(`http://explorer.beldex.io/tx/${traxId}`); - } else { - void shell.openExternal(`http://154.26.139.105/tx/${traxId}`); + // const socialGroupInvitation = window.i18n('socialGroupInvitation'); + function openToExplore(traxId: string) { + if (window.networkType === 'mainnet') { + void shell.openExternal(`http://explorer.beldex.io/tx/${traxId}`); + } else { + void shell.openExternal(`http://154.26.139.105/tx/${traxId}`); + } } -} -function FontSizeChanger(fontSize:number) - { + function FontSizeChanger(fontSize: number) { let size; - if(currentValueFromSettings==="Small") - { - size= fontSize - } - else if(currentValueFromSettings==="Medium") - { - size=fontSize+2 - } - else{ - size=fontSize+4 - } - return size; + if (currentValueFromSettings === 'Small') { + size = fontSize; + } else if (currentValueFromSettings === 'Medium') { + size = fontSize + 2; + } else { + size = fontSize + 4; + } + return size; } -function HindTxt() -{ - // console.log() - const iconColor = 'var(--color-text)'; - - if(props.messageId ==='1234-567-7890') - { - return
Initiating transaction
- } - else if(props.direction=== 'outgoing') - { - return
Sent Successfully!
- } - else{ - - return
Received successfully
+ function HindTxt() { + // console.log() + const iconColor = 'var(--color-text)'; + + if (props.messageId === '1234-567-7890') { + return ( + + Initiating transaction + + + ); + } else if (props.direction === 'outgoing') { + return ( + + Sent Successfully! + + + ); + } else { + return ( + + Received Successfully! + + + ); + } } -} return (
- -
props.txnId?openToExplore(props.txnId):""} - style={{cursor:props.txnId ?"pointer":"unset"}}> -
{ acceptOpenGroupInvitation(props.acceptUrl, props.serverName)}} +
+ +
(props.txnId ? openToExplore(props.txnId) : '')} + style={{ cursor: props.txnId ? 'pointer' : 'unset' }} + > +
{ acceptOpenGroupInvitation(props.acceptUrl, props.serverName)}} > - -
-
- {props.amount} BDX -
- - {/* +
+ +
+
+ {props.amount} BDX +
+ + {/* {props.amount} welcome {props.txnId} */} -
-
- - {/* {props.direction === 'outgoing'?"Sent Successfully!":"Received successfully"} */} -
+
+ {/* {props.direction === 'outgoing'?"Sent Successfully!":"Received successfully"} */} + +
+
+ {moment(contentProps?.timestamp).format('hh:mm A')} +
+
diff --git a/ts/components/conversation/message/message-item/notification-bubble/CallNotification.tsx b/ts/components/conversation/message/message-item/notification-bubble/CallNotification.tsx index 4ccb3c76..70c01b1d 100644 --- a/ts/components/conversation/message/message-item/notification-bubble/CallNotification.tsx +++ b/ts/components/conversation/message/message-item/notification-bubble/CallNotification.tsx @@ -14,29 +14,29 @@ import { NotificationBubble } from './NotificationBubble'; type StyleType = Record< CallNotificationType, - { notificationTextKey: LocalizerKeys; iconType: BchatIconType; iconColor: string;bgColor:string } + { notificationTextKey: LocalizerKeys; iconType: BchatIconType; iconColor: string; bgColor: string } >; const style: StyleType = { 'missed-call': { notificationTextKey: 'callMissed', - iconType: 'callMissed', - iconColor:'var(--color-destructive)' , - bgColor:'transparent', - + iconType: 'callMissed', + iconColor: '#FF3E3E', + bgColor: 'transparent', + }, 'started-call': { notificationTextKey: 'startedACall', iconType: 'callOutgoing', - iconColor: '#136ef8', - bgColor:'transparent', - + iconColor: 'var(--color-text)', + bgColor: 'transparent', + }, 'answered-a-call': { notificationTextKey: 'answeredACall', iconType: 'callIncoming', - iconColor: '#136ef8', - bgColor:'transparent', + iconColor: '#108D32', + bgColor: 'transparent', }, }; @@ -51,14 +51,15 @@ export const CallNotification = (props: PropsForCallNotification) => { (selectedConvoProps?.id && PubKey.shorten(selectedConvoProps?.id)); const styleItem = style[notificationType]; - const notificationText = window.i18n(styleItem.notificationTextKey, [displayName || 'Unknown']); + const notificationText = window.i18n(styleItem.notificationTextKey); + const displayText = notificationType == 'started-call' ? `to ${[displayName || 'Unknown']}` : `from ${[displayName || 'Unknown']}` if (!window.i18n(styleItem.notificationTextKey)) { throw new Error(`invalid i18n key ${styleItem.notificationTextKey}`); } const iconType = styleItem.iconType; const iconColor = styleItem.iconColor; - const bgColor=styleItem.bgColor; - + const bgColor = styleItem.bgColor; + return ( { > ); diff --git a/ts/components/conversation/message/message-item/notification-bubble/NotificationBubble.tsx b/ts/components/conversation/message/message-item/notification-bubble/NotificationBubble.tsx index 44cb31a0..a5d484de 100644 --- a/ts/components/conversation/message/message-item/notification-bubble/NotificationBubble.tsx +++ b/ts/components/conversation/message/message-item/notification-bubble/NotificationBubble.tsx @@ -4,60 +4,81 @@ import { BchatIcon, BchatIconType } from '../../../../icon'; const NotificationBubbleFlex = styled.div` display: flex; - background-color: var(--message-bubbles-received-background-color); - color: var(--color-text); + + // color: var(--color-text); // width: 90%; // max-width: 584px; - margin: 10px auto; - padding: 5px 10px; - border-radius: 12px; + // margin: 10px auto; + padding: 5px 20px; + border-radius: 42px; word-break: break-word; text-align: center; align-items: center; justify-content: center; + // height: 40px; + // margin-top: -20px; + border-radius: 40px; + background-color: var(--message-bubbles-received-background-color); `; const NotificationBubbleText = styled.div` - color: var(--color-text); + // color: var(--color-text); // margin-left: 45px; + color: var(--color-chat-timestamp); + font-size: 14px; + font-weight: 400; `; const NotificationBubbleIconContainer = styled.div` - margin: auto 10px; width: 30px; height: 30px; display: flex; justify-content: center; align-items: center; + margin-right: 5px; `; const FlexCenter = styled.div` - display: flex; - justify-content: center; - width: 100%; -` + display: flex; + justify-content: center; + width: 90%; + // height: 1px; + min-height: 40px; + margin: 0 auto; +`; +// background-color: var(--message-bubbles-received-background-color); export const NotificationBubble = (props: { notificationText: string; iconType?: BchatIconType; iconColor?: string; bgColor?: string; + callNotification?: Boolean; + displayText?: string; }) => { - const { notificationText, iconType, iconColor, bgColor } = props; + const { notificationText, iconType, iconColor, bgColor, callNotification, displayText } = props; + return ( - + {iconType && ( )} - {notificationText} + {callNotification ? ( + + {notificationText} + {displayText} + + ) : ( + {notificationText} + )} ); diff --git a/ts/components/dialog/AboutBnsDialog.tsx b/ts/components/dialog/AboutBnsDialog.tsx new file mode 100644 index 00000000..2c13844e --- /dev/null +++ b/ts/components/dialog/AboutBnsDialog.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { BchatWrapperModal } from '../BchatWrapperModal'; +// import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +import { editProfileModal, updateAboutBnsModal } from '../../state/ducks/modalDialog'; + +export const AboutBnsDialog = () => { + function closeDialog() { + window.inboxStore?.dispatch(updateAboutBnsModal(null)); + window.inboxStore?.dispatch(editProfileModal({})); + } + return ( +
+ + // + //
} + > +
+
+
+ BNS: Your Decentralized Identity in the Beldex Ecosystem ? +
+
+ BNS (Beldex Name Service) is your gateway to a seamless experience within the Beldex + ecosystem. With BNS, you can create a unique, easy-to-remember name that links to your + various Beldex identities. +
+
Key Benefits:
+
    +
  • + Unified Identity: Connect your BChat ID, Beldex Wallet Address, and BelNet ID to a + single BNS name. This simplifies your interactions across the Beldex ecosystem. +
  • +
  • + Ease of Use: Say goodbye to complicated alphanumeric strings. With your BNS name, + messaging and transactions become straightforward and user-friendly. +
  • +
  • + Badge of Trust: Link your BChat ID to your BNS name and complete the verification + process to earn a BNS badge. This badge adds a layer of trust and recognition within + the community. +
  • +
+
+ Pricing: Users can register their BNS names for 1, 2, 5, and 10 years for + as low as 650 BDX, 1000 BDX, 2000 BDX, and 4000 BDX + respectively. +
+
+ Using BNS names enhances your privacy, security, and convenience. Whether you’re sending + a message, making a transaction, or using decentralized services, your BNS name ensures + a consistent and simplified experience. +
+
+ Get started with your BNS name today and enjoy the benefits of a decentralized identity + across all your Beldex services! +
+
+
+ +
+ ); +}; diff --git a/ts/components/dialog/AdminLeaveClosedGroupDialog.tsx b/ts/components/dialog/AdminLeaveClosedGroupDialog.tsx index 334ad9d6..dd002c0e 100644 --- a/ts/components/dialog/AdminLeaveClosedGroupDialog.tsx +++ b/ts/components/dialog/AdminLeaveClosedGroupDialog.tsx @@ -2,8 +2,10 @@ import React, { useState } from 'react'; import { SpacerLG } from '../basic/Text'; import { getConversationController } from '../../bchat/conversations'; import { adminLeaveClosedGroup } from '../../state/ducks/modalDialog'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { BchatButtonColor } from '../basic/BchatButton'; import { BchatWrapperModal } from '../BchatWrapperModal'; +import { BchatIcon } from '../icon/BchatIcon'; +import styled from 'styled-components'; type Props = { conversationId: string; @@ -32,14 +34,44 @@ export const AdminLeaveClosedGroupDialog = (props: Props) => { }; return ( - + onClickOK(), + color: BchatButtonColor.Danger, + disabled: false, + }} + cancelButton={{ + text: cancelText, + status: true, + color: BchatButtonColor.Secondary, + onClickCancelHandler: () => closeDialog(), + }} + iconShow={true} + customIcon={} + > + + {warningAsAdmin} + -

{warningAsAdmin}

- -
+ {/*
-
+
*/}
); }; + +const ContentWrapper=styled.p` +max-width: 450px; +margin-top: 0px; +text-align: initial; +color: #A7A7BA; +font-size: 16px; +font-style: normal; +font-weight: 400; +line-height: normal; + +` diff --git a/ts/components/dialog/BchatConfirm.tsx b/ts/components/dialog/BchatConfirm.tsx index aadff450..4dc8e60f 100644 --- a/ts/components/dialog/BchatConfirm.tsx +++ b/ts/components/dialog/BchatConfirm.tsx @@ -1,8 +1,8 @@ import React, { useState } from 'react'; import { BchatHtmlRenderer } from '../basic/BchatHTMLRenderer'; import { updateConfirmModal } from '../../state/ducks/modalDialog'; -import { SpacerLG, SpacerMD } from '../basic/Text'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { SpacerLG } from '../basic/Text'; +import { BchatButtonColor } from '../basic/BchatButton'; import { BchatSpinner } from '../basic/BchatSpinner'; import { BchatIcon, BchatIconSize, BchatIconType } from '../icon'; import { BchatWrapperModal } from '../BchatWrapperModal'; @@ -17,6 +17,8 @@ export interface BchatConfirmDialogProps { onOk?: any; onClose?: any; closeAfterInput?: boolean; + iconShow?: any; + customIcon?: any; /** * function to run on ok click. Closes modal after execution by default @@ -38,11 +40,13 @@ export interface BchatConfirmDialogProps { okTheme?: BchatButtonColor; closeTheme?: BchatButtonColor; bchatIcon?: BchatIconType; - iconSize?: BchatIconSize; + iconSize?: BchatIconSize | number; shouldShowConfirm?: boolean | undefined; showExitIcon?: boolean | undefined; btndisable?: boolean | undefined; - Childern?:any; + Childern?: any; + okIcon?: any; + cancelIcon?: any; } export const BchatConfirm = (props: BchatConfirmDialogProps) => { @@ -50,7 +54,7 @@ export const BchatConfirm = (props: BchatConfirmDialogProps) => { title = '', message = '', messageSub = '', - closeTheme = BchatButtonColor.White, + closeTheme = BchatButtonColor.Secondary, // seed="", onClickOk, onClickClose, @@ -63,20 +67,22 @@ export const BchatConfirm = (props: BchatConfirmDialogProps) => { showExitIcon, closeAfterInput = true, btndisable, - Childern="" + Childern = '', + iconShow, + customIcon, + okIcon, + cancelIcon } = props; const [isLoading, setIsLoading] = useState(false); // const [copied, setCopied] = useState(false); - const okText = props.okText || window.i18n('ok'); const cancelText = props.cancelText || window.i18n('cancel'); const showHeader = !!props.title; const messageSubText = messageSub ? 'bchat-confirm-main-message' : 'subtle'; - const onClickOkHandler = async () => { if (onClickOk) { setIsLoading(true); @@ -140,6 +146,9 @@ export const BchatConfirm = (props: BchatConfirmDialogProps) => { // return disable // } + const validCustomIcon = + bchatIcon && iconSize ? : customIcon; + useKey((event: KeyboardEvent) => { return event.key === 'Enter'; }, onClickOkHandler); @@ -150,30 +159,49 @@ export const BchatConfirm = (props: BchatConfirmDialogProps) => { onClose={onClickClose} showExitIcon={showExitIcon} showHeader={showHeader} + okButton={{ + text: okText, + onClickOkHandler, + disabled: btndisable ? btndisable : false, + color: props.okTheme, + iconType: okIcon ? okIcon.icon : '', + iconSize: okIcon ? okIcon.size : '' + }} + cancelButton={{ + status: !hideCancel, + text: cancelText, + color: closeTheme, + onClickCancelHandler, + iconType: cancelIcon ? cancelIcon.icon : '', + iconSize: cancelIcon ? cancelIcon.size : '' + }} + iconShow={iconShow} + customIcon={validCustomIcon} > {!showHeader && }
- - {bchatIcon && iconSize && ( - <> - - - - )} - {Childern} - - - +
+ {/* {bchatIcon && iconSize && ( + <> + + + + )} */} + {Childern} + + + - + +
-
+ {/*
{!hideCancel && ( { dataTestId="Bchat-confirm-ok-button" disabled={btndisable ? btndisable : false} /> -
+
*/}
); }; diff --git a/ts/components/dialog/BchatNicknameDialog.tsx b/ts/components/dialog/BchatNicknameDialog.tsx index fedbbbe2..72c56b35 100644 --- a/ts/components/dialog/BchatNicknameDialog.tsx +++ b/ts/components/dialog/BchatNicknameDialog.tsx @@ -2,12 +2,13 @@ import React, { useState } from 'react'; import { getConversationController } from '../../bchat/conversations'; import _ from 'lodash'; -import {SpacerMD } from '../basic/Text'; +import { SpacerLG } from '../basic/Text'; import { useDispatch } from 'react-redux'; import { changeNickNameModal } from '../../state/ducks/modalDialog'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { BchatButtonColor } from '../basic/BchatButton'; import { BchatWrapperModal } from '../BchatWrapperModal'; -import { useConversationUsername } from '../../hooks/useParamSelector'; +import { BchatIconButton } from '../icon'; +// import { useConversationUsername } from '../../hooks/useParamSelector'; type Props = { conversationId: string; @@ -16,9 +17,8 @@ type Props = { export const BchatNicknameDialog = (props: Props) => { const { conversationId } = props; const [nickname, setNickname] = useState(''); - const usernames= String(useConversationUsername(conversationId)); -// console.log("username ::",usernames); - + // const usernames = String(useConversationUsername(conversationId)); + // console.log("username ::",usernames); const dispatch = useDispatch(); @@ -27,11 +27,9 @@ export const BchatNicknameDialog = (props: Props) => { * entered nickname value as the nickname. */ const onNicknameInput = async (event: any) => { - if (event.key === 'Enter') { await saveNickname(); - } else if (event.target.value.length <= 26) - { + } else if (event.target.value.length <= 26) { const currentNicknameEntered = event.target.value; setNickname(currentNicknameEntered); } @@ -59,36 +57,56 @@ export const BchatNicknameDialog = (props: Props) => { onClose={onClickClose} showExitIcon={false} showHeader={true} + additionalClassName="nickNameDialog" + okButton={{ + text: window.i18n('ok'), + // onClick: { saveNickname }, + color: BchatButtonColor.Primary, + onClickOkHandler: () => saveNickname(), + }} + cancelButton={{ + status: true, + text: window.i18n('cancel'), + buttonColor: BchatButtonColor.Secondary, + onClickCancelHandler: () => onClickClose(), + }} > - -
+ + {/*
{window.i18n('changeNicknameMessage',[usernames])} -
+
*/} - { - void onNicknameInput(_.cloneDeep(e)); - }} - style={{borderBottom:"1px solid"}} - onChange={e => { - void onNicknameInput(_.cloneDeep(e)); - }} - /> - -
- +
+ { + void onNicknameInput(_.cloneDeep(e)); + }} + onChange={e => { + void onNicknameInput(_.cloneDeep(e)); + }} + /> + setNickname('')} /> +
+ + {/*
+ -
+
*/} ); }; diff --git a/ts/components/dialog/BchatPasswordDialog.tsx b/ts/components/dialog/BchatPasswordDialog.tsx index 4aab71bf..849e8dae 100644 --- a/ts/components/dialog/BchatPasswordDialog.tsx +++ b/ts/components/dialog/BchatPasswordDialog.tsx @@ -3,13 +3,15 @@ import React from 'react'; import { missingCaseError } from '../../util'; import { ToastUtils } from '../../bchat/utils'; import { getPasswordHash } from '../../data/data'; -import { SpacerSM } from '../basic/Text'; +// import { SpacerSM } from '../basic/Text'; import autoBind from 'auto-bind'; import { bchatPassword } from '../../state/ducks/modalDialog'; import { LocalizerKeys } from '../../types/LocalizerKeys'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { BchatButtonColor } from '../basic/BchatButton'; import { BchatWrapperModal } from '../BchatWrapperModal'; import { matchesHash, validatePassword } from '../../util/passwordUtils'; +import { BchatInput } from '../basic/BchatInput'; +// import { BchatInput } from '../basic/BchatInput'; export type PasswordAction = 'set' | 'change' | 'remove'; @@ -20,9 +22,9 @@ interface Props { interface State { error: string | null; - currentPasswordEntered: string | null; - currentPasswordConfirmEntered: string | null; - currentPasswordRetypeEntered: string | null; + currentPasswordEntered: string; + currentPasswordConfirmEntered: string; + currentPasswordRetypeEntered: string; } export class BchatPasswordDialog extends React.Component { @@ -33,9 +35,9 @@ export class BchatPasswordDialog extends React.Component { this.state = { error: null, - currentPasswordEntered: null, - currentPasswordConfirmEntered: null, - currentPasswordRetypeEntered: null, + currentPasswordEntered: '', + currentPasswordConfirmEntered: '', + currentPasswordRetypeEntered: '', }; autoBind(this); @@ -53,72 +55,122 @@ export class BchatPasswordDialog extends React.Component { const placeholders = passwordAction === 'change' ? [ - window.i18n('currentPassword'), - window.i18n('enterPassword'), - window.i18n('confirmPassword'), - ] + window.i18n('currentPassword'), + window.i18n('enterPassword'), + window.i18n('confirmPassword'), + ] : [window.i18n('removePasswordDisc'), window.i18n('confirmPassword')]; - const confirmButtonColor = BchatButtonColor.Green; + // const confirmButtonColor = BchatButtonColor.Primary; // do this separately so typescript's compiler likes it const localizedKeyAction: LocalizerKeys = passwordAction === 'change' ? 'changePassword' : passwordAction === 'remove' - ? 'removePassword' - : 'setPassword'; + ? 'removePassword' + : 'setPassword'; return ( - - - -
- { - this.passportInput = input; - }} - placeholder={placeholders[0]} - onKeyUp={this.onPasswordInput} - data-testid="password-input" - maxLength={26} - /> - {passwordAction !== 'remove' && ( - + {/* */} +
+ + {/*
*/} + {/* { + this.passportInput = input; + }} + placeholder={placeholders[0]} + onKeyUp={this.onPasswordInput} + data-testid="password-input" maxLength={26} - /> - )} - {passwordAction === 'change' && ( - */} +
+ +
+ {passwordAction !== 'remove' && ( + // +
+ +
)} + {passwordAction === 'change' && ( + // + +
+ +
+ )} + {/*
*/}
- -
+ {/* */} + + {/*
-
+
*/} ); } @@ -141,7 +193,7 @@ export class BchatPasswordDialog extends React.Component { // if user did not fill the first password field, we can't do anything const errorFirstInput = validatePassword(firstPassword); if (errorFirstInput !== null) { - ToastUtils.pushToastError('validatePassword',errorFirstInput); + ToastUtils.pushToastError('validatePassword', errorFirstInput); this.setState({ error: errorFirstInput, }); @@ -290,29 +342,29 @@ export class BchatPasswordDialog extends React.Component { window.inboxStore?.dispatch(bchatPassword(null)); } - private async onPasswordInput(event: any) { - if (event.key === 'Enter') { - return this.setPassword(); - } - const currentPasswordEntered = event.target.value; + private async onPasswordInput(currentPasswordEntered: any) { + // if (event.key === 'Enter') { + // return this.setPassword(); + // } + // const currentPasswordEntered = event.target.value; this.setState({ currentPasswordEntered }); } - private async onPasswordConfirmInput(event: any) { - if (event.key === 'Enter') { - return this.setPassword(); - } - const currentPasswordConfirmEntered = event.target.value; + private async onPasswordConfirmInput(currentPasswordConfirmEntered: any) { + // if (event.key === 'Enter') { + // return this.setPassword(); + // } + // const currentPasswordConfirmEntered = event.target.value; this.setState({ currentPasswordConfirmEntered }); } - private async onPasswordRetypeInput(event: any) { - if (event.key === 'Enter') { - return this.setPassword(); - } - const currentPasswordRetypeEntered = event.target.value; + private async onPasswordRetypeInput(currentPasswordRetypeEntered: any) { + // if (event.key === 'Enter') { + // return this.setPassword(); + // } + // const currentPasswordRetypeEntered = event.target.value; this.setState({ currentPasswordRetypeEntered }); } diff --git a/ts/components/dialog/BchatSeedModal.tsx b/ts/components/dialog/BchatSeedModal.tsx index e21d96cd..7da8aaa0 100644 --- a/ts/components/dialog/BchatSeedModal.tsx +++ b/ts/components/dialog/BchatSeedModal.tsx @@ -1,11 +1,13 @@ import React, { useEffect, useState } from 'react'; import { ToastUtils } from '../../bchat/utils'; -import { SpacerLG, SpacerSM, SpacerXS } from '../basic/Text'; +import { SpacerSM } from '../basic/Text'; import { recoveryPhraseModal } from '../../state/ducks/modalDialog'; -import { useDispatch } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { getCurrentRecoveryPhrase } from '../../util/storage'; -import { BchatToolTip } from '../leftpane/ActionsPanel'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +import { getTheme } from '../../state/selectors/theme'; +// import { BchatToolTip } from '../leftpane/ActionsPanel'; interface SeedProps { @@ -17,6 +19,7 @@ const Seed = (props: SeedProps) => { const { recoveryPhrase, onClickCopy } = props; const i18n = window.i18n; const dispatch = useDispatch(); + const darkMode = useSelector(getTheme) === 'dark'; const copyRecoveryPhrase = (recoveryPhraseToCopy: string) => { window.clipboard.writeText(recoveryPhraseToCopy); @@ -28,28 +31,46 @@ const Seed = (props: SeedProps) => { }; return ( -
-
-

{i18n('recoveryPhrase')}

- - - - {recoveryPhrase} - -
- -
-
{ copyRecoveryPhrase(recoveryPhrase); }} data-tip="Copy" data-place="right"> - - - -
{window.i18n('editMenuCopy')} +
+
+
+
+

{i18n('recoveryPhrase')}

+ {/* */} + + + {recoveryPhrase} + +

Copy your Recovery Seed and keep it safe.

+
+ {/*
+
{ copyRecoveryPhrase(recoveryPhrase); }} data-tip="Copy" data-place="right"> + + + +
{window.i18n('editMenuCopy')} +
+
+
*/} + + { copyRecoveryPhrase(recoveryPhrase) }} + // dataTestId={okButton?.dataTestId ? okButton.dataTestId : "Bchat-confirm-ok-button"} + // style={{ width: '120px', height: '35px' }} + /> +
- -
); }; diff --git a/ts/components/wallet/BchatWalletForgotPassword.tsx b/ts/components/dialog/BchatWalletForgotPasswordModal.tsx similarity index 55% rename from ts/components/wallet/BchatWalletForgotPassword.tsx rename to ts/components/dialog/BchatWalletForgotPasswordModal.tsx index 4bd07c34..021c542b 100644 --- a/ts/components/wallet/BchatWalletForgotPassword.tsx +++ b/ts/components/dialog/BchatWalletForgotPasswordModal.tsx @@ -1,8 +1,8 @@ import React, { useState } from 'react'; -import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +import { BchatButtonColor } from '../basic/BchatButton'; import { Flex } from '../basic/Flex'; -import { SpacerMD, SpacerSM } from '../basic/Text'; -import { BchatIcon } from '../icon'; +import { SpacerLG, SpacerMD, SpacerSM } from '../basic/Text'; +import { BchatIconButton } from '../icon'; import { clipboard } from 'electron'; import { ToastUtils, UserUtils } from '../../bchat/utils'; import { wallet } from '../../wallet/wallet-rpc'; @@ -14,9 +14,13 @@ import { updateDaemon } from '../../state/ducks/daemon'; import { getConversationById } from '../../data/data'; import { useConversationWalletDaemonHeight } from '../../hooks/useParamSelector'; import { useKey } from 'react-use'; -import styled from 'styled-components'; +import { BchatWrapperModal } from '../BchatWrapperModal'; +import { + updateBchatWalletForgotPasswordModal, + updateBchatWalletPasswordModal, +} from '../../state/ducks/modalDialog'; -export const ForgotPassword = (props: any) => { +export const BchatWalletForgotPasswordModal = () => { const [seed, setSeed] = useState(''); const [newPassword, setNewPassword] = useState(''); const [confirmPassword, setConfirmNewPassword] = useState(''); @@ -33,7 +37,8 @@ export const ForgotPassword = (props: any) => { ); const dispatch = useDispatch(); function onClickCancelHandler() { - props.cancelBtn(); + dispatch(updateBchatWalletForgotPasswordModal(null)); + dispatch(updateBchatWalletPasswordModal({from:'wallet'})); } const handlePaste = () => { const recoverySeed = clipboard.readText(); @@ -130,20 +135,35 @@ export const ForgotPassword = (props: any) => { useKey((event: KeyboardEvent) => { return event.key === 'Enter'; }, passValid); - const Loader = styled.div` - position: absolute; - // top: 0; - display: flex; - // justify-content: center; - /* width: 100%; */ - // width: 100Vw; - // height: 100%; - align-items: center; - z-index: 101; - `; + return (
- {/*
+ {}} + showExitIcon={false} + showHeader={true} + headerReverse={false} + additionalClassName="walletPassword" + isloading={loading} + okButton={{ + text: window.i18n('save'), + onClickOkHandler: () => { + passValid(); + }, + color: BchatButtonColor.Primary, + disabled: false, + }} + cancelButton={{ + text: window.i18n('cancel'), + status: true, + color: BchatButtonColor.Secondary, + onClickCancelHandler: () => { + onClickCancelHandler(); + }, + }} + > + {/*
{ />
*/} -
- {loading && ( - -
- +
+ +
+ -
-
- {} + event.clipboardData.getData('text'); + }; + + return ( +
+ <> + +
+ +
+ {window.i18n('restoreFromSeed')} +
+
+
+ {/* props.assignRecoveryPhase('')}> */} + +
+
props.paste()} + className="paste-icon" + data-tip="Paste" + data-offset="{'top':30,'left':15}" + data-place="right" + > + +
+
+
-
- + -
- +
+ +
+
- -
-); + ); +}; diff --git a/ts/components/registration/RegistrationStages.tsx b/ts/components/registration/RegistrationStages.tsx index 99c7b535..3f54b5a7 100644 --- a/ts/components/registration/RegistrationStages.tsx +++ b/ts/components/registration/RegistrationStages.tsx @@ -12,6 +12,7 @@ import { setSignInByLinking, setSignWithRecoveryPhrase, Storage } from '../../ut import { wallet } from '../../wallet/wallet-rpc'; import { AccentText } from './AccentText'; import { TermsAndConditions } from './TermsAndConditions'; +import { Flex } from '../basic/Flex'; export const MAX_USERNAME_LENGTH = 26; // tslint:disable: use-simple-attributes @@ -178,6 +179,13 @@ export enum RegistrationPhase { SignUp, } +export enum LeftImage { + registration, + password, + address, + recoveryseed, +} + interface RegistrationPhaseContext { registrationPhase: RegistrationPhase; signUpMode: SignUpMode; @@ -201,6 +209,7 @@ export const RegistrationStages = () => { const [signInMode, setSignInMode] = useState(SignInMode.Default); const [signUpMode, setSignUpMode] = useState(SignUpMode.Default); const [accent, setAccent] = useState(true); + const [imageCount, setImageCount] = useState(0); useEffect(() => { void generateMnemonicAndKeyPairaa(); @@ -211,29 +220,79 @@ export const RegistrationStages = () => { // console.log('registration'); await wallet.startWallet(); }; + const imageValidator = (e: any) => { + console.log('imageValidator'); + setImageCount(e); + }; + const displayImg = () => { + let path; + if (imageCount === LeftImage.recoveryseed) { + path = 'images/bchat/loginPageSeed.png'; + } else if (imageCount === LeftImage.password) { + path = 'images/bchat/loginPagePassword.png'; + } else if (imageCount === LeftImage.address) { + path = 'images/bchat/loginPageAddress.png'; + } else { + path = 'images/bchat/loginpage.png'; + } + + return path; + }; return (
- - {accent && } - {(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignUp) && ( - setAccent(value)} /> - )} - {(registrationPhase === RegistrationPhase.Start || - registrationPhase === RegistrationPhase.SignIn) && ( - setAccent(value)} /> - )} - {accent && } - + + + + + + +
+ + {accent && } + {(registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.SignUp) && ( + setAccent(value)} + imageValidator={(e: Number) => imageValidator(e)} + /> + )} + {(registrationPhase === RegistrationPhase.Start || + registrationPhase === RegistrationPhase.SignIn) && ( + setAccent(value)} + imageValidator={(e: Number) => imageValidator(e)} + /> + )} + {accent && } + +
+
+
); }; diff --git a/ts/components/registration/RegistrationUserDetails.tsx b/ts/components/registration/RegistrationUserDetails.tsx index e916a38a..a8432fca 100644 --- a/ts/components/registration/RegistrationUserDetails.tsx +++ b/ts/components/registration/RegistrationUserDetails.tsx @@ -13,12 +13,13 @@ const DisplayNameInput = (props: { // tslint:disable-next-line: use-simple-attributes { + props.onDisplayNameChanged(value.replace(/\s/g, '')) + })} onEnterPressed={props.handlePressEnter} inputDataTestId="display-name-input" /> diff --git a/ts/components/registration/ShowIdAndAddress.tsx b/ts/components/registration/ShowIdAndAddress.tsx index 4ad35b4b..17d6edf1 100644 --- a/ts/components/registration/ShowIdAndAddress.tsx +++ b/ts/components/registration/ShowIdAndAddress.tsx @@ -1,93 +1,161 @@ import React, { useState } from 'react'; -import { pushUserCopySuccess } from '../../bchat/utils/Toast'; + import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { Flex } from '../basic/Flex'; import { BchatToolTip } from '../leftpane/ActionsPanel'; -import { GoBackMainMenuButton } from './SignUpTab'; +// import { GoBackMainMenuButton } from './SignUpTab'; +import { SpacerLG } from '../basic/Text'; +import {CopyIconButton} from '../icon/CopyIconButton'; +// import { BchatIconButton } from '../icon/BchatIconButton'; -export const DisplayIdAndAddress = (props: any) => -( -
-
+export const DisplayIdAndAddress = (props: any) => ( +
+ {/*
{props.assentAndGoBack()}} /> -
-

{window.i18n('welcome')}

-
-
{window.i18n('chatId')}
-
-

{props.pubKey}

-
-

{window.i18n('yourBchatName')}

-
{window.i18n('beldexAddress')}
-
-

{props.walletAddress}

-
-

{window.i18n('beldexAddressConnection')}

-
- -
+
*/} +

{window.i18n('welcome')}!

+ + {/*
*/} +
{window.i18n('bChatID')}
+
+ {/*

{props.pubKey}

*/} +

{props.pubKey}

+
+

{window.i18n('yourBchatName')}

+
{window.i18n('beldexAddress')}
+
+ {/*

{props.walletAddress}

*/} +

{props.walletAddress}

+ {/*
*/} +
+

+ {window.i18n('beldexAddressConnection')} +

+ + + +
); -export const Icons = (props:any)=> -
props.iconfunc()} data-tip="Copy" data-place="right" data-offset="{'top':30,'left':15}" className='iconBox'> - - - -
- const LoaderGif = () => { - return
-
-
+// export const Icons = (props: any) => ( +//
props.onClick()} +// data-tip="Copy" +// data-place="right" +// data-offset="{'top':30,'left':15}" +// className="iconBox" +// > +// +// +// +//
+// ); +const LoaderGif = () => { + return ( +
+
- } + ); +}; -export const ShowRecoveryPhase= (props:any) => { - const [seedCopied,setSeedCopied] = useState(false); - return( -
+export const ShowRecoveryPhase = (props: any) => { + const [seedCopied, setSeedCopied] = useState(false); + return ( +
{props.loading && } - - + -
- {props.assentAndGoBack()}} /> -
-

{window.i18n('recoveryPhrase')}

-
Note : {window.i18n('saveYourRecoveryPhrase')} -
{window.i18n('copyToContinueRecovery')}
-
- -
- + {/*
+ { + props.assentAndGoBack(); + }} + /> +
*/} +

{window.i18n('recoveryPhrase')}

+ +
+

+ {props.mnemonic} +

+ {/* */} +
+ {/* */} +
+ { + setSeedCopied(true); + }}/> +
+
+
+

+ Note : {window.i18n('saveYourRecoveryPhrase')} + {window.i18n('copyToContinueRecovery')} +

+ + {/* */} +
- - {props.copySeed(props.mnemonic),setSeedCopied(true),pushUserCopySuccess()}} /> -
- -
- - - ) -} \ No newline at end of file + +
+ ); +}; diff --git a/ts/components/registration/SignInTab.tsx b/ts/components/registration/SignInTab.tsx index dbfb6afc..162afcd4 100644 --- a/ts/components/registration/SignInTab.tsx +++ b/ts/components/registration/SignInTab.tsx @@ -3,8 +3,9 @@ import { sanitizeBchatUsername } from '../../bchat/utils/String'; // import { Flex } from '../basic/Flex'; import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; // import { BchatSpinner } from '../basic/BchatSpinner'; -import { SpacerLG } from '../basic/Text'; +// import { SpacerLG } from '../basic/Text'; import { + LeftImage, MAX_USERNAME_LENGTH, RegistrationContext, RegistrationPhase, @@ -19,6 +20,7 @@ import { DisplaySeed } from './DisplaySeed'; import { mn_decode } from '../../bchat/crypto/mnemonic'; import { ToastUtils } from '../../bchat/utils'; import { WalletPassword } from './WalletPass'; +import { Flex } from '../basic/Flex'; // import { BchatIconButton } from '../icon/BchatIconButton'; const { clipboard } = require('electron'); @@ -46,8 +48,8 @@ const RestoreUsingRecoveryPhraseButton = (props: { onRecoveryButtonClicked: () = return ( @@ -61,8 +63,8 @@ const ContinueYourBchatButton = (props: { return ( - + {/* */} {/* */}
); @@ -167,7 +169,7 @@ export const SignInTab = (props: any) => { } if (password !== repassword) { window?.log?.warn('invalid password'); - return ToastUtils.pushToastError('invalidPassword', 'Passwords do not match'); + return ToastUtils.pushToastError('invalidPassword', 'Please Enter Same Password !'); } if ( (password.length < 4 && repassword.length < 4) || @@ -179,6 +181,7 @@ export const SignInTab = (props: any) => { ); } setScreenName(3); + props.imageValidator(LeftImage.recoveryseed); }; // const clickGoBack = () => { @@ -197,6 +200,7 @@ export const SignInTab = (props: any) => { try { mn_decode(recoveryPhrase, 'english'); setScreenName(2); + props.imageValidator(LeftImage.password); } catch (e) { setScreenName(1); ToastUtils.pushToastError( @@ -211,18 +215,26 @@ export const SignInTab = (props: any) => { if (signInMode !== SignInMode.Default && screenName === 1) { return ( <> -
+ {/*
{ props.assent(true); setScreenName(1); setBlockheight(''); setRestoreDate(''); + props.imageValidator(LeftImage.registration); }} /> -
+
*/} assignSeed()} + backArrow={() => { + props.assent(true); + setScreenName(1); + setBlockheight(''); + setRestoreDate(''); + props.imageValidator(LeftImage.registration); + }} + paste={() => assignSeed()} assignRecoveryPhase={(seed: string) => { setRecoveryPhrase(seed); // setRecoveryPhraseError(!seed ? window.i18n('recoveryPhraseEmpty') : undefined); @@ -245,6 +257,7 @@ export const SignInTab = (props: any) => { setRepassword={(e: any) => setRepassword(e)} backArrow={() => { setScreenName(1); + props.imageValidator(LeftImage.recoveryseed); setPassword(''); setRepassword(''), props.assent(true); }} @@ -269,9 +282,10 @@ export const SignInTab = (props: any) => {
@@ -282,12 +296,12 @@ export const SignInTab = (props: any) => {
{screenName === 3 && ( <> -
{ @@ -297,21 +311,36 @@ export const SignInTab = (props: any) => { setRepassword(''); setBlockheight(''); setRestoreDate(''); + props.imageValidator(LeftImage.registration); }} />
-
{window.i18n('restoreFromSeed')}
+
{window.i18n('restoreFromSeed')}
*/} + +
+ { + props.assent(true); + setScreenName(1); + setPassword(''); + setRepassword(''); + setBlockheight(''); + setRestoreDate(''); + props.imageValidator(LeftImage.registration); + }} /> +
+ {window.i18n('restoreFromSeed')} +
{ const sanitizedName = sanitizeBchatUsername(name); const trimName = sanitizedName.trim(); - setDisplayName(sanitizedName); + setDisplayName(sanitizedName.replace(/\s/g, '')); setDisplayNameError(!trimName ? window.i18n('displayNameEmpty') : undefined); }} // onEnterPressed={props.handlePressEnter} @@ -339,7 +368,7 @@ export const SignInTab = (props: any) => { />
OR
-
+

If you dont know the restore Date, you can skip it.

@@ -355,7 +384,7 @@ export const SignInTab = (props: any) => { inputDataTestId="display-name-input" />
-
+
{ setDisplayName(''); setIsLoading(false); props.assent(false); + props.imageValidator(LeftImage.recoveryseed) }} onLinkDeviceButtonClicked={() => { setRegistrationPhase(RegistrationPhase.SignIn); diff --git a/ts/components/registration/SignUpTab.tsx b/ts/components/registration/SignUpTab.tsx index 13be5aa9..c6e2693f 100644 --- a/ts/components/registration/SignUpTab.tsx +++ b/ts/components/registration/SignUpTab.tsx @@ -3,7 +3,7 @@ import { fromHex, sanitizeBchatUsername } from '../../bchat/utils/String'; import { Flex } from '../basic/Flex'; import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { BchatIconButton } from '../icon'; -import { RegistrationContext, RegistrationPhase, signUp } from './RegistrationStages'; +import { LeftImage, RegistrationContext, RegistrationPhase, signUp } from './RegistrationStages'; import { RegistrationUserDetails } from './RegistrationUserDetails'; import { SignInMode } from './SignInTab'; import { DisplayIdAndAddress, ShowRecoveryPhase } from './ShowIdAndAddress'; @@ -13,7 +13,7 @@ import { mn_decode } from '../../bchat/crypto/mnemonic'; import { bchatGenerateKeyPair } from '../../util/accountManager'; import { WalletPassword } from './WalletPass'; -const { clipboard } = require('electron'); +// const { clipboard } = require('electron'); export enum SignUpMode { Default, @@ -25,8 +25,8 @@ const CreateBchatIdButton = ({ createBchatID }: { createBchatID: any }) => { return ( ); @@ -45,9 +45,9 @@ export const GoBackMainMenuButton = (props: any) => { return ( { setRegistrationPhase(RegistrationPhase.Start); setSignInMode(SignInMode.Default); @@ -131,9 +131,10 @@ export const SignUpTab = (props: any) => {
@@ -142,6 +143,7 @@ export const SignUpTab = (props: any) => { const clickGoBack = () => { setDisplayName(''); setDisplayNameScreen(0); + props.imageValidator(LeftImage.registration); }; const verifyUserName = () => { if (!displayName) { @@ -149,6 +151,7 @@ export const SignUpTab = (props: any) => { ToastUtils.pushToastError('invalidDisplayName', window.i18n('displayNameEmpty')); } else { setDisplayNameScreen(1); + props.imageValidator(LeftImage.password); } }; @@ -170,6 +173,7 @@ export const SignUpTab = (props: any) => { const walletData = { displayName, password }; void generateMnemonicAndKeyPairCreate(walletData); setDisplayNameScreen(2); + props.imageValidator(LeftImage.address); setRepassword(''); setPassword(''); } @@ -180,6 +184,7 @@ export const SignUpTab = (props: any) => { if (displayNameScreen === 1) { setPassword(''); setRepassword(''); + props.imageValidator(LeftImage.registration) } }; if (displayNameScreen === 1) { @@ -202,14 +207,14 @@ export const SignUpTab = (props: any) => { flexDirection="row" container={true} alignItems="center" - padding="14px 0px" - margin="0px 0px 0px 65px" + // padding="14px 0px" + // margin="0px 0px 0px 65px" >
- {window.i18n('welcomeToYourBchat')} + {window.i18n('displayName')} { }} stealAutoFocus={true} /> -
+
{ verifyUserName(); }} - buttonType={BchatButtonType.Brand} - buttonColor={BchatButtonColor.Green} - text={window.i18n('getStarted')} + buttonType={BchatButtonType.Default} + buttonColor={BchatButtonColor.Primary} + text={window.i18n('continue')} + disabled={!displayName} />
); } - const handlePaste = () => { - clipboard.writeText(generatedRecoveryPhrase, 'clipboard'); - }; + // const handlePaste = () => { + // clipboard.writeText(generatedRecoveryPhrase, 'clipboard'); + // }; if (displayNameScreen === 2) { return ( @@ -252,6 +258,7 @@ export const SignUpTab = (props: any) => { { setDisplayNameScreen(3); + props.imageValidator(LeftImage.recoveryseed); }} pubKey={hexGeneratedPubKey} walletAddress={localStorage.getItem('userAddress')} @@ -274,7 +281,7 @@ export const SignUpTab = (props: any) => { mnemonic={generatedRecoveryPhrase} nextFunc={signUpWithDetails} enableCompleteSignUp={enableCompleteSignUp} - copySeed={handlePaste} + // copySeed={handlePaste} loading={showSeedLoading} > diff --git a/ts/components/registration/WalletPass.tsx b/ts/components/registration/WalletPass.tsx index fc45c4fc..966d2421 100644 --- a/ts/components/registration/WalletPass.tsx +++ b/ts/components/registration/WalletPass.tsx @@ -1,60 +1,61 @@ -import React from "react" -import { BchatButton, BchatButtonColor, BchatButtonType } from "../basic/BchatButton" -import { BchatInput } from "../basic/BchatInput" -import { Flex } from "../basic/Flex" -import { } from "../leftpane/ActionsPanel" +import React from 'react'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +import { BchatInput } from '../basic/BchatInput'; +import { Flex } from '../basic/Flex'; +import {} from '../leftpane/ActionsPanel'; -import { GoBackMainMenuButton } from "./SignUpTab" +import { GoBackMainMenuButton } from './SignUpTab'; +import { SpacerLG } from '../basic/Text'; - export const WalletPassword=(props:any)=>{ - - return( +export const WalletPassword = (props: any) => { + return (
-
- -
+
+ +
-
- - Wallet Password +
+ Wallet Password - -

Create New Wallet Password

- -
- -
-
- props.submit()} - buttonType={BchatButtonType.Brand} - buttonColor={BchatButtonColor.Green} - text={window.i18n('continue')} - /> -
- +

Create New Wallet Password

+ + + +
+
+ props.submit()} + buttonType={BchatButtonType.Default} + buttonColor={BchatButtonColor.Primary} + text={window.i18n('continue')} + /> +
-

Note: Your wallet password will be used to authenticate transactions on BChat.Keep Your Wallet Password Safe. If you forget the password, you can reset it only by restoring your BChat account using your Recovery Seed.

+

+ Note: Your wallet password will be used to authenticate transactions on BChat. + Keep Your Wallet Password Safe. If you forget the password, you can reset + it only by restoring your BChat account using your Recovery Seed. +

- ) -} \ No newline at end of file + ); +}; diff --git a/ts/components/search/MessageSearchResults.tsx b/ts/components/search/MessageSearchResults.tsx index 71f7a94e..e63be41b 100644 --- a/ts/components/search/MessageSearchResults.tsx +++ b/ts/components/search/MessageSearchResults.tsx @@ -3,12 +3,16 @@ import React from 'react'; import { getOurPubKeyStrFromCache } from '../../bchat/utils/User'; import { openConversationToSpecificMessage } from '../../state/ducks/conversations'; import { ContactName } from '../conversation/ContactName'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; +import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; import { Timestamp } from '../conversation/Timestamp'; import { MessageBodyHighlight } from '../basic/MessageBodyHighlight'; import styled from 'styled-components'; import { MessageAttributes } from '../../models/messageType'; -import { useConversationUsername, useIsPrivate } from '../../hooks/useParamSelector'; +import { + useConversationBnsHolder, + useConversationUsername, + useIsPrivate, +} from '../../hooks/useParamSelector'; import { UserUtils } from '../../bchat/utils'; export type MessageResultProps = MessageAttributes & { snippet: string }; @@ -133,8 +137,17 @@ const FromUserInGroup = (props: { authorPubkey: string; conversationId: string } return {authorConvoName}: ; }; -const AvatarItem = (props: { source: string }) => { - return ; +const AvatarItem = (props: { source: string; isBnsHolder: any }) => { + return ( + + + + ); }; const ResultBody = styled.div` @@ -199,7 +212,7 @@ export const MessageSearchResult = (props: MessageResultProps) => { const destination = direction === 'incoming' ? conversationId : convoIsPrivate ? me : conversationId; - + const isBnsHolder = useConversationBnsHolder(destination); if (!source && !destination) { return null; } @@ -217,7 +230,7 @@ export const MessageSearchResult = (props: MessageResultProps) => { }); }} > - + diff --git a/ts/components/settings/BchatRecoverySeed.tsx b/ts/components/settings/BchatRecoverySeed.tsx index 286df729..49dc0074 100644 --- a/ts/components/settings/BchatRecoverySeed.tsx +++ b/ts/components/settings/BchatRecoverySeed.tsx @@ -3,15 +3,20 @@ import React from 'react'; import { BchatSeedModal } from '../dialog/BchatSeedModal'; import { useSelector } from 'react-redux'; import { getRecoveryPhraseDialog } from '../../state/selectors/modal'; +import { BchatWrapperModal } from '../BchatWrapperModal'; -import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; -import { BchatIcon } from '../icon'; +// import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +// import { BchatIcon } from '../icon'; import { BchatSettingCategory } from './BchatSettings'; import { showSettingsSection } from '../../state/ducks/section'; import { displayPasswordModal } from './section/CategoryPrivacy'; -import { SpacerMD } from '../basic/Text'; +import { SpacerLG } from '../basic/Text'; +import { BchatButtonColor } from '../basic/BchatButton'; +import { BchatIcon } from '../icon/BchatIcon'; +// import { updateConfirmModal } from '../../state/ducks/modalDialog'; export const BchatRecoverySeed = (props: any) => { + // const [verify, setVerify] = useState(false) const recoveryPhraseModalState = useSelector(getRecoveryPhraseDialog); @@ -19,35 +24,68 @@ export const BchatRecoverySeed = (props: any) => { return ; } - return ( -
-
- - + const onClickOkHandler = () => { + window.inboxStore?.dispatch(showSettingsSection(BchatSettingCategory.Privacy)); + displayPasswordModal('set', props.onPasswordUpdated); + }; -
{window.i18n('setPassword')}
- -
- Set a Password before accessing the Recovery Phrase. You can set your password from{' '} -
-
Settings -> Privacy -> Set Account Password.
- - + const onClickCancelHandler = () => { + console.log("sdnksnfksfkjf") + // if (props.onClickCancel) { + // onClickCancel(); + // } + + // if (onClickClose) { + // onClickClose(); + // } + // state.recoveryPhraseModal + // displayPasswordModal('remove', props.onPasswordUpdated); + window.inboxStore?.dispatch(showSettingsSection(BchatSettingCategory.Chat)); -
- { - window.inboxStore?.dispatch(showSettingsSection(BchatSettingCategory.Privacy)); - displayPasswordModal('set', props.onPasswordUpdated); - // setVerify(true) - }} - buttonType={BchatButtonType.Brand} - buttonColor={BchatButtonColor.Green} - /> + // window.inboxStore?.dispatch(updateConfirmModal(null)); +}; + + return ( + } + > +
+
+
+
{window.i18n('setPassword')}
+ +
+ Set a Password before accessing the Recovery Phrase. You can set your password from{' '} + Settings -> Privacy -> Set Account Password. +
+ {/*
Settings -> Privacy -> Set Account Password.
*/} +
+ {/*
{window.i18n('payYouChat')}
+ */} + {/*
+ {settings ? ( + window.i18n('warningWalletPassword') + ) : ( + <> + Enable pay as you chat from Settings -> Chat -> Pay As You Chat + to use this option + + )} +
*/}
-
+ ); // if(true) diff --git a/ts/components/settings/BchatSettingListItem.tsx b/ts/components/settings/BchatSettingListItem.tsx index 70cc9adb..de505d26 100644 --- a/ts/components/settings/BchatSettingListItem.tsx +++ b/ts/components/settings/BchatSettingListItem.tsx @@ -1,10 +1,11 @@ import React from 'react'; import classNames from 'classnames'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { BchatToggle } from '../basic/BchatToggle'; import { BchatConfirmDialogProps } from '../dialog/BchatConfirm'; import { Avatar, AvatarSize } from '../avatar/Avatar'; - +import { BchatIcon, BchatIconType } from '../icon'; +import { Flex } from '../basic/Flex'; type ButtonSettingsProps = { title?: string; @@ -13,24 +14,32 @@ type ButtonSettingsProps = { buttonText: string; dataTestId?: string; bchatId?: string; + iconType?:BchatIconType onClick: () => void; }; -const SettingsTitleAndDescription = (props: { title?: string; description?: string,bchatId?: string}) => { +const SettingsTitleAndDescription = (props: { + title?: string; + description?: string; + bchatId?: string; +}) => { return (
- { props.bchatId ? -
- dispatch(editProfileModal({}))} - pubkey={props.bchatId} - dataTestId="leftpane-primary-avatar" - /> -
{props.title}
- -
:
{props.title}
- } + {props.bchatId ? ( +
+ dispatch(editProfileModal({}))} + pubkey={props.bchatId} + dataTestId="leftpane-primary-avatar" + /> +
+ {props.title} +
+
+ ) : ( +
{props.title}
+ )} {/*
{props.title}
*/} {props.description && (
{props.description}
@@ -48,12 +57,26 @@ export const BchatSettingsItemWrapper = (props: { title?: string; description?: string; bchatId?: string; + iconType?:BchatIconType children: React.ReactNode; }) => { return (
- - + + + + + + {props.children}
); @@ -65,30 +88,39 @@ export const BchatToggleWithDescription = (props: { active: boolean; onClickToggle: () => void; confirmationDialogParams?: BchatConfirmDialogProps; + iconType?:BchatIconType }) => { - const { title, description, active, onClickToggle, confirmationDialogParams } = props; + const { title, description, active, onClickToggle, confirmationDialogParams,iconType } = props; return ( - + ); }; export const BchatSettingButtonItem = (props: ButtonSettingsProps) => { - const { title, description, buttonColor, buttonText, dataTestId,bchatId, onClick } = props; + const { title, description, buttonColor, buttonText, dataTestId, bchatId,iconType, onClick } = props; return ( - + ); diff --git a/ts/components/settings/BchatSettings.tsx b/ts/components/settings/BchatSettings.tsx index 0ff9bedc..ad4ccf81 100644 --- a/ts/components/settings/BchatSettings.tsx +++ b/ts/components/settings/BchatSettings.tsx @@ -26,6 +26,9 @@ import { WalletMainPanel, } from '../wallet/BchatWalletMainPanel'; import { deamonvalidation } from '../../wallet/BchatWalletHelper'; import { SettingsCategoryChat } from './section/categoryChat'; import { WalletSettings } from '../wallet/BchatWalletSettings'; +import { updateBchatAlertConfirmModal } from '../../state/ducks/modalDialog'; +import { useSelector } from 'react-redux'; +import { getTheme } from '../../state/selectors/theme'; // import { NodeSetting } from '../wallet/BchatWalletNodeSetting'; // import { startWallet } from "../../mains/wallet-rpc" @@ -50,7 +53,8 @@ export enum BchatSettingCategory { Hops = 'hops', Wallet = 'wallet', WalletSettings = 'walletSettings', - + ClearData = 'clearData' + } export interface SettingsViewProps { @@ -89,28 +93,45 @@ export const PasswordLock = ({ pwdLockError: string | null; validatePasswordLock: () => Promise; }) => { + const darkMode = useSelector(getTheme) === 'dark'; return (
-
-

{window.i18n('password')}

- +
+
+
+ +
{window.i18n('password')}
+ - {/* {pwdLockError &&
{pwdLockError}
} */} -
+ {/* {pwdLockError &&
{pwdLockError}
} */} + {/*
+
*/} +
+
+
+
); @@ -184,6 +205,8 @@ export class BchatSettingsView extends React.Component this.onClickCancel()} + /> ); } @@ -207,9 +230,9 @@ export class BchatSettingsView extends React.Component if (category === BchatSettingCategory.WalletSettings) { return ( -
- -
+
+ +
); } if (category === BchatSettingCategory.Notifications) { @@ -275,13 +298,13 @@ export class BchatSettingsView extends React.Component ? 'hops' : category === BchatSettingCategory.Chat ? 'Chat' - : category === BchatSettingCategory.WalletSettings - ? 'WalletSettingsTitle' - : category === BchatSettingCategory.Wallet - ? 'WalletSettingsTitle' - : category === BchatSettingCategory.Notifications - ? 'notificationsSettingsTitle' - : 'privacySettingsTitle'; + : category === BchatSettingCategory.WalletSettings + ? 'WalletSettingsTitle' + : category === BchatSettingCategory.Wallet + ? 'WalletSettingsTitle' + : category === BchatSettingCategory.Notifications + ? 'notificationsSettingsTitle' + : 'privacySettingsTitle'; return (
@@ -332,6 +355,10 @@ export class BchatSettingsView extends React.Component } } + public onClickCancel() { + window.inboxStore?.dispatch(updateBchatAlertConfirmModal(null)) + } + private async onKeyUp(event: any) { const lockPasswordVisible = Boolean(document.getElementById('password-lock-input')); diff --git a/ts/components/settings/BchatSettingsHeader.tsx b/ts/components/settings/BchatSettingsHeader.tsx index 681bd257..c64f1b82 100644 --- a/ts/components/settings/BchatSettingsHeader.tsx +++ b/ts/components/settings/BchatSettingsHeader.tsx @@ -1,12 +1,14 @@ import React from 'react'; -import { SettingsViewProps } from './BchatSettings'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; -import { editProfileModal, } from '../../state/ducks/modalDialog'; +import { BchatSettingCategory, SettingsViewProps } from './BchatSettings'; +// import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; +// import { editProfileModal } from '../../state/ducks/modalDialog'; import { useDispatch, useSelector } from 'react-redux'; -import { getOurNumber } from '../../state/selectors/user'; +// import { getOurNumber } from '../../state/selectors/user'; import { BchatIconButton } from '../icon/BchatIconButton'; - import { toggleMultipleSelection } from '../../state/ducks/userConfig'; +import { toggleMultipleSelection } from '../../state/ducks/userConfig'; import { getMultipleSelection } from '../../state/selectors/userConfig'; +import { getBlockedPubkeys } from '../../state/selectors/conversations'; +// import { getConversationController } from '../../bchat/conversations'; // import { useUpdate } from 'react-use'; type Props = Pick & { @@ -14,14 +16,19 @@ type Props = Pick & { }; export const SettingsHeader = (props: Props) => { - - const { categoryTitle } = props; + const { categoryTitle,category } = props; // const forceUpdate = useUpdate(); const dispatch = useDispatch(); - const ourNumber = useSelector(getOurNumber); + // const ourNumber = useSelector(getOurNumber); + // const converstation = getConversationController().get(ourNumber); + // let color: any; const multipleSelectionValue = useSelector(getMultipleSelection); + const blockedNumbers = useSelector(getBlockedPubkeys); + + // console.log("multipleSelectionValue:", multipleSelectionValue); + // console.log("blockedNumbers:", blockedNumbers) // const temp=useSelector(state=>state) // console.log('multipleSelectionValue', multipleSelectionValue,temp); @@ -35,38 +42,51 @@ export const SettingsHeader = (props: Props) => { // forceUpdate() // } // }, [multipleSelectionValue]) + console.log('categoryTitle -->',category,BchatSettingCategory.Wallet,) + if(category === BchatSettingCategory.Wallet) + { + return <> + } return (
-
- dispatch(editProfileModal({}))} - pubkey={ourNumber} - dataTestId="leftpane-primary-avatar" - /> -
+ {/*
+ + dispatch(editProfileModal({}))} + pubkey={ourNumber} + dataTestId="leftpane-primary-avatar" + /> + +
*/}
{categoryTitle}
- {window.i18n('blockedSettingsTitle') === categoryTitle && -
- {multipleSelectionValue ? + {window.i18n('blockedSettingsTitle') === categoryTitle && blockedNumbers.length != 0 && ( +
+ {multipleSelectionValue ? ( { dispatch(toggleMultipleSelection()) }} + onClick={() => { + dispatch(toggleMultipleSelection()); + }} /> - : + ) : ( { dispatch(toggleMultipleSelection()) }} + onClick={() => { + dispatch(toggleMultipleSelection()); + }} /> - } + )}
- } - + )}
); }; diff --git a/ts/components/settings/BeldexNotificationGroupSettings.tsx b/ts/components/settings/BeldexNotificationGroupSettings.tsx index 22302505..4810b22c 100644 --- a/ts/components/settings/BeldexNotificationGroupSettings.tsx +++ b/ts/components/settings/BeldexNotificationGroupSettings.tsx @@ -7,8 +7,8 @@ import { SettingsKey } from '../../data/settings-key'; import { useUpdate } from 'react-use'; import { isAudioNotificationSupported } from '../../types/Settings'; import styled from 'styled-components'; -import { SpacerLG } from '../basic/Text'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { SpacerLG, SpacerMD } from '../basic/Text'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { Notifications } from '../../util/notifications'; // import { BchatButtonIcon } from '../wallet/BchatWalletPaymentSection'; // import { BchatToggle } from '../basic/BchatToggle'; @@ -19,8 +19,8 @@ const StyledButtonContainer = styled.div` flex-direction: column; padding-inline-start: var(--margins-lg); justify-content: center; - align-items: center; - width: 100%; + align-items: center; + width: 100%; `; export const BchatNotificationGroupSettings = (props: { hasPassword: boolean | null }) => { const initialItem = window.getSettingValue('notification-setting') || 'message'; @@ -28,12 +28,11 @@ export const BchatNotificationGroupSettings = (props: { hasPassword: boolean | n window.getSettingValue(SettingsKey.settingsAudioNotification) || false; const forceUpdate = useUpdate(); - const [selected, setSelected] = useState(initialItem) + const [selected, setSelected] = useState(initialItem); if (props.hasPassword === null) { return null; } - const items = [ { label: window.i18n('nameAndMessage'), @@ -54,18 +53,16 @@ export const BchatNotificationGroupSettings = (props: { hasPassword: boolean | n ]; function notificationOption(item: any) { window.setSettingValue('notification-setting', item.value); - setSelected(item.value) + setSelected(item.value); } function toggle() { if (selected === 'off') { window.setSettingValue('notification-setting', 'message'); - setSelected('message') - } - else { + setSelected('message'); + } else { window.setSettingValue('notification-setting', 'off'); - setSelected('off') + setSelected('off'); } - } const onClickPreview = () => { if (selected === 'off') { @@ -87,31 +84,42 @@ export const BchatNotificationGroupSettings = (props: { hasPassword: boolean | n return ( // <> -
- { - toggle() - }} - title={window.i18n('notificationSettingsDialog')} - // description={window.i18n('audioMessageAutoplayDescription')} - active={selected !== 'off'} - /> - {selected !== 'off' && items.map((item, i) => -
notificationOption(item)}> -
- {selected === item.value && } -
-
- {item.label} -
-
- )} - - {/* + {' '} +
+ { + toggle(); + }} + title={window.i18n('notificationSettingsDialog')} + // description={window.i18n('audioMessageAutoplayDescription')} + active={selected !== 'off'} + iconType="notifySet" + /> + {selected !== 'off' && + items.map((item, i) => ( +
notificationOption(item)} + > +
+ {selected === item.value && ( + + )} +
+
{item.label}
+
+ ))} + {/* */} -
- {selected !== 'off' && isAudioNotificationSupported() && ( - <> - { - window.setSettingValue( - SettingsKey.settingsAudioNotification, - !initialAudioNotificationEnabled - ); - forceUpdate(); - }} - title={window.i18n('notificationSound')} - // description={window.i18n('audioMessageAutoplayDescription')} - active={window.getSettingValue( - SettingsKey.settingsAudioNotification)} - /> +
+ + {selected !== 'off' && isAudioNotificationSupported() && ( + <> + { + window.setSettingValue( + SettingsKey.settingsAudioNotification, + !initialAudioNotificationEnabled + ); + forceUpdate(); + }} + title={window.i18n('notificationSound')} + // description={window.i18n('audioMessageAutoplayDescription')} + active={window.getSettingValue(SettingsKey.settingsAudioNotification)} + iconType="speaker" + /> - - - onClickPreview()} buttonColor={BchatButtonColor.Green}/> - - - )} - + + + onClickPreview()} + buttonColor={BchatButtonColor.Primary} + buttonType={BchatButtonType.Brand} + /> + + + )} +
); }; - - - diff --git a/ts/components/settings/BlockedUserSettings.tsx b/ts/components/settings/BlockedUserSettings.tsx index 34132117..3b78e89b 100644 --- a/ts/components/settings/BlockedUserSettings.tsx +++ b/ts/components/settings/BlockedUserSettings.tsx @@ -5,8 +5,8 @@ import { unblockConvoById } from '../../interactions/conversationInteractions'; import { getBlockedPubkeys } from '../../state/selectors/conversations'; // import { BchatButtonColor } from '../basic/BchatButton'; -// import { BchatSettingButtonItem, -// BchatSettingsItemWrapper +// import { BchatSettingButtonItem, +// BchatSettingsItemWrapper // } from './BchatSettingListItem'; import { useSet } from '../../hooks/useSet'; import { BlockedNumberController } from '../../util'; @@ -15,19 +15,22 @@ import useUpdate from 'react-use/lib/useUpdate'; import styled from 'styled-components'; // import { MemberListItem } from '../MemberListItem'; import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; -import { Avatar, AvatarSize, CrownIcon } from '../avatar/Avatar'; -import { useConversationUsernameOrShorten } from '../../hooks/useParamSelector'; +import { Avatar, AvatarSize, BNSWrapper, CrownIcon } from '../avatar/Avatar'; +import { + useConversationBnsHolder, + useConversationUsernameOrShorten, +} from '../../hooks/useParamSelector'; import classNames from 'classnames'; -import { BchatIcon } from '../icon'; +import { BchatIconButton } from '../icon'; import { getMultipleSelection } from '../../state/selectors/userConfig'; import { hideMultipleSelection } from '../../state/ducks/userConfig'; +import { SpacerLG } from '../basic/Text'; export const BlockedUserSettings = () => { const blockedNumbers = useSelector(getBlockedPubkeys); const forceUpdate = useUpdate(); const multipleSelection = useSelector(getMultipleSelection); - const dispatch=useDispatch() - + const dispatch = useDispatch(); const { uniqueValues: selectedIds, @@ -42,7 +45,7 @@ export const BlockedUserSettings = () => { emptySelected(); ToastUtils.pushToastSuccess('unblocked', window.i18n('unblocked')); forceUpdate(); - dispatch(hideMultipleSelection()) + dispatch(hideMultipleSelection()); } } @@ -55,10 +58,8 @@ export const BlockedUserSettings = () => { // > // {' '} // -
-
- -
+
+
{window.i18n('noBlockedContacts')}
); @@ -73,27 +74,36 @@ export const BlockedUserSettings = () => { // title = window.i18n('anonymous'); // } - return
-
- -
- {multipleSelection && - - +
+ - - } -
+ + + {multipleSelection && ( + + + + )} +
+ +
+ ); // { // }} // /> - // }); // } @@ -123,10 +132,7 @@ const BlockedEntriesContainer = styled.div` const UnBlockedBox = styled.div` display: flex; justify-content: center; - background: var(--color-chatHeader); - height: 56px; - align-items: center; -`; + `; const BlockedEntriesRoundedContainer = styled.div` overflow: hidden; background: var(--background-secondary-color); @@ -136,19 +142,20 @@ const BlockedEntriesRoundedContainer = styled.div` // margin: 0 var(--margins-lg); `; - - - - - const BlockedEntries = (props: { blockedNumbers: Array; selectedIds: Array; addToSelected: (id: string) => void; removeFromSelected: (id: string) => void; - multipleSelection: boolean + multipleSelection: boolean; }) => { - const { addToSelected, blockedNumbers, removeFromSelected, selectedIds, multipleSelection } = props; + const { + addToSelected, + blockedNumbers, + removeFromSelected, + selectedIds, + multipleSelection, + } = props; return ( @@ -171,18 +178,23 @@ const BlockedEntries = (props: { ); }; - - const AvatarContainer = styled.div` position: relative; `; -const AvatarItem = (props: { memberPubkey: string; isAdmin: boolean }) => { - const { memberPubkey, isAdmin } = props; +const AvatarItem = (props: { memberPubkey: string; isAdmin: boolean; isBnsHolder: any }) => { + const { memberPubkey, isAdmin, isBnsHolder } = props; return ( - - {isAdmin && } + + + {isAdmin && } + ); }; @@ -209,10 +221,11 @@ export const BlockedMemberList = (props: { onUnselect, disableBg, dataTestId, - multipleSelection + multipleSelection, } = props; const memberName = useConversationUsernameOrShorten(pubkey); + const isBnsHolder = useConversationBnsHolder(pubkey); return ( // tslint:disable-next-line: use-simple-attributes
{ multipleSelection && isSelected ? onUnselect?.(pubkey) : onSelect?.(pubkey); }} - style={ - !disableBg - ? { - } - : {} - } + style={!disableBg ? {} : {}} role="button" data-testid={dataTestId} > -
+
- + {memberName}
-
- - {!multipleSelection ? -
+
+ {!multipleSelection ? ( +
unblockConvoById(pubkey)} dataTestId="unblock-button-settings-screen" /> -
: -
- - {isSelected && } -
- } + ) : ( +
+ {/*
*/} + +
+ )}
-
); }; - diff --git a/ts/components/settings/ChangeChatFontSetting.tsx b/ts/components/settings/ChangeChatFontSetting.tsx index c30d8c15..7141888b 100644 --- a/ts/components/settings/ChangeChatFontSetting.tsx +++ b/ts/components/settings/ChangeChatFontSetting.tsx @@ -49,7 +49,7 @@ export const ChangeChatFontSetting = (props: { onSliderChange?: (value: number) } return ( - +
displayPopUp()}>
{value} diff --git a/ts/components/settings/MessageRequestInSettings.tsx b/ts/components/settings/MessageRequestInSettings.tsx index 626a7051..ffb11483 100644 --- a/ts/components/settings/MessageRequestInSettings.tsx +++ b/ts/components/settings/MessageRequestInSettings.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; // import { contextMenu } from 'react-contexify'; // import { useSelector } from 'react-redux'; -import { Avatar, AvatarSize } from '.././avatar/Avatar'; +import { Avatar, AvatarSize, BNSWrapper } from '.././avatar/Avatar'; import { createPortal } from 'react-dom'; import { @@ -15,6 +15,7 @@ import { updateUserDetailsModal } from '../../state/ducks/modalDialog'; import { useAvatarPath, + useConversationBnsHolder, useConversationUsername, useIsPrivate, // useIsRequest, @@ -27,9 +28,13 @@ import _ from 'lodash'; // import { getSelectedConversation } from '../../state/selectors/conversations'; // import { getConversationController } from 'bchat/conversations'; import { - approveConvoAndSendResponse, + approveConvoAndSendResponse, declineConversationWithConfirm, } from '../../interactions/conversationInteractions'; import { getConversationController } from '../../bchat/conversations'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; +import { SpacerXS } from '../basic/Text'; +// import { BchatIcon } from '../icon'; +import DeclineMessageRequest from '../icon/DeclineMessageRequest'; // import { AcceptMenuItem } from '../menu/Menu'; // import useUpdate from 'react-use/lib/useUpdate'; @@ -63,6 +68,7 @@ const AvatarItem = () => { const userName = useConversationUsername(conversationId); const isPrivate = useIsPrivate(conversationId); const avatarPath = useAvatarPath(conversationId); + const isBnsHolder = useConversationBnsHolder(conversationId); const dispatch = useDispatch(); function onPrivateAvatarClick() { @@ -73,23 +79,28 @@ const AvatarItem = () => { authorAvatarPath: avatarPath, }) ); - } + } return (
+ +
); }; // tslint:disable: max-func-body-length const MessageRequestListSetting = (props: Props) => { -// const selectedConversation = useSelector(getSelectedConversation); - const { // unreadCount, id: conversationId, @@ -123,7 +134,10 @@ const MessageRequestListSetting = (props: Props) => { await approveConvoAndSendResponse(conversationId, true); // // forceUpdate() }; - + const handleDeclineConversationRequest = () => { + const customIcon = + declineConversationWithConfirm(conversationId, true,customIcon); + }; return ( @@ -164,9 +178,26 @@ const MessageRequestListSetting = (props: Props) => {
*/}
{/* */} -
+ {/*
{window.i18n('accept')} -
+
*/} + + + {/* */}
diff --git a/ts/components/settings/ZoomingBchatSlider.tsx b/ts/components/settings/ZoomingBchatSlider.tsx index 340f5d69..199bf813 100644 --- a/ts/components/settings/ZoomingBchatSlider.tsx +++ b/ts/components/settings/ZoomingBchatSlider.tsx @@ -43,6 +43,7 @@ export const ZoomingBchatSlider = (props: { onSliderChange?: (value: number) => const handleSlider = (valueToForward: any) => { let value = valueToForward.substring(0, valueToForward.length - 1) + console.log("value:",value) props?.onSliderChange?.(value); window.setSettingValue('zoom-factor-setting', value); setValue(value) @@ -98,7 +99,7 @@ export const ZoomingBchatSlider = (props: { onSliderChange?: (value: number) => function displayPopUp() { dispatch( walletSettingMiniModal({ - headerName: 'Zooming Factor', + headerName: 'Zoom Level', content: option, currency: value + '%', onClose: () => dispatch(walletSettingMiniModal(null)), @@ -110,7 +111,7 @@ export const ZoomingBchatSlider = (props: { onSliderChange?: (value: number) => ) } return ( - + {/*
+
{/* this function used for hide the menubar */} {/* {isHideMenuBarSupported() && ( {/* { @@ -155,6 +157,7 @@ export const SettingsCategoryAppearance = (props: { hasPassword: boolean | null // description={window.i18n('startInTrayDescription')} description={"After closing the window, BChat runs in the background"} active={isStartInTrayActive} + iconType='bgProcess' /> } {/* */} +
); } diff --git a/ts/components/settings/section/CategoryPrivacy.tsx b/ts/components/settings/section/CategoryPrivacy.tsx index a4e2d22c..af95555c 100644 --- a/ts/components/settings/section/CategoryPrivacy.tsx +++ b/ts/components/settings/section/CategoryPrivacy.tsx @@ -9,16 +9,17 @@ import { toggleMessageRequests } from '../../../state/ducks/userConfig'; import { getHideMessageRequestBanner } from '../../../state/selectors/userConfig'; import { BchatButtonColor } from '../../basic/BchatButton'; import { PasswordAction } from '../../dialog/BchatPasswordDialog'; - import { BchatSettingButtonItem, BchatToggleWithDescription } from '../BchatSettingListItem'; +import { BchatIcon } from '../../icon'; const toggleCallMediaPermissions = async (triggerUIUpdate: () => void) => { const currentValue = window.getCallMediaPermissions(); if (!currentValue) { window.inboxStore?.dispatch( updateConfirmModal({ + title:'Turn on Voice/Video Call', message: window.i18n('callMediaPermissionsDialogContent'), - okTheme: BchatButtonColor.Danger, + okTheme: BchatButtonColor.Primary, onClickOk: async () => { await window.toggleCallMediaPermissionsTo(true); triggerUIUpdate(); @@ -28,6 +29,8 @@ const toggleCallMediaPermissions = async (triggerUIUpdate: () => void) => { await window.toggleCallMediaPermissionsTo(false); triggerUIUpdate(); }, + iconShow: true, + customIcon: }) ); } else { @@ -75,112 +78,119 @@ export const SettingsCategoryPrivacy = (props: { if (props.hasPassword !== null) { return ( <> - { - const old = Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator)); - window.setSettingValue(SettingsKey.settingsTypingIndicator, !old); - forceUpdate(); - }} - title={window.i18n('typingIndicatorsSettingTitle')} - // description={window.i18n('typingIndicatorsSettingDescription')} - description={window.i18n('typingIndicatorsSettingDescription')} - active={Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator))} - /> - { - await window.toggleMediaPermissions(); - forceUpdate(); - }} - title={window.i18n('mediaPermissionsTitle')} - description={window.i18n('mediaPermissionsDescription')} - active={Boolean(window.getSettingValue('media-permissions'))} - /> - { - await toggleCallMediaPermissions(forceUpdate); - forceUpdate(); - }} - title={window.i18n('callMediaPermissionsTitle')} - description={window.i18n('callMediaPermissionsDescription')} - active={Boolean(window.getCallMediaPermissions())} - /> - { - dispatch(toggleMessageRequests()); - }} - title={window.i18n('hideRequestBanner')} - description={window.i18n('hideRequestBannerDescription')} - active={useSelector(getHideMessageRequestBanner)} - /> - { - const old = Boolean(window.getSettingValue(SettingsKey.settingsReadReceipt)); - window.setSettingValue(SettingsKey.settingsReadReceipt, !old); - forceUpdate(); - }} - title={window.i18n('readReceiptSettingTitle')} - // description={window.i18n('readReceiptSettingDescription')} - description={window.i18n('readReceiptSettingDescription')} - - active={window.getSettingValue(SettingsKey.settingsReadReceipt)} - /> - { - await toggleOpengroupPruning(); - forceUpdate(); - }} - title={window.i18n('pruneSettingTitle')} - description={window.i18n('pruneSettingDescription')} - active={isOpengroupPruningEnabled} - /> - { - const old = Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate)); - window.setSettingValue(SettingsKey.settingsAutoUpdate, !old); - forceUpdate(); - }} - title={window.i18n('autoUpdateSettingTitle')} - description={window.i18n('autoUpdateSettingDescription')} - active={Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate))} - /> - {!props.hasPassword && ( - { - displayPasswordModal('set', props.onPasswordUpdated); +
+ { + const old = Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator)); + window.setSettingValue(SettingsKey.settingsTypingIndicator, !old); + forceUpdate(); }} - buttonColor={BchatButtonColor.Primary} - buttonText={window.i18n('setPassword')} - dataTestId={'set-password-button'} + title={window.i18n('typingIndicatorsSettingTitle')} + // description={window.i18n('typingIndicatorsSettingDescription')} + description={window.i18n('typingIndicatorsSettingDescription')} + active={Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator))} + iconType="chatDots" /> - )} - {props.hasPassword && ( - { - displayPasswordModal('change', props.onPasswordUpdated); + { + await window.toggleMediaPermissions(); + forceUpdate(); }} - buttonColor={BchatButtonColor.Primary} - buttonText={window.i18n('changePassword')} + title={window.i18n('mediaPermissionsTitle')} + description={window.i18n('mediaPermissionsDescription')} + active={Boolean(window.getSettingValue('media-permissions'))} + iconType="microphone" /> - )} - {props.hasPassword && ( - { - displayPasswordModal('remove', props.onPasswordUpdated); + { + await toggleCallMediaPermissions(forceUpdate); + forceUpdate(); + }} + title={window.i18n('callMediaPermissionsTitle')} + description={window.i18n('callMediaPermissionsDescription')} + active={Boolean(window.getCallMediaPermissions())} + iconType="privacyvideoCam" + /> + { + dispatch(toggleMessageRequests()); + }} + title={window.i18n('hideRequestBanner')} + description={window.i18n('hideRequestBannerDescription')} + active={useSelector(getHideMessageRequestBanner)} + iconType="eye_closed" + /> + { + const old = Boolean(window.getSettingValue(SettingsKey.settingsReadReceipt)); + window.setSettingValue(SettingsKey.settingsReadReceipt, !old); + forceUpdate(); + }} + title={window.i18n('readReceiptSettingTitle')} + // description={window.i18n('readReceiptSettingDescription')} + description={window.i18n('readReceiptSettingDescription')} + active={window.getSettingValue(SettingsKey.settingsReadReceipt)} + iconType="receipt" + /> + { + await toggleOpengroupPruning(); + forceUpdate(); + }} + title={window.i18n('pruneSettingTitle')} + description={window.i18n('pruneSettingDescription')} + active={isOpengroupPruningEnabled} + iconType="members" + /> + { + const old = Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate)); + window.setSettingValue(SettingsKey.settingsAutoUpdate, !old); + forceUpdate(); }} - buttonColor={BchatButtonColor.Danger} - buttonText={window.i18n('removePassword')} + title={window.i18n('autoUpdateSettingTitle')} + description={window.i18n('autoUpdateSettingDescription')} + active={Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate))} + iconType="rotatedArrow" /> - )} + {!props.hasPassword && ( + { + displayPasswordModal('set', props.onPasswordUpdated); + }} + buttonColor={BchatButtonColor.Secondary} + buttonText={window.i18n('setPassword')} + dataTestId={'set-password-button'} + iconType="lockWithDots" + /> + )} + {props.hasPassword && ( + { + displayPasswordModal('change', props.onPasswordUpdated); + }} + buttonColor={BchatButtonColor.Primary} + buttonText={window.i18n('changePassword')} + /> + )} + {props.hasPassword && ( + { + displayPasswordModal('remove', props.onPasswordUpdated); + }} + buttonColor={BchatButtonColor.Danger} + buttonText={window.i18n('removePassword')} + /> + )} +
); } diff --git a/ts/components/settings/section/categoryChat.tsx b/ts/components/settings/section/categoryChat.tsx index 1ec006e6..f98c5011 100644 --- a/ts/components/settings/section/categoryChat.tsx +++ b/ts/components/settings/section/categoryChat.tsx @@ -10,7 +10,8 @@ import { getAudioAutoplay } from '../../../state/selectors/userConfig'; import { BchatButtonColor } from '../../basic/BchatButton'; import { BchatToggleWithDescription } from '../BchatSettingListItem'; import { ChangeChatFontSetting } from '../ChangeChatFontSetting'; -import { updatewalletSyncBarShowInChat } from '../../../state/ducks/walletConfig'; +import { updatewalletSyncBarShowInChat } from '../../../state/ducks/walletConfig'; +import { BchatIcon } from '../../icon'; export const SettingsCategoryChat = (props: { hasPassword: boolean | null }) => { const dispatch = useDispatch(); @@ -35,25 +36,27 @@ export const SettingsCategoryChat = (props: { hasPassword: boolean | null }) => updateConfirmModal({ title: window.i18n('linkPreviewsTitle'), message: window.i18n('linkPreviewsConfirmMessage'), - okTheme: BchatButtonColor.Danger, + okTheme: BchatButtonColor.Primary, onClickOk: () => { window.setSettingValue(SettingsKey.settingsLinkPreview, newValue); forceUpdate(); }, + iconShow: true, + customIcon: }) ); } } function chatWithWallet() { - window.setSettingValue(SettingsKey.settingsChatWithWallet,!chatwithWallet); + window.setSettingValue(SettingsKey.settingsChatWithWallet, !chatwithWallet); // let contional:any=chatwithWallet; // console.log('contional::',contional) // dispatch(updateWalletSyncInitiatedWithChat(contional)) ; - let data:any=false; - - dispatch(updatewalletSyncBarShowInChat(data)) - // dispatch(updateWalletPasswordPopUpFlag(data)) + let data: any = false; + + dispatch(updatewalletSyncBarShowInChat(data)); + // dispatch(updateWalletPasswordPopUpFlag(data)) // window.setSettingValue(SettingsKey.settingChatwithWalletInstruction,false) forceUpdate(); @@ -61,51 +64,54 @@ export const SettingsCategoryChat = (props: { hasPassword: boolean | null }) => function dispatchConfirmModal() { if (!chatwithWallet) { - dispatch(updateBchatAlertConfirmModal({ - settings: true, - onClickOk: async () => { - chatWithWallet(); - dispatch(updateBchatAlertConfirmModal(null)) - }, - onClickCancel: () => dispatch(updateBchatAlertConfirmModal(null)) - }) - ) - - } - else { + dispatch( + updateBchatAlertConfirmModal({ + settings: true, + onClickOk: async () => { + chatWithWallet(); + dispatch(updateBchatAlertConfirmModal(null)); + }, + onClickCancel: () => dispatch(updateBchatAlertConfirmModal(null)), + }) + ); + } else { chatWithWallet(); } } - return ( <> - dispatchConfirmModal()} - title={window.i18n('chatWithWallet')} - description={window.i18n('chatWithWalletDisc')} - active={chatwithWallet} - /> - - { - dispatch(toggleAudioAutoplay()); - forceUpdate(); - }} - title={window.i18n('audioMessageAutoplayTitle')} - description={window.i18n('audioMessageAutoplayDescription')} - active={audioAutoPlay} - /> - { - await toggleLinkPreviews(); - forceUpdate(); - }} - title={window.i18n('linkPreviewsTitle')} - description={window.i18n('linkPreviewDescription')} - active={isLinkPreviewsOn} - /> - {/* + {' '} + dispatchConfirmModal()} + title={window.i18n('chatWithWallet')} + description={window.i18n('chatWithWalletDisc')} + active={chatwithWallet} + iconType={'chatWithLogo'} + /> + + { + dispatch(toggleAudioAutoplay()); + forceUpdate(); + }} + title={window.i18n('audioMessageAutoplayTitle')} + description={window.i18n('audioMessageAutoplayDescription')} + active={audioAutoPlay} + iconType="microphone" + /> + { + await toggleLinkPreviews(); + forceUpdate(); + }} + title={window.i18n('linkPreviewsTitle')} + description={window.i18n('linkPreviewDescription')} + active={isLinkPreviewsOn} + iconType="chainLink" + /> + {/* { window.toggleSpellCheck(); forceUpdate(); @@ -114,6 +120,7 @@ export const SettingsCategoryChat = (props: { hasPassword: boolean | null }) => description={window.i18n('spellCheckDescription')} active={isSpellCheckActive} /> */} +
); } diff --git a/ts/components/wallet/BchatWalletAddressBook.tsx b/ts/components/wallet/BchatWalletAddressBook.tsx index b6993f73..ed778b25 100644 --- a/ts/components/wallet/BchatWalletAddressBook.tsx +++ b/ts/components/wallet/BchatWalletAddressBook.tsx @@ -1,132 +1,149 @@ -import React from 'react'; +import React, { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import classNames from 'classnames'; import { updateSendAddress } from '../../state/ducks/walletConfig'; -import { walletSendPage } from '../../state/ducks/walletInnerSection'; import { dashboard } from '../../state/ducks/walletSection'; import { getPrivateContactsPubkeys } from '../../state/selectors/conversations'; import { Flex } from '../basic/Flex'; -import { SpacerLG, SpacerXS } from '../basic/Text'; +import { SpacerLG, SpacerMD, SpacerSM, SpacerXS } from '../basic/Text'; import { copyBchatID } from '../dialog/EditProfileDialog'; -import { BchatIcon } from '../icon'; +import { BchatIcon, BchatIconButton } from '../icon'; import { + useConversationBnsHolder, useConversationBeldexAddress, useConversationUsernameOrShorten, } from '../../hooks/useParamSelector'; -import { LeftPaneSectionHeader } from '../leftpane/LeftPaneSectionHeader'; -import { Avatar, AvatarSize } from '../avatar/Avatar'; +// import { LeftPaneSectionHeader } from '../leftpane/LeftPaneSectionHeader'; +import { Avatar, AvatarSize, BNSWrapper } from '../avatar/Avatar'; import { getBchatWalletPasswordModal } from '../../state/selectors/modal'; +import styled from 'styled-components'; +import { getConversationController } from '../../bchat/conversations'; +// import { BchatSearchInput } from '../BchatSearchInput'; -export const AddressBook = (props: any) => { +const AvatarContainer = styled.div` + position: relative; +`; + +export const AvatarItem = (props: { memberPubkey: string; isBnsHolder: any }) => { + const { memberPubkey, isBnsHolder } = props; + return ( + + + + + + ); +}; + +export const AddressBook = (props: { isContact?: boolean }) => { + const { isContact } = props; const dispatch = useDispatch(); const privateContactsPubkeys = useSelector(getPrivateContactsPubkeys); const BchatWalletPasswordModal = useSelector(getBchatWalletPasswordModal); + const [currentSearchTerm, setCurrentSearchTerm] = useState(''); + const [filteredNames, setFilteredNames] = useState>(privateContactsPubkeys); + const zoomLevel = window.getSettingValue('zoom-factor-setting'); - async function copyBtn(address: string) { - copyBchatID(address); - } async function send(address: any) { - dispatch(dashboard()); - dispatch(walletSendPage()); + // dispatch(dashboard()); + // dispatch(walletSendPage()); dispatch(updateSendAddress(address)); } - const AddressContent = (props: any) => { - const username = useConversationUsernameOrShorten(props.pubkey); - const belAddress = useConversationBeldexAddress(props.pubkey); - return belAddress ? ( - <> - -
window.i18n('addressBook') !== props.title ? send(belAddress): dispatch(updateSendAddress(belAddress))} - > - {props.title === window.i18n('contact') && -
- } - -
- {username} -
- - -
{dispatch(updateSendAddress(belAddress));dispatch(walletSendPage());}} - > - {props.title ===window.i18n('contact')? belAddress.slice(0, 70)+'...':belAddress} -
-
- - {window.i18n('addressBook') === props.title && ( - -
send(belAddress)} - > - - {window.i18n('send')} -
-
copyBtn(belAddress)} - > - - {window.i18n('editMenuCopy')} -
-
- )} -
- - - ) : ( - <> + const handleSearch = (event: React.ChangeEvent) => { + const value = event.target.value; + setCurrentSearchTerm(value); + setFilteredNames( + value + ? privateContactsPubkeys.filter((pubkey: any) => { + const convo = getConversationController().get(pubkey); + const memberName = convo?.getNickname() || convo?.getName() || convo?.getProfileName(); + return memberName?.toLowerCase().includes(value.toLowerCase()); + }) + : privateContactsPubkeys ); }; return ( -
- { - props.from === window.i18n('contact') && <> - -
- {window.i18n('contact')} +
+ {isContact && ( +
+ {/* */} + + {/* {conversations?.length !== 0 && */} +
+
+ +
+ { + console.log(e); + handleSearch(e); + }} + placeholder={'Search Contact'} + maxLength={26} + />
- - } + +
{window.i18n('contact')}
+
+ )} - {props.from !== window.i18n('contact') && + {!isContact && (
- -
dispatch(dashboard())}> - -
-
- {props.from} -
+ dispatch(dashboard())} + /> + + +
{window.i18n('addressBook')}
- } + )} - -
- {privateContactsPubkeys.length > 0 && - privateContactsPubkeys.map(item => )} - {privateContactsPubkeys.length == 0 ? ( + {/* */} +
100?'': !isContact ? 'calc( 100vh - 548px )' : 'calc( 100vh - 153px )' }} + > + {filteredNames.length > 0 && + filteredNames.map(item => ( + send(e)} /> + ))} + {filteredNames.length === 0 ? ( <> -
-

- {window.i18n('addressBook') !== props.from - ? window.i18n('emptyContact') - : window.i18n('emptyAddressBook')} - - - -

+ +
+ +
+ {isContact ? ( +
{window.i18n('emptyContact')}
+ ) : ( + <> +
No Addresses!
+
Save address to show!
+ + )} +
+
) : ( '' @@ -135,3 +152,79 @@ export const AddressBook = (props: any) => {
); }; + +const AddressContent = (props: { isContact?: boolean; pubkey: string; send: any }) => { + const dispatch = useDispatch(); + const username = useConversationUsernameOrShorten(props.pubkey); + const belAddress = useConversationBeldexAddress(props.pubkey); + const isBnsHolder = useConversationBnsHolder(props.pubkey); + async function copyBtn(address: string) { + copyBchatID(address); + } + return belAddress ? ( + <> +
+ props.isContact && dispatch(updateSendAddress(belAddress)) + } + > +
+ {/* */} + +
+ + +
+ {username} +
+ + +
{ + props.isContact && + dispatch(updateSendAddress(belAddress)); + }} + > + {props.isContact ? belAddress.slice(0, 50) + '...' : belAddress} +
+
+ + {!props.isContact && ( + + copyBtn(belAddress)} + /> + + props.send(belAddress)} + /> + + )} +
+ + + ) : ( + <> + ); +}; diff --git a/ts/components/wallet/BchatWalletBalanceSection.tsx b/ts/components/wallet/BchatWalletBalanceSection.tsx index 1f423506..27e0f6d4 100644 --- a/ts/components/wallet/BchatWalletBalanceSection.tsx +++ b/ts/components/wallet/BchatWalletBalanceSection.tsx @@ -2,22 +2,25 @@ import React, { useState } from 'react'; import { useSelector } from 'react-redux'; import { ToastUtils } from '../../bchat/utils'; import { getFiatBalance } from '../../state/selectors/walletConfig'; -import { SpacerMD, SpacerSM, SpacerXS } from '../basic/Text'; +import { SpacerSM, SpacerXS } from '../basic/Text'; import { BchatIcon } from '../icon/BchatIcon'; import { BchatToolTip } from '../leftpane/ActionsPanel'; import { walletSettingsKey } from '../../data/settings-key'; +import { Flex } from '../basic/Flex'; +import { BchatIconButton } from '../icon'; const { clipboard } = require('electron'); export const WalletBalanceSection = () => { const walletDetails = useSelector((state: any) => state.wallet); const walletAddress: any = localStorage.getItem('userAddress'); - const sliceWalletAddress = walletAddress ? walletAddress.slice(0, 45) : ''; + // const sliceWalletAddress = walletAddress ? walletAddress.slice(0, 45) : ''; const currency: any = window.getSettingValue(walletSettingsKey.settingsFiatCurrency); const fiatBalance: any = Number(useSelector(getFiatBalance)); const [amountVisible, setAmountVisible] = useState(window.getSettingValue('balancevisibility')); - const zoomLevel=window.getSettingValue('zoom-factor-setting') + // const zoomLevel = window.getSettingValue('zoom-factor-setting'); - let decimalValue: any = window.getSettingValue(walletSettingsKey.settingsDecimal) || '2 - Two (0.00)'; + let decimalValue: any = + window.getSettingValue(walletSettingsKey.settingsDecimal) || '2 - Two (0.00)'; decimalValue = decimalValue.charAt(0); const handlePaste = () => { clipboard.writeText(walletAddress, 'clipboard'); @@ -42,82 +45,85 @@ export const WalletBalanceSection = () => { return dataArray; } return ( -
100?{width: '52%'}:{}} > -
- - Balance +
100 ? { width: '52%' } : {}} + > +
+ +
+
+ + {/* */} +
+ {disableBalac((walletDetails.balance / 1e9).toFixed(decimalValue))}{' '} + + BDX + +
+ { + setAmountVisible(!amountVisible); + window.setSettingValue('balancevisibility', !amountVisible); + }} + style={{ cursor: 'pointer', marginBottom: '6px' }} + > + + +
+ +
{currency}
+
+ {disableBalac((fiatBalance / 1e9).toFixed(decimalValue))}{' '} +
+
-
- -
- - - -
- {disableBalac((walletDetails.balance / 1e9).toFixed(decimalValue))}{' '} - - BDX - - { - setAmountVisible(!amountVisible); - window.setSettingValue('balancevisibility',!amountVisible); - }} - style={{cursor:'pointer'}} - > - - +
+
+ Unlocked Balance +
+ + + {disableBalac((walletDetails.unlocked_balance / 1e9).toFixed(decimalValue))} BDX + + {/* BDX{' '} */} +
-
- {disableBalac((fiatBalance / 1e9).toFixed(decimalValue))} {currency} + + + + +
+
+
Beldex Address
+
{walletAddress}
-
-
- - -
-
{`${sliceWalletAddress}...`}
-
- - - -
- -
- +
+
- -
-
- Unlocked Balance - - - {disableBalac((walletDetails.unlocked_balance / 1e9).toFixed(decimalValue))} - -
-
- BDX -
- -
-
); }; diff --git a/ts/components/wallet/BchatWalletChangePassword.tsx b/ts/components/wallet/BchatWalletChangePassword.tsx index 71ea34de..5bc0854b 100644 --- a/ts/components/wallet/BchatWalletChangePassword.tsx +++ b/ts/components/wallet/BchatWalletChangePassword.tsx @@ -2,19 +2,20 @@ import React, { useState } from 'react'; import { useDispatch } from 'react-redux'; import { ToastUtils } from '../../bchat/utils'; import { ChangePasswordModal } from '../../state/ducks/modalDialog'; -import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { Flex } from '../basic/Flex'; import { SpacerMD, SpacerSM } from '../basic/Text'; import { BchatWrapperModal } from '../BchatWrapperModal'; -import { BchatIcon } from '../icon'; +import { BchatIconButton } from '../icon'; import { wallet } from '../../wallet/wallet-rpc'; import { useKey } from 'react-use'; +import { BchatButtonColor } from '../basic/BchatButton'; import styled from 'styled-components'; export const ChangePassword = () => { const [oldPassword, setOldPassword] = useState(''); const [newPassword, setNewPassword] = useState(''); const [confirmPassword, setConfirmNewPassword] = useState(''); + const [oldPasswordVisible, setOldPasswordVisible] = useState(true); const [newPasswordVisible, setNewPasswordVisible] = useState(true); const [confirmPasswordVisible, setConfirmNewPasswordVisible] = useState(true); const [loading, setLoading] = useState(false); @@ -23,17 +24,7 @@ export const ChangePassword = () => { setLoading(false); dispatch(ChangePasswordModal(null)); } - const Loader = styled.div` - position: absolute; - // top: 0; - display: flex; - // justify-content: center; - /* width: 100%; */ - // width: 100Vw; - // height: 100%; - align-items: center; - z-index: 101; - `; + const passValid = async () => { if (!oldPassword || !newPassword || !confirmPassword) { return ToastUtils.pushToastError('passwordFieldEmpty', window.i18n('passwordFieldEmpty')); @@ -57,14 +48,14 @@ export const ChangePassword = () => { window.i18n('walletPasswordLengthError') ); } - setLoading(true) + setLoading(true); const changePassword = await wallet.changeWalletPassword(oldPassword, newPassword); if (changePassword.hasOwnProperty('error')) { - setLoading(false) + setLoading(false); return ToastUtils.pushToastError('changePasswordError', changePassword.error.message); } wallet.wallet_state.password_hash = wallet.passwordEncrypt(newPassword); - setLoading(false) + setLoading(false); ToastUtils.pushToastSuccess('changePasswordSuccess', 'Password successfully changed.'); return onClickCancelHandler(); }; @@ -86,42 +77,69 @@ export const ChangePassword = () => { )} */} onClickCancelHandler()} showExitIcon={false} - headerReverse={true} - showHeader={false} - + headerReverse={false} + showHeader={true} + okButton={{ + text: window.i18n('save'), + onClickOkHandler: passValid, + color: BchatButtonColor.Primary, + }} + cancelButton={{ + status: true, + text: window.i18n('cancel'), + onClickCancelHandler, + }} + isloading={loading} > - {loading && -
- -
-
} -
{window.i18n('changePassword')}
+ {/*
{window.i18n('changePassword')}
*/} -
+
- - { - setOldPassword(e.target.value); - }} - placeholder={window.i18n('currentPassword')} - // className="bchat-dialog-oldpassInput" + + + + { + setOldPassword(e.target.value); + }} + type={oldPasswordVisible ? 'password' : 'text'} + placeholder={window.i18n('currentPassword')} + // className="bchat-dialog-oldpassInput" + /> + + + setOldPasswordVisible(!oldPasswordVisible)} /> - + -
{window.i18n('changewalletPassword')}
+ {window.i18n('newwalletPassword')} - - - + + { @@ -129,18 +147,31 @@ export const ChangePassword = () => { }} placeholder={window.i18n('enterPassword')} // className="bchat-dialog-newPassInput" - type={newPasswordVisible ? "password" : "text"} + type={newPasswordVisible ? 'password' : 'text'} maxLength={13} /> - setNewPasswordVisible(!newPasswordVisible)} style={{ cursor: 'pointer' }}> - + setNewPasswordVisible(!newPasswordVisible)} + style={{ cursor: 'pointer' }} + > + - - - + + { @@ -148,35 +179,34 @@ export const ChangePassword = () => { }} placeholder={window.i18n('confirmPassword')} // className="bchat-dialog-newPassInput" - type={confirmPasswordVisible ? "password" : "text"} + type={confirmPasswordVisible ? 'password' : 'text'} maxLength={13} /> - setConfirmNewPasswordVisible(!confirmPasswordVisible)} style={{ cursor: 'pointer' }}> - - - + {/* */} + setConfirmNewPasswordVisible(!confirmPasswordVisible)} + /> + {/* */}
-
-
- - -
-
); }; + +const NewPasswordLabel = styled.div` + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; +`; diff --git a/ts/components/wallet/BchatWalletHeader.tsx b/ts/components/wallet/BchatWalletHeader.tsx index 9ee2f767..100f79e1 100644 --- a/ts/components/wallet/BchatWalletHeader.tsx +++ b/ts/components/wallet/BchatWalletHeader.tsx @@ -2,14 +2,20 @@ import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { updateConfirmModal } from '../../state/ducks/modalDialog'; import { addressbook } from '../../state/ducks/walletSection'; -import { BchatButtonColor } from '../basic/BchatButton'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { BchatIconSize, BchatIconType } from '../icon'; import { BchatIcon } from '../icon/BchatIcon'; import { wallet } from '../../wallet/wallet-rpc'; import { updateBalance } from '../../state/ducks/wallet'; -import { updateFiatBalance, updateWalletHeight, updateWalletRescaning } from '../../state/ducks/walletConfig'; -import { ToastUtils } from '../../bchat/utils'; +import { + updateFiatBalance, + updateWalletHeight, + updateWalletRescaning, +} from '../../state/ducks/walletConfig'; +import { ToastUtils, UserUtils } from '../../bchat/utils'; import { getRescaning } from '../../state/selectors/walletConfig'; +import { AvatarItem } from './BchatWalletAddressBook'; +import { useConversationBnsHolder } from '../../hooks/useParamSelector'; export async function rescanModalDialog(rescaning: boolean, dispatch: any) { if (!window.globalOnlineStatus) { @@ -20,14 +26,16 @@ export async function rescanModalDialog(rescaning: boolean, dispatch: any) { } let rescan: any = true; let Transactions: any = ''; - let wallHeight:any=0 + let wallHeight: any = 0; dispatch( updateConfirmModal({ title: window.i18n('rescanWallet'), message: window.i18n('rescanWalletDiscription'), - okTheme: BchatButtonColor.Green, + okTheme: BchatButtonColor.Primary, okText: window.i18n('Rescan'), btndisable: rescaning, + iconShow: true, + customIcon: , onClickOk: () => { dispatch(updateWalletRescaning(rescan)); dispatch(updateFiatBalance(Transactions)); @@ -38,37 +46,54 @@ export async function rescanModalDialog(rescaning: boolean, dispatch: any) { unlocked_balance: 0, transacations: [], }) - ); dispatch(updateWalletHeight(wallHeight)); wallet.rescanBlockchain(); - } + }, }) ); } export const WalletHeader = (props: any) => { const dispatch = useDispatch(); + const ourPubkey: any = UserUtils.getOurPubKeyFromCache(); const syncStatus = useSelector(getRescaning); + const isBnsHolder = useConversationBnsHolder(ourPubkey); return (
-
- + {window.i18n('WalletSettingsTitle')} +
+
+
+ { + dispatch(addressbook()), props.clearStates(); + }} + /> + {/* { dispatch(addressbook()), props.clearStates() }} - /> + submit={() => { + dispatch(addressbook()), props.clearStates(); + }} + /> */}
-
-
{ + // name={''} + icontype="rotatedArrow" + iconSize={20} + submit={() => { rescanModalDialog(!syncStatus, dispatch); }} /> @@ -86,17 +111,17 @@ export const WalletHeader = (props: any) => { }; export const WalletButton = (props: { - name: string; + // name: string; icontype: BchatIconType; - iconSize: BchatIconSize; + iconSize: BchatIconSize | number; submit: any; }) => { - const { name, icontype, iconSize, submit } = props; + const { icontype, iconSize, submit } = props; return (
submit()}> - {name} + {/* {name} */}
); }; diff --git a/ts/components/wallet/BchatWalletInsufficientBalanceModal.tsx b/ts/components/wallet/BchatWalletInsufficientBalanceModal.tsx new file mode 100644 index 00000000..40c16cb1 --- /dev/null +++ b/ts/components/wallet/BchatWalletInsufficientBalanceModal.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { SpacerLG, SpacerMD } from '../basic/Text'; +import { BchatWrapperModal } from '../BchatWrapperModal'; +import { useDispatch, useSelector } from 'react-redux'; +import { updateInsufficientBalanceModal } from '../../state/ducks/modalDialog'; +import { getTheme } from '../../state/selectors/theme'; +import styled from 'styled-components'; +import { BchatButtonColor } from '../basic/BchatButton'; + +export const InsufficientBalanceModal = (props: any) => { + const dispatch = useDispatch(); + const darkMode = useSelector(getTheme) === 'dark'; + return ( +
+ { + dispatch(updateInsufficientBalanceModal(null)); + }, + + disabled: false, + }} + > + +
+
+
+ +
+ Insufficient Balance! + You have insufficient funds to make a transaction +
+
+ +
+
+ ); +}; + +const TxnInit = styled.div` +// color: #108d32; + text-align: center; + font-family: Poppins; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; + width: 475px; + margin-top: 15px; + +`; + +const Subtxt = styled.div` + color: #A7A7BA; + margin-top: 5px; + line-height: 17px;`; \ No newline at end of file diff --git a/ts/components/wallet/BchatWalletLocalDeamonsettings.tsx b/ts/components/wallet/BchatWalletLocalDeamonsettings.tsx index 9941efd4..816011cb 100644 --- a/ts/components/wallet/BchatWalletLocalDeamonsettings.tsx +++ b/ts/components/wallet/BchatWalletLocalDeamonsettings.tsx @@ -2,14 +2,18 @@ import classNames from 'classnames'; import React, { useState } from 'react'; import { Flex } from '../basic/Flex'; import { SpacerLG } from '../basic/Text'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { workingStatusForDeamon } from '../../wallet/BchatWalletHelper'; import { walletSettingsKey } from '../../data/settings-key'; import { ToastUtils } from '../../bchat/utils'; import { BchatIcon } from '../icon/BchatIcon'; import { useKey } from 'react-use'; import { useDispatch } from 'react-redux'; -import { updateFiatBalance, updateWalletHeight, updateWalletRescaning } from '../../state/ducks/walletConfig'; +import { + updateFiatBalance, + updateWalletHeight, + updateWalletRescaning, +} from '../../state/ducks/walletConfig'; import { updateBalance } from '../../state/ducks/wallet'; export function LocalDeamon() { @@ -27,7 +31,7 @@ export function LocalDeamon() { setTestNotify(`Success`); return; } - setTestNotify(`Connection Error`); + setTestNotify(`Error`); } useKey((event: KeyboardEvent) => { @@ -47,7 +51,7 @@ export function LocalDeamon() { if (Object.keys(data).length === 0) { return; } - + const currentDaemon = window.getSettingValue(walletSettingsKey.settingsCurrentDeamon); if (currentDaemon.host == data.host) { return ToastUtils.pushToastInfo('localAlreadyAdded', `Local daemon already connected.`); @@ -56,18 +60,17 @@ export function LocalDeamon() { let rescan: any = true; let Transactions: any = ''; let wallHeight: any = 0; - dispatch( + dispatch( updateBalance({ balance: 0, unlocked_balance: 0, transacations: [], }) - ); dispatch(updateWalletRescaning(rescan)); dispatch(updateFiatBalance(Transactions)); window.setSettingValue('syncStatus', false); - + dispatch(updateWalletHeight(wallHeight)); setLocalDeamonPort(''); @@ -78,8 +81,6 @@ export function LocalDeamon() { 'successfully-added-daemon', `Successfully ${data.host}:${data.port} daemon added.` ); - - } function portValidation(value: any) { @@ -118,7 +119,7 @@ export function LocalDeamon() { { portValidation(e.target.value); }} @@ -128,15 +129,17 @@ export function LocalDeamon() { - + {/* */}
validationForDeamon()} - disabled={!localDeamonPort} + onClick={() => localDeamonPort && validationForDeamon()} + style={{ cursor: !localDeamonPort ? 'default' : 'pointer' }} />
@@ -144,38 +147,43 @@ export function LocalDeamon() { addDeamonNet()} - disabled={Object.keys(verifyDeamon).length === 0 ? true : false} + onClick={() => Object.keys(verifyDeamon).length !== 0 && addDeamonNet()} + style={{ cursor: Object.keys(verifyDeamon).length === 0 ? 'default' : 'pointer' }} + />
-
- {testNotify && ( + + {/*
*/} + {testNotify && ( +
+ <> - - {window.i18n('NodeTestResult')} : - - {testNotify} + {window.i18n('NodeTestResult')} + {testNotify === 'Success' ? ( + {testNotify} + ) : ( + + Connection : {testNotify} + + )} + - )} -
- - +
+ )} + {/*
*/} + {/* */}
); diff --git a/ts/components/wallet/BchatWalletMainPanel.tsx b/ts/components/wallet/BchatWalletMainPanel.tsx index 97bb4f9e..2a65f35e 100644 --- a/ts/components/wallet/BchatWalletMainPanel.tsx +++ b/ts/components/wallet/BchatWalletMainPanel.tsx @@ -1,15 +1,14 @@ import React, { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Flex } from '../basic/Flex'; -import { SpacerLG } from '../basic/Text'; +import { SpacerLG, SpacerMD } from '../basic/Text'; import { AddressBook } from './BchatWalletAddressBook'; import { WalletBalanceSection } from './BchatWalletBalanceSection'; import { WalletHeader } from './BchatWalletHeader'; // import { WalletPassword } from './BchatWalletPassword'; -import { NodeSetting } from './BchatWalletNodeSetting'; import { WalletPaymentSection } from './BchatWalletPaymentSection'; -import { ReceivedForm } from './BchatWalletReceivedForm'; -import { WalletSettings } from './BchatWalletSettings'; +// import { ReceivedForm } from './BchatWalletReceivedForm'; + import { SendForm } from './BchatWalletSendForm'; import { TransactionSection } from './BchatWalletTransactionSection'; import { MemoSyncStatusBar } from './BchatWalletSyncSatusBar'; @@ -19,33 +18,34 @@ import { ToastUtils } from '../../bchat/utils'; // import { walletSettingsKey } from '../../data/settings-key'; import classNames from 'classnames'; import { getBchatWalletPasswordModal } from '../../state/selectors/modal'; - +import styled from 'styled-components'; +import { ReceivedForm } from './BchatWalletReceivedForm'; +import { walletSettingsKey } from '../../data/settings-key'; export enum WalletPage { WalletPassword = 'walletPassword', Dashboard = 'dashboard', AddressBook = 'addressbook', - Setting = 'setting', - NodeSetting = 'nodeSetting', Contact = 'contact', } export enum WalletDashboard { walletSend = 'walletSend', walletReceived = 'walletReceived', - walletTransaction = 'walletTransaction', } export const WalletMainPanel = () => { const dispatch = useDispatch(); - const focusedsettings = useSelector((state: any) => state.walletFocused); + // const focusedsettings = useSelector((state: any) => state.walletFocused); + const walletDetails = useSelector((state: any) => state.wallet); const [amount, setAmount] = useState(''); // const [priority, setPriority] = useState(window.i18n('flash')); // const [passScreen, setPassScreen] = useState(true); const [notes, setNotes] = useState(''); const BchatWalletPasswordModal = useSelector(getBchatWalletPasswordModal); - - + let decimalValue: any = + window.getSettingValue(walletSettingsKey.settingsDecimal) || '2 - Two (0.00)'; + decimalValue = decimalValue.charAt(0); if (!window.globalOnlineStatus) { ToastUtils.pushToastError('internetConnectionError', 'Please check your internet connection'); } @@ -57,11 +57,14 @@ export const WalletMainPanel = () => { } } function clearStates() { - setAmount(""); - setNotes(""); + setAmount(''); + setNotes(''); let emptyAddress: any = ''; dispatch(updateSendAddress(emptyAddress)); + } + function fillAmount() { + setAmount((walletDetails.balance / 1e9).toFixed(decimalValue)); } // if (passScreen) { // return ( @@ -76,67 +79,87 @@ export const WalletMainPanel = () => { //
// ); // } - if (WalletPage.AddressBook === focusedsettings) { - return ( -
- -
- ); - } - if (WalletPage.Contact === focusedsettings) { - return ( -
- -
- ); - } - if (WalletPage.Setting === focusedsettings) { - return ( -
- -
- ); - } - if (WalletPage.NodeSetting === focusedsettings) { - return ( -
- -
- ); - } + // if (WalletPage.AddressBook === focusedsettings) { + // return ( + //
+ // + //
+ // ); + // } + // if (WalletPage.Contact === focusedsettings) { + // return ( + //
+ // + //
+ // ); + // } return ( -
+
{/* {WalletPage.Dashboard === focusedsettings && ( */} - { - numberOnly(e); - }} - // priority={priority} - notes={notes} - // setPriority={(e: any) => setPriority(e)} - setNotes={(e: any) => setNotes(e)} - clearStates={() => clearStates()} - - /> + { + numberOnly(e); + }} + // priority={priority} + notes={notes} + // setPriority={(e: any) => setPriority(e)} + setNotes={(e: any) => setNotes(e)} + clearStates={() => clearStates()} + fillAmount={() => fillAmount()} + /> {/* )} */}
); }; export const Dashboard = (props: any) => { + const focusedsettings = useSelector((state: any) => state.walletFocused); const focusedInnersection = useSelector((state: any) => state.walletInnerFocused); let transactions = useSelector((state: any) => state.wallet.transacations); + const zoomLevel = window.getSettingValue('zoom-factor-setting'); + console.log('zoomLevel -->',zoomLevel,'window.innerWidth -->',window.innerWidth) // daemon.daemonHeartbeat(); return ( <> +
+ +
+
- - + + + + + {WalletPage.AddressBook === focusedsettings ? ( +
+ + ) : ( + + )} +
+ + + {WalletDashboard.walletSend === focusedInnersection && ( + + )} + {WalletDashboard.walletReceived === focusedInnersection && } + +
+ {/* */} + {/* {WalletDashboard.walletSend === focusedInnersection && ( { - )} -
-
- + )} */}
- ); }; @@ -169,3 +188,25 @@ export const BalanceAndsendReceiveAction = (props: any) => { ); }; +type RightPaneProps = { + zoomFactor:number; +}; +const Leftpane = styled.div` + // width:45vw; + height:${props=>props.zoomFactor==125?'76vh':props.zoomFactor==150 && window.innerWidth<1100? '74vh':props.zoomFactor==150?'73vh' :'79vh'}; + // height:79vh + margin-right: 15px; + overflow:${props=>props.zoomFactor>100?'auto':''}; +`; + +const RightPane = styled.div` + // width: 25vw; + width: 50%; + min-width:${props=>props.zoomFactor?'260px':'320px'} ; + + height: ${props=>props.zoomFactor==125?'76vh':props.zoomFactor==150 && window.innerWidth<1100? '73.7vh':props.zoomFactor==150?'73vh':'81vh'} ; + // height:78vh; + border-radius: 16px; + background: var(--color-wallet-inner-bg); + overflow:auto; +`; diff --git a/ts/components/wallet/BchatWalletModal.tsx b/ts/components/wallet/BchatWalletModal.tsx index 881d70ce..78749e10 100644 --- a/ts/components/wallet/BchatWalletModal.tsx +++ b/ts/components/wallet/BchatWalletModal.tsx @@ -1,9 +1,11 @@ import classNames from "classnames" import React, { useState } from "react" -import { BchatButton, BchatButtonColor, BchatButtonType } from "../basic/BchatButton" -import { SpacerLG, SpacerMD, SpacerSM } from "../basic/Text" +import { BchatButtonColor } from "../basic/BchatButton" +import { SpacerSM } from "../basic/Text" import { BchatWrapperModal } from "../BchatWrapperModal" import { useKey } from "react-use" +import { BchatIcon } from "../icon" +import { Constants } from '../../bchat'; export const WalletModal = (props: any) => { @@ -17,22 +19,47 @@ export const WalletModal = (props: any) => { title={props.headerName} onClose={props.onClose} showExitIcon={false} - headerReverse={true} + // headerReverse={true} + okButton={{ + text: window.i18n('save'), + color: BchatButtonColor.Primary, + onClickOkHandler: () => { props.onClick(select) } + }} + cancelButton={{ + status: true, + text: window.i18n('cancel'), + onClickCancelHandler: props.onClose + }} > -
-
- {props.content.length !== 0 && props.content.map((item: any, i: any) => <> -
setSelect(item)} > - {item} -
- - )} +
+
+ {props.content.length !== 0 && props.content.map((item: any, i: any) => <> +
setSelect(item)} > +
+ {select === item && ( + + )} +
+ {item} +
+ + )} +
+ {/* */}
- -
- */} + {/* { width: '100px', borderRadius: '5px' }} - /> - */} + {/* { width: '100px', borderRadius: '5px' }} - /> + /> */} -
+ {/*
*/} +
} \ No newline at end of file diff --git a/ts/components/wallet/BchatWalletNodeSetting.tsx b/ts/components/wallet/BchatWalletNodeSetting.tsx index 99e461ff..4664ed7a 100644 --- a/ts/components/wallet/BchatWalletNodeSetting.tsx +++ b/ts/components/wallet/BchatWalletNodeSetting.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from 'react'; -import { useDispatch } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; // import { setting } from '../../state/ducks/walletSection'; -import { BchatButton, BchatButtonColor } from '../basic/BchatButton'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { Flex } from '../basic/Flex'; import { SpacerLG, SpacerMD } from '../basic/Text'; import { BchatIcon } from '../icon/BchatIcon'; @@ -11,8 +11,14 @@ import { workingStatusForDeamon } from '../../wallet/BchatWalletHelper'; import { LocalDeamon } from './BchatWalletLocalDeamonsettings'; import { ToastUtils } from '../../bchat/utils'; import { useKey } from 'react-use'; -import { updateFiatBalance, updateWalletHeight, updateWalletRescaning } from '../../state/ducks/walletConfig'; +import { + updateFiatBalance, + updateWalletHeight, + updateWalletRescaning, +} from '../../state/ducks/walletConfig'; import { updateBalance } from '../../state/ducks/wallet'; +import { BchatIconButton } from '../icon'; +import { getTheme } from '../../state/selectors/theme'; // import { WalletSettings } from './BchatWalletSettings'; export const NodeSetting = (props: any) => { @@ -36,10 +42,14 @@ export const NodeSetting = (props: any) => { const [option, setOption] = useState(deamonList); const [verifyDeamon, setVerifyDeamon] = useState({}); const [testNotify, setTestNotify] = useState({ status: '', content: '', StatusIcon: true }); + const [testbtnDisable, setTestbtnDisable] = useState(false); const [localDeamonVisible, setLocalDeamonVisible] = useState(false); const modalRef = useRef(null); const zoomLevel = window.getSettingValue('zoom-factor-setting'); - const testBottonEnable = !ipAddress && !port ? true : !ipAddress ? true : !port ? true : false; + const testBottonEnable = !(ipAddress && port); + const savebtnValidation = + currentDeamon.host === chooseDeamon && currentDeamon.port === chooseDeamonPort; + const darkMode = useSelector(getTheme) === 'dark'; useEffect(() => { document.addEventListener('click', handleClick); @@ -93,7 +103,7 @@ export const NodeSetting = (props: any) => { let rescan: any = true; let Transactions: any = ''; - let wallHeight: any = 0 + let wallHeight: any = 0; dispatch(updateWalletRescaning(rescan)); dispatch(updateFiatBalance(Transactions)); window.setSettingValue('syncStatus', false); @@ -103,7 +113,6 @@ export const NodeSetting = (props: any) => { unlocked_balance: 0, transacations: [], }) - ); dispatch(updateWalletHeight(wallHeight)); ToastUtils.pushToastSuccess( @@ -158,6 +167,7 @@ export const NodeSetting = (props: any) => { }); async function validationForDeamon() { + setTestbtnDisable(true); let data = { host: ipAddress, port: port, active: 1, type: 'Remote' }; const confirmation: any = await workingStatusForDeamon(data, 'daemonValidation'); if (confirmation && confirmation.status === 'OK') { @@ -173,20 +183,24 @@ export const NodeSetting = (props: any) => { }); return; } - setTestNotify({ status: 'failed', content: `Connection Error`, StatusIcon: true }); + setTestNotify({ status: 'failed', content: `Error`, StatusIcon: true }); setVerifyDeamon({}); + setTestbtnDisable(false); } - - return (
-
props.onClick()} className='marginRight'> - +
+ props.onClick()} + />
-
{window.i18n('node')}
+
{window.i18n('node')}
@@ -197,6 +211,7 @@ export const NodeSetting = (props: any) => { flexDirection="row" width="100%" justifyContent="flex-start" + style={{ fontSize: '16px' }} >
{ style={ !localDeamonVisible ? { border: '2px solid var(--color-walletNodeHeader)' } - : { border: '2px solid white' } + : { border: '2px solid var(--color-radio-icon)' } } > {!localDeamonVisible && ( )}
-
{window.i18n('remoteDaemonOnly')}
+
+ {' '} + {window.i18n('remoteDaemonOnly')} +
-
+
{ setLocalDeamonVisible(true); @@ -231,22 +249,25 @@ export const NodeSetting = (props: any) => { style={ localDeamonVisible ? { border: '2px solid var(--color-walletNodeHeader)' } - : { border: '2px solid' } + : { border: '2px solid var(--color-radio-icon)' } } > {localDeamonVisible && ( )}
-
{window.i18n('localDaemonOnly')}
+
+ {' '} + {window.i18n('localDaemonOnly')} +
- +
{localDeamonVisible ? window.i18n('localDeamonheadetcntent') @@ -260,144 +281,22 @@ export const NodeSetting = (props: any) => { ) : ( <> - {/* ******************************Choose deamon section****************************************** */} - - showDropDown()}> -
- {window.i18n('chooseRemoteDaemonNode')} -
-
showDropDown()} - style={{ cursor: 'pointer' }}> - -
-
- - -
- -
-
- {window.i18n('remoteNodeHost')} -
-
-
-
- -
- -
setDropdown(!dropdown)} - > - -
-
-
- {dropdown && ( -
-
- {option.length > 0 && - option.map((item: any, i: number) => ( -
AssignCurrentDeamon(item)} - > - - - {item.host}:{item.port} - -
- ))} -
-
- )} -
-
-
- -
-
- {window.i18n('remoteNodePort')} -
- - -
-
- - - -
-
- currentDeamonNet()} - disabled={ - currentDeamon.host === chooseDeamon && currentDeamon.port === chooseDeamonPort - } - /> -
-
- - - -
-
- {/* ******************************Add deamon section****************************************** */} - setViewBox1(!viewBox1)}> -
- {window.i18n('addRemoteDaemonNode')} -
-
+ setViewBox1(!viewBox1)} + > +
{window.i18n('addRemoteDaemonNode')}
+
@@ -418,7 +317,7 @@ export const NodeSetting = (props: any) => { { assignHost(e.target.value); }} @@ -432,7 +331,7 @@ export const NodeSetting = (props: any) => { portValidation(e.target.value)} placeholder="Enter your port" style={zoomLevel > 125 ? { paddingLeft: '10px' } : {}} @@ -441,67 +340,209 @@ export const NodeSetting = (props: any) => {
- + {/* */}
validationForDeamon()} - disabled={testBottonEnable} + onClick={() => !testBottonEnable && !testbtnDisable && validationForDeamon()} + style={{ cursor: !testBottonEnable ? 'pointer' : 'default' }} + disabled={testbtnDisable} />
addDeamonNet()} - disabled={Object.keys(verifyDeamon).length === 0 ? true : false} + onClick={() => Object.keys(verifyDeamon).length !== 0 && addDeamonNet()} + style={{ + cursor: Object.keys(verifyDeamon).length !== 0 ? 'pointer' : 'default', + }} />
-
- {testNotify.status && ( + + {/*
*/} + {testNotify.status && ( +
+ <> - - {window.i18n('NodeTestResult')} : - - - {testNotify.content} + {window.i18n('NodeTestResult')} + {/* {testNotify.status === 'ok' ? ( + {testNotify.content} + ) : ( */} + + Connection : {testNotify.content} - {testNotify.StatusIcon && ( - - )} + {/* )} */} + + - )} -
- - +
+ )}
-
- + {/* */} + {/* //
*/} + + {/*
*/} + + {/* ******************************Choose deamon section****************************************** */} + + showDropDown()} + > +
{window.i18n('chooseRemoteDaemonNode')}
+
showDropDown()} + style={{ cursor: 'pointer' }} + > + +
+
+ + +
+ +
+
+ {window.i18n('remoteNodeHost')} +
+
+
+
+ +
+ +
setDropdown(!dropdown)} + > + +
+
+
+ {dropdown && ( +
+
+ {option.length > 0 && + option.map((item: any, i: number) => ( +
AssignCurrentDeamon(item)} + > + + + {item.host}:{item.port} + +
+ ))} +
+
+ )} +
+
+
+ +
+
+ {window.i18n('remoteNodePort')} +
+ + +
+
+ + + + + + !savebtnValidation && currentDeamonNet()} + style={{ cursor: savebtnValidation ? 'default' : 'pointer' }} + /> + + + {/* */} +
+ {/*
*/} + {/* */} + )} - -
+ +
); }; diff --git a/ts/components/wallet/BchatWalletPassword.tsx b/ts/components/wallet/BchatWalletPassword.tsx index 180d9c85..5474fe31 100644 --- a/ts/components/wallet/BchatWalletPassword.tsx +++ b/ts/components/wallet/BchatWalletPassword.tsx @@ -1,31 +1,22 @@ -import React, { useState } from 'react'; +import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; // import { dashboard } from '../../state/ducks/walletSection'; -import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { SpacerLG, SpacerMD } from '../basic/Text'; -import { BchatIcon, BchatIconButton } from '../icon'; -import { wallet } from '../../wallet/wallet-rpc'; +// import { wallet } from '../../wallet/wallet-rpc'; import { walletSettingsKey } from '../../data/settings-key'; -import { updateDecimalValue, updateSendAddress, updateWalletPasswordPopUpFlag } from '../../state/ducks/walletConfig'; -import { ForgotPassword } from './BchatWalletForgotPassword'; +import { + updateDecimalValue, + // updateSendAddress, + // updateWalletPasswordPopUpFlag, +} from '../../state/ducks/walletConfig'; import { ProgressForSync } from './BchatWalletProgressForSync'; import { getHeight } from '../../state/selectors/walletConfig'; import { loadFiatCurrency, loadRecipient } from '../../wallet/BchatWalletHelper'; -import { ToastUtils } from '../../bchat/utils'; -import { getConversationById } from '../../data/data'; -import { UserUtils } from '../../bchat/utils'; -import styled from 'styled-components'; -import { useKey } from 'react-use'; -import { updateBchatWalletPasswordModal } from '../../state/ducks/modalDialog'; -import { daemon } from '../../wallet/daemon-rpc'; +import { updateBchatWalletForgotPasswordModal } from '../../state/ducks/modalDialog'; + export const WalletPassword = (props: any) => { - const [password, setValue] = useState(''); - const [forgotPassword, setForgotPassword] = useState(false); - const [loading, setLoading] = useState(false); const dispatch = useDispatch(); - const userId = useSelector((state: any) => state.user.ourNumber); - const UserDetails = useSelector((state: any) => state.conversations.conversationLookup); let currentHeight: any; let daemonHeight: any; const currentDaemon = window.getSettingValue(walletSettingsKey.settingsCurrentDeamon); @@ -36,20 +27,7 @@ export const WalletPassword = (props: any) => { currentHeight = Number(useSelector(getHeight)); daemonHeight = useSelector((state: any) => state.daemon.height); } - - // let daemonHeight = useSelector((state: any) => state.daemon.height); - // const currentHeight: any = Number(useSelector(getHeight)); - const Loader = styled.div` - position: absolute; - // top: 0; - display: flex; - // justify-content: center; - /* width: 100%; */ - // width: 100Vw; - // height: 100%; - align-items: center; - z-index: 101; - `; + const { password, onChangePassword } = props; let pct: any = currentHeight == 0 || daemonHeight == 0 ? 0 : ((100 * currentHeight) / daemonHeight).toFixed(0); let percentage = pct == 100 && currentHeight < daemonHeight ? 99 : pct; @@ -67,76 +45,11 @@ export const WalletPassword = (props: any) => { loadRecipient(); loadFiatCurrency(); - // const searchInput:any = useRef(null); - // useEffect(()=>{ - // // current property is refered to input element - // searchInput.current.focus(); },[]) - useKey((event: KeyboardEvent) => { - if (!forgotPassword && event.key === 'Enter') { - submit(); - } - return event.key === 'Enter'; - }); - - async function submit() { - if (!password) { - return ToastUtils.pushToastError('passwordFieldEmpty', window.i18n('passwordFieldEmpty')); - } - let userDetails = await getConversationById(UserUtils.getOurPubKeyStrFromCache()); - let profileName = userDetails?.attributes.walletUserName; - if (!profileName) { - profileName = UserDetails[userId].profileName; - } - setLoading(true); - // console.log('profileName ::', profileName, password); - let openWallet: any = await wallet.openWallet(profileName, password); - // console.log('openWallet pass:', openWallet); - if (openWallet.hasOwnProperty('error')) { - // console.log("openWallet.error") - setLoading(false); - return ToastUtils.pushToastError('walletInvalidPassword', openWallet.error?.message); - } else { - // console.log('test 1') - wallet.startHeartbeat('wallet'); - let emptyAddress: any = ''; - // console.log('test 2') - dispatch(updateSendAddress(emptyAddress)); - // console.log('test 3') - let False: any = false - dispatch(updateWalletPasswordPopUpFlag(False)) - dispatch(updateBchatWalletPasswordModal(null)); - // console.log('test 4') - setLoading(false); - // console.log('test 5') - daemon.daemonHeartbeat(); - // console.log('test 6') - // props.onClickClose(); - // console.log('test 7') - // return; - // return wallet.startHeartbeat(); - // dispatch(dashboard()); - } - } - - if (forgotPassword) { - return ( - setForgotPassword(false)} - // showSyncScreen={() => setLoading(true)} - // loginLoader={()=> setLoading(true)} - exit={props.onClickClose} - /> - ); - } - // if (true) { - // console.log('currentHeight ::', currentHeight, 'daemonHeight ::', daemonHeight); - if (daemonHeight > 0 && percentage < 99 ) { - // setLoading(false) + if (daemonHeight > 0 && percentage < 99) { return ( ); } @@ -144,53 +57,32 @@ export const WalletPassword = (props: any) => { return (
- {loading && ( - -
- -
-
- )} -
-
- -
-
- {/* */} - {/* */}
- {window.i18n('enterWalletPassword')}
- setValue(e.target.value)} /> -
- -
- setForgotPassword(true)} style={{ cursor: 'pointer' }}> - {window.i18n('forgotPassword')} - -
- -
- submit()} + onChangePassword(e.target.value)} />
+ + {props.from === 'wallet' && (<> + +
+ {dispatch(updateBchatWalletForgotPasswordModal({}))}} style={{ cursor: 'pointer' }}> + {window.i18n('forgotPassword')} + +
+ + )}
diff --git a/ts/components/wallet/BchatWalletPaymentSection.tsx b/ts/components/wallet/BchatWalletPaymentSection.tsx index 59dfcf79..848e319e 100644 --- a/ts/components/wallet/BchatWalletPaymentSection.tsx +++ b/ts/components/wallet/BchatWalletPaymentSection.tsx @@ -1,118 +1,77 @@ import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; -import styled from 'styled-components'; -import { - walletReceivedPage, - walletSendPage, - walletTransactionPage, -} from '../../state/ducks/walletInnerSection'; +import { walletReceivedPage, walletSendPage } from '../../state/ducks/walletInnerSection'; import { Flex } from '../basic/Flex'; -import { BchatIcon } from '../icon/BchatIcon'; -import { BchatIconSize, BchatIconType } from '../icon/Icons'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; import { WalletDashboard } from './BchatWalletMainPanel'; export const WalletPaymentSection = (props: any) => { const dispatch = useDispatch(); const focusedInnersection = useSelector((state: any) => state.walletInnerFocused); - const zoomLevel = window.getSettingValue('zoom-factor-setting'); + // const zoomLevel = window.getSettingValue('zoom-factor-setting'); function tabBtn() { props.clearStates(); dispatch(walletSendPage()); } return ( -
100 ? { width: '46.4%' } : {}}> +
-
- - + + tabBtn()} - isSelected={WalletDashboard.walletSend === focusedInnersection} + buttonType={BchatButtonType.Brand} + buttonColor={ + WalletDashboard.walletSend === focusedInnersection + ? BchatButtonColor.Primary + : BchatButtonColor.Secondary + } + style={{minWidth:'unset', width: '45%' }} /> - { dispatch(walletReceivedPage()); }} - isSelected={WalletDashboard.walletReceived === focusedInnersection} + style={{minWidth:'unset', width: '45%' }} />
- - { - dispatch(walletTransactionPage()); - }} - isSelected={WalletDashboard.walletTransaction === focusedInnersection} - /> -
); }; -export const BchatButtonIcon = (props: { - name: string; - iconType: BchatIconType; - iconColor: string; - iconSize: BchatIconSize; - onClick: () => void; - isSelected: boolean; -}) => { - return ( -
- -
- ); -}; - export interface ButtonProps { isSelected?: boolean; } -const Button = styled.button` - outline: none; - border: none; - background-color: ${props => - props.isSelected ? 'var(--button-color)' : 'var(--color-walTransacBtn)'}; - width: 100%; - height: 60px; - border-radius: 10px; - font-size: 16px; - color: ${props => (props.isSelected ? '#fff' : '')}; +// const Button = styled.button` +// outline: none; +// border: none; +// background-color: ${props => +// props.isSelected ? 'var(--button-color)' : 'var(--color-walTransacBtn)'}; +// width: 100%; +// height: 60px; +// border-radius: 10px; +// font-size: 16px; +// color: ${props => (props.isSelected ? '#fff' : '')}; - &:hover { - background-color : ${props => (props.isSelected ? 'var(--button-color)' : 'var(--color-walletSelectOption)')};; - } -`; +// &:hover { +// background-color: ${props => +// props.isSelected ? 'var(--button-color)' : 'var(--color-walletSelectOption)'}; +// } +// `; diff --git a/ts/components/wallet/BchatWalletProgressForSync.tsx b/ts/components/wallet/BchatWalletProgressForSync.tsx index 3d57955e..7739e805 100644 --- a/ts/components/wallet/BchatWalletProgressForSync.tsx +++ b/ts/components/wallet/BchatWalletProgressForSync.tsx @@ -1,15 +1,16 @@ import React from 'react'; -import { SpacerLG, SpacerMD, SpacerSM } from '../basic/Text'; -import { BchatIcon, BchatIconButton } from '../icon'; +import { SpacerLG, SpacerSM } from '../basic/Text'; +import { BchatIcon } from '../icon'; import { CircularProgressbarWithChildren } from 'react-circular-progressbar'; +import styled from 'styled-components'; // import 'react-circular-progressbar/dist/styles.css'; export const ProgressForSync = (props: any) => { return (
-
-
+ {/*
*/} + {/*
{ dataTestId="modal-close-button" />
-
-
+
*/} + {/*
*/} {/* */} {/* */} @@ -29,18 +30,17 @@ export const ProgressForSync = (props: any) => {
*/} + +
{/* Put any JSX content in here that you'd like. It'll be vertically and horizonally centered. */} - - -
{props.percentage}%
- + {/*
@@ -55,14 +55,17 @@ export const ProgressForSync = (props: any) => {
*/}
+ +
{props.percentage}%
+
{window.i18n('almostThere')} {window.i18n('walletSyncingNow')} - +
- {props.remainingHeight} + {props.remainingHeight} {window.i18n('blocksRemaining')}
@@ -72,3 +75,9 @@ export const ProgressForSync = (props: any) => {
); }; + +const RemainHeight=styled.span` +color: #108D32; +font-size: 18px; +font-weight: 700; +margin-right: 5px;` \ No newline at end of file diff --git a/ts/components/wallet/BchatWalletReceivedForm.tsx b/ts/components/wallet/BchatWalletReceivedForm.tsx index ea57a26e..c7c5aece 100644 --- a/ts/components/wallet/BchatWalletReceivedForm.tsx +++ b/ts/components/wallet/BchatWalletReceivedForm.tsx @@ -1,10 +1,9 @@ import React, { useState } from 'react'; // import { QRCode } from "react-qr-svg" -import { Flex } from '../basic/Flex'; -import { SpacerLG } from '../basic/Text'; -import { BchatIcon } from '../icon/BchatIcon'; +import { SpacerLG, SpacerMD, SpacerSM, SpacerXS } from '../basic/Text'; import { QRCode } from 'react-qrcode-logo'; import { copyBchatID } from '../dialog/EditProfileDialog'; +import { BchatButton, BchatButtonColor, BchatButtonType } from '../basic/BchatButton'; export const ReceivedForm = () => { const walletAddress = localStorage.getItem('userAddress'); @@ -21,51 +20,52 @@ export const ReceivedForm = () => { return ( <>
- -
-
- -
-
-
-
{window.i18n('receiveBDX')}
-
- {window.i18n('hintReceiveBDX')} -
-
- validator(e.target.value)} - maxLength={16} - /> -
- -
copyBchatID(walletAddress)} - > - - {window.i18n('copyAddress')} -
+ +
Primary Account
+ +
+
+
- +
+ + copyBchatID(walletAddress)} + /> + +
+ {/*
{window.i18n('receiveBDX')}
*/} +
{window.i18n('hintReceiveBDX')}
+ +
+ validator(e.target.value)} + maxLength={16} + /> +
+ + +
); diff --git a/ts/components/wallet/BchatWalletSendForm.tsx b/ts/components/wallet/BchatWalletSendForm.tsx index 33dd10a0..5335bf5b 100644 --- a/ts/components/wallet/BchatWalletSendForm.tsx +++ b/ts/components/wallet/BchatWalletSendForm.tsx @@ -17,9 +17,9 @@ import { saveRecipientAddress } from '../../data/data'; import { walletSettingsKey } from '../../data/settings-key'; import { updateSendConfirmModal, updateTransactionInitModal } from '../../state/ducks/modalDialog'; import { updateSendAddress } from '../../state/ducks/walletConfig'; -import { walletTransactionPage } from '../../state/ducks/walletInnerSection'; import { useKey } from 'react-use'; import { getwalletSendConfirmModal } from '../../state/selectors/modal'; +import { BchatIcon } from '../icon'; export const SendForm = (props: any) => { const sendAddress = useSelector(getWalletSendAddress); @@ -32,6 +32,10 @@ export const SendForm = (props: any) => { let decimalValue: any = useSelector(getwalletDecimalValue); const walletDetails = useSelector((state: any) => state.wallet); const BchatSendConfirmState = useSelector(getwalletSendConfirmModal); + const zoomLevel = window.getSettingValue('zoom-factor-setting'); + const validZoomLevel=window.screen.width <= 1920 && zoomLevel>100; + console.log('validZoomLevel -->',validZoomLevel,window.screen.width,window.screen.width <= 1920) + function clearStateValue() { props.setAmount(''); // props.setPriority(window.i18n('flash')); @@ -128,7 +132,6 @@ export const SendForm = (props: any) => { dispatch(updateSendConfirmModal(null)); dispatch(updateTransactionInitModal(null)); ToastUtils.pushToastSuccess('successfully-sended', `Your transaction was successful.`); - dispatch(walletTransactionPage()); } else { clearStateValue(); dispatch(updateSendConfirmModal(null)); @@ -143,48 +146,39 @@ export const SendForm = (props: any) => { return ( <>
- - - - {window.i18n('amount')} + {window.i18n('amount')} + +
+ { + props.setAmount(e.target.value); + }} + placeholder={window.i18n('enterAmount')} + type="text" + maxLength={16} + /> + props.fillAmount()} + /> +
-
- { - props.setAmount(e.target.value); - }} - placeholder={window.i18n('enterAmount')} - type="text" - maxLength={16} - /> -
-
-
- - - {window.i18n('priority')} -
-
- {priority} +
+
+ + {priority} - {/* setDropDown(!dropDown)}> + {/* setDropDown(!dropDown)}> { iconColor={'var(--color-walDownthickArrow)'} /> */} -
- {/* +
+ {/* {dropDown && (
@@ -226,31 +220,24 @@ export const SendForm = (props: any) => {
)} */} -
- - +
- - {window.i18n('address')} -
- { - setAddress(e.target.value); - }} - maxLength={120} - /> - {/* Address or BNS Name +
+