Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature/configurable-defaults] Allow configuration of default value for user defaults #1045

Merged
merged 1 commit into from
Oct 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ownCloudAppFramework/Branding/Branding.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,16 @@ typedef NSString* BrandingImageName NS_TYPED_EXTENSIBLE_ENUM;
- (nullable id)computedValueForClassSettingsKey:(OCClassSettingsKey)classSettingsKey;
- (nullable NSURL *)urlForClassSettingsKey:(OCClassSettingsKey)settingsKey;

- (void)registerUserDefaultsDefaults;

@end

extern OCClassSettingsIdentifier OCClassSettingsIdentifierBranding;

extern BrandingKey BrandingKeyAppName;
extern BrandingKey BrandingKeyOrganizationName;
extern BrandingKey BrandingKeyDisabledImportMethods;
extern BrandingKey BrandingKeyUserDefaultsDefaultValues;

extern BrandingFileImportMethod BrandingFileImportMethodOpenWith;
extern BrandingFileImportMethod BrandingFileImportMethodShareExtension;
Expand Down
30 changes: 27 additions & 3 deletions ownCloudAppFramework/Branding/Branding.m
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,16 @@ - (instancetype)init
return (self);
}

- (void)registerUserDefaultsDefaults
{
// Register user defaults
NSDictionary *userDefaultsDefaults;
if ((userDefaultsDefaults = self.userDefaultsDefaultValues) != nil)
{
[OCAppIdentity.sharedAppIdentity.userDefaults registerDefaults:userDefaultsDefaults];
}
}

- (void)registerLegacyKeyPath:(BrandingLegacyKeyPath)keyPath forClassSettingsKey:(OCClassSettingsKey)classSettingsKey;
{
NSMutableDictionary<OCClassSettingsKey, BrandingLegacyKeyPath> *mutableLegacyKeyPathsByClassSettingsKeys = nil;
Expand All @@ -231,6 +241,11 @@ - (NSString *)organizationName
return ([self computedValueForClassSettingsKey:BrandingKeyOrganizationName]);
}

- (NSDictionary *)userDefaultsDefaultValues
{
return ([self computedValueForClassSettingsKey:BrandingKeyUserDefaultsDefaultValues]);
}

- (NSArray<BrandingFileImportMethod> *)disabledImportMethods
{
return ([self computedValueForClassSettingsKey:BrandingKeyDisabledImportMethods]);
Expand Down Expand Up @@ -349,6 +364,14 @@ + (OCClassSettingsMetadataCollection)classSettingsMetadata
BrandingFileImportMethodShareExtension : @"Disallow import through the Share Extension",
BrandingFileImportMethodFileProvider : @"Disallow import through the File Provider (Files.app)"
}
},

// User Defaults
BrandingKeyUserDefaultsDefaultValues : @{
OCClassSettingsMetadataKeyType : OCClassSettingsMetadataTypeDictionary,
OCClassSettingsMetadataKeyDescription : @"Default values for user defaults. Allows overriding default settings.",
OCClassSettingsMetadataKeyStatus : OCClassSettingsKeyStatusAdvanced,
OCClassSettingsMetadataKeyCategory : @"Branding"
}
});
}
Expand All @@ -357,9 +380,10 @@ + (OCClassSettingsMetadataCollection)classSettingsMetadata

OCClassSettingsIdentifier OCClassSettingsIdentifierBranding = @"branding";

OCClassSettingsKey BrandingKeyAppName = @"app-name";
OCClassSettingsKey BrandingKeyOrganizationName = @"organization-name"; // Legacy Branding Key: organizationName
OCClassSettingsKey BrandingKeyDisabledImportMethods = @"disabled-import-methods";
BrandingKey BrandingKeyAppName = @"app-name";
BrandingKey BrandingKeyOrganizationName = @"organization-name"; // Legacy Branding Key: organizationName
BrandingKey BrandingKeyDisabledImportMethods = @"disabled-import-methods";
BrandingKey BrandingKeyUserDefaultsDefaultValues = @"user-defaults-default-values";

BrandingFileImportMethod BrandingFileImportMethodOpenWith = @"open-with";
BrandingFileImportMethod BrandingFileImportMethodShareExtension = @"share-extension";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ @implementation BrandingClassSettingsSource
+ (void)load
{
[OCClassSettings.sharedSettings insertSource:[BrandingClassSettingsSource new] before:OCClassSettingsSourceIdentifierManaged after:nil];
[Branding.sharedBranding registerUserDefaultsDefaults];
}

- (OCClassSettingsSourceIdentifier)settingsSourceIdentifier
Expand Down