From 963904f8bde6fb119932e4fda803937886d0fbdb Mon Sep 17 00:00:00 2001 From: Dima Rifai Date: Fri, 14 Nov 2025 08:15:21 +0200 Subject: [PATCH 1/2] Issue #682 - Add settings for public keys display --- contexts/SettingsContext.tsx | 4 +- i18n/ar.json | 2 + i18n/de.json | 2 + i18n/en.json | 2 + i18n/es.json | 2 + i18n/fr.json | 2 + i18n/it.json | 2 + i18n/ja.json | 2 + i18n/ko.json | 2 + i18n/pl.json | 2 + i18n/pt.json | 2 + i18n/ro.json | 2 + i18n/zh.json | 2 + pages/settings.tsx | 118 ++++++++++++++++++++++------------- 14 files changed, 103 insertions(+), 43 deletions(-) diff --git a/contexts/SettingsContext.tsx b/contexts/SettingsContext.tsx index 1f48156d1..c323dbe8f 100644 --- a/contexts/SettingsContext.tsx +++ b/contexts/SettingsContext.tsx @@ -17,7 +17,8 @@ export interface AppSettings { rawJsonView: boolean; liveData: boolean; prettyJsonView: boolean; - layoutWidth: LayoutWidth; + displayFullKeys: boolean; + layoutWidth: LayoutWidth; } interface SettingsContextType { @@ -37,6 +38,7 @@ export const SettingsProvider = ({ children }: { children: ReactNode }) => { liveData: false, prettyJsonView: false, layoutWidth : 'full', + displayFullKeys: false }); // This effect loads ALL settings from localStorage on initial mount diff --git a/i18n/ar.json b/i18n/ar.json index 3b4139bbe..bd6cad692 100644 --- a/i18n/ar.json +++ b/i18n/ar.json @@ -947,6 +947,8 @@ "settingsPage.cycleDataViewDescription": "زر واحد يبدل بين طرق العرض: المرئي، الخام، والمنسق JSON مع كل نقرة.", "settingsPage.compactLayoutLabel": "عرض مضغوط", "settingsPage.compactLayoutDescription": "تمكين تصميم أضيق وأكثر ضغطًا على الشاشات الكبيرة. هذا الإعداد لا يؤثر على التصميم في الأجهزة المحمولة.", + "settingsPage.displayFullKeysLabel": "عرض المفاتيح العامة الكاملة", + "settingsPage.displayFullKeysDescription": "عند التمكين، سيتم عرض المفاتيح العامة بالكامل. عند التعطيل، سيتم اختصارها لعرض أكثر إيجازًا.", "accountSearch.accountReactResults": "نتائج_البحث_عن_الحساب", "blockDetails.blockDetails": "تفاصيل_الكتلة", "commentsSearch.commentSearchResults": "نتائج_البحث_عن_التعليقات", diff --git a/i18n/de.json b/i18n/de.json index cc8e9335e..1f4a72765 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -947,6 +947,8 @@ "settingsPage.cycleDataViewDescription": "Eine einzelne Schaltfläche, die bei jedem Klick durch die Ansichten Visualisiert, Rohes JSON und Schönes JSON wechselt.", "settingsPage.compactLayoutLabel": "Kompakte Ansicht", "settingsPage.compactLayoutDescription": "Aktiviert ein schmaleres, kompakteres Layout auf großen Bildschirmen. Diese Einstellung hat keine Auswirkungen auf das Layout auf Mobilgeräten.", + "settingsPage.displayFullKeysLabel": "Vollständige öffentliche Schlüssel anzeigen", + "settingsPage.displayFullKeysDescription": "Wenn aktiviert, werden öffentliche Schlüssel vollständig angezeigt. Wenn deaktiviert, werden sie für eine kompaktere Ansicht gekürzt.", "accountSearch.accountReactResults": "konto_suchergebnisse", "blockDetails.blockDetails": "block_details", "commentsSearch.commentSearchResults": "kommentar_suchergebnisse", diff --git a/i18n/en.json b/i18n/en.json index 8e7ab291d..529165b86 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -948,6 +948,8 @@ "settingsPage.cycleDataViewDescription": "A single button that cycles through Visualized, Raw, and Pretty JSON views with each click.", "settingsPage.compactLayoutLabel": "Compact View", "settingsPage.compactLayoutDescription": "Enable a narrower, more compact layout on larger screens. This setting does not affect the layout on mobile devices.", + "settingsPage.displayFullKeysLabel": "Display Full Public Keys", + "settingsPage.displayFullKeysDescription": "When enabled, public keys will be shown in their entirety. When disabled, they will be shortened for a more compact view.", "transactionPage.transactionDetailsRefferer": "transaction_details", "accountSearch.accountReactResults": "account_search_results", "commentsSearch.commentSearchResults": "comment_search_results", diff --git a/i18n/es.json b/i18n/es.json index 18890f52e..0da2fe4c4 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -946,6 +946,8 @@ "settingsPage.cycleDataViewDescription": "Un solo botón que alterna entre las vistas Visualizada, JSON sin formato y JSON con formato con cada clic.", "settingsPage.compactLayoutLabel": "Vista Compacta", "settingsPage.compactLayoutDescription": "Activa un diseño más estrecho y compacto en pantallas grandes. Esta configuración no afecta el diseño en dispositivos móviles.", + "settingsPage.displayFullKeysLabel": "Mostrar claves públicas completas", + "settingsPage.displayFullKeysDescription": "Cuando está habilitado, las claves públicas se mostrarán en su totalidad. Cuando está deshabilitado, se acortarán para una vista más compacta.", "accountSearch.accountReactResults": "resultados_busqueda_cuenta", "blockDetails.blockDetails": "detalles_bloque", "commentsSearch.commentSearchResults": "resultados_busqueda_comentarios", diff --git a/i18n/fr.json b/i18n/fr.json index cf2040b81..143643a35 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -945,6 +945,8 @@ "settingsPage.cycleDataViewDescription": "Un seul bouton qui alterne entre les vues Visualisées, JSON brut et JSON formaté à chaque clic.", "settingsPage.compactLayoutLabel": "Affichage Compact", "settingsPage.compactLayoutDescription": "Activez une mise en page plus étroite et compacte sur les grands écrans. Ce paramètre n'affecte pas la mise en page sur les appareils mobiles.", + "settingsPage.displayFullKeysLabel": "Afficher les clés publiques complètes", + "settingsPage.displayFullKeysDescription": "Si activé, les clés publiques seront affichées en entier. Si désactivé, elles seront raccourcies pour une vue plus compacte.", "accountSearch.accountReactResults": "resultats_recherche_compte", "blockDetails.blockDetails": "details_bloc", "commentsSearch.commentSearchResults": "resultats_recherche_commentaires", diff --git a/i18n/it.json b/i18n/it.json index 8fc1593fe..02a9dd7e1 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -942,6 +942,8 @@ "settingsPage.cycleDataViewDescription": "Un singolo pulsante che scorre tra le viste Visualizzata, JSON grezzo e JSON formattato a ogni clic.", "settingsPage.compactLayoutLabel": "Visualizzazione Compatta", "settingsPage.compactLayoutDescription": "Abilita un layout più stretto e compatto sugli schermi più grandi. Questa impostazione non influisce sul layout dei dispositivi mobili.", + "settingsPage.displayFullKeysLabel": "Mostra chiavi pubbliche complete", + "settingsPage.displayFullKeysDescription": "Se abilitato, le chiavi pubbliche verranno mostrate per intero. Se disabilitato, verranno accorciate per una visualizzazione più compatta.", "accountSearch.accountReactResults": "risultati_ricerca_account", "blockDetails.blockDetails": "dettagli_blocco", "commentsSearch.commentSearchResults": "risultati_ricerca_commenti", diff --git a/i18n/ja.json b/i18n/ja.json index 37b753257..2717aefb1 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -947,6 +947,8 @@ "settingsPage.cycleDataViewDescription": "クリックするたびに、視覚化、生JSON、整形JSONの表示を切り替える単一のボタン。", "settingsPage.compactLayoutLabel": "コンパクト表示", "settingsPage.compactLayoutDescription": "大型スクリーンで、より狭くコンパクトなレイアウトを有効にします。この設定はモバイルデバイスのレイアウトには影響しません。", + "settingsPage.displayFullKeysLabel": "完全な公開鍵を表示", + "settingsPage.displayFullKeysDescription": "有効にすると、公開鍵が完全に表示されます。無効にすると、よりコンパクトな表示のために短縮されます。", "accountSearch.accountReactResults": "アカウント検索結果", "blockDetails.blockDetails": "ブロック詳細", "commentsSearch.commentSearchResults": "コメント検索結果", diff --git a/i18n/ko.json b/i18n/ko.json index 0a9116331..3392b07b7 100644 --- a/i18n/ko.json +++ b/i18n/ko.json @@ -949,6 +949,8 @@ "settingsPage.cycleDataViewDescription": "클릭할 때마다 시각화, 원시 JSON 및 서식화된 JSON 보기 간에 순환하는 단일 버튼입니다.", "settingsPage.compactLayoutLabel": "컴팩트 보기", "settingsPage.compactLayoutDescription": "큰 화면에서 더 좁고 컴팩트한 레이아웃을 활성화합니다. 이 설정은 모바일 기기의 레이아웃에 영향을 주지 않습니다.", + "settingsPage.displayFullKeysLabel": "전체 공개 키 표시", + "settingsPage.displayFullKeysDescription": "활성화하면 전체 공개 키가 표시됩니다. 비활성화하면 더 간결한 보기를 위해 단축됩니다.", "accountSearch.accountReactResults": "계정_검색_결과", "blockDetails.blockDetails": "블록_세부정보", "commentsSearch.commentSearchResults": "댓글_검색_결과", diff --git a/i18n/pl.json b/i18n/pl.json index bf859e1be..81a7e2b67 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -947,6 +947,8 @@ "settingsPage.cycleDataViewDescription": "Pojedynczy przycisk, który przełącza między widokami Wizualizowanym, Surowym JSON i Sformatowanym JSON przy każdym kliknięciu.", "settingsPage.compactLayoutLabel": "Widok kompaktowy", "settingsPage.compactLayoutDescription": "Włącza węższy, bardziej kompaktowy układ na większych ekranach. To ustawienie nie wpływa na układ na urządzeniach mobilnych.", + "settingsPage.displayFullKeysLabel": "Wyświetl pełne klucze publiczne", + "settingsPage.displayFullKeysDescription": "Gdy włączone, klucze publiczne będą wyświetlane w całości. Gdy wyłączone, zostaną skrócone w celu uzyskania bardziej kompaktowego widoku.", "accountSearch.accountReactResults": "wyniki_wyszukiwania_konta", "blockDetails.blockDetails": "szczegoly_bloku", "commentsSearch.commentSearchResults": "wyniki_wyszukiwania_komentarzy", diff --git a/i18n/pt.json b/i18n/pt.json index 63620b2d4..4d8e2d92a 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -947,6 +947,8 @@ "settingsPage.cycleDataViewDescription": "Um único botão que alterna entre as visualizações de Dados Visualizados, JSON Bruto e JSON Formatado a cada clique.", "settingsPage.compactLayoutLabel": "Visualização Compacta", "settingsPage.compactLayoutDescription": "Ativa um layout mais estreito e compacto em telas maiores. Esta configuração não afeta o layout em dispositivos móveis.", + "settingsPage.displayFullKeysLabel": "Exibir chaves públicas completas", + "settingsPage.displayFullKeysDescription": "Quando ativado, as chaves públicas serão exibidas na íntegra. Quando desativado, elas serão encurtadas para uma visualização mais compacta.", "accountSearch.accountReactResults": "resultados_pesquisa_conta", "blockDetails.blockDetails": "detalhes_bloco", "commentsSearch.commentSearchResults": "resultados_pesquisa_comentarios", diff --git a/i18n/ro.json b/i18n/ro.json index 4a3bd70ee..708695bab 100644 --- a/i18n/ro.json +++ b/i18n/ro.json @@ -946,6 +946,8 @@ "settingsPage.cycleDataViewDescription": "Un singur buton care comută între vizualizările Vizualizată, JSON brut și JSON formatat la fiecare clic.", "settingsPage.compactLayoutLabel": "Vizualizare Compactă", "settingsPage.compactLayoutDescription": "Activează un aspect mai îngust și mai compact pe ecranele mari. Această setare nu afectează aspectul pe dispozitivele mobile.", + "settingsPage.displayFullKeysLabel": "Afișează cheile publice complete", + "settingsPage.displayFullKeysDescription": "Când este activat, cheile publice vor fi afișate în întregime. Când este dezactivat, acestea vor fi scurtate pentru o vizualizare mai compactă.", "accountSearch.accountReactResults": "rezultate_cautare_cont", "blockDetails.blockDetails": "detalii_bloc", "commentsSearch.commentSearchResults": "rezultate_cautare_comentarii", diff --git a/i18n/zh.json b/i18n/zh.json index e6bce494f..d1c2c7d00 100644 --- a/i18n/zh.json +++ b/i18n/zh.json @@ -947,6 +947,8 @@ "settingsPage.cycleDataViewDescription": "一个按钮,每次点击可在可视化、原始JSON和格式化JSON视图之间循环切换。", "settingsPage.compactLayoutLabel": "紧凑视图", "settingsPage.compactLayoutDescription": "在较大屏幕上启用更窄、更紧凑的布局。此设置不影响移动设备上的布局。", + "settingsPage.displayFullKeysLabel": "显示完整公钥", + "settingsPage.displayFullKeysDescription": "启用后,公钥将完整显示。禁用后,公钥将被缩短以获得更紧凑的视图。", "accountSearch.accountReactResults": "账户搜索结果", "blockDetails.blockDetails": "区块详情", "commentsSearch.commentSearchResults": "评论搜索结果", diff --git a/pages/settings.tsx b/pages/settings.tsx index 2db96454d..b93cf2b19 100644 --- a/pages/settings.tsx +++ b/pages/settings.tsx @@ -143,63 +143,97 @@ const SettingsPage = () => { const { t } = useI18n(); const settingsConfig: SettingSectionConfig[] = [ { - sectionTitleKey: 'settingsPage.displayTitle', - sectionDescriptionKey: 'settingsPage.displayDescription', + sectionTitleKey: "settingsPage.displayTitle", + sectionDescriptionKey: "settingsPage.displayDescription", items: [ { - type: 'switch', - key: 'displayVestHpMode', - labelKey: 'settingsPage.showVestsLabel', - descriptionKey: 'settingsPage.showVestsDescription', - trueValue: 'vests', - falseValue: 'hp' - } - ] + type: "switch", + key: "displayVestHpMode", + labelKey: "settingsPage.showVestsLabel", + descriptionKey: "settingsPage.showVestsDescription", + trueValue: "vests", + falseValue: "hp", + }, + { + type: "switch", + key: "displayFullKeys", + labelKey: "settingsPage.displayFullKeysLabel", + descriptionKey: "settingsPage.displayFullKeysDescription", + trueValue: true, + falseValue: false, + }, + ], }, { - sectionTitleKey: 'settingsPage.layoutTitle', - sectionDescriptionKey: 'settingsPage.layoutDescription', + sectionTitleKey: "settingsPage.layoutTitle", + sectionDescriptionKey: "settingsPage.layoutDescription", items: [ { - type: 'radio', - key: 'accountPageView', - titleKey: 'settingsPage.accountPageViewTitle', + type: "radio", + key: "accountPageView", + titleKey: "settingsPage.accountPageViewTitle", options: [ - { value: 'tabbed', labelKey: 'settingsPage.tabbedViewLabel', descriptionKey: 'settingsPage.tabbedViewDescription' }, - { value: 'original', labelKey: 'settingsPage.originalViewLabel', descriptionKey: 'settingsPage.originalViewDescription' } - ] + { + value: "tabbed", + labelKey: "settingsPage.tabbedViewLabel", + descriptionKey: "settingsPage.tabbedViewDescription", + }, + { + value: "original", + labelKey: "settingsPage.originalViewLabel", + descriptionKey: "settingsPage.originalViewDescription", + }, + ], }, { - type: 'radio', - key: 'progressBarType', - titleKey: 'settingsPage.resourceBarStyleTitle', + type: "radio", + key: "progressBarType", + titleKey: "settingsPage.resourceBarStyleTitle", options: [ - { value: 'radial', labelKey: 'settingsPage.radialViewLabel', descriptionKey: 'settingsPage.radialViewDescription' }, - { value: 'linear', labelKey: 'settingsPage.linearViewLabel', descriptionKey: 'settingsPage.linearViewDescription' } - ] + { + value: "radial", + labelKey: "settingsPage.radialViewLabel", + descriptionKey: "settingsPage.radialViewDescription", + }, + { + value: "linear", + labelKey: "settingsPage.linearViewLabel", + descriptionKey: "settingsPage.linearViewDescription", + }, + ], }, { - type: 'radio', - key: 'dataViewSwitchStyle', - titleKey: 'settingsPage.dataViewSwitchStyle', + type: "radio", + key: "dataViewSwitchStyle", + titleKey: "settingsPage.dataViewSwitchStyle", options: [ - { value: 'popover', labelKey: 'settingsPage.popoverDataViewLabel', descriptionKey: 'settingsPage.popoverDataViewDescription' }, - { value: 'icons', labelKey: 'settingsPage.iconDataViewLabel', descriptionKey: 'settingsPage.iconDataViewDescription' }, - { value: 'cycle', labelKey: 'settingsPage.cycleDataViewLabel', descriptionKey: 'settingsPage.cycleDataViewDescription' } - - ] + { + value: "popover", + labelKey: "settingsPage.popoverDataViewLabel", + descriptionKey: "settingsPage.popoverDataViewDescription", + }, + { + value: "icons", + labelKey: "settingsPage.iconDataViewLabel", + descriptionKey: "settingsPage.iconDataViewDescription", + }, + { + value: "cycle", + labelKey: "settingsPage.cycleDataViewLabel", + descriptionKey: "settingsPage.cycleDataViewDescription", + }, + ], }, - { - type: 'switch', - key: 'layoutWidth', - labelKey: 'settingsPage.compactLayoutLabel', - descriptionKey: 'settingsPage.compactLayoutDescription', - trueValue: 'compact', // When switch is ON, layout is 'compact' (75%) - falseValue: 'full' // When switch is OFF, layout is 'full' (98%) + { + type: "switch", + key: "layoutWidth", + labelKey: "settingsPage.compactLayoutLabel", + descriptionKey: "settingsPage.compactLayoutDescription", + trueValue: "compact", // When switch is ON, layout is 'compact' (75%) + falseValue: "full", // When switch is OFF, layout is 'full' (98%) }, - ] - } - + ], + }, ]; return ( -- GitLab From 94542babe0c3bb8be84319f7c09e5c51bda9feff Mon Sep 17 00:00:00 2001 From: Dima Rifai Date: Fri, 14 Nov 2025 08:17:07 +0200 Subject: [PATCH 2/2] Issue #682 - Add settings for public keys display --- components/account/AccountAuthoritiesCard.tsx | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/components/account/AccountAuthoritiesCard.tsx b/components/account/AccountAuthoritiesCard.tsx index 5aea5f2b1..7df2925bc 100644 --- a/components/account/AccountAuthoritiesCard.tsx +++ b/components/account/AccountAuthoritiesCard.tsx @@ -9,6 +9,7 @@ import { Table, TableBody, TableCell, TableRow } from "../ui/table"; import { Card, CardContent, CardHeader } from "../ui/card"; import CopyToKeyboard from "../CopyToKeyboard"; import { useI18n } from "@/i18n/i18n"; +import { useSettings } from "@/contexts/SettingsContext"; interface AccountMainCardProps { accountName: string; @@ -29,6 +30,8 @@ const AccountAuthoritiesCard: React.FC = ({ isInitiallyOpen }) => { const { t } = useI18n(); + const { settings } = useSettings(); + const { accountAuthoritiesData } = useAccountAuthorities( accountName, liveDataEnabled, @@ -72,7 +75,7 @@ const AccountAuthoritiesCard: React.FC = ({ ) : ( )} @@ -120,10 +123,7 @@ const AccountAuthoritiesCard: React.FC = ({ }; return ( - +
= ({
-