Repository: firebase/firebase-ios-sdk (language: cpp)

Issue:
Firestore Combine extensions don't use provided encoder
### Description

The `setData` functions in the Firestore Combine extensions don't use the encoder provided by the caller. This results in incorrect encoding of document data.

See here:
- https://github.com/firebase/firebase-ios-sdk/blob/9613e1e536016b54475d3ae9fb1b05267ba02d77/FirebaseCombineSwift/Sources/Firestore/DocumentReference%2BCombine.swift#L112-L130
- https://github.com/firebase/firebase-ios-sdk/blob/9613e1e536016b54475d3ae9fb1b05267ba02d77/FirebaseCombineSwift/Sources/Firestore/DocumentReference%2BCombine.swift#L144-L162
- https://github.com/firebase/firebase-ios-sdk/blob/9613e1e536016b54475d3ae9fb1b05267ba02d77/FirebaseCombineSwift/Sources/Firestore/DocumentReference%2BCombine.swift#L178-L196

### Reproducing the issue

- Create an instance of `Firestore.Encoder`
- Set the encoder's `dateEncodingStrategy` to something other than `FirebaseDataEncoder.DateEncodingStrategy.timestamp` (perhaps encoded to a string)
- Create some `Encodable` model that has a date
- Create an instance of that model
- Set the data for any document to that instance, making sure to also pass in the encoder instance

Expected behaviour: The date is encoded to Firestore based on the encoding strategy
Observed behaviour: The date is encoded to Firestore as a Timestamp

### Firebase SDK Version

10.7.0

### Xcode Version

14.2.0

### Installation Method

Swift Package Manager

### Firebase Product(s)

Firestore

### Targeted Platforms

iOS, tvOS, watchOS, macOS, macCatalyst

### Relevant Log Output

_No response_

### If using Swift Package Manager, the project's Package.resolved

<!--- Look below for instructions on how to share your Package.resolved. --->

<details>
<summary>Expand <code>Package.resolved</code> snippet</summary>
<br>

```json

Replace this line with the contents of your Package.resolved.

```

</details>


### If using CocoaPods, the project's Podfile.lock

<!--- Look below for instructions on how to share your Podfile.lock. --->

<details>
<summary>Expand <code>Podfile.lock</code> snippet</summary>
<br>

```yml

Replace this line with the contents of your Podfile.lock!

```

</details>



Discussion / hints:

Fix patch:
diff --git a/FirebaseCombineSwift/Sources/Firestore/DocumentReference+Combine.swift b/FirebaseCombineSwift/Sources/Firestore/DocumentReference+Combine.swift
index 885ab9dbeef..65df8e1402e 100644
--- a/FirebaseCombineSwift/Sources/Firestore/DocumentReference+Combine.swift
+++ b/FirebaseCombineSwift/Sources/Firestore/DocumentReference+Combine.swift
@@ -116,7 +116,7 @@
       > {
         Future { promise in
           do {
-            try self.setData(from: value) { error in
+            try self.setData(from: value, encoder: encoder) { error in
               if let error = error {
                 promise(.failure(error))
               } else {
@@ -148,7 +148,7 @@
       > {
         Future { promise in
           do {
-            try self.setData(from: value, merge: merge) { error in
+            try self.setData(from: value, merge: merge, encoder: encoder) { error in
               if let error = error {
                 promise(.failure(error))
               } else {
@@ -182,7 +182,7 @@
       > {
         Future { promise in
           do {
-            try self.setData(from: value, mergeFields: mergeFields) { error in
+            try self.setData(from: value, mergeFields: mergeFields, encoder: encoder) { error in
               if let error = error {
                 promise(.failure(error))
               } else {


Test patch: