Commit Graph
35 Commits
Author SHA1 Message Date
zxu a441190635 Implement Firestore DatabaseInfo and port both Database{Id,Info} C++ to the iOS code (#738)
* implement Firestore DatabaseInfo in C++

* temporary stash changes; blocking on the massive renaming of .m to .mm

* add database_info_test to project

* finish port DatabaseId and fix style, modular fixing DatabaseInfo

* port DatabaseInfo

* remove FSTDatabase{ID,Info} and their tests from project

* fix unit test

* use namespace alias

* use namespace alias, leftover

* address more changes

* refactoring to use raw pointer instead of value for property

* address changes

* remove self->

* fix style

* remove the name suffix Alloc

* fix a bug
2018-02-06 13:51:11 -05:00
Gil 729b8d176c Move all Firestore Objective-C to Objective-C++ (#734)
* Move all Firestore files to Objective-C++
* Update project file references
* Don't use module imports from Objective-C++
* Use extern "C" for C-accessible globals
* Work around more stringent type checking in Objective-C++
  * NSMutableDictionary ivars aren't implicitly casted to NSDictionary
  * FSTMaybeDocument callback can't be passed a function that accepts
    FSTDocument
  * NSComparisonResult can't be multiplied by -1 without casting
* Add a #include <inttypes.h> where needed
* Avoid using C++ keywords as variables
* Remove #if __cplusplus guards
2018-01-31 11:23:55 -08:00
Gil 5bfcb3b8cf Cleanup imports and isEqual (#685)
* Fix headers

* Fix isEqual verbosity

* Fix isEqual for nullable properties

* Fix nullability on FSTTestDocSnapshot
2018-01-21 21:14:58 -08:00
Gil 39d8252300 Port comparison to C++ (#678)
This reimplements our comparison functions as C++ Comparators and then provides compatibility shims for interoperating with existing Objective-C usage.

A few specialized comparators aren't suitable for porting but only have a single usage (e.g. CompareBytes for comparing NSData * instances). In these cases I've moved them into the caller.

* Use int32_t for typeof(ID) in FSTDocumentReference

* Migrate callers of FSTComparison.h to Objective-C++

* Port comparison to C++

* Migrate usages of FSTComparison.h to C++ equivalents

* Remove FSTComparison
2018-01-19 12:27:11 -08:00
Michael Lehenbauer da506b86bc Fix issue @morganchen12 discovered where we weren't properly creating FIRQueryDocumentSnapshot instances. (#662) 2018-01-12 15:54:42 -08:00
Sebastian Schmidt ed6c6f9fea Fixing potential race in ServerTimestamp tests 2018-01-05 10:34:38 -08:00
Gil 8c2777b245 Fix races in lazy initialization of the client in FIRFirestore (#579)
* Fix races in lazy initialization of the client in FIRFirestore

Note that lazy initialization is required because we allow the user to
assign to settings after instantiation before any methods are used.

Also bring method naming closer to the android port.
2017-12-20 11:15:42 -08:00
zxu 9ddf3637ac Firestore isEqual() on Public Types (#569)
* add bone code for new isEqual and unit test for old isEqual

*   add bone code for `FIRCollectionReference`, `FIRDocumentSnapshot`, `FIRFieldValue`, `FIRQuerySnapshot`, `FIRSnapshotMetadata`;
*   change inconsistenciness of `FIRFieldPath.isEqual` implementation;
*   add unit test (and file) for `FIRDocumentReferenceTest.m`, `FIRFieldPathTest.m`, `FIRQueryTests.testEquals`; `FIRGeoPoint` already has test and Blob is internal type.

* Implement isEqual for FIRCollectionReference

adding the working code and unit test.

* implement isEqual for FIRSnapshotMetadata

* Implement isEqual for FIRDocumentSnapshot

* Implement isEqual for FIRQuerySnapshot

* (un)implement `isEqual` for `FIRFieldValue`

Since `FIRFieldValue` both types are singleton, we do not need override `isEqual`. Add test to test the default `NSObject` `isEqual` works just fine.

* fix style with `scripts/style.sh`

* Implement hash for those with overridden isEqual without hash yet.

* refactor to use test helper functions -- FSTTestFirestore, FSTTestPath, FSTTestDocKey

* refactor using test helper `FSTTestDocSnapshot`, `FSTTestFieldPath`, `FSTTestQuery`, `FSTTestDoc`

* refactoring to use test helper method `FSTTestQuerySnapshot`,

* remove unneccessary nil-check, check isKindOfClass instead of isEqual

* refactoring: adding `FSTAPIHelpers.{h,m}`, `FSTTest{Collection,Document}Ref`,  better naming and style fix

* a file forgot in last commit

* mainly clean up import and some minor refactoring

* fix style via style.sh

* minor style fix

* add pragma ignored -Wnonnull
2017-12-19 13:47:04 -05:00
Greg Soltis 52c7329f2a Expose network management (#566)
* Expose network management in public API

* Clean up a few more references to the internal access of network management

* Move test

* Update comments

* Swap _Nullable for nullable

* Fix comment

* Add tests, including swift

* Styling
2017-12-18 18:50:08 -08:00
Sebastian Schmidt 98e08bc0b8 Merge pull request #565 from firebase/mrschmidt-missingmethods
Adding missing SnapshotOptions method
2017-12-15 05:35:23 +08:00
Sebastian Schmidt 2dd7324bd5 Adding missing SnapshotOptions method 2017-12-13 17:30:11 +08:00
zxu 8f85bd199d Fix new warnings w.r.t. predicate query change (#555) 2017-12-12 08:35:08 -08:00
Sebastian Schmidt e006383cda Merge 2017-12-12 08:15:20 +08:00
Sebastian Schmidt e019a9461a Merge branch 'firestore-api-changes' into mrschmidt-timestamps 2017-12-12 08:03:59 +08:00
zxu 54ba423c87 Revisit commit method in FIRWriteBatch (#541)
* revisit FIRWriteBatch commit

*   make commitWithCompletion completion nullable;
*   add commit;
*   add unit test;
*   add swift build test for commit;
*   update CHANGELOG.
2017-12-11 15:37:01 -05:00
Sebastian Schmidt 23ee2aaf46 Clang format 2017-12-10 23:51:45 -08:00
Sebastian Schmidt e23236bd38 Running scripts/style.sh 2017-12-10 23:07:53 -08:00
Sebastian Schmidt bc179ea4ea Making DocumentSnapshot nullable 2017-12-10 14:40:22 -08:00
Sebastian Schmidt 84e7f27a3f Adding default option 2017-12-08 14:02:23 -08:00
zxu 440014eb37 make FIRDocumentListenOptions.includeMetadataChanges private (#540)
*   make FIRDocumentListenOptions.includeMetadataChanges private

as discussed in Firestore API discussion, the name clashes creates confusion. Android SDK already not exposing the property; here change iOS SDK to match it.

*   update CHANGELOG
2017-12-08 09:22:56 -05:00
Sebastian Schmidt bf48b0abc1 Method renames 2017-12-07 19:54:08 -08:00
Sebastian Schmidt 904a141217 Addressing all review comments 2017-12-07 16:03:40 -08:00
zxu 5da88e4b9b Implement NSPredicate-based query (#531)
*   implement queryFilteredUsingPredicate in FIRQuery;
*   add unit test and integration test for queryFilteredUsingPredicate;
*   project change of adding the FIRQueryTests.m file;
*   refactoring queryFilteredUsingPredicate to split logic into two helpers;
2017-12-07 15:36:15 -05:00
Sebastian Schmidt a8948ced26 Adding SnapshotOptions to deal with pending ServerTimestamps 2017-12-05 23:22:16 -08:00
Gil 530437ea7a Move sources into firebase::firestore and internal namespaces (#494)
* Move sources into firebase::firestore and internal namespaces

Combine support and core/util packages; this distinction wasn't really
paying its freight.
2017-11-30 12:26:16 -08:00
Ryan Wilson 7386f00178 Replacing FIR_SWIFT_NAME macro with NS_SWIFT_NAME. (#476)
* Replacing FIR_SWIFT_NAME macro with NS_SWIFT_NAME.

This pushes the minimum Xcode version to 7.3, as NS_SWIFT_NAME was
limited before that version (which is why the macro was introduced in
the first place).

* Fixed FIRMessaging header
2017-11-28 06:59:07 -08:00
Gil 7459be46ff Port autoid to C++ and remove FSTUtil (#475)
* Port autoid to C++
* Reimplement FSTUtil on top of firestore::CreateAutoId directly
* Migrate FSTUtil callers to directly use firestore::CreateAutoId
* Remove FSTUtil
2017-11-27 21:00:18 -08:00
Paul Beusterien 3e592526ec Buildable and interoperable source pods (#444) 2017-11-21 17:02:22 -08:00
Gil 4fbc96904f Use fully qualified imports in Firestore (#467)
This simplifies the import process back into google3 and allows us to add additional directories to the project without needing to update the project files for each directory we add. This shows up most clearly in the change to Firestore/Example/Firestore.xcodeproj/project.pbxproj: this no longer needs to list essentially every directory in the project as a header search path.

* Clang-format configuration for C++ files
* Add support C++-only sources to the podspec
* Podspec support for fully qualified imports
* xcodeproj changes for fully-qualified imports
* Use fully-qualified imports in Firestore sources
2017-11-16 20:52:01 -08:00
Sebastian Schmidt 642d304e23 Allowing field deletes with merge-enabled sets (#404) 2017-10-23 11:32:25 -07:00
Michael Lehenbauer 024788e38a Add isEqual() and port DocumentReference array test. (#380)
* Ports the test for the fix I made for Android for DocumentReference objects in arrays (bug not present in iOS).
* Implements isEqual on FIRQuery and FIRDocumentReference.
2017-10-19 08:23:25 -07:00
Gil a64495a33b Fix validation of nested arrays to allow indirect nesting (#377) 2017-10-16 15:56:19 -07:00
Erik Kessler 3dd4aea125 Release listener references on remove in FSTListenerRegistration (#349) 2017-10-09 16:57:39 -07:00
Ryan Wilson 202fac501d Update error messages with new Swift syntax (#336)
Update error messages with new Swift Syntax
2017-10-05 11:07:37 -04:00
Gil bde743ed25 Release 4.3.0 (#327)
Initial release of Firestore at 0.8.0
Bump FirebaseCommunity to 0.1.3
2017-10-03 08:55:22 -07:00