@@ -44,11 +44,23 @@ public enum RemoteConfigCodableError: Error {
44
44
}
45
45
46
46
public extension RemoteConfig {
47
- /// Decodes a struct from the respective Remote Config values.
47
+ /// Decodes the given type from the respective Remote Config values.
48
48
///
49
49
/// - Parameter asType: The type to decode to.
50
+ /// - Throws: An error if the decoding fails.
51
+ /// - Returns: The decoded value; otherwise, an error if one occurred.
52
+ func decoded< Value: Decodable > ( asType: Value . Type = Value . self) throws -> Value {
53
+ try decoded ( asType: asType, decoder: FirebaseDataDecoder ( ) )
54
+ }
55
+
56
+ /// Decodes the given type from the respective Remote Config values.
57
+ /// - Parameters:
58
+ /// - asType: The type to decode to.
59
+ /// - decoder: The encoder to use to decode the given type.
60
+ /// - Throws: An error if the decoding fails.
61
+ /// - Returns: The decoded value; otherwise, an error if one occurred.
50
62
func decoded< Value: Decodable > ( asType: Value . Type = Value . self,
51
- decoder: FirebaseDataDecoder = . init ( ) ) throws -> Value {
63
+ decoder: FirebaseDataDecoder ) throws -> Value {
52
64
let keys = allKeys ( from: RemoteConfigSource . default) + allKeys( from: RemoteConfigSource . remote)
53
65
let config = keys. reduce ( into: [ String: FirebaseRemoteConfigValueDecoderHelper] ( ) ) {
54
66
$0 [ $1] = FirebaseRemoteConfigValueDecoderHelper ( value: configValue ( forKey: $1) )
@@ -59,8 +71,18 @@ public extension RemoteConfig {
59
71
/// Sets config defaults from an encodable struct.
60
72
///
61
73
/// - Parameter value: The object to use to set the defaults.
74
+ /// - Throws: An error if the encoding fails.
75
+ func setDefaults< Value: Encodable > ( from value: Value ) throws {
76
+ try setDefaults ( from: value, encoder: FirebaseDataEncoder ( ) )
77
+ }
78
+
79
+ /// Sets config defaults from an encodable struct.
80
+ /// - Parameters:
81
+ /// - value: The object to use to set the defaults.
82
+ /// - encoder: The encoder to use to encode the given object.
83
+ /// - Throws: An error if the encoding fails.
62
84
func setDefaults< Value: Encodable > ( from value: Value ,
63
- encoder: FirebaseDataEncoder = . init ( ) ) throws {
85
+ encoder: FirebaseDataEncoder ) throws {
64
86
guard let encoded = try encoder. encode ( value) as? [ String : NSObject ] else {
65
87
throw RemoteConfigCodableError . invalidSetDefaultsInput (
66
88
" The setDefaults input: \( value) , must be a Struct that encodes to a Dictionary "
0 commit comments