Skip to content

Commit 79f9cba

Browse files
authored
[Firestore] Remove encoding/decoding strategy type aliases (#10273)
Removed the `Firestore.Encoder` and `Firestore.Decoder` encoding/decoding strategy type aliases and directly used the types from `FirebaseDataEncoder` and `FirebaseDataDecoder`. Note: This requires the `TimestampEncoding/DecodingStrategy` extension to be added to `FirebaseDataEncoder/Decoder` instead of `Firestore.Encoder` and `Firestore.Decoder`. This will make the `timestamp` strategy visible to all users of the `FirebaseDataEncoder/Decoder` (that have FirestoreSwift installed), even though `Timestamp` is a Firestore-specific type.
1 parent 4232ac1 commit 79f9cba

File tree

4 files changed

+22
-33
lines changed

4 files changed

+22
-33
lines changed

Firestore/Swift/CHANGELOG.md

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
# 10.0.0
2-
- [changed] `Firestore.Encoder` and `Firestore.Decoder` now wraps the shared `FirebaseDataEncoder` and `FirebaseDataDecoder` types which provides new customization options for encoding and decoding date to and from Firestore - similar to the options present on `JSONEncoder` and `JSONDecoder` from `Foundation`.
3-
- [added] `Firestore.Encoder.KeyEncodingStrategy`
4-
- [added] `Firestore.Encoder.DateEncodingStrategy`
5-
- [added] `Firestore.Encoder.DataEncodingStrategy`
6-
- [added] `Firestore.Encoder.NonConformingFloatEncodingStrategy`
7-
- [added] `Firestore.Decoder.KeyDecodingStrategy`
8-
- [added] `Firestore.Decoder.DateDecodingStrategy`
9-
- [added] `Firestore.Decoder.DataDecodingStrategy`
10-
- [added] `Firestore.Decoder.NonConformingFloatDecodingStrategy`
2+
- [changed] `Firestore.Encoder` and `Firestore.Decoder` now wraps the shared
3+
`FirebaseDataEncoder` and `FirebaseDataDecoder` types, which provides new
4+
customization options for encoding and decoding data to and from Firestore
5+
into `Codable`s - similar to the options present on `JSONEncoder` and
6+
`JSONDecoder` from `Foundation`.
7+
- [added] Added a `FirebaseDataEncoder.DateEncodingStrategy` for `Timestamp`s.
118

129
# 9.0.0
1310
- [added] **Breaking change:** `FirebaseFirestoreSwift` has exited beta and is

Firestore/Swift/Source/Codable/EncoderDecoder.swift

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,18 @@ import Foundation
2020

2121
public extension Firestore {
2222
class Encoder {
23-
public typealias DateEncodingStrategy = FirebaseDataEncoder.DateEncodingStrategy
24-
public typealias DataEncodingStrategy = FirebaseDataEncoder.DataEncodingStrategy
25-
public typealias NonConformingFloatEncodingStrategy = FirebaseDataEncoder
26-
.NonConformingFloatEncodingStrategy
27-
public typealias KeyEncodingStrategy = FirebaseDataEncoder.KeyEncodingStrategy
28-
2923
/// The strategy to use in encoding dates. Defaults to `.timestamp`.
30-
public var dateEncodingStrategy: DateEncodingStrategy = .timestamp
24+
public var dateEncodingStrategy: FirebaseDataEncoder.DateEncodingStrategy = .timestamp
3125

3226
/// The strategy to use in encoding binary data. Defaults to `.base64`.
33-
public var dataEncodingStrategy: DataEncodingStrategy = .base64
27+
public var dataEncodingStrategy: FirebaseDataEncoder.DataEncodingStrategy = .base64
3428

3529
/// The strategy to use in encoding non-conforming numbers. Defaults to `.throw`.
36-
public var nonConformingFloatEncodingStrategy: NonConformingFloatEncodingStrategy = .throw
30+
public var nonConformingFloatEncodingStrategy: FirebaseDataEncoder
31+
.NonConformingFloatEncodingStrategy = .throw
3732

3833
/// The strategy to use for encoding keys. Defaults to `.useDefaultKeys`.
39-
public var keyEncodingStrategy: KeyEncodingStrategy = .useDefaultKeys
34+
public var keyEncodingStrategy: FirebaseDataEncoder.KeyEncodingStrategy = .useDefaultKeys
4035

4136
/// Contextual user-provided information for use during encoding.
4237
public var userInfo: [CodingUserInfoKey: Any] = [:]
@@ -64,23 +59,18 @@ public extension Firestore {
6459
}
6560

6661
class Decoder {
67-
public typealias DateDecodingStrategy = FirebaseDataDecoder.DateDecodingStrategy
68-
public typealias DataDecodingStrategy = FirebaseDataDecoder.DataDecodingStrategy
69-
public typealias NonConformingFloatDecodingStrategy = FirebaseDataDecoder
70-
.NonConformingFloatDecodingStrategy
71-
public typealias KeyDecodingStrategy = FirebaseDataDecoder.KeyDecodingStrategy
72-
7362
/// The strategy to use in decoding dates. Defaults to `.timestamp`.
74-
public var dateDecodingStrategy: DateDecodingStrategy = .timestamp
63+
public var dateDecodingStrategy: FirebaseDataDecoder.DateDecodingStrategy = .timestamp
7564

7665
/// The strategy to use in decoding binary data. Defaults to `.base64`.
77-
public var dataDecodingStrategy: DataDecodingStrategy = .base64
66+
public var dataDecodingStrategy: FirebaseDataDecoder.DataDecodingStrategy = .base64
7867

7968
/// The strategy to use in decoding non-conforming numbers. Defaults to `.throw`.
80-
public var nonConformingFloatDecodingStrategy: NonConformingFloatDecodingStrategy = .throw
69+
public var nonConformingFloatDecodingStrategy: FirebaseDataDecoder
70+
.NonConformingFloatDecodingStrategy = .throw
8171

8272
/// The strategy to use for decoding keys. Defaults to `.useDefaultKeys`.
83-
public var keyDecodingStrategy: KeyDecodingStrategy = .useDefaultKeys
73+
public var keyDecodingStrategy: FirebaseDataDecoder.KeyDecodingStrategy = .useDefaultKeys
8474

8575
/// Contextual user-provided information for use during decoding.
8676
public var userInfo: [CodingUserInfoKey: Any] = [:]

Firestore/Swift/Source/Codable/TimestampDecodingStrategy.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616

1717
import Foundation
1818
import FirebaseFirestore
19+
import FirebaseSharedSwift
1920

20-
public extension Firestore.Decoder.DateDecodingStrategy {
21+
public extension FirebaseDataDecoder.DateDecodingStrategy {
2122
/// Decode the `Date` from a Firestore `Timestamp`
22-
static var timestamp: Firestore.Decoder.DateDecodingStrategy {
23+
static var timestamp: FirebaseDataDecoder.DateDecodingStrategy {
2324
return .custom { decoder in
2425
let container = try decoder.singleValueContainer()
2526
let value = try container.decode(Timestamp.self)

Firestore/Swift/Source/Codable/TimestampEncodingStrategy.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
*/
1616

1717
import FirebaseFirestore
18+
import FirebaseSharedSwift
1819
import Foundation
1920

20-
public extension Firestore.Encoder.DateEncodingStrategy {
21+
public extension FirebaseDataEncoder.DateEncodingStrategy {
2122
/// Encode the `Date` as a Firestore `Timestamp`.
22-
static var timestamp: Firestore.Encoder.DateEncodingStrategy {
23+
static var timestamp: FirebaseDataEncoder.DateEncodingStrategy {
2324
return .custom { date, encoder in
2425
var container = encoder.singleValueContainer()
2526
try container.encode(Timestamp(date: date))

0 commit comments

Comments
 (0)