From a584b165ec0597e79daff81b34d7c73b50f9ae24 Mon Sep 17 00:00:00 2001 From: gpongelli Date: Thu, 13 Nov 2025 07:38:44 +0100 Subject: [PATCH 1/8] feat: settings for custom OIDC claim --- .../Settings/DisplaySettingsSection.swift | 6 +++++ .../Display Settings/DisplaySettings.h | 5 ++++ .../Display Settings/DisplaySettings.m | 26 +++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/OpenCloud/Settings/DisplaySettingsSection.swift b/OpenCloud/Settings/DisplaySettingsSection.swift index 63754d86..bde5f22d 100644 --- a/OpenCloud/Settings/DisplaySettingsSection.swift +++ b/OpenCloud/Settings/DisplaySettingsSection.swift @@ -51,6 +51,12 @@ class DisplaySettingsSection: SettingsSection { } }, title: OCLocalizedString("Enable diagnostics", nil), value: DiagnosticManager.shared.enabled, identifier: "diagnostics-enabled")) + self.add(row: StaticTableViewRow(textFieldWithAction: { (row, _, _) in + if let oidcClaim = row.value as? String { + DisplaySettings.shared.oidcCustomClaim = oidcClaim as NSString + } + }, value: "", autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) + if OCLicenseQAProvider.isQAUnlockPossible { self.add(row: StaticTableViewRow(switchWithAction: { (row, _) in if let qaUnlockedProFeatures = row.value as? Bool { diff --git a/OpenCloudAppFramework/Display Settings/DisplaySettings.h b/OpenCloudAppFramework/Display Settings/DisplaySettings.h index 3d2819d4..386cbe03 100644 --- a/OpenCloudAppFramework/Display Settings/DisplaySettings.h +++ b/OpenCloudAppFramework/Display Settings/DisplaySettings.h @@ -35,6 +35,9 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Drag files @property(assign,nonatomic) BOOL preventDraggingFiles; +#pragma mark - OIDC Claim +@property(assign,nonatomic) NSString *oidcCustomClaim; + #pragma mark - Query condition @property(nonatomic,readonly,nullable) OCQueryCondition *queryConditionForDisplaySettings; @@ -46,6 +49,7 @@ NS_ASSUME_NONNULL_BEGIN extern NSString *DisplaySettingsShowHiddenFilesPrefsKey; //!< The UserDefaults Key containing the BOOL value for .showHiddenFiles extern NSString *DisplaySettingsSortFoldersFirstPrefsKey; //!< The UserDefaults Key containing the BOOL value for .sortFoldersFirst extern NSString *DisplaySettingsPreventDraggingFilesPrefsKey; //!< The UserDefaults Key containing the BOOL value for .preventDraggingFiles +extern NSString *DisplaySettingsOidcCustomClaimPrefsKey; //!< The UserDefaults Key containing the BOOL value for .oidcCustomClaim extern OCIPCNotificationName OCIPCNotificationNameDisplaySettingsChanged; //!< Posted when display settings changed (internal use only) extern NSNotificationName DisplaySettingsChanged; //!< Posted when display settings changed (for use by app + File Provider) @@ -54,5 +58,6 @@ extern OCClassSettingsIdentifier OCClassSettingsIdentifierDisplay; //!< The cl extern OCClassSettingsKey OCClassSettingsKeyDisplayShowHiddenFiles; //!< The class settings key for Show Hidden Files extern OCClassSettingsKey OCClassSettingsKeyDisplaySortFoldersFirst; //!< The class settings key for sorting folders first extern OCClassSettingsKey OCClassSettingsKeyDisplayPreventDraggingFiles; //!< The class settings key if Drag Files is enabled +extern OCClassSettingsKey OCClassSettingsKeyCustomOidcClaim; //!< The class settings key for custom OIDC claim NS_ASSUME_NONNULL_END diff --git a/OpenCloudAppFramework/Display Settings/DisplaySettings.m b/OpenCloudAppFramework/Display Settings/DisplaySettings.m index ef2903b2..3b96932d 100644 --- a/OpenCloudAppFramework/Display Settings/DisplaySettings.m +++ b/OpenCloudAppFramework/Display Settings/DisplaySettings.m @@ -89,6 +89,7 @@ - (instancetype)init _showHiddenFiles = [self _showHiddenFilesValue]; _sortFoldersFirst = [self _sortFoldersFirst]; _preventDraggingFiles = [self _preventDraggingFilesValue]; + _oidcCustomClaim = [self _oidcCustomClaimValue]; } return (self); @@ -189,6 +190,29 @@ - (void)setPreventDraggingFiles:(BOOL)preventDraggingFiles [self postChangeNotifications]; } + +#pragma mark - OIDC Custom Claim +- (NSString*)_oidcCustomClaimValue +{ + NSString *oidcClaim; + + if ((oidcClaim = [OCAppIdentity.sharedAppIdentity.userDefaults objectForKey:DisplaySettingsOidcCustomClaimPrefsKey]) != nil) + { + return oidcClaim; + } + + return ([self classSettingForOCClassSettingsKey:OCClassSettingsKeyCustomOidcClaim]); +} + +- (void)setoidcCustomClaim:(NSString*)oidcCustomClaim +{ + _oidcCustomClaim = oidcCustomClaim; + + [OCAppIdentity.sharedAppIdentity.userDefaults setValue:oidcCustomClaim forKey:DisplaySettingsPreventDraggingFilesPrefsKey]; + + [self postChangeNotifications]; +} + #pragma mark - Query updating - (void)updateQueryWithDisplaySettings:(OCQuery *)query { @@ -243,6 +267,7 @@ - (BOOL)query:(OCQuery *)query shouldIncludeItem:(OCItem *)item NSString *DisplaySettingsShowHiddenFilesPrefsKey = @"display-show-hidden-files"; NSString *DisplaySettingsSortFoldersFirstPrefsKey = @"display-sort-folders-first"; NSString *DisplaySettingsPreventDraggingFilesPrefsKey = @"display-prevent-dragging-files"; +NSString *DisplaySettingsOidcCustomClaimPrefsKey = @"oidc-custom-claim"; OCIPCNotificationName OCIPCNotificationNameDisplaySettingsChanged = @"org.opencloud.display-settings-changed"; @@ -252,3 +277,4 @@ - (BOOL)query:(OCQuery *)query shouldIncludeItem:(OCItem *)item OCClassSettingsKey OCClassSettingsKeyDisplayShowHiddenFiles = @"show-hidden-files"; OCClassSettingsKey OCClassSettingsKeyDisplaySortFoldersFirst = @"sort-folders-first"; OCClassSettingsKey OCClassSettingsKeyDisplayPreventDraggingFiles = @"prevent-dragging-files"; +OCClassSettingsKey OCClassSettingsKeyCustomOidcClaim = @"custom-claim"; From e20d933fcf02e544b293cdf935883d8b717fb7e7 Mon Sep 17 00:00:00 2001 From: gpongelli Date: Tue, 25 Nov 2025 23:11:54 +0100 Subject: [PATCH 2/8] fix typo, notify value change add textbox placeholder --- OpenCloud/Settings/DisplaySettingsSection.swift | 2 +- OpenCloudAppFramework/Display Settings/DisplaySettings.m | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/OpenCloud/Settings/DisplaySettingsSection.swift b/OpenCloud/Settings/DisplaySettingsSection.swift index bde5f22d..16635fd0 100644 --- a/OpenCloud/Settings/DisplaySettingsSection.swift +++ b/OpenCloud/Settings/DisplaySettingsSection.swift @@ -55,7 +55,7 @@ class DisplaySettingsSection: SettingsSection { if let oidcClaim = row.value as? String { DisplaySettings.shared.oidcCustomClaim = oidcClaim as NSString } - }, value: "", autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) + }, placeholder: "Custom OIDC claim", value: "", autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) if OCLicenseQAProvider.isQAUnlockPossible { self.add(row: StaticTableViewRow(switchWithAction: { (row, _) in diff --git a/OpenCloudAppFramework/Display Settings/DisplaySettings.m b/OpenCloudAppFramework/Display Settings/DisplaySettings.m index 3b96932d..d6f985c1 100644 --- a/OpenCloudAppFramework/Display Settings/DisplaySettings.m +++ b/OpenCloudAppFramework/Display Settings/DisplaySettings.m @@ -115,6 +115,10 @@ - (void)_handleDisplaySettingsChanged _preventDraggingFiles = [self _preventDraggingFilesValue]; [self didChangeValueForKey:@"preventDraggingFiles"]; + [self willChangeValueForKey:@"oidcCustomClaim"]; + _oidcCustomClaim = [self _oidcCustomClaimValue]; + [self didChangeValueForKey:@"oidcCustomClaim"]; + [[NSNotificationCenter defaultCenter] postNotificationName:DisplaySettingsChanged object:self]; } @@ -204,11 +208,11 @@ - (NSString*)_oidcCustomClaimValue return ([self classSettingForOCClassSettingsKey:OCClassSettingsKeyCustomOidcClaim]); } -- (void)setoidcCustomClaim:(NSString*)oidcCustomClaim +- (void)setOidcCustomClaim:(NSString*)oidcCustomClaim { _oidcCustomClaim = oidcCustomClaim; - [OCAppIdentity.sharedAppIdentity.userDefaults setValue:oidcCustomClaim forKey:DisplaySettingsPreventDraggingFilesPrefsKey]; + [OCAppIdentity.sharedAppIdentity.userDefaults setValue:oidcCustomClaim forKey:DisplaySettingsOidcCustomClaimPrefsKey]; [self postChangeNotifications]; } From 10d4247b96a8334367395d8c6844bcd1d9b3f891 Mon Sep 17 00:00:00 2001 From: gpongelli Date: Tue, 25 Nov 2025 23:12:22 +0100 Subject: [PATCH 3/8] change ios-sdk reference --- .gitmodules | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 00119eb2..eb454ac8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,5 @@ [submodule "ios-sdk"] path = ios-sdk - #url = https://github.com/opencloud-eu/ios-sdk.git - url = ../ios-sdk.git + url = https://github.com/gpongelli/opencloud-ios-sdk.git + #url = ../ios-sdk.git + branch = custom-claim \ No newline at end of file From bd08cf9f212bc3c851d50626bb8ccc657c80194e Mon Sep 17 00:00:00 2001 From: gpongelli Date: Wed, 24 Dec 2025 15:57:47 +0100 Subject: [PATCH 4/8] fix: load custom scope if existing --- OpenCloud/Settings/DisplaySettingsSection.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenCloud/Settings/DisplaySettingsSection.swift b/OpenCloud/Settings/DisplaySettingsSection.swift index 16635fd0..ca9f799f 100644 --- a/OpenCloud/Settings/DisplaySettingsSection.swift +++ b/OpenCloud/Settings/DisplaySettingsSection.swift @@ -55,7 +55,7 @@ class DisplaySettingsSection: SettingsSection { if let oidcClaim = row.value as? String { DisplaySettings.shared.oidcCustomClaim = oidcClaim as NSString } - }, placeholder: "Custom OIDC claim", value: "", autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) + }, placeholder: "Custom OIDC claim", value: DisplaySettings.shared.oidcCustomClaim as String, autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) if OCLicenseQAProvider.isQAUnlockPossible { self.add(row: StaticTableViewRow(switchWithAction: { (row, _) in From a0c6bae9de45ce44598bc7c81c1f3cdcf7c5098d Mon Sep 17 00:00:00 2001 From: gpongelli Date: Wed, 24 Dec 2025 16:33:45 +0100 Subject: [PATCH 5/8] feat: save custom scope to bookmark --- OpenCloud/Bookmarks/Composer/BookmarkComposer.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift b/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift index df97b568..f9e3f7ee 100644 --- a/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift +++ b/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift @@ -151,6 +151,9 @@ class BookmarkComposer: NSObject { // Probe URL bookmark.url = serverURL + let customScope = (OCAppIdentity.shared.userDefaults! as UserDefaults).object(forKey:"oidc-custom-claim") + bookmark.customOIDCClaim = customScope as? String + let connection = instantiateConnection(for: bookmark) hudMessage = OCLocalizedString("Contacting server…", nil) From 3fc0ca8cf4b5a760174f4f113e903b38c04f639c Mon Sep 17 00:00:00 2001 From: gpongelli Date: Wed, 24 Dec 2025 16:43:04 +0100 Subject: [PATCH 6/8] feat: correct name --- .../Bookmarks/Composer/BookmarkComposer.swift | 4 +-- .../Settings/DisplaySettingsSection.swift | 6 ++-- .../Display Settings/DisplaySettings.h | 8 ++--- .../Display Settings/DisplaySettings.m | 30 +++++++++---------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift b/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift index f9e3f7ee..a3f51567 100644 --- a/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift +++ b/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift @@ -151,8 +151,8 @@ class BookmarkComposer: NSObject { // Probe URL bookmark.url = serverURL - let customScope = (OCAppIdentity.shared.userDefaults! as UserDefaults).object(forKey:"oidc-custom-claim") - bookmark.customOIDCClaim = customScope as? String + let customScopes = (OCAppIdentity.shared.userDefaults! as UserDefaults).object(forKey:"oidc-custom-scopes") + bookmark.customOIDCScopes = customScopes as? String let connection = instantiateConnection(for: bookmark) diff --git a/OpenCloud/Settings/DisplaySettingsSection.swift b/OpenCloud/Settings/DisplaySettingsSection.swift index ca9f799f..8e86f5f5 100644 --- a/OpenCloud/Settings/DisplaySettingsSection.swift +++ b/OpenCloud/Settings/DisplaySettingsSection.swift @@ -52,10 +52,10 @@ class DisplaySettingsSection: SettingsSection { }, title: OCLocalizedString("Enable diagnostics", nil), value: DiagnosticManager.shared.enabled, identifier: "diagnostics-enabled")) self.add(row: StaticTableViewRow(textFieldWithAction: { (row, _, _) in - if let oidcClaim = row.value as? String { - DisplaySettings.shared.oidcCustomClaim = oidcClaim as NSString + if let oidcScopes = row.value as? String { + DisplaySettings.shared.oidcCustomScopes = oidcScopes as NSString } - }, placeholder: "Custom OIDC claim", value: DisplaySettings.shared.oidcCustomClaim as String, autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) + }, placeholder: "Custom OIDC scopes", value: DisplaySettings.shared.oidcCustomScopes as String, autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) if OCLicenseQAProvider.isQAUnlockPossible { self.add(row: StaticTableViewRow(switchWithAction: { (row, _) in diff --git a/OpenCloudAppFramework/Display Settings/DisplaySettings.h b/OpenCloudAppFramework/Display Settings/DisplaySettings.h index 386cbe03..87ecb8e3 100644 --- a/OpenCloudAppFramework/Display Settings/DisplaySettings.h +++ b/OpenCloudAppFramework/Display Settings/DisplaySettings.h @@ -35,8 +35,8 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Drag files @property(assign,nonatomic) BOOL preventDraggingFiles; -#pragma mark - OIDC Claim -@property(assign,nonatomic) NSString *oidcCustomClaim; +#pragma mark - OIDC Scopes +@property(assign,nonatomic) NSString *oidcCustomScopes; #pragma mark - Query condition @property(nonatomic,readonly,nullable) OCQueryCondition *queryConditionForDisplaySettings; @@ -49,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN extern NSString *DisplaySettingsShowHiddenFilesPrefsKey; //!< The UserDefaults Key containing the BOOL value for .showHiddenFiles extern NSString *DisplaySettingsSortFoldersFirstPrefsKey; //!< The UserDefaults Key containing the BOOL value for .sortFoldersFirst extern NSString *DisplaySettingsPreventDraggingFilesPrefsKey; //!< The UserDefaults Key containing the BOOL value for .preventDraggingFiles -extern NSString *DisplaySettingsOidcCustomClaimPrefsKey; //!< The UserDefaults Key containing the BOOL value for .oidcCustomClaim +extern NSString *DisplaySettingsOIDCCustomScopesPrefsKey; //!< The UserDefaults Key containing the BOOL value for .oidcCustomScopes extern OCIPCNotificationName OCIPCNotificationNameDisplaySettingsChanged; //!< Posted when display settings changed (internal use only) extern NSNotificationName DisplaySettingsChanged; //!< Posted when display settings changed (for use by app + File Provider) @@ -58,6 +58,6 @@ extern OCClassSettingsIdentifier OCClassSettingsIdentifierDisplay; //!< The cl extern OCClassSettingsKey OCClassSettingsKeyDisplayShowHiddenFiles; //!< The class settings key for Show Hidden Files extern OCClassSettingsKey OCClassSettingsKeyDisplaySortFoldersFirst; //!< The class settings key for sorting folders first extern OCClassSettingsKey OCClassSettingsKeyDisplayPreventDraggingFiles; //!< The class settings key if Drag Files is enabled -extern OCClassSettingsKey OCClassSettingsKeyCustomOidcClaim; //!< The class settings key for custom OIDC claim +extern OCClassSettingsKey OCClassSettingsKeyCustomOidcScopes; //!< The class settings key for custom OIDC scopes NS_ASSUME_NONNULL_END diff --git a/OpenCloudAppFramework/Display Settings/DisplaySettings.m b/OpenCloudAppFramework/Display Settings/DisplaySettings.m index d6f985c1..91f881be 100644 --- a/OpenCloudAppFramework/Display Settings/DisplaySettings.m +++ b/OpenCloudAppFramework/Display Settings/DisplaySettings.m @@ -89,7 +89,7 @@ - (instancetype)init _showHiddenFiles = [self _showHiddenFilesValue]; _sortFoldersFirst = [self _sortFoldersFirst]; _preventDraggingFiles = [self _preventDraggingFilesValue]; - _oidcCustomClaim = [self _oidcCustomClaimValue]; + _oidcCustomScopes = [self _oidcCustomScopesValue]; } return (self); @@ -115,9 +115,9 @@ - (void)_handleDisplaySettingsChanged _preventDraggingFiles = [self _preventDraggingFilesValue]; [self didChangeValueForKey:@"preventDraggingFiles"]; - [self willChangeValueForKey:@"oidcCustomClaim"]; - _oidcCustomClaim = [self _oidcCustomClaimValue]; - [self didChangeValueForKey:@"oidcCustomClaim"]; + [self willChangeValueForKey:@"oidcCustomScopes"]; + _oidcCustomScopes = [self _oidcCustomScopesValue]; + [self didChangeValueForKey:@"oidcCustomScopes"]; [[NSNotificationCenter defaultCenter] postNotificationName:DisplaySettingsChanged object:self]; } @@ -195,24 +195,24 @@ - (void)setPreventDraggingFiles:(BOOL)preventDraggingFiles } -#pragma mark - OIDC Custom Claim -- (NSString*)_oidcCustomClaimValue +#pragma mark - OIDC Custom Scopes +- (NSString*)_oidcCustomScopesValue { - NSString *oidcClaim; + NSString *oidcScopes; - if ((oidcClaim = [OCAppIdentity.sharedAppIdentity.userDefaults objectForKey:DisplaySettingsOidcCustomClaimPrefsKey]) != nil) + if ((oidcScopes = [OCAppIdentity.sharedAppIdentity.userDefaults objectForKey:DisplaySettingsOIDCCustomScopesPrefsKey]) != nil) { - return oidcClaim; + return oidcScopes; } - return ([self classSettingForOCClassSettingsKey:OCClassSettingsKeyCustomOidcClaim]); + return ([self classSettingForOCClassSettingsKey:OCClassSettingsKeyCustomOidcScopes]); } -- (void)setOidcCustomClaim:(NSString*)oidcCustomClaim +- (void)setOidcCustomScopes:(NSString*)oidcCustomScopes { - _oidcCustomClaim = oidcCustomClaim; + _oidcCustomScopes = oidcCustomScopes; - [OCAppIdentity.sharedAppIdentity.userDefaults setValue:oidcCustomClaim forKey:DisplaySettingsOidcCustomClaimPrefsKey]; + [OCAppIdentity.sharedAppIdentity.userDefaults setValue:oidcCustomScopes forKey:DisplaySettingsOIDCCustomScopesPrefsKey]; [self postChangeNotifications]; } @@ -271,7 +271,7 @@ - (BOOL)query:(OCQuery *)query shouldIncludeItem:(OCItem *)item NSString *DisplaySettingsShowHiddenFilesPrefsKey = @"display-show-hidden-files"; NSString *DisplaySettingsSortFoldersFirstPrefsKey = @"display-sort-folders-first"; NSString *DisplaySettingsPreventDraggingFilesPrefsKey = @"display-prevent-dragging-files"; -NSString *DisplaySettingsOidcCustomClaimPrefsKey = @"oidc-custom-claim"; +NSString *DisplaySettingsOIDCCustomScopesPrefsKey = @"oidc-custom-scopes"; OCIPCNotificationName OCIPCNotificationNameDisplaySettingsChanged = @"org.opencloud.display-settings-changed"; @@ -281,4 +281,4 @@ - (BOOL)query:(OCQuery *)query shouldIncludeItem:(OCItem *)item OCClassSettingsKey OCClassSettingsKeyDisplayShowHiddenFiles = @"show-hidden-files"; OCClassSettingsKey OCClassSettingsKeyDisplaySortFoldersFirst = @"sort-folders-first"; OCClassSettingsKey OCClassSettingsKeyDisplayPreventDraggingFiles = @"prevent-dragging-files"; -OCClassSettingsKey OCClassSettingsKeyCustomOidcClaim = @"custom-claim"; +OCClassSettingsKey OCClassSettingsKeyCustomOidcScopes = @"custom-scopes"; From 1cc0540b7073224b5b5b2d3ab5ff5665b91686a2 Mon Sep 17 00:00:00 2001 From: gpongelli Date: Fri, 26 Dec 2025 16:23:06 +0100 Subject: [PATCH 7/8] feat: move OIDC scope usage --- OpenCloud/Bookmarks/Composer/BookmarkComposer.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift b/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift index a3f51567..63757c31 100644 --- a/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift +++ b/OpenCloud/Bookmarks/Composer/BookmarkComposer.swift @@ -77,6 +77,9 @@ class BookmarkComposer: NSObject { } func instantiateConnection(for bmark: OCBookmark) -> OCConnection { + let customScopes = (OCAppIdentity.shared.userDefaults! as UserDefaults).object(forKey:"oidc-custom-scopes") + bmark.customOIDCScopes = customScopes as? String + let connection = OCConnection(bookmark: bmark) connection.hostSimulator = OCHostSimulatorManager.shared.hostSimulator(forLocation: .accountSetup, for: self) @@ -151,9 +154,6 @@ class BookmarkComposer: NSObject { // Probe URL bookmark.url = serverURL - let customScopes = (OCAppIdentity.shared.userDefaults! as UserDefaults).object(forKey:"oidc-custom-scopes") - bookmark.customOIDCScopes = customScopes as? String - let connection = instantiateConnection(for: bookmark) hudMessage = OCLocalizedString("Contacting server…", nil) From 31a54ba3014a0066a976fd74119783112efe9a21 Mon Sep 17 00:00:00 2001 From: gpongelli Date: Fri, 26 Dec 2025 16:52:48 +0100 Subject: [PATCH 8/8] feat: move OIDC settings to different section --- OpenCloud/Resources/Localizable.xcstrings | 9 +++++ .../Settings/DisplaySettingsSection.swift | 6 --- OpenCloud/Settings/OIDCSettingsSection.swift | 39 +++++++++++++++++++ .../Settings/SettingsViewController.swift | 1 + 4 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 OpenCloud/Settings/OIDCSettingsSection.swift diff --git a/OpenCloud/Resources/Localizable.xcstrings b/OpenCloud/Resources/Localizable.xcstrings index bcd6027d..9d78f4dd 100644 --- a/OpenCloud/Resources/Localizable.xcstrings +++ b/OpenCloud/Resources/Localizable.xcstrings @@ -510,6 +510,9 @@ }, "Credentials" : { + }, + "Custom OIDC scopes to be appended to fixed ones." : { + }, "Cut" : { @@ -1240,6 +1243,12 @@ }, "Offline files use" : { + }, + "OIDC Scopes" : { + + }, + "OIDC settings" : { + }, "OK" : { diff --git a/OpenCloud/Settings/DisplaySettingsSection.swift b/OpenCloud/Settings/DisplaySettingsSection.swift index 8e86f5f5..63754d86 100644 --- a/OpenCloud/Settings/DisplaySettingsSection.swift +++ b/OpenCloud/Settings/DisplaySettingsSection.swift @@ -51,12 +51,6 @@ class DisplaySettingsSection: SettingsSection { } }, title: OCLocalizedString("Enable diagnostics", nil), value: DiagnosticManager.shared.enabled, identifier: "diagnostics-enabled")) - self.add(row: StaticTableViewRow(textFieldWithAction: { (row, _, _) in - if let oidcScopes = row.value as? String { - DisplaySettings.shared.oidcCustomScopes = oidcScopes as NSString - } - }, placeholder: "Custom OIDC scopes", value: DisplaySettings.shared.oidcCustomScopes as String, autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) - if OCLicenseQAProvider.isQAUnlockPossible { self.add(row: StaticTableViewRow(switchWithAction: { (row, _) in if let qaUnlockedProFeatures = row.value as? Bool { diff --git a/OpenCloud/Settings/OIDCSettingsSection.swift b/OpenCloud/Settings/OIDCSettingsSection.swift new file mode 100644 index 00000000..f4ed9b19 --- /dev/null +++ b/OpenCloud/Settings/OIDCSettingsSection.swift @@ -0,0 +1,39 @@ +// +// OIDCSettingsSection.swift +// OpenCloud +// +// Created by Gabriele Pongelli on 26.12.2025. +// +// + +/* + * Copyright (C) 2025, Gabriele Pongelli. + * + * This code is covered by the GNU Public License Version 3. + * + * For distribution utilizing Apple mechanisms please see https://opencloud.eu/contribute/iOS-license-exception/ + * You should have received a copy of this license along with this program. If not, see . + * + */ + +import UIKit +import OpenCloudSDK +import OpenCloudApp +import OpenCloudAppShared + +class OIDCSettingsSection: SettingsSection { + override init(userDefaults: UserDefaults) { + super.init(userDefaults: userDefaults) + + self.headerTitle = OCLocalizedString("OIDC settings", nil) + + self.add(row: StaticTableViewRow(rowWithAction: { (_, _) in + }, title: OCLocalizedString("OIDC Scopes", nil), subtitle: OCLocalizedString("Custom OIDC scopes to be appended to fixed ones.", nil))) + + self.add(row: StaticTableViewRow(textFieldWithAction: { (row, _, _) in + if let oidcScopes = row.value as? String { + DisplaySettings.shared.oidcCustomScopes = oidcScopes as NSString + } + }, placeholder: "Custom OIDC scopes", value: DisplaySettings.shared.oidcCustomScopes as String, autocorrectionType: UITextAutocorrectionType.no, identifier: "oidc-string")) + } +} diff --git a/OpenCloud/Settings/SettingsViewController.swift b/OpenCloud/Settings/SettingsViewController.swift index eb0f1369..9266a3eb 100644 --- a/OpenCloud/Settings/SettingsViewController.swift +++ b/OpenCloud/Settings/SettingsViewController.swift @@ -47,6 +47,7 @@ class SettingsViewController: StaticTableViewController { self.addSection(UserInterfaceSettingsSection(userDefaults: userDefaults)) self.addSection(DataSettingsSection(userDefaults: userDefaults)) self.addSection(DisplaySettingsSection(userDefaults: userDefaults)) + self.addSection(OIDCSettingsSection(userDefaults: userDefaults)) self.addSection(MediaFilesSettingsSection(userDefaults: userDefaults)) #if !DISABLE_APPSTORE_LICENSING