From c849854f58fd25c555d00e71aaf6d678f0eba0d5 Mon Sep 17 00:00:00 2001 From: Nicola Benaglia Date: Sat, 17 May 2025 10:03:09 +0200 Subject: [PATCH] Add translations --- src/components/Chat/ChatList.tsx | 1 + src/components/Chat/ChatOptions.tsx | 51 +++++++++++++++++----- src/components/Chat/CreateCommonSecret.tsx | 46 ++++++++++++++----- src/i18n/locales/en/core.json | 6 +++ 4 files changed, 84 insertions(+), 20 deletions(-) diff --git a/src/components/Chat/ChatList.tsx b/src/components/Chat/ChatList.tsx index 68ac145..afb88d0 100644 --- a/src/components/Chat/ChatList.tsx +++ b/src/components/Chat/ChatList.tsx @@ -449,6 +449,7 @@ export const ChatList = ({ )} + {enableMentions && (hasSecretKey || isPrivate === false) && ( { return untransformedMessages?.map((item) => { if (item?.messageText) { @@ -80,7 +81,7 @@ export const ChatOptions = ({ messageText: transformedMessage, }; } catch (error) { - // error + console.log(error); } } else return item; }); @@ -102,7 +103,12 @@ export const ChatOptions = ({ rej(response.error); }) .catch((error) => { - rej(error.message || 'An error occurred'); + rej( + error.message || + t('core:message.error.generic', { + postProcess: 'capitalizeFirst', + }) + ); }); }); } catch (error) { @@ -154,6 +160,7 @@ export const ChatOptions = ({ } return []; } + if (selectedMember) { return messages .filter( @@ -165,6 +172,7 @@ export const ChatOptions = ({ ) ?.sort((a, b) => b?.timestamp - a?.timestamp); } + return messages .filter((message) => extractTextFromHTML( @@ -187,6 +195,7 @@ export const ChatOptions = ({ ) ?.sort((a, b) => b?.timestamp - a?.timestamp); } + return messages .filter((message) => extractTextFromHTML(message?.decryptedData?.message)?.includes( @@ -251,6 +260,7 @@ export const ChatOptions = ({ }} /> + - No results + {t('core:message.generic.no_results', { + postProcess: 'capitalizeFirst', + })} )} + + {searchValue && ( + - By member + + {t('core:sort.by_member', { postProcess: 'capitalizeFirst' })} + + {members?.map((member) => { return ( @@ -455,6 +473,7 @@ export const ChatOptions = ({ ); })} + {!!selectedMember && ( { @@ -476,9 +495,12 @@ export const ChatOptions = ({ color: theme.palette.text.secondary, }} > - No results + {t('core:message.generic.no_results', { + postProcess: 'capitalizeFirst', + })} )} + - Error loading content: Invalid Data + {t('group.message.generic.invalid_data', { + postProcess: 'capitalizeFirst', + })} } > @@ -567,6 +591,7 @@ export const ChatOptions = ({ ); } + return ( - SEARCH + {t('core:action.search', { postProcess: 'capitalizeAll' })} } placement="left" @@ -629,6 +654,7 @@ export const ChatOptions = ({ + { setMode('default'); @@ -646,7 +672,7 @@ export const ChatOptions = ({ fontWeight: 700, }} > - Q-MANAGER + {t('core:q_apps.q_manager', { postProcess: 'capitalizeAll' })} } placement="left" @@ -669,6 +695,7 @@ export const ChatOptions = ({ + - MENTIONED + {t('core:message.generic.mentioned', { + postProcess: 'capitalizeAll', + })} } placement="left" @@ -768,6 +797,7 @@ const ShowMessage = ({ message, goToMessage, messages }) => { > {message?.senderName?.charAt(0)} + { > {formatTimestamp(message.timestamp)} + { - // const validApi = await findUsableApi(); const queryString = admins.map((name) => `name=${name}`).join('&'); const url = `${getBaseApiReact()}${getArbitraryEndpointReact()}?mode=ALL&service=DOCUMENT_PRIVATE&identifier=symmetric-qchat-group-${ groupId @@ -55,9 +56,11 @@ export const CreateCommonSecret = ({ const filterId = adminData.filter( (data: any) => data.identifier === `symmetric-qchat-group-${groupId}` ); + if (filterId?.length === 0) { return false; } + const sortedData = filterId.sort((a: any, b: any) => { // Get the most recent date for both a and b const dateA = a.updated ? new Date(a.updated) : new Date(a.created); @@ -78,8 +81,13 @@ export const CreateCommonSecret = ({ pauseAllQueues(); const { names } = await getGroupAdmins(groupId); + if (!names.length) { - throw new Error('Network error'); + throw new Error( + t('core:message.error.network_generic', { + postProcess: 'capitalizeFirst', + }) + ); } const publish = await getPublishesFromAdmins(names); @@ -92,15 +100,18 @@ export const CreateCommonSecret = ({ publish.identifier }?encoding=base64&rebuild=true` ); + const data = await res.text(); - const decryptedKey: any = await decryptResource(data); - const dataint8Array = base64ToUint8Array(decryptedKey.data); const decryptedKeyToObject = uint8ArrayToObject(dataint8Array); if (!validateSecretKey(decryptedKeyToObject)) - throw new Error('SecretKey is not valid'); + throw new Error( + t('auth:message.error.invalid_secret_key', { + postProcess: 'capitalizeFirst', + }) + ); if (decryptedKeyToObject) { return decryptedKeyToObject; @@ -113,17 +124,31 @@ export const CreateCommonSecret = ({ const createCommonSecret = async () => { try { const fee = await getFee('ARBITRARY'); + await show({ - message: 'Would you like to perform an ARBITRARY transaction?', + message: t('core:question.perform_transaction', { + action: 'ARBITRARY', + postProcess: 'capitalizeFirst', + }), publishFee: fee.fee + ' QORT', }); setIsLoading(true); const secretKey2 = await getSecretKey(); + if (!secretKey2 && secretKey2 !== false) - throw new Error('invalid secret key'); + throw new Error( + t('auth:message.error.invalid_secret_key', { + postProcess: 'capitalizeFirst', + }) + ); + if (secretKey2 && !validateSecretKey(secretKey2)) - throw new Error('invalid secret key'); + throw new Error( + t('auth:message.error.invalid_secret_key', { + postProcess: 'capitalizeFirst', + }) + ); const secretKeyToSend = !secretKey2 ? null : secretKey2; @@ -136,8 +161,9 @@ export const CreateCommonSecret = ({ if (!response?.error) { setInfoSnack({ type: 'success', - message: - 'Successfully re-encrypted secret key. It may take a couple of minutes for the changes to propagate. Refresh the group in 5 mins.', + message: t('auth:message.success.reencrypted_secret_key', { + postProcess: 'capitalizeFirst', + }), }); setOpenSnack(true); setTxList((prev) => [ diff --git a/src/i18n/locales/en/core.json b/src/i18n/locales/en/core.json index 669dd8c..948140a 100644 --- a/src/i18n/locales/en/core.json +++ b/src/i18n/locales/en/core.json @@ -55,6 +55,7 @@ "remove": "remove", "return_apps_dashboard": "return to Apps Dashboard", "save": "save", + "search": "search", "search_apps": "search for apps", "select_app_type": "select App Type", "select_category": "select Category", @@ -148,6 +149,7 @@ "devmode_local_node": "please use your local node for dev mode! Logout and use Local node.", "fee_qort": "fee: {{ message }} QORT", "foreign_fee": "foreign fee: {{ message }}", + "mentioned": "mentioned", "message_with_image": "this message already has an image", "name_available": "{{ name }} is available", "name_benefits": "benefits of a name", @@ -218,6 +220,7 @@ "q_apps": { "about": "about this Q-App", "q_mail": "q-mail", + "q_manager": "q-manager", "q_sandbox": "q-Sandbox" }, "question": { @@ -234,6 +237,9 @@ }, "server": "server", "settings": "settings", + "sort": { + "by_member": "by member" + }, "supply": "supply", "tags": "tags", "theme": {