* Remove the extension that makes NSDate ServerTimestampWrappable.
This turns out not to actually work because NSDate does not conform to
Codable. Users can supply their own extensions that make NSDate conform
to Codable and also supply an extension like this one to make NSDate
conform to ServerTimestampWrappable.
Add a test that verifies ServerTimestamps of Dates actually work. The
equivalent test for NSDate does not compile.
* Fix minimum Swift version for FirebaseFirestoreSwift
FirebaseFirestoreSwift was already using synthesized Equatable and
Hashable conformance which requires Swift 4.1.
* Add conditional conformance to Hashable to Firestore property wrapper types
Mark these types as conforming to Hashable if the underlying type itself
conforms to hashable. This implementation relies on synthesized
Equatable and Hashable conformance that shipped as a part of Swift 4.1.
* Fix lint/style
* Changelog
This turns out not to actually work because NSDate does not conform to
Codable. Users can supply their own extensions that make NSDate conform
to Codable and also supply an extension like this one to make NSDate
conform to ServerTimestampWrappable.
Add a test that verifies ServerTimestamps of Dates actually work. The
equivalent test for NSDate does not compile.
* Rewrite SelfDocumentID as a property wrapper
Make wrapped types conform to DocumentReferenceConvertible and use that
protocol to implement the conversion.
* Change DocumentReferenceConvertible to DocumentIDWrappable
* Make ServerTimestampWrappable use static functions
Use the same form as DocumentIDWrappable.
* Update extension String: ServerTimestampWrappable
* Use #if compiler, not #if swift
The FirebaseFirestoreSwift module is declared as conforming to Swift
4.0 so #if swift is still false, even when compiling with Swift 5.1.
Using #if compiler will see the actual compiler version. Property
wrappers don't depend on runtime features, so this works.
Also, allow Wrappable protocols to throw during conversions.
* Move ServerTimestamp into its own file
* Rewrite ServerTimestamp as a property wrapper
Add Swift4ServerTimestamp that behaves as before.
* Make ServerTimestampWrappable dictate timestamp conversion.
This makes the @ServerTimestamp property wrapper completely open to
extension by end users too.
* Rewrite FirestoreEncoderTests using assertThat
* Throw invalidValue for use of invalid top-level values
* Provide an message for not supported errors
* working serverTimestamp
* working FieldValue. Still need: document ref and ability to Eq of FieldValue
* DocumentReference implemented and testing works
* clean up header search path
* improving FieldValue enum comments
* run through formatting
* addressing comments
* formatted with swiftformat 0.35.7
* add missing bool->BOOL change
* undo unintended swift version change
* remove unwanted proj file change
* Annotate Transaction and WriteBatch methods as discardable
These methods exist to allow chaining if that's useful but chaining
isn't expected or required.
Note that Objective-C methods in these types are implicitly
@discardableResult and don't need any extra help.
* No need to explicitly discard results
* Fix typos in FIRCollectionReference docs
* Add support for CollectionReference.addDocument(from:)
* working serverTimestamp
* working FieldValue. Still need: document ref and ability to Eq of FieldValue
* DocumentReference implemented and testing works
* clean up header search path
* improving FieldValue enum comments
* run through formatting
* addressing comments
* formatted with swiftformat 0.35.7
* add missing bool->BOOL change
* undo unintended swift version change
* remove unwanted proj file change
* FIRInAppMessagingDisplayMessage and FIRInAppMessagingDisplayDelegate refactor + downstream changes
* More downstream changes from FIRInAppMessagingDisplayDelegate, calling through to app-side delegate from default display executor
* Add delegate property on FIRInAppMessaging
* Display SDK changes to pass through in app message with callbacks
* Headless SDK unit test refactoring
* Display test app downstream changes
* Pull in headless SDK in display app, no need to have this come in as a framework anymore
* Run scripts/style.sh
* Remove WIP test
* Refactor FIRIAMDIsplayExecutor to take an InAppMessaging object for testing
* Depend on FirebaseAnalyticsInterop in UI test app
* File imports for FIRInAppMessaging files
* Remove FirebaseInAppMessaging imports
* Add Firestore_SwiftTests_iOS target to Xcode
* Add FirebaseFirestoreSwift podspec
* Add Firestore_SwiftTests_iOS to the Podfile
* Add CodableGeoPoint and tests
* Version FirebaseFirestoreSwift separately