From a6850328160e3aa15467dfcf556952f8bf63a3c8 Mon Sep 17 00:00:00 2001 From: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> Date: Mon, 20 Jan 2025 17:22:24 -0500 Subject: [PATCH] account: add name server settings Change-Id: I2c23f58a92cc84ce70f8f0fbe792161ae70a2846 --- Ring/Ring/Constants/Generated/Strings.swift | 2 ++ .../Settings/Me/AccountSettings.swift | 8 ++++++++ .../Settings/Me/AccountSettingsViews.swift | 20 +++++++++++++++++++ .../Settings/Me/SettingsSummaryView.swift | 4 ++++ .../Resources/en.lproj/Localizable.strings | 1 + 5 files changed, 35 insertions(+) diff --git a/Ring/Ring/Constants/Generated/Strings.swift b/Ring/Ring/Constants/Generated/Strings.swift index b8aca9697..b1cd370f9 100644 --- a/Ring/Ring/Constants/Generated/Strings.swift +++ b/Ring/Ring/Constants/Generated/Strings.swift @@ -153,6 +153,8 @@ internal enum L10n { internal static let linkedDevices = L10n.tr("Localizable", "accountPage.linkedDevices", fallback: "Linked devices") /// Manage account internal static let manageAccount = L10n.tr("Localizable", "accountPage.manageAccount", fallback: "Manage account") + /// Name server + internal static let nameServer = L10n.tr("Localizable", "accountPage.nameServer", fallback: "Name server") /// Confirm new password internal static let newPasswordConfirmPlaceholder = L10n.tr("Localizable", "accountPage.newPasswordConfirmPlaceholder", fallback: "Confirm new password") /// Enter new password diff --git a/Ring/Ring/Features/Settings/Me/AccountSettings.swift b/Ring/Ring/Features/Settings/Me/AccountSettings.swift index 005ef8918..5234b16a7 100644 --- a/Ring/Ring/Features/Settings/Me/AccountSettings.swift +++ b/Ring/Ring/Features/Settings/Me/AccountSettings.swift @@ -47,6 +47,8 @@ class AccountSettings: ObservableObject { @Published var bootstrap = "" + @Published var serverName = "" + var notificationsPermitted: Bool = LocalNotificationsHelper.isEnabled() let accountService: AccountsService let account: AccountModel @@ -110,6 +112,7 @@ class AccountSettings: ObservableObject { // MARK: - Jami account extension AccountSettings { private func setUPJamiParameters() { + self.serverName = self.getStringState(for: .ringNsURI) self.proxyEnabled = self.getBoolState(for: .proxyEnabled) self.proxyListUrl = self.getStringState(for: ConfigKey.dhtProxyListUrl) self.bootstrap = self.getStringState(for: ConfigKey.accountHostname) @@ -197,6 +200,11 @@ extension AccountSettings { let property = ConfigKeyModel(withKey: .dhtProxyListUrl) self.accountService.setAccountProperty(property: property, value: self.proxyListUrl, accountId: account.id) } + + func saveNameServer() { + let property = ConfigKeyModel(withKey: ConfigKey.ringNsURI) + self.accountService.setAccountProperty(property: property, value: self.serverName, accountId: account.id) + } } // MARK: - SIP account diff --git a/Ring/Ring/Features/Settings/Me/AccountSettingsViews.swift b/Ring/Ring/Features/Settings/Me/AccountSettingsViews.swift index 03ffc257b..5ac855bed 100644 --- a/Ring/Ring/Features/Settings/Me/AccountSettingsViews.swift +++ b/Ring/Ring/Features/Settings/Me/AccountSettingsViews.swift @@ -125,6 +125,26 @@ struct NotificationsSettingsView: View { } } +struct NameServerView: View { + @StateObject var model: AccountSettings + + init(injectionBag: InjectionBag, account: AccountModel) { + _model = StateObject(wrappedValue: AccountSettings(account: account, injectionBag: injectionBag)) + } + + var body: some View { + List { + NavigationLink(destination: EditableFieldView(value: $model.serverName, title: L10n.AccountPage.nameServer, placeholder: L10n.Account.serverLabel, onDisappearAction: { + model.saveNameServer() + })) { + FieldRowView(label: L10n.AccountPage.nameServer, value: model.serverName) + } + } + .navigationBarTitleDisplayMode(.inline) + .navigationTitle(L10n.AccountPage.notificationTitle) + } +} + struct ConnectivitySettingsView: View { @StateObject var model: AccountSettings diff --git a/Ring/Ring/Features/Settings/Me/SettingsSummaryView.swift b/Ring/Ring/Features/Settings/Me/SettingsSummaryView.swift index bcff11a10..64cf6320a 100644 --- a/Ring/Ring/Features/Settings/Me/SettingsSummaryView.swift +++ b/Ring/Ring/Features/Settings/Me/SettingsSummaryView.swift @@ -37,6 +37,10 @@ struct SettingsSummaryView: View { NavigationLink(destination: NotificationsSettingsView(injectionBag: model.injectionBag, account: model.account)) { SettingsRow(iconName: "bell", title: L10n.AccountPage.notificationsHeader) } + + NavigationLink(destination: NameServerView(injectionBag: model.injectionBag, account: model.account)) { + SettingsRow(iconName: "server.rack", title: L10n.AccountPage.nameServer) + } } NavigationLink(destination: ConnectivitySettingsView(injectionBag: model.injectionBag, account: model.account)) { SettingsRow(iconName: "link", title: L10n.AccountPage.connectivityAndConfiguration) diff --git a/Ring/Ring/Resources/en.lproj/Localizable.strings b/Ring/Ring/Resources/en.lproj/Localizable.strings index 0d7df059c..d6f852ef9 100644 --- a/Ring/Ring/Resources/en.lproj/Localizable.strings +++ b/Ring/Ring/Resources/en.lproj/Localizable.strings @@ -387,6 +387,7 @@ "accountPage.accountIdentity" = "Account identity"; "accountPage.bootstrap" = "Bootstrap"; "accountPage.dhtConfiguration" = "OpenDHT configuration"; +"accountPage.nameServer" = "Name server"; // Backup Account "backupAccount.explanation" = "This Jami account exists only on this device. The account will be lost if this device is lost or if the application is uninstalled. It is recommended to make a backup of this account."; -- GitLab