refactor: SystemPreferences::SetUserDefault (#23412)
This commit is contained in:
		
					parent
					
						
							
								3c132dc445
							
						
					
				
			
			
				commit
				
					
						f9c04449f4
					
				
			
		
					 1 changed files with 27 additions and 45 deletions
				
			
		| 
						 | 
				
			
			@ -311,86 +311,68 @@ void SystemPreferences::RegisterDefaults(gin_helper::Arguments* args) {
 | 
			
		|||
void SystemPreferences::SetUserDefault(const std::string& name,
 | 
			
		||||
                                       const std::string& type,
 | 
			
		||||
                                       gin_helper::Arguments* args) {
 | 
			
		||||
  const auto throwConversionError = [&] {
 | 
			
		||||
    args->ThrowError("Unable to convert value to: " + type);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
 | 
			
		||||
  NSString* key = base::SysUTF8ToNSString(name);
 | 
			
		||||
  if (type == "string") {
 | 
			
		||||
    std::string value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      [defaults setObject:base::SysUTF8ToNSString(value) forKey:key];
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [defaults setObject:base::SysUTF8ToNSString(value) forKey:key];
 | 
			
		||||
  } else if (type == "boolean") {
 | 
			
		||||
    bool value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      [defaults setBool:value forKey:key];
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [defaults setBool:value forKey:key];
 | 
			
		||||
  } else if (type == "float") {
 | 
			
		||||
    float value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      [defaults setFloat:value forKey:key];
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [defaults setFloat:value forKey:key];
 | 
			
		||||
  } else if (type == "integer") {
 | 
			
		||||
    int value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      [defaults setInteger:value forKey:key];
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [defaults setInteger:value forKey:key];
 | 
			
		||||
  } else if (type == "double") {
 | 
			
		||||
    double value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      [defaults setDouble:value forKey:key];
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [defaults setDouble:value forKey:key];
 | 
			
		||||
  } else if (type == "url") {
 | 
			
		||||
    GURL value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (NSURL* url = net::NSURLWithGURL(value)) {
 | 
			
		||||
      [defaults setURL:url forKey:key];
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      if (NSURL* url = net::NSURLWithGURL(value)) {
 | 
			
		||||
        [defaults setURL:url forKey:key];
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else if (type == "array") {
 | 
			
		||||
    base::ListValue value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (NSArray* array = ListValueToNSArray(value)) {
 | 
			
		||||
      [defaults setObject:array forKey:key];
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      if (NSArray* array = ListValueToNSArray(value)) {
 | 
			
		||||
        [defaults setObject:array forKey:key];
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else if (type == "dictionary") {
 | 
			
		||||
    base::DictionaryValue value;
 | 
			
		||||
    if (!args->GetNext(&value)) {
 | 
			
		||||
      throwConversionError();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
 | 
			
		||||
      [defaults setObject:dict forKey:key];
 | 
			
		||||
    if (args->GetNext(&value)) {
 | 
			
		||||
      if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
 | 
			
		||||
        [defaults setObject:dict forKey:key];
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
    args->ThrowError("Invalid type: " + type);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  args->ThrowError("Unable to convert value to: " + type);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string SystemPreferences::GetAccentColor() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue