From e521658ab7d1e89e860016e451a1e630800506b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Mon, 23 Feb 2026 11:30:55 +0100 Subject: [PATCH 01/13] fix capitalization --- web/messages/en/edge.json | 19 ++++++++++--------- web/src/pages/EdgesPage/EdgesTable.tsx | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/web/messages/en/edge.json b/web/messages/en/edge.json index 9eb606ef6..39d05a93f 100644 --- a/web/messages/en/edge.json +++ b/web/messages/en/edge.json @@ -1,15 +1,15 @@ { "$schema": "https://inlang.com/schema/inlang-message-format", - "edge_title": "Edge components", - "edge_edit_title": "Edit edge component", + "edge_title": "Edge Components", + "edge_edit_title": "Edit Edge Component", "edge_edit_general_info": "General information", "edge_edit_name": "Name", "edge_edit_address": "IP or Domain", "edge_edit_port": "gRPC port", "edge_edit_public_address": "Public domain", "edge_edit_delete": "Delete", - "edge_edit_success": "Edge component updated", - "edge_edit_failed": "Failed to update edge component", + "edge_edit_success": "Edge Component updated", + "edge_edit_failed": "Failed to update Edge Component", "edges_header_title": "All components", "edges_col_name": "Name", "edges_col_address": "Address", @@ -19,11 +19,12 @@ "edges_col_modified_by": "Modified by", "edges_col_status": "Status", "edges_row_menu_edit": "Edit", - "edges_empty_title": "No edge components added yet.", - "edges_empty_subtitle": "Add edge components by clicking the button below.", + "edges_empty_title": "No Edge Components added yet.", + "edges_empty_subtitle": "Add Edge Components by clicking the button below.", "edges_search_placeholder": "Search", - "edge_delete_success": "Edge component deleted", - "edge_delete_failed": "Failed to delete edge component", + "edge_delete_success": "Edge Component deleted", + "edge_delete_failed": "Failed to delete Edge Component", "edge_connected": "Connected", - "edge_disconnected": "Disconnected" + "edge_disconnected": "Disconnected", + "edge_add": "Add Edge Component" } diff --git a/web/src/pages/EdgesPage/EdgesTable.tsx b/web/src/pages/EdgesPage/EdgesTable.tsx index 2d9abe550..80b3d67da 100644 --- a/web/src/pages/EdgesPage/EdgesTable.tsx +++ b/web/src/pages/EdgesPage/EdgesTable.tsx @@ -62,7 +62,7 @@ export const EdgesTable = () => { const addButtonProps = useMemo( (): ButtonProps => ({ variant: 'primary', - text: 'Add Edge component', + text: m.edge_add(), iconLeft: 'globe', testId: 'add-edge', onClick: () => { From 5a59e84ff08d035482bc8629b21f13919ee0683d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20W=C3=B3jcik?= Date: Mon, 23 Feb 2026 12:21:54 +0100 Subject: [PATCH 02/13] handle proxy URL in general settings page --- web/messages/en/settings.json | 3 ++- .../SettingsInstancePage.tsx | 25 ++++++++++++++++--- web/src/shared/api/types.ts | 7 +++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/web/messages/en/settings.json b/web/messages/en/settings.json index ff8c4635a..211792b89 100644 --- a/web/messages/en/settings.json +++ b/web/messages/en/settings.json @@ -9,5 +9,6 @@ "settings_activity_log_streaming_table_title": "All log streams", "settings_activity_log_streaming_table_header_name": "Name", "settings_activity_log_streaming_table_stream_type_name": "Destination", - "settings_msg_saved": "Settings saved" + "settings_msg_saved": "Settings saved", + "settings_msg_save_failed": "Failed to save settings" } diff --git a/web/src/pages/settings/SettingsInstancePage/SettingsInstancePage.tsx b/web/src/pages/settings/SettingsInstancePage/SettingsInstancePage.tsx index e026c78d7..90b03a1a5 100644 --- a/web/src/pages/settings/SettingsInstancePage/SettingsInstancePage.tsx +++ b/web/src/pages/settings/SettingsInstancePage/SettingsInstancePage.tsx @@ -12,6 +12,9 @@ import { SettingsCard } from '../../../shared/components/SettingsCard/SettingsCa import { SettingsHeader } from '../../../shared/components/SettingsHeader/SettingsHeader'; import { SettingsLayout } from '../../../shared/components/SettingsLayout/SettingsLayout'; import { Button } from '../../../shared/defguard-ui/components/Button/Button'; +import { SizedBox } from '../../../shared/defguard-ui/components/SizedBox/SizedBox'; +import { Snackbar } from '../../../shared/defguard-ui/providers/snackbar/snackbar'; +import { ThemeSpacing } from '../../../shared/defguard-ui/types'; import { isPresent } from '../../../shared/defguard-ui/utils/isPresent'; import { useAppForm } from '../../../shared/form'; import { formChangeLogic } from '../../../shared/formLogic'; @@ -65,6 +68,9 @@ const formSchema = z.object({ }), ) .max(64, m.form_error_max_len({ length: 64 })), + public_proxy_url: z + .url(m.initial_setup_general_config_error_public_proxy_url_invalid()) + .min(1, m.initial_setup_general_config_error_public_proxy_url_required()), }); type FormFields = z.infer; @@ -75,13 +81,20 @@ const Content = ({ settings }: { settings: Settings }) => { meta: { invalidate: ['settings'], }, + onSuccess: () => { + Snackbar.success(m.settings_msg_saved()); + }, + onError: () => { + Snackbar.error(m.settings_msg_save_failed()); + }, }); const defaultValues = useMemo( (): FormFields => ({ instance_name: settings.instance_name ?? '', + public_proxy_url: settings.public_proxy_url ?? '', }), - [settings.instance_name], + [settings.instance_name, settings.public_proxy_url], ); const form = useAppForm({ @@ -93,6 +106,7 @@ const Content = ({ settings }: { settings: Settings }) => { }, onSubmit: async ({ value }) => { await mutateAsync(value); + form.reset(value); }, }); @@ -108,20 +122,25 @@ const Content = ({ settings }: { settings: Settings }) => { {(field) => } + + + {(field) => } + ({ isDefault: s.isDefaultValue || s.isPristine, isSubmitting: s.isSubmitting, + canSubmit: s.canSubmit, })} > - {({ isDefault, isSubmitting }) => ( + {({ isDefault, isSubmitting, canSubmit }) => (