From 26780bec842fca434c8621ae81c1fb849434979e Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 23 Oct 2023 11:06:04 +0200 Subject: [PATCH 01/25] feat(firestore): add support for sum and average aggregated queries --- .../GeneratedAndroidFirebaseFirestore.java | 150 +++- .../ios/Classes/FirestoreMessages.g.m | 124 ++- .../ios/Classes/Public/FirestoreMessages.g.h | 34 +- .../cloud_firestore/windows/messages.g.cpp | 103 ++- .../cloud_firestore/windows/messages.g.h | 43 +- .../method_channel_aggregate_query.dart | 36 + .../lib/src/pigeon/messages.pigeon.dart | 369 ++++----- .../platform_interface_aggregate_query.dart | 10 +- ...rm_interface_aggregate_query_snapshot.dart | 35 +- .../pigeons/messages.dart | 19 +- .../test/pigeon/test_api.dart | 783 +++++++----------- 11 files changed, 908 insertions(+), 798 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java index 5f216de67bad..55898402a250 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java @@ -12,6 +12,7 @@ import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MessageCodec; +import io.flutter.plugin.common.StandardMessageCodec; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -161,6 +162,18 @@ private PigeonTransactionType(final int index) { } } + public enum AggregateType { + COUNT(0), + SUM(1), + AVERAGE(2); + + final int index; + + private AggregateType(final int index) { + this.index = index; + } + } + /** Generated class from Pigeon that represents data sent in messages. */ public static final class PigeonFirebaseSettings { private @Nullable Boolean persistenceEnabled; @@ -455,7 +468,7 @@ public static final class Builder { } @NonNull - public ArrayList toList() { + ArrayList toList() { ArrayList toListResult = new ArrayList(2); toListResult.add(hasPendingWrites); toListResult.add(isFromCache); @@ -546,7 +559,7 @@ public static final class Builder { } @NonNull - public ArrayList toList() { + ArrayList toList() { ArrayList toListResult = new ArrayList(3); toListResult.add(path); toListResult.add(data); @@ -667,7 +680,7 @@ public static final class Builder { } @NonNull - public ArrayList toList() { + ArrayList toList() { ArrayList toListResult = new ArrayList(4); toListResult.add(type == null ? null : type.index); toListResult.add((document == null) ? null : document.toList()); @@ -1407,6 +1420,79 @@ ArrayList toList() { } } + /** Generated class from Pigeon that represents data sent in messages. */ + public static final class AggregateQuery { + private @NonNull AggregateType type; + + public @NonNull AggregateType getType() { + return type; + } + + public void setType(@NonNull AggregateType setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"type\" is null."); + } + this.type = setterArg; + } + + private @NonNull String fieldPath; + + public @NonNull String getFieldPath() { + return fieldPath; + } + + public void setFieldPath(@NonNull String setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"fieldPath\" is null."); + } + this.fieldPath = setterArg; + } + + /** Constructor is non-public to enforce null safety; use Builder. */ + AggregateQuery() {} + + public static final class Builder { + + private @Nullable AggregateType type; + + public @NonNull Builder setType(@NonNull AggregateType setterArg) { + this.type = setterArg; + return this; + } + + private @Nullable String fieldPath; + + public @NonNull Builder setFieldPath(@NonNull String setterArg) { + this.fieldPath = setterArg; + return this; + } + + public @NonNull AggregateQuery build() { + AggregateQuery pigeonReturn = new AggregateQuery(); + pigeonReturn.setType(type); + pigeonReturn.setFieldPath(fieldPath); + return pigeonReturn; + } + } + + @NonNull + ArrayList toList() { + ArrayList toListResult = new ArrayList(2); + toListResult.add(type == null ? null : type.index); + toListResult.add(fieldPath); + return toListResult; + } + + static @NonNull AggregateQuery fromList(@NonNull ArrayList list) { + AggregateQuery pigeonResult = new AggregateQuery(); + Object type = list.get(0); + pigeonResult.setType(AggregateType.values()[(int) type]); + Object fieldPath = list.get(1); + pigeonResult.setFieldPath((String) fieldPath); + return pigeonResult; + } + } + public interface Result { @SuppressWarnings("UnknownNullness") void success(T result); @@ -1414,7 +1500,7 @@ public interface Result { void error(@NonNull Throwable error); } - private static class FirebaseFirestoreHostApiCodec extends FlutterFirebaseFirestoreMessageCodec { + private static class FirebaseFirestoreHostApiCodec extends StandardMessageCodec { public static final FirebaseFirestoreHostApiCodec INSTANCE = new FirebaseFirestoreHostApiCodec(); @@ -1424,26 +1510,28 @@ private FirebaseFirestoreHostApiCodec() {} protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) { switch (type) { case (byte) 128: - return DocumentReferenceRequest.fromList((ArrayList) readValue(buffer)); + return AggregateQuery.fromList((ArrayList) readValue(buffer)); case (byte) 129: - return FirestorePigeonFirebaseApp.fromList((ArrayList) readValue(buffer)); + return DocumentReferenceRequest.fromList((ArrayList) readValue(buffer)); case (byte) 130: - return PigeonDocumentChange.fromList((ArrayList) readValue(buffer)); + return FirestorePigeonFirebaseApp.fromList((ArrayList) readValue(buffer)); case (byte) 131: - return PigeonDocumentOption.fromList((ArrayList) readValue(buffer)); + return PigeonDocumentChange.fromList((ArrayList) readValue(buffer)); case (byte) 132: - return PigeonDocumentSnapshot.fromList((ArrayList) readValue(buffer)); + return PigeonDocumentOption.fromList((ArrayList) readValue(buffer)); case (byte) 133: - return PigeonFirebaseSettings.fromList((ArrayList) readValue(buffer)); + return PigeonDocumentSnapshot.fromList((ArrayList) readValue(buffer)); case (byte) 134: - return PigeonGetOptions.fromList((ArrayList) readValue(buffer)); + return PigeonFirebaseSettings.fromList((ArrayList) readValue(buffer)); case (byte) 135: - return PigeonQueryParameters.fromList((ArrayList) readValue(buffer)); + return PigeonGetOptions.fromList((ArrayList) readValue(buffer)); case (byte) 136: - return PigeonQuerySnapshot.fromList((ArrayList) readValue(buffer)); + return PigeonQueryParameters.fromList((ArrayList) readValue(buffer)); case (byte) 137: - return PigeonSnapshotMetadata.fromList((ArrayList) readValue(buffer)); + return PigeonQuerySnapshot.fromList((ArrayList) readValue(buffer)); case (byte) 138: + return PigeonSnapshotMetadata.fromList((ArrayList) readValue(buffer)); + case (byte) 139: return PigeonTransactionCommand.fromList((ArrayList) readValue(buffer)); default: return super.readValueOfType(type, buffer); @@ -1452,38 +1540,41 @@ protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) { @Override protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { - if (value instanceof DocumentReferenceRequest) { + if (value instanceof AggregateQuery) { stream.write(128); + writeValue(stream, ((AggregateQuery) value).toList()); + } else if (value instanceof DocumentReferenceRequest) { + stream.write(129); writeValue(stream, ((DocumentReferenceRequest) value).toList()); } else if (value instanceof FirestorePigeonFirebaseApp) { - stream.write(129); + stream.write(130); writeValue(stream, ((FirestorePigeonFirebaseApp) value).toList()); } else if (value instanceof PigeonDocumentChange) { - stream.write(130); + stream.write(131); writeValue(stream, ((PigeonDocumentChange) value).toList()); } else if (value instanceof PigeonDocumentOption) { - stream.write(131); + stream.write(132); writeValue(stream, ((PigeonDocumentOption) value).toList()); } else if (value instanceof PigeonDocumentSnapshot) { - stream.write(132); + stream.write(133); writeValue(stream, ((PigeonDocumentSnapshot) value).toList()); } else if (value instanceof PigeonFirebaseSettings) { - stream.write(133); + stream.write(134); writeValue(stream, ((PigeonFirebaseSettings) value).toList()); } else if (value instanceof PigeonGetOptions) { - stream.write(134); + stream.write(135); writeValue(stream, ((PigeonGetOptions) value).toList()); } else if (value instanceof PigeonQueryParameters) { - stream.write(135); + stream.write(136); writeValue(stream, ((PigeonQueryParameters) value).toList()); } else if (value instanceof PigeonQuerySnapshot) { - stream.write(136); + stream.write(137); writeValue(stream, ((PigeonQuerySnapshot) value).toList()); } else if (value instanceof PigeonSnapshotMetadata) { - stream.write(137); + stream.write(138); writeValue(stream, ((PigeonSnapshotMetadata) value).toList()); } else if (value instanceof PigeonTransactionCommand) { - stream.write(138); + stream.write(139); writeValue(stream, ((PigeonTransactionCommand) value).toList()); } else { super.writeValue(stream, value); @@ -1572,11 +1663,12 @@ void queryGet( @NonNull PigeonGetOptions options, @NonNull Result result); - void aggregateQueryCount( + void aggregateQuery( @NonNull FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull PigeonQueryParameters parameters, @NonNull AggregateSource source, + @NonNull List queries, @NonNull Result result); void writeBatchCommit( @@ -2202,7 +2294,7 @@ public void error(Throwable error) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, - "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount", + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery", getCodec()); if (api != null) { channel.setMessageHandler( @@ -2213,6 +2305,7 @@ public void error(Throwable error) { String pathArg = (String) args.get(1); PigeonQueryParameters parametersArg = (PigeonQueryParameters) args.get(2); AggregateSource sourceArg = AggregateSource.values()[(int) args.get(3)]; + List queriesArg = (List) args.get(4); Result resultCallback = new Result() { public void success(Double result) { @@ -2226,7 +2319,8 @@ public void error(Throwable error) { } }; - api.aggregateQueryCount(appArg, pathArg, parametersArg, sourceArg, resultCallback); + api.aggregateQuery( + appArg, pathArg, parametersArg, sourceArg, queriesArg, resultCallback); }); } else { channel.setMessageHandler(null); diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m index 2024a919cdc9..5ed4116eef5e 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m @@ -5,8 +5,6 @@ // See also: https://pub.dev/packages/pigeon #import "FirestoreMessages.g.h" -#import "FLTFirebaseFirestoreReader.h" -#import "FLTFirebaseFirestoreWriter.h" #if TARGET_OS_OSX #import @@ -81,6 +79,16 @@ - (instancetype)initWithValue:(PigeonTransactionType)value { } @end +@implementation AggregateTypeBox +- (instancetype)initWithValue:(AggregateType)value { + self = [super init]; + if (self) { + _value = value; + } + return self; +} +@end + static NSArray *wrapResult(id result, FlutterError *error) { if (error) { return @[ @@ -160,6 +168,12 @@ + (nullable PigeonQueryParameters *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end +@interface AggregateQuery () ++ (AggregateQuery *)fromList:(NSArray *)list; ++ (nullable AggregateQuery *)nullableFromList:(NSArray *)list; +- (NSArray *)toList; +@end + @implementation PigeonFirebaseSettings + (instancetype)makeWithPersistenceEnabled:(nullable NSNumber *)persistenceEnabled host:(nullable NSString *)host @@ -299,7 +313,7 @@ + (instancetype)makeWithType:(DocumentChangeType)type pigeonResult.type = type; pigeonResult.document = document; pigeonResult.oldIndex = oldIndex; - pigeonResult.index = newIndex; + pigeonResult.newIndex = newIndex; return pigeonResult; } + (PigeonDocumentChange *)fromList:(NSArray *)list { @@ -310,8 +324,8 @@ + (PigeonDocumentChange *)fromList:(NSArray *)list { NSAssert(pigeonResult.document != nil, @""); pigeonResult.oldIndex = GetNullableObjectAtIndex(list, 2); NSAssert(pigeonResult.oldIndex != nil, @""); - pigeonResult.index = GetNullableObjectAtIndex(list, 3); - NSAssert(pigeonResult.index != nil, @""); + pigeonResult.newIndex = GetNullableObjectAtIndex(list, 3); + NSAssert(pigeonResult.newIndex != nil, @""); return pigeonResult; } + (nullable PigeonDocumentChange *)nullableFromList:(NSArray *)list { @@ -322,7 +336,7 @@ - (NSArray *)toList { @(self.type), (self.document ? [self.document toList] : [NSNull null]), (self.oldIndex ?: [NSNull null]), - (self.index ?: [NSNull null]), + (self.newIndex ?: [NSNull null]), ]; } @end @@ -546,32 +560,59 @@ - (NSArray *)toList { } @end -@interface FirebaseFirestoreHostApiCodecReader : FLTFirebaseFirestoreReader +@implementation AggregateQuery ++ (instancetype)makeWithType:(AggregateType)type fieldPath:(NSString *)fieldPath { + AggregateQuery *pigeonResult = [[AggregateQuery alloc] init]; + pigeonResult.type = type; + pigeonResult.fieldPath = fieldPath; + return pigeonResult; +} ++ (AggregateQuery *)fromList:(NSArray *)list { + AggregateQuery *pigeonResult = [[AggregateQuery alloc] init]; + pigeonResult.type = [GetNullableObjectAtIndex(list, 0) integerValue]; + pigeonResult.fieldPath = GetNullableObjectAtIndex(list, 1); + NSAssert(pigeonResult.fieldPath != nil, @""); + return pigeonResult; +} ++ (nullable AggregateQuery *)nullableFromList:(NSArray *)list { + return (list) ? [AggregateQuery fromList:list] : nil; +} +- (NSArray *)toList { + return @[ + @(self.type), + (self.fieldPath ?: [NSNull null]), + ]; +} +@end + +@interface FirebaseFirestoreHostApiCodecReader : FlutterStandardReader @end @implementation FirebaseFirestoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { case 128: - return [DocumentReferenceRequest fromList:[self readValue]]; + return [AggregateQuery fromList:[self readValue]]; case 129: - return [FirestorePigeonFirebaseApp fromList:[self readValue]]; + return [DocumentReferenceRequest fromList:[self readValue]]; case 130: - return [PigeonDocumentChange fromList:[self readValue]]; + return [FirestorePigeonFirebaseApp fromList:[self readValue]]; case 131: - return [PigeonDocumentOption fromList:[self readValue]]; + return [PigeonDocumentChange fromList:[self readValue]]; case 132: - return [PigeonDocumentSnapshot fromList:[self readValue]]; + return [PigeonDocumentOption fromList:[self readValue]]; case 133: - return [PigeonFirebaseSettings fromList:[self readValue]]; + return [PigeonDocumentSnapshot fromList:[self readValue]]; case 134: - return [PigeonGetOptions fromList:[self readValue]]; + return [PigeonFirebaseSettings fromList:[self readValue]]; case 135: - return [PigeonQueryParameters fromList:[self readValue]]; + return [PigeonGetOptions fromList:[self readValue]]; case 136: - return [PigeonQuerySnapshot fromList:[self readValue]]; + return [PigeonQueryParameters fromList:[self readValue]]; case 137: - return [PigeonSnapshotMetadata fromList:[self readValue]]; + return [PigeonQuerySnapshot fromList:[self readValue]]; case 138: + return [PigeonSnapshotMetadata fromList:[self readValue]]; + case 139: return [PigeonTransactionCommand fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -579,43 +620,46 @@ - (nullable id)readValueOfType:(UInt8)type { } @end -@interface FirebaseFirestoreHostApiCodecWriter : FLTFirebaseFirestoreWriter +@interface FirebaseFirestoreHostApiCodecWriter : FlutterStandardWriter @end @implementation FirebaseFirestoreHostApiCodecWriter - (void)writeValue:(id)value { - if ([value isKindOfClass:[DocumentReferenceRequest class]]) { + if ([value isKindOfClass:[AggregateQuery class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FirestorePigeonFirebaseApp class]]) { + } else if ([value isKindOfClass:[DocumentReferenceRequest class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonDocumentChange class]]) { + } else if ([value isKindOfClass:[FirestorePigeonFirebaseApp class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonDocumentOption class]]) { + } else if ([value isKindOfClass:[PigeonDocumentChange class]]) { [self writeByte:131]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonDocumentSnapshot class]]) { + } else if ([value isKindOfClass:[PigeonDocumentOption class]]) { [self writeByte:132]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonFirebaseSettings class]]) { + } else if ([value isKindOfClass:[PigeonDocumentSnapshot class]]) { [self writeByte:133]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonGetOptions class]]) { + } else if ([value isKindOfClass:[PigeonFirebaseSettings class]]) { [self writeByte:134]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonQueryParameters class]]) { + } else if ([value isKindOfClass:[PigeonGetOptions class]]) { [self writeByte:135]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonQuerySnapshot class]]) { + } else if ([value isKindOfClass:[PigeonQueryParameters class]]) { [self writeByte:136]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonSnapshotMetadata class]]) { + } else if ([value isKindOfClass:[PigeonQuerySnapshot class]]) { [self writeByte:137]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonTransactionCommand class]]) { + } else if ([value isKindOfClass:[PigeonSnapshotMetadata class]]) { [self writeByte:138]; [self writeValue:[value toList]]; + } else if ([value isKindOfClass:[PigeonTransactionCommand class]]) { + [self writeByte:139]; + [self writeValue:[value toList]]; } else { [super writeValue:value]; } @@ -1108,14 +1152,14 @@ void FirebaseFirestoreHostApiSetup(id binaryMessenger, { FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." - @"FirebaseFirestoreHostApi.aggregateQueryCount" + @"FirebaseFirestoreHostApi.aggregateQuery" binaryMessenger:binaryMessenger codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { NSCAssert([api respondsToSelector:@selector - (aggregateQueryCountApp:path:parameters:source:completion:)], + (aggregateQueryApp:path:parameters:source:queries:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to " - @"@selector(aggregateQueryCountApp:path:parameters:source:completion:)", + @"@selector(aggregateQueryApp:path:parameters:source:queries:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; @@ -1123,13 +1167,15 @@ void FirebaseFirestoreHostApiSetup(id binaryMessenger, NSString *arg_path = GetNullableObjectAtIndex(args, 1); PigeonQueryParameters *arg_parameters = GetNullableObjectAtIndex(args, 2); AggregateSource arg_source = [GetNullableObjectAtIndex(args, 3) integerValue]; - [api aggregateQueryCountApp:arg_app - path:arg_path - parameters:arg_parameters - source:arg_source - completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + NSArray *arg_queries = GetNullableObjectAtIndex(args, 4); + [api aggregateQueryApp:arg_app + path:arg_path + parameters:arg_parameters + source:arg_source + queries:arg_queries + completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h index 764be17107b5..ba3d15dcd658 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h @@ -110,6 +110,18 @@ typedef NS_ENUM(NSUInteger, PigeonTransactionType) { - (instancetype)initWithValue:(PigeonTransactionType)value; @end +typedef NS_ENUM(NSUInteger, AggregateType) { + AggregateTypeCount = 0, + AggregateTypeSum = 1, + AggregateTypeAverage = 2, +}; + +/// Wrapper for AggregateType to allow for nullability. +@interface AggregateTypeBox : NSObject +@property(nonatomic, assign) AggregateType value; +- (instancetype)initWithValue:(AggregateType)value; +@end + @class PigeonFirebaseSettings; @class FirestorePigeonFirebaseApp; @class PigeonSnapshotMetadata; @@ -121,6 +133,7 @@ typedef NS_ENUM(NSUInteger, PigeonTransactionType) { @class PigeonTransactionCommand; @class DocumentReferenceRequest; @class PigeonQueryParameters; +@class AggregateQuery; @interface PigeonFirebaseSettings : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. @@ -178,7 +191,7 @@ typedef NS_ENUM(NSUInteger, PigeonTransactionType) { @property(nonatomic, assign) DocumentChangeType type; @property(nonatomic, strong) PigeonDocumentSnapshot *document; @property(nonatomic, strong) NSNumber *oldIndex; -@property(nonatomic, strong) NSNumber *index; +@property(nonatomic, strong) NSNumber *newIndex; @end @interface PigeonQuerySnapshot : NSObject @@ -257,6 +270,14 @@ typedef NS_ENUM(NSUInteger, PigeonTransactionType) { @property(nonatomic, strong, nullable) NSDictionary *filters; @end +@interface AggregateQuery : NSObject +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithType:(AggregateType)type fieldPath:(NSString *)fieldPath; +@property(nonatomic, assign) AggregateType type; +@property(nonatomic, copy) NSString *fieldPath; +@end + /// The codec used by FirebaseFirestoreHostApi. NSObject *FirebaseFirestoreHostApiGetCodec(void); @@ -318,11 +339,12 @@ NSObject *FirebaseFirestoreHostApiGetCodec(void); parameters:(PigeonQueryParameters *)parameters options:(PigeonGetOptions *)options completion:(void (^)(PigeonQuerySnapshot *_Nullable, FlutterError *_Nullable))completion; -- (void)aggregateQueryCountApp:(FirestorePigeonFirebaseApp *)app - path:(NSString *)path - parameters:(PigeonQueryParameters *)parameters - source:(AggregateSource)source - completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion; +- (void)aggregateQueryApp:(FirestorePigeonFirebaseApp *)app + path:(NSString *)path + parameters:(PigeonQueryParameters *)parameters + source:(AggregateSource)source + queries:(NSArray *)queries + completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion; - (void)writeBatchCommitApp:(FirestorePigeonFirebaseApp *)app writes:(NSArray *)writes completion:(void (^)(FlutterError *_Nullable))completion; diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp index 96970defc5d4..cb74da04f2a9 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp @@ -893,6 +893,38 @@ PigeonQueryParameters PigeonQueryParameters::FromEncodableList( return decoded; } +// AggregateQuery + +AggregateQuery::AggregateQuery(const AggregateType& type, + const std::string& field_path) + : type_(type), field_path_(field_path) {} + +const AggregateType& AggregateQuery::type() const { return type_; } + +void AggregateQuery::set_type(const AggregateType& value_arg) { + type_ = value_arg; +} + +const std::string& AggregateQuery::field_path() const { return field_path_; } + +void AggregateQuery::set_field_path(std::string_view value_arg) { + field_path_ = value_arg; +} + +EncodableList AggregateQuery::ToEncodableList() const { + EncodableList list; + list.reserve(2); + list.push_back(EncodableValue((int)type_)); + list.push_back(EncodableValue(field_path_)); + return list; +} + +AggregateQuery AggregateQuery::FromEncodableList(const EncodableList& list) { + AggregateQuery decoded((AggregateType)(std::get(list[0])), + std::get(list[1])); + return decoded; +} + FirebaseFirestoreHostApiCodecSerializer:: FirebaseFirestoreHostApiCodecSerializer() {} @@ -900,41 +932,43 @@ EncodableValue FirebaseFirestoreHostApiCodecSerializer::ReadValueOfType( uint8_t type, flutter::ByteStreamReader* stream) const { switch (type) { case 128: - return CustomEncodableValue(DocumentReferenceRequest::FromEncodableList( + return CustomEncodableValue(AggregateQuery::FromEncodableList( std::get(ReadValue(stream)))); case 129: - return CustomEncodableValue(FirestorePigeonFirebaseApp::FromEncodableList( + return CustomEncodableValue(DocumentReferenceRequest::FromEncodableList( std::get(ReadValue(stream)))); case 130: - return CustomEncodableValue(PigeonDocumentChange::FromEncodableList( + return CustomEncodableValue(FirestorePigeonFirebaseApp::FromEncodableList( std::get(ReadValue(stream)))); case 131: - return CustomEncodableValue(PigeonDocumentOption::FromEncodableList( + return CustomEncodableValue(PigeonDocumentChange::FromEncodableList( std::get(ReadValue(stream)))); case 132: - return CustomEncodableValue(PigeonDocumentSnapshot::FromEncodableList( + return CustomEncodableValue(PigeonDocumentOption::FromEncodableList( std::get(ReadValue(stream)))); case 133: - return CustomEncodableValue(PigeonFirebaseSettings::FromEncodableList( + return CustomEncodableValue(PigeonDocumentSnapshot::FromEncodableList( std::get(ReadValue(stream)))); case 134: - return CustomEncodableValue(PigeonGetOptions::FromEncodableList( + return CustomEncodableValue(PigeonFirebaseSettings::FromEncodableList( std::get(ReadValue(stream)))); case 135: - return CustomEncodableValue(PigeonQueryParameters::FromEncodableList( + return CustomEncodableValue(PigeonGetOptions::FromEncodableList( std::get(ReadValue(stream)))); case 136: - return CustomEncodableValue(PigeonQuerySnapshot::FromEncodableList( + return CustomEncodableValue(PigeonQueryParameters::FromEncodableList( std::get(ReadValue(stream)))); case 137: - return CustomEncodableValue(PigeonSnapshotMetadata::FromEncodableList( + return CustomEncodableValue(PigeonQuerySnapshot::FromEncodableList( std::get(ReadValue(stream)))); case 138: + return CustomEncodableValue(PigeonSnapshotMetadata::FromEncodableList( + std::get(ReadValue(stream)))); + case 139: return CustomEncodableValue(PigeonTransactionCommand::FromEncodableList( std::get(ReadValue(stream)))); default: - return cloud_firestore_windows::FirestoreCodec::ReadValueOfType(type, - stream); + return flutter::StandardCodecSerializer::ReadValueOfType(type, stream); } } @@ -942,8 +976,16 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( const EncodableValue& value, flutter::ByteStreamWriter* stream) const { if (const CustomEncodableValue* custom_value = std::get_if(&value)) { - if (custom_value->type() == typeid(DocumentReferenceRequest)) { + if (custom_value->type() == typeid(AggregateQuery)) { stream->WriteByte(128); + WriteValue( + EncodableValue( + std::any_cast(*custom_value).ToEncodableList()), + stream); + return; + } + if (custom_value->type() == typeid(DocumentReferenceRequest)) { + stream->WriteByte(129); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -951,7 +993,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(FirestorePigeonFirebaseApp)) { - stream->WriteByte(129); + stream->WriteByte(130); WriteValue(EncodableValue( std::any_cast(*custom_value) .ToEncodableList()), @@ -959,7 +1001,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonDocumentChange)) { - stream->WriteByte(130); + stream->WriteByte(131); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -967,7 +1009,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonDocumentOption)) { - stream->WriteByte(131); + stream->WriteByte(132); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -975,7 +1017,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonDocumentSnapshot)) { - stream->WriteByte(132); + stream->WriteByte(133); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -983,7 +1025,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonFirebaseSettings)) { - stream->WriteByte(133); + stream->WriteByte(134); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -991,7 +1033,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonGetOptions)) { - stream->WriteByte(134); + stream->WriteByte(135); WriteValue( EncodableValue( std::any_cast(*custom_value).ToEncodableList()), @@ -999,7 +1041,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonQueryParameters)) { - stream->WriteByte(135); + stream->WriteByte(136); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1007,7 +1049,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonQuerySnapshot)) { - stream->WriteByte(136); + stream->WriteByte(137); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1015,7 +1057,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonSnapshotMetadata)) { - stream->WriteByte(137); + stream->WriteByte(138); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1023,7 +1065,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonTransactionCommand)) { - stream->WriteByte(138); + stream->WriteByte(139); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1031,7 +1073,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } } - cloud_firestore_windows::FirestoreCodec::WriteValue(value, stream); + flutter::StandardCodecSerializer::WriteValue(value, stream); } /// The codec used by FirebaseFirestoreHostApi. @@ -1872,7 +1914,7 @@ void FirebaseFirestoreHostApi::SetUp(flutter::BinaryMessenger* binary_messenger, auto channel = std::make_unique>( binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface." - "FirebaseFirestoreHostApi.aggregateQueryCount", + "FirebaseFirestoreHostApi.aggregateQuery", &GetCodec()); if (api != nullptr) { channel->SetMessageHandler( @@ -1909,8 +1951,15 @@ void FirebaseFirestoreHostApi::SetUp(flutter::BinaryMessenger* binary_messenger, } const AggregateSource& source_arg = (AggregateSource)encodable_source_arg.LongValue(); - api->AggregateQueryCount( - app_arg, path_arg, parameters_arg, source_arg, + const auto& encodable_queries_arg = args.at(4); + if (encodable_queries_arg.IsNull()) { + reply(WrapError("queries_arg unexpectedly null.")); + return; + } + const auto& queries_arg = + std::get(encodable_queries_arg); + api->AggregateQuery( + app_arg, path_arg, parameters_arg, source_arg, queries_arg, [reply](ErrorOr&& output) { if (output.has_error()) { reply(WrapError(output.error())); diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h index c985551ee9cb..86ffaa92224d 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h @@ -15,8 +15,6 @@ #include #include -#include "firestore_codec.h" - namespace cloud_firestore_windows { // Generated class from Pigeon. @@ -122,6 +120,8 @@ enum class PigeonTransactionType { deleteType = 3 }; +enum class AggregateType { count = 0, sum = 1, average = 2 }; + // Generated class from Pigeon that represents data sent in messages. class PigeonFirebaseSettings { public: @@ -207,11 +207,11 @@ class PigeonSnapshotMetadata { bool is_from_cache() const; void set_is_from_cache(bool value_arg); + + private: static PigeonSnapshotMetadata FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; - - private: friend class PigeonDocumentSnapshot; friend class PigeonQuerySnapshot; friend class FirebaseFirestoreHostApi; @@ -241,11 +241,11 @@ class PigeonDocumentSnapshot { const PigeonSnapshotMetadata& metadata() const; void set_metadata(const PigeonSnapshotMetadata& value_arg); + + private: static PigeonDocumentSnapshot FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; - - private: friend class PigeonDocumentChange; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -273,11 +273,11 @@ class PigeonDocumentChange { int64_t new_index() const; void set_new_index(int64_t value_arg); + + private: static PigeonDocumentChange FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; - - private: friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; DocumentChangeType type_; @@ -520,8 +520,30 @@ class PigeonQueryParameters { std::optional filters_; }; +// Generated class from Pigeon that represents data sent in messages. +class AggregateQuery { + public: + // Constructs an object setting all fields. + explicit AggregateQuery(const AggregateType& type, + const std::string& field_path); + + const AggregateType& type() const; + void set_type(const AggregateType& value_arg); + + const std::string& field_path() const; + void set_field_path(std::string_view value_arg); + + private: + static AggregateQuery FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseFirestoreHostApi; + friend class FirebaseFirestoreHostApiCodecSerializer; + AggregateType type_; + std::string field_path_; +}; + class FirebaseFirestoreHostApiCodecSerializer - : public cloud_firestore_windows::FirestoreCodec { + : public flutter::StandardCodecSerializer { public: FirebaseFirestoreHostApiCodecSerializer(); inline static FirebaseFirestoreHostApiCodecSerializer& GetInstance() { @@ -610,9 +632,10 @@ class FirebaseFirestoreHostApi { bool is_collection_group, const PigeonQueryParameters& parameters, const PigeonGetOptions& options, std::function reply)> result) = 0; - virtual void AggregateQueryCount( + virtual void AggregateQuery( const FirestorePigeonFirebaseApp& app, const std::string& path, const PigeonQueryParameters& parameters, const AggregateSource& source, + const flutter::EncodableList& queries, std::function reply)> result) = 0; virtual void WriteBatchCommit( const FirestorePigeonFirebaseApp& app, diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart index 001a6a920ade..c32f93613063 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart @@ -22,11 +22,47 @@ class MethodChannelAggregateQuery extends AggregateQueryPlatform { Future get({ required AggregateSource source, }) async { + switch (aggregateType) { + case AggregateType.count: + return _getCount(source); + case AggregateType.sum: + return _getSum(source); + case AggregateType.average: + return _getAverage(source); + } + } + + Future _getCount( + AggregateSource source, + ) async { final data = await MethodChannelFirebaseFirestore.pigeonChannel .aggregateQueryCount(_pigeonApp, _path, _pigeonParameters, source); return AggregateQuerySnapshotPlatform( count: data.toInt(), + sum, + ); + } + + Future _getSum( + AggregateSource source, + ) async { + final data = await MethodChannelFirebaseFirestore.pigeonChannel + .aggregateQuerySum(_pigeonApp, _path, _pigeonParameters, source); + + return AggregateQuerySnapshotPlatform( + sum: data, + ); + } + + Future _getAverage( + AggregateSource source, + ) async { + final data = await MethodChannelFirebaseFirestore.pigeonChannel + .aggregateQueryAverage(_pigeonApp, _path, _pigeonParameters, source); + + return AggregateQuerySnapshotPlatform( + average: data, ); } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart index dcaef2f03f97..c0a5759df9ae 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart @@ -8,7 +8,6 @@ import 'dart:async'; import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; -import 'package:cloud_firestore_platform_interface/src/method_channel/utils/firestore_message_codec.dart'; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; @@ -75,6 +74,12 @@ enum PigeonTransactionType { deleteType, } +enum AggregateType { + count, + sum, + average, +} + class PigeonFirebaseSettings { PigeonFirebaseSettings({ this.persistenceEnabled, @@ -469,43 +474,72 @@ class PigeonQueryParameters { } } -class _FirebaseFirestoreHostApiCodec extends FirestoreMessageCodec { +class AggregateQuery { + AggregateQuery({ + required this.type, + required this.fieldPath, + }); + + AggregateType type; + + String fieldPath; + + Object encode() { + return [ + type.index, + fieldPath, + ]; + } + + static AggregateQuery decode(Object result) { + result as List; + return AggregateQuery( + type: AggregateType.values[result[0]! as int], + fieldPath: result[1]! as String, + ); + } +} + +class _FirebaseFirestoreHostApiCodec extends StandardMessageCodec { const _FirebaseFirestoreHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is DocumentReferenceRequest) { + if (value is AggregateQuery) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is FirestorePigeonFirebaseApp) { + } else if (value is DocumentReferenceRequest) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentChange) { + } else if (value is FirestorePigeonFirebaseApp) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentOption) { + } else if (value is PigeonDocumentChange) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentSnapshot) { + } else if (value is PigeonDocumentOption) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is PigeonFirebaseSettings) { + } else if (value is PigeonDocumentSnapshot) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is PigeonGetOptions) { + } else if (value is PigeonFirebaseSettings) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is PigeonQueryParameters) { + } else if (value is PigeonGetOptions) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is PigeonQuerySnapshot) { + } else if (value is PigeonQueryParameters) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is PigeonSnapshotMetadata) { + } else if (value is PigeonQuerySnapshot) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is PigeonTransactionCommand) { + } else if (value is PigeonSnapshotMetadata) { buffer.putUint8(138); writeValue(buffer, value.encode()); + } else if (value is PigeonTransactionCommand) { + buffer.putUint8(139); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -515,26 +549,28 @@ class _FirebaseFirestoreHostApiCodec extends FirestoreMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return DocumentReferenceRequest.decode(readValue(buffer)!); + return AggregateQuery.decode(readValue(buffer)!); case 129: - return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); + return DocumentReferenceRequest.decode(readValue(buffer)!); case 130: - return PigeonDocumentChange.decode(readValue(buffer)!); + return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); case 131: - return PigeonDocumentOption.decode(readValue(buffer)!); + return PigeonDocumentChange.decode(readValue(buffer)!); case 132: - return PigeonDocumentSnapshot.decode(readValue(buffer)!); + return PigeonDocumentOption.decode(readValue(buffer)!); case 133: - return PigeonFirebaseSettings.decode(readValue(buffer)!); + return PigeonDocumentSnapshot.decode(readValue(buffer)!); case 134: - return PigeonGetOptions.decode(readValue(buffer)!); + return PigeonFirebaseSettings.decode(readValue(buffer)!); case 135: - return PigeonQueryParameters.decode(readValue(buffer)!); + return PigeonGetOptions.decode(readValue(buffer)!); case 136: - return PigeonQuerySnapshot.decode(readValue(buffer)!); + return PigeonQueryParameters.decode(readValue(buffer)!); case 137: - return PigeonSnapshotMetadata.decode(readValue(buffer)!); + return PigeonQuerySnapshot.decode(readValue(buffer)!); case 138: + return PigeonSnapshotMetadata.decode(readValue(buffer)!); + case 139: return PigeonTransactionCommand.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -553,14 +589,11 @@ class FirebaseFirestoreHostApi { static const MessageCodec codec = _FirebaseFirestoreHostApiCodec(); Future loadBundle( - FirestorePigeonFirebaseApp arg_app, - Uint8List arg_bundle, - ) async { + FirestorePigeonFirebaseApp arg_app, Uint8List arg_bundle) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_bundle]) as List?; if (replyList == null) { @@ -584,16 +617,12 @@ class FirebaseFirestoreHostApi { } } - Future namedQueryGet( - FirestorePigeonFirebaseApp arg_app, - String arg_name, - PigeonGetOptions arg_options, - ) async { + Future namedQueryGet(FirestorePigeonFirebaseApp arg_app, + String arg_name, PigeonGetOptions arg_options) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel .send([arg_app, arg_name, arg_options]) as List?; if (replyList == null) { @@ -619,10 +648,9 @@ class FirebaseFirestoreHostApi { Future clearPersistence(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -643,10 +671,9 @@ class FirebaseFirestoreHostApi { Future disableNetwork(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -667,10 +694,9 @@ class FirebaseFirestoreHostApi { Future enableNetwork(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -691,10 +717,9 @@ class FirebaseFirestoreHostApi { Future terminate(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -715,10 +740,9 @@ class FirebaseFirestoreHostApi { Future waitForPendingWrites(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -738,14 +762,11 @@ class FirebaseFirestoreHostApi { } Future setIndexConfiguration( - FirestorePigeonFirebaseApp arg_app, - String arg_indexConfiguration, - ) async { + FirestorePigeonFirebaseApp arg_app, String arg_indexConfiguration) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel .send([arg_app, arg_indexConfiguration]) as List?; if (replyList == null) { @@ -766,10 +787,9 @@ class FirebaseFirestoreHostApi { Future setLoggingEnabled(bool arg_loggingEnabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_loggingEnabled]) as List?; if (replyList == null) { @@ -789,13 +809,11 @@ class FirebaseFirestoreHostApi { } Future snapshotsInSyncSetup( - FirestorePigeonFirebaseApp arg_app, - ) async { + FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -819,16 +837,12 @@ class FirebaseFirestoreHostApi { } } - Future transactionCreate( - FirestorePigeonFirebaseApp arg_app, - int arg_timeout, - int arg_maxAttempts, - ) async { + Future transactionCreate(FirestorePigeonFirebaseApp arg_app, + int arg_timeout, int arg_maxAttempts) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_timeout, arg_maxAttempts]) as List?; @@ -854,18 +868,16 @@ class FirebaseFirestoreHostApi { } Future transactionStoreResult( - String arg_transactionId, - PigeonTransactionResult arg_resultType, - List? arg_commands, - ) async { + String arg_transactionId, + PigeonTransactionResult arg_resultType, + List? arg_commands) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send( - [arg_transactionId, arg_resultType.index, arg_commands], - ) as List?; + [arg_transactionId, arg_resultType.index, arg_commands]) + as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -883,15 +895,13 @@ class FirebaseFirestoreHostApi { } Future transactionGet( - FirestorePigeonFirebaseApp arg_app, - String arg_transactionId, - String arg_path, - ) async { + FirestorePigeonFirebaseApp arg_app, + String arg_transactionId, + String arg_path) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_transactionId, arg_path]) as List?; @@ -916,15 +926,12 @@ class FirebaseFirestoreHostApi { } } - Future documentReferenceSet( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request, - ) async { + Future documentReferenceSet(FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -943,15 +950,12 @@ class FirebaseFirestoreHostApi { } } - Future documentReferenceUpdate( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request, - ) async { + Future documentReferenceUpdate(FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -971,14 +975,12 @@ class FirebaseFirestoreHostApi { } Future documentReferenceGet( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request, - ) async { + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -1002,15 +1004,12 @@ class FirebaseFirestoreHostApi { } } - Future documentReferenceDelete( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request, - ) async { + Future documentReferenceDelete(FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -1030,23 +1029,21 @@ class FirebaseFirestoreHostApi { } Future queryGet( - FirestorePigeonFirebaseApp arg_app, - String arg_path, - bool arg_isCollectionGroup, - PigeonQueryParameters arg_parameters, - PigeonGetOptions arg_options, - ) async { + FirestorePigeonFirebaseApp arg_app, + String arg_path, + bool arg_isCollectionGroup, + PigeonQueryParameters arg_parameters, + PigeonGetOptions arg_options) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([ arg_app, arg_path, arg_isCollectionGroup, arg_parameters, - arg_options, + arg_options ]) as List?; if (replyList == null) { throw PlatformException( @@ -1069,20 +1066,23 @@ class FirebaseFirestoreHostApi { } } - Future aggregateQueryCount( - FirestorePigeonFirebaseApp arg_app, - String arg_path, - PigeonQueryParameters arg_parameters, - AggregateSource arg_source, - ) async { + Future aggregateQuery( + FirestorePigeonFirebaseApp arg_app, + String arg_path, + PigeonQueryParameters arg_parameters, + AggregateSource arg_source, + List arg_queries) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount', - codec, - binaryMessenger: _binaryMessenger, - ); - final List? replyList = await channel.send( - [arg_app, arg_path, arg_parameters, arg_source.index], - ) as List?; + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery', + codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send([ + arg_app, + arg_path, + arg_parameters, + arg_source.index, + arg_queries + ]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1104,15 +1104,12 @@ class FirebaseFirestoreHostApi { } } - Future writeBatchCommit( - FirestorePigeonFirebaseApp arg_app, - List arg_writes, - ) async { + Future writeBatchCommit(FirestorePigeonFirebaseApp arg_app, + List arg_writes) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_app, arg_writes]) as List?; if (replyList == null) { @@ -1132,25 +1129,23 @@ class FirebaseFirestoreHostApi { } Future querySnapshot( - FirestorePigeonFirebaseApp arg_app, - String arg_path, - bool arg_isCollectionGroup, - PigeonQueryParameters arg_parameters, - PigeonGetOptions arg_options, - bool arg_includeMetadataChanges, - ) async { + FirestorePigeonFirebaseApp arg_app, + String arg_path, + bool arg_isCollectionGroup, + PigeonQueryParameters arg_parameters, + PigeonGetOptions arg_options, + bool arg_includeMetadataChanges) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([ arg_app, arg_path, arg_isCollectionGroup, arg_parameters, arg_options, - arg_includeMetadataChanges, + arg_includeMetadataChanges ]) as List?; if (replyList == null) { throw PlatformException( @@ -1174,18 +1169,16 @@ class FirebaseFirestoreHostApi { } Future documentReferenceSnapshot( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_parameters, - bool arg_includeMetadataChanges, - ) async { + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_parameters, + bool arg_includeMetadataChanges) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', - codec, - binaryMessenger: _binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', + codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send( - [arg_app, arg_parameters, arg_includeMetadataChanges], - ) as List?; + [arg_app, arg_parameters, arg_includeMetadataChanges]) + as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart index 8681d1b4a6ea..e5b1085e7f21 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart @@ -6,13 +6,21 @@ import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import '../../cloud_firestore_platform_interface.dart'; +enum AggregateType { + count, + sum, + average, +} + /// [AggregateQueryPlatform] represents the data at a particular location for retrieving metadata /// without retrieving the actual documents. abstract class AggregateQueryPlatform extends PlatformInterface { - AggregateQueryPlatform(this.query) : super(token: _token); + AggregateQueryPlatform(this.query, this.aggregateType) : super(token: _token); static final Object _token = Object(); + final AggregateType aggregateType; + /// Throws an [AssertionError] if [instance] does not extend /// [AggregateQueryPlatform]. /// diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart index 9615a9e80d9c..0a345dc462b2 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart @@ -6,8 +6,13 @@ import 'package:plugin_platform_interface/plugin_platform_interface.dart'; /// [AggregateQuerySnapshotPlatform] represents a response to an [AggregateQueryPlatform] request. class AggregateQuerySnapshotPlatform extends PlatformInterface { - AggregateQuerySnapshotPlatform({required int count}) - : _count = count, + AggregateQuerySnapshotPlatform({ + required int? count, + required Map? sum, + required Map? average, + }) : _count = count, + _sum = sum, + _average = average, super(token: _token); static final Object _token = Object(); @@ -22,8 +27,30 @@ class AggregateQuerySnapshotPlatform extends PlatformInterface { PlatformInterface.verifyToken(instance, _token); } - final int _count; + final int? _count; + + final Map? _average; + + final Map? _sum; /// Returns the count of the documents that match the query. - int get count => _count; + int? get count => _count; + + /// Returns the average of the documents that match the query. + /// The key is the field name and the value is the average. + double getAverage(String field) { + if (_average == null) { + throw 'This query does not have an average for $field.'; + } + return _average![field]!; + } + + /// Returns the sum of the documents that match the query. + /// The key is the field name and the value is the sum. + double getSum(String field) { + if (_sum == null) { + throw 'This query does not have a sum for $field.'; + } + return _sum![field]!; + } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart index 39207a8e9f2f..3d31f1edcf97 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart @@ -240,6 +240,22 @@ class PigeonQueryParameters { final Map? filters; } +enum AggregateType { + count, + sum, + average, +} + +class AggregateQuery { + const AggregateQuery({ + required this.type, + required this.fieldPath, + }); + + final AggregateType type; + final String fieldPath; +} + @HostApi(dartHostTestHandler: 'TestFirebaseFirestoreHostApi') abstract class FirebaseFirestoreHostApi { @async @@ -351,11 +367,12 @@ abstract class FirebaseFirestoreHostApi { ); @async - double aggregateQueryCount( + double aggregateQuery( FirestorePigeonFirebaseApp app, String path, PigeonQueryParameters parameters, AggregateSource source, + List queries, ); @async diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart index 170cc6450e7d..09589d089f0f 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart @@ -6,50 +6,53 @@ // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import // ignore_for_file: avoid_relative_lib_imports import 'dart:async'; -import 'dart:typed_data' show Uint8List; - -import 'package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart'; +import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart'; + class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec { const _TestFirebaseFirestoreHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is DocumentReferenceRequest) { + if (value is AggregateQuery) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is FirestorePigeonFirebaseApp) { + } else if (value is DocumentReferenceRequest) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentChange) { + } else if (value is FirestorePigeonFirebaseApp) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentOption) { + } else if (value is PigeonDocumentChange) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentSnapshot) { + } else if (value is PigeonDocumentOption) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is PigeonFirebaseSettings) { + } else if (value is PigeonDocumentSnapshot) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is PigeonGetOptions) { + } else if (value is PigeonFirebaseSettings) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is PigeonQueryParameters) { + } else if (value is PigeonGetOptions) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is PigeonQuerySnapshot) { + } else if (value is PigeonQueryParameters) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is PigeonSnapshotMetadata) { + } else if (value is PigeonQuerySnapshot) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is PigeonTransactionCommand) { + } else if (value is PigeonSnapshotMetadata) { buffer.putUint8(138); writeValue(buffer, value.encode()); + } else if (value is PigeonTransactionCommand) { + buffer.putUint8(139); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -59,26 +62,28 @@ class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return DocumentReferenceRequest.decode(readValue(buffer)!); + return AggregateQuery.decode(readValue(buffer)!); case 129: - return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); + return DocumentReferenceRequest.decode(readValue(buffer)!); case 130: - return PigeonDocumentChange.decode(readValue(buffer)!); + return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); case 131: - return PigeonDocumentOption.decode(readValue(buffer)!); + return PigeonDocumentChange.decode(readValue(buffer)!); case 132: - return PigeonDocumentSnapshot.decode(readValue(buffer)!); + return PigeonDocumentOption.decode(readValue(buffer)!); case 133: - return PigeonFirebaseSettings.decode(readValue(buffer)!); + return PigeonDocumentSnapshot.decode(readValue(buffer)!); case 134: - return PigeonGetOptions.decode(readValue(buffer)!); + return PigeonFirebaseSettings.decode(readValue(buffer)!); case 135: - return PigeonQueryParameters.decode(readValue(buffer)!); + return PigeonGetOptions.decode(readValue(buffer)!); case 136: - return PigeonQuerySnapshot.decode(readValue(buffer)!); + return PigeonQueryParameters.decode(readValue(buffer)!); case 137: - return PigeonSnapshotMetadata.decode(readValue(buffer)!); + return PigeonQuerySnapshot.decode(readValue(buffer)!); case 138: + return PigeonSnapshotMetadata.decode(readValue(buffer)!); + case 139: return PigeonTransactionCommand.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -95,10 +100,7 @@ abstract class TestFirebaseFirestoreHostApi { Future loadBundle(FirestorePigeonFirebaseApp app, Uint8List bundle); Future namedQueryGet( - FirestorePigeonFirebaseApp app, - String name, - PigeonGetOptions options, - ); + FirestorePigeonFirebaseApp app, String name, PigeonGetOptions options); Future clearPersistence(FirestorePigeonFirebaseApp app); @@ -111,97 +113,70 @@ abstract class TestFirebaseFirestoreHostApi { Future waitForPendingWrites(FirestorePigeonFirebaseApp app); Future setIndexConfiguration( - FirestorePigeonFirebaseApp app, - String indexConfiguration, - ); + FirestorePigeonFirebaseApp app, String indexConfiguration); Future setLoggingEnabled(bool loggingEnabled); Future snapshotsInSyncSetup(FirestorePigeonFirebaseApp app); Future transactionCreate( - FirestorePigeonFirebaseApp app, - int timeout, - int maxAttempts, - ); + FirestorePigeonFirebaseApp app, int timeout, int maxAttempts); Future transactionStoreResult( - String transactionId, - PigeonTransactionResult resultType, - List? commands, - ); + String transactionId, + PigeonTransactionResult resultType, + List? commands); Future transactionGet( - FirestorePigeonFirebaseApp app, - String transactionId, - String path, - ); + FirestorePigeonFirebaseApp app, String transactionId, String path); Future documentReferenceSet( - FirestorePigeonFirebaseApp app, - DocumentReferenceRequest request, - ); + FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); Future documentReferenceUpdate( - FirestorePigeonFirebaseApp app, - DocumentReferenceRequest request, - ); + FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); Future documentReferenceGet( - FirestorePigeonFirebaseApp app, - DocumentReferenceRequest request, - ); + FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); Future documentReferenceDelete( - FirestorePigeonFirebaseApp app, - DocumentReferenceRequest request, - ); + FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); Future queryGet( - FirestorePigeonFirebaseApp app, - String path, - bool isCollectionGroup, - PigeonQueryParameters parameters, - PigeonGetOptions options, - ); + FirestorePigeonFirebaseApp app, + String path, + bool isCollectionGroup, + PigeonQueryParameters parameters, + PigeonGetOptions options); - Future aggregateQueryCount( - FirestorePigeonFirebaseApp app, - String path, - PigeonQueryParameters parameters, - AggregateSource source, - ); + Future aggregateQuery( + FirestorePigeonFirebaseApp app, + String path, + PigeonQueryParameters parameters, + AggregateSource source, + List queries); Future writeBatchCommit( - FirestorePigeonFirebaseApp app, - List writes, - ); + FirestorePigeonFirebaseApp app, List writes); Future querySnapshot( - FirestorePigeonFirebaseApp app, - String path, - bool isCollectionGroup, - PigeonQueryParameters parameters, - PigeonGetOptions options, - bool includeMetadataChanges, - ); + FirestorePigeonFirebaseApp app, + String path, + bool isCollectionGroup, + PigeonQueryParameters parameters, + PigeonGetOptions options, + bool includeMetadataChanges); - Future documentReferenceSnapshot( - FirestorePigeonFirebaseApp app, - DocumentReferenceRequest parameters, - bool includeMetadataChanges, - ); + Future documentReferenceSnapshot(FirestorePigeonFirebaseApp app, + DocumentReferenceRequest parameters, bool includeMetadataChanges); - static void setup( - TestFirebaseFirestoreHostApi? api, { - BinaryMessenger? binaryMessenger, - }) { + static void setup(TestFirebaseFirestoreHostApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -209,22 +184,16 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null FirestorePigeonFirebaseApp.'); final Uint8List? arg_bundle = (args[1] as Uint8List?); - assert( - arg_bundle != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null Uint8List.', - ); + assert(arg_bundle != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null Uint8List.'); final String output = await api.loadBundle(arg_app!, arg_bundle!); return [output]; }); @@ -232,10 +201,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -243,27 +211,19 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null FirestorePigeonFirebaseApp.'); final String? arg_name = (args[1] as String?); - assert( - arg_name != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null String.', - ); + assert(arg_name != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null String.'); final PigeonGetOptions? arg_options = (args[2] as PigeonGetOptions?); - assert( - arg_options != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null PigeonGetOptions.', - ); + assert(arg_options != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null PigeonGetOptions.'); final PigeonQuerySnapshot output = await api.namedQueryGet(arg_app!, arg_name!, arg_options!); return [output]; @@ -272,10 +232,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -283,17 +242,13 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null, expected non-null FirestorePigeonFirebaseApp.'); await api.clearPersistence(arg_app!); return []; }); @@ -301,10 +256,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -312,17 +266,13 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null, expected non-null FirestorePigeonFirebaseApp.'); await api.disableNetwork(arg_app!); return []; }); @@ -330,10 +280,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -341,17 +290,13 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null, expected non-null FirestorePigeonFirebaseApp.'); await api.enableNetwork(arg_app!); return []; }); @@ -359,10 +304,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -370,17 +314,13 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null, expected non-null FirestorePigeonFirebaseApp.'); await api.terminate(arg_app!); return []; }); @@ -388,10 +328,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -399,17 +338,13 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null, expected non-null FirestorePigeonFirebaseApp.'); await api.waitForPendingWrites(arg_app!); return []; }); @@ -417,10 +352,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -428,22 +362,16 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null FirestorePigeonFirebaseApp.'); final String? arg_indexConfiguration = (args[1] as String?); - assert( - arg_indexConfiguration != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null String.', - ); + assert(arg_indexConfiguration != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null String.'); await api.setIndexConfiguration(arg_app!, arg_indexConfiguration!); return []; }); @@ -451,10 +379,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -462,16 +389,12 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null.'); final List args = (message as List?)!; final bool? arg_loggingEnabled = (args[0] as bool?); - assert( - arg_loggingEnabled != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null, expected non-null bool.', - ); + assert(arg_loggingEnabled != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null, expected non-null bool.'); await api.setLoggingEnabled(arg_loggingEnabled!); return []; }); @@ -479,10 +402,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -490,17 +412,13 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null, expected non-null FirestorePigeonFirebaseApp.'); final String output = await api.snapshotsInSyncSetup(arg_app!); return [output]; }); @@ -508,10 +426,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -519,42 +436,30 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null FirestorePigeonFirebaseApp.'); final int? arg_timeout = (args[1] as int?); - assert( - arg_timeout != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.', - ); + assert(arg_timeout != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.'); final int? arg_maxAttempts = (args[2] as int?); - assert( - arg_maxAttempts != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.', - ); + assert(arg_maxAttempts != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.'); final String output = await api.transactionCreate( - arg_app!, - arg_timeout!, - arg_maxAttempts!, - ); + arg_app!, arg_timeout!, arg_maxAttempts!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -562,40 +467,30 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null.'); final List args = (message as List?)!; final String? arg_transactionId = (args[0] as String?); - assert( - arg_transactionId != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null String.', - ); + assert(arg_transactionId != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null String.'); final PigeonTransactionResult? arg_resultType = args[1] == null ? null : PigeonTransactionResult.values[args[1]! as int]; - assert( - arg_resultType != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null PigeonTransactionResult.', - ); + assert(arg_resultType != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null PigeonTransactionResult.'); final List? arg_commands = (args[2] as List?)?.cast(); await api.transactionStoreResult( - arg_transactionId!, - arg_resultType!, - arg_commands, - ); + arg_transactionId!, arg_resultType!, arg_commands); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -603,27 +498,19 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null FirestorePigeonFirebaseApp.'); final String? arg_transactionId = (args[1] as String?); - assert( - arg_transactionId != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.', - ); + assert(arg_transactionId != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.'); final String? arg_path = (args[2] as String?); - assert( - arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.', - ); + assert(arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.'); final PigeonDocumentSnapshot output = await api.transactionGet(arg_app!, arg_transactionId!, arg_path!); return [output]; @@ -632,10 +519,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -643,23 +529,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null FirestorePigeonFirebaseApp.'); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null DocumentReferenceRequest.', - ); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null DocumentReferenceRequest.'); await api.documentReferenceSet(arg_app!, arg_request!); return []; }); @@ -667,10 +547,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -678,23 +557,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null FirestorePigeonFirebaseApp.'); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null DocumentReferenceRequest.', - ); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null DocumentReferenceRequest.'); await api.documentReferenceUpdate(arg_app!, arg_request!); return []; }); @@ -702,10 +575,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -713,23 +585,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null FirestorePigeonFirebaseApp.'); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null DocumentReferenceRequest.', - ); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null DocumentReferenceRequest.'); final PigeonDocumentSnapshot output = await api.documentReferenceGet(arg_app!, arg_request!); return [output]; @@ -738,10 +604,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -749,23 +614,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null FirestorePigeonFirebaseApp.'); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null DocumentReferenceRequest.', - ); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null DocumentReferenceRequest.'); await api.documentReferenceDelete(arg_app!, arg_request!); return []; }); @@ -773,10 +632,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -784,55 +642,37 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null FirestorePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); - assert( - arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null String.', - ); + assert(arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null String.'); final bool? arg_isCollectionGroup = (args[2] as bool?); - assert( - arg_isCollectionGroup != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null bool.', - ); + assert(arg_isCollectionGroup != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null bool.'); final PigeonQueryParameters? arg_parameters = (args[3] as PigeonQueryParameters?); - assert( - arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonQueryParameters.', - ); + assert(arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonQueryParameters.'); final PigeonGetOptions? arg_options = (args[4] as PigeonGetOptions?); - assert( - arg_options != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonGetOptions.', - ); - final PigeonQuerySnapshot output = await api.queryGet( - arg_app!, - arg_path!, - arg_isCollectionGroup!, - arg_parameters!, - arg_options!, - ); + assert(arg_options != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonGetOptions.'); + final PigeonQuerySnapshot output = await api.queryGet(arg_app!, + arg_path!, arg_isCollectionGroup!, arg_parameters!, arg_options!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -840,50 +680,39 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null FirestorePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); - assert( - arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount was null, expected non-null String.', - ); + assert(arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null String.'); final PigeonQueryParameters? arg_parameters = (args[2] as PigeonQueryParameters?); - assert( - arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount was null, expected non-null PigeonQueryParameters.', - ); + assert(arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null PigeonQueryParameters.'); final AggregateSource? arg_source = args[3] == null ? null : AggregateSource.values[args[3]! as int]; - assert( - arg_source != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQueryCount was null, expected non-null AggregateSource.', - ); - final double output = await api.aggregateQueryCount( - arg_app!, - arg_path!, - arg_parameters!, - arg_source!, - ); + assert(arg_source != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null AggregateSource.'); + final List? arg_queries = + (args[4] as List?)?.cast(); + assert(arg_queries != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null List.'); + final double output = await api.aggregateQuery( + arg_app!, arg_path!, arg_parameters!, arg_source!, arg_queries!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -891,23 +720,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null FirestorePigeonFirebaseApp.'); final List? arg_writes = (args[1] as List?)?.cast(); - assert( - arg_writes != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null List.', - ); + assert(arg_writes != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null List.'); await api.writeBatchCommit(arg_app!, arg_writes!); return []; }); @@ -915,10 +738,9 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -926,61 +748,45 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null FirestorePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); - assert( - arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null String.', - ); + assert(arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null String.'); final bool? arg_isCollectionGroup = (args[2] as bool?); - assert( - arg_isCollectionGroup != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.', - ); + assert(arg_isCollectionGroup != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.'); final PigeonQueryParameters? arg_parameters = (args[3] as PigeonQueryParameters?); - assert( - arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonQueryParameters.', - ); + assert(arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonQueryParameters.'); final PigeonGetOptions? arg_options = (args[4] as PigeonGetOptions?); - assert( - arg_options != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonGetOptions.', - ); + assert(arg_options != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonGetOptions.'); final bool? arg_includeMetadataChanges = (args[5] as bool?); - assert( - arg_includeMetadataChanges != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.', - ); + assert(arg_includeMetadataChanges != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.'); final String output = await api.querySnapshot( - arg_app!, - arg_path!, - arg_isCollectionGroup!, - arg_parameters!, - arg_options!, - arg_includeMetadataChanges!, - ); + arg_app!, + arg_path!, + arg_isCollectionGroup!, + arg_parameters!, + arg_options!, + arg_includeMetadataChanges!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', - codec, - binaryMessenger: binaryMessenger, - ); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', + codec, + binaryMessenger: binaryMessenger); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -988,33 +794,22 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null.'); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert( - arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null FirestorePigeonFirebaseApp.', - ); + assert(arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null FirestorePigeonFirebaseApp.'); final DocumentReferenceRequest? arg_parameters = (args[1] as DocumentReferenceRequest?); - assert( - arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null DocumentReferenceRequest.', - ); + assert(arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null DocumentReferenceRequest.'); final bool? arg_includeMetadataChanges = (args[2] as bool?); - assert( - arg_includeMetadataChanges != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null bool.', - ); + assert(arg_includeMetadataChanges != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null bool.'); final String output = await api.documentReferenceSnapshot( - arg_app!, - arg_parameters!, - arg_includeMetadataChanges!, - ); + arg_app!, arg_parameters!, arg_includeMetadataChanges!); return [output]; }); } From 35677012af2276ed84ef108b48eb4b11e74f222f Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 23 Oct 2023 11:30:24 +0200 Subject: [PATCH 02/25] prepare pigeon --- .../GeneratedAndroidFirebaseFirestore.java | 176 ++++++++++++++---- .../ios/Classes/FirestoreMessages.g.m | 95 +++++++--- .../ios/Classes/Public/FirestoreMessages.g.h | 19 +- .../cloud_firestore/windows/messages.g.cpp | 138 +++++++++++--- .../cloud_firestore/windows/messages.g.h | 46 ++++- .../method_channel_aggregate_query.dart | 97 +++++++--- .../method_channel/method_channel_query.dart | 37 ++++ .../lib/src/pigeon/messages.pigeon.dart | 90 ++++++--- .../platform_interface_aggregate_query.dart | 27 ++- ...rm_interface_aggregate_query_snapshot.dart | 26 ++- .../platform_interface_query.dart | 12 ++ .../pigeons/messages.dart | 18 +- .../test/pigeon/test_api.dart | 51 ++--- 13 files changed, 619 insertions(+), 213 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java index 55898402a250..56a96702e29a 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java @@ -1435,17 +1435,14 @@ public void setType(@NonNull AggregateType setterArg) { this.type = setterArg; } - private @NonNull String fieldPath; + private @Nullable String field; - public @NonNull String getFieldPath() { - return fieldPath; + public @Nullable String getField() { + return field; } - public void setFieldPath(@NonNull String setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"fieldPath\" is null."); - } - this.fieldPath = setterArg; + public void setField(@Nullable String setterArg) { + this.field = setterArg; } /** Constructor is non-public to enforce null safety; use Builder. */ @@ -1460,17 +1457,17 @@ public static final class Builder { return this; } - private @Nullable String fieldPath; + private @Nullable String field; - public @NonNull Builder setFieldPath(@NonNull String setterArg) { - this.fieldPath = setterArg; + public @NonNull Builder setField(@Nullable String setterArg) { + this.field = setterArg; return this; } public @NonNull AggregateQuery build() { AggregateQuery pigeonReturn = new AggregateQuery(); pigeonReturn.setType(type); - pigeonReturn.setFieldPath(fieldPath); + pigeonReturn.setField(field); return pigeonReturn; } } @@ -1479,7 +1476,7 @@ public static final class Builder { ArrayList toList() { ArrayList toListResult = new ArrayList(2); toListResult.add(type == null ? null : type.index); - toListResult.add(fieldPath); + toListResult.add(field); return toListResult; } @@ -1487,8 +1484,102 @@ ArrayList toList() { AggregateQuery pigeonResult = new AggregateQuery(); Object type = list.get(0); pigeonResult.setType(AggregateType.values()[(int) type]); - Object fieldPath = list.get(1); - pigeonResult.setFieldPath((String) fieldPath); + Object field = list.get(1); + pigeonResult.setField((String) field); + return pigeonResult; + } + } + + /** Generated class from Pigeon that represents data sent in messages. */ + public static final class AggregateQueryResponse { + private @NonNull AggregateType type; + + public @NonNull AggregateType getType() { + return type; + } + + public void setType(@NonNull AggregateType setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"type\" is null."); + } + this.type = setterArg; + } + + private @Nullable String field; + + public @Nullable String getField() { + return field; + } + + public void setField(@Nullable String setterArg) { + this.field = setterArg; + } + + private @NonNull Double value; + + public @NonNull Double getValue() { + return value; + } + + public void setValue(@NonNull Double setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"value\" is null."); + } + this.value = setterArg; + } + + /** Constructor is non-public to enforce null safety; use Builder. */ + AggregateQueryResponse() {} + + public static final class Builder { + + private @Nullable AggregateType type; + + public @NonNull Builder setType(@NonNull AggregateType setterArg) { + this.type = setterArg; + return this; + } + + private @Nullable String field; + + public @NonNull Builder setField(@Nullable String setterArg) { + this.field = setterArg; + return this; + } + + private @Nullable Double value; + + public @NonNull Builder setValue(@NonNull Double setterArg) { + this.value = setterArg; + return this; + } + + public @NonNull AggregateQueryResponse build() { + AggregateQueryResponse pigeonReturn = new AggregateQueryResponse(); + pigeonReturn.setType(type); + pigeonReturn.setField(field); + pigeonReturn.setValue(value); + return pigeonReturn; + } + } + + @NonNull + ArrayList toList() { + ArrayList toListResult = new ArrayList(3); + toListResult.add(type == null ? null : type.index); + toListResult.add(field); + toListResult.add(value); + return toListResult; + } + + static @NonNull AggregateQueryResponse fromList(@NonNull ArrayList list) { + AggregateQueryResponse pigeonResult = new AggregateQueryResponse(); + Object type = list.get(0); + pigeonResult.setType(AggregateType.values()[(int) type]); + Object field = list.get(1); + pigeonResult.setField((String) field); + Object value = list.get(2); + pigeonResult.setValue((Double) value); return pigeonResult; } } @@ -1512,26 +1603,28 @@ protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) { case (byte) 128: return AggregateQuery.fromList((ArrayList) readValue(buffer)); case (byte) 129: - return DocumentReferenceRequest.fromList((ArrayList) readValue(buffer)); + return AggregateQueryResponse.fromList((ArrayList) readValue(buffer)); case (byte) 130: - return FirestorePigeonFirebaseApp.fromList((ArrayList) readValue(buffer)); + return DocumentReferenceRequest.fromList((ArrayList) readValue(buffer)); case (byte) 131: - return PigeonDocumentChange.fromList((ArrayList) readValue(buffer)); + return FirestorePigeonFirebaseApp.fromList((ArrayList) readValue(buffer)); case (byte) 132: - return PigeonDocumentOption.fromList((ArrayList) readValue(buffer)); + return PigeonDocumentChange.fromList((ArrayList) readValue(buffer)); case (byte) 133: - return PigeonDocumentSnapshot.fromList((ArrayList) readValue(buffer)); + return PigeonDocumentOption.fromList((ArrayList) readValue(buffer)); case (byte) 134: - return PigeonFirebaseSettings.fromList((ArrayList) readValue(buffer)); + return PigeonDocumentSnapshot.fromList((ArrayList) readValue(buffer)); case (byte) 135: - return PigeonGetOptions.fromList((ArrayList) readValue(buffer)); + return PigeonFirebaseSettings.fromList((ArrayList) readValue(buffer)); case (byte) 136: - return PigeonQueryParameters.fromList((ArrayList) readValue(buffer)); + return PigeonGetOptions.fromList((ArrayList) readValue(buffer)); case (byte) 137: - return PigeonQuerySnapshot.fromList((ArrayList) readValue(buffer)); + return PigeonQueryParameters.fromList((ArrayList) readValue(buffer)); case (byte) 138: - return PigeonSnapshotMetadata.fromList((ArrayList) readValue(buffer)); + return PigeonQuerySnapshot.fromList((ArrayList) readValue(buffer)); case (byte) 139: + return PigeonSnapshotMetadata.fromList((ArrayList) readValue(buffer)); + case (byte) 140: return PigeonTransactionCommand.fromList((ArrayList) readValue(buffer)); default: return super.readValueOfType(type, buffer); @@ -1543,38 +1636,41 @@ protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { if (value instanceof AggregateQuery) { stream.write(128); writeValue(stream, ((AggregateQuery) value).toList()); - } else if (value instanceof DocumentReferenceRequest) { + } else if (value instanceof AggregateQueryResponse) { stream.write(129); + writeValue(stream, ((AggregateQueryResponse) value).toList()); + } else if (value instanceof DocumentReferenceRequest) { + stream.write(130); writeValue(stream, ((DocumentReferenceRequest) value).toList()); } else if (value instanceof FirestorePigeonFirebaseApp) { - stream.write(130); + stream.write(131); writeValue(stream, ((FirestorePigeonFirebaseApp) value).toList()); } else if (value instanceof PigeonDocumentChange) { - stream.write(131); + stream.write(132); writeValue(stream, ((PigeonDocumentChange) value).toList()); } else if (value instanceof PigeonDocumentOption) { - stream.write(132); + stream.write(133); writeValue(stream, ((PigeonDocumentOption) value).toList()); } else if (value instanceof PigeonDocumentSnapshot) { - stream.write(133); + stream.write(134); writeValue(stream, ((PigeonDocumentSnapshot) value).toList()); } else if (value instanceof PigeonFirebaseSettings) { - stream.write(134); + stream.write(135); writeValue(stream, ((PigeonFirebaseSettings) value).toList()); } else if (value instanceof PigeonGetOptions) { - stream.write(135); + stream.write(136); writeValue(stream, ((PigeonGetOptions) value).toList()); } else if (value instanceof PigeonQueryParameters) { - stream.write(136); + stream.write(137); writeValue(stream, ((PigeonQueryParameters) value).toList()); } else if (value instanceof PigeonQuerySnapshot) { - stream.write(137); + stream.write(138); writeValue(stream, ((PigeonQuerySnapshot) value).toList()); } else if (value instanceof PigeonSnapshotMetadata) { - stream.write(138); + stream.write(139); writeValue(stream, ((PigeonSnapshotMetadata) value).toList()); } else if (value instanceof PigeonTransactionCommand) { - stream.write(139); + stream.write(140); writeValue(stream, ((PigeonTransactionCommand) value).toList()); } else { super.writeValue(stream, value); @@ -1669,7 +1765,7 @@ void aggregateQuery( @NonNull PigeonQueryParameters parameters, @NonNull AggregateSource source, @NonNull List queries, - @NonNull Result result); + @NonNull Result> result); void writeBatchCommit( @NonNull FirestorePigeonFirebaseApp app, @@ -2306,9 +2402,9 @@ public void error(Throwable error) { PigeonQueryParameters parametersArg = (PigeonQueryParameters) args.get(2); AggregateSource sourceArg = AggregateSource.values()[(int) args.get(3)]; List queriesArg = (List) args.get(4); - Result resultCallback = - new Result() { - public void success(Double result) { + Result> resultCallback = + new Result>() { + public void success(List result) { wrapped.add(0, result); reply.reply(wrapped); } diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m index 5ed4116eef5e..328468a50b82 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m @@ -174,6 +174,12 @@ + (nullable AggregateQuery *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end +@interface AggregateQueryResponse () ++ (AggregateQueryResponse *)fromList:(NSArray *)list; ++ (nullable AggregateQueryResponse *)nullableFromList:(NSArray *)list; +- (NSArray *)toList; +@end + @implementation PigeonFirebaseSettings + (instancetype)makeWithPersistenceEnabled:(nullable NSNumber *)persistenceEnabled host:(nullable NSString *)host @@ -561,17 +567,16 @@ - (NSArray *)toList { @end @implementation AggregateQuery -+ (instancetype)makeWithType:(AggregateType)type fieldPath:(NSString *)fieldPath { ++ (instancetype)makeWithType:(AggregateType)type field:(nullable NSString *)field { AggregateQuery *pigeonResult = [[AggregateQuery alloc] init]; pigeonResult.type = type; - pigeonResult.fieldPath = fieldPath; + pigeonResult.field = field; return pigeonResult; } + (AggregateQuery *)fromList:(NSArray *)list { AggregateQuery *pigeonResult = [[AggregateQuery alloc] init]; pigeonResult.type = [GetNullableObjectAtIndex(list, 0) integerValue]; - pigeonResult.fieldPath = GetNullableObjectAtIndex(list, 1); - NSAssert(pigeonResult.fieldPath != nil, @""); + pigeonResult.field = GetNullableObjectAtIndex(list, 1); return pigeonResult; } + (nullable AggregateQuery *)nullableFromList:(NSArray *)list { @@ -580,7 +585,37 @@ + (nullable AggregateQuery *)nullableFromList:(NSArray *)list { - (NSArray *)toList { return @[ @(self.type), - (self.fieldPath ?: [NSNull null]), + (self.field ?: [NSNull null]), + ]; +} +@end + +@implementation AggregateQueryResponse ++ (instancetype)makeWithType:(AggregateType)type + field:(nullable NSString *)field + value:(NSNumber *)value { + AggregateQueryResponse *pigeonResult = [[AggregateQueryResponse alloc] init]; + pigeonResult.type = type; + pigeonResult.field = field; + pigeonResult.value = value; + return pigeonResult; +} ++ (AggregateQueryResponse *)fromList:(NSArray *)list { + AggregateQueryResponse *pigeonResult = [[AggregateQueryResponse alloc] init]; + pigeonResult.type = [GetNullableObjectAtIndex(list, 0) integerValue]; + pigeonResult.field = GetNullableObjectAtIndex(list, 1); + pigeonResult.value = GetNullableObjectAtIndex(list, 2); + NSAssert(pigeonResult.value != nil, @""); + return pigeonResult; +} ++ (nullable AggregateQueryResponse *)nullableFromList:(NSArray *)list { + return (list) ? [AggregateQueryResponse fromList:list] : nil; +} +- (NSArray *)toList { + return @[ + @(self.type), + (self.field ?: [NSNull null]), + (self.value ?: [NSNull null]), ]; } @end @@ -593,26 +628,28 @@ - (nullable id)readValueOfType:(UInt8)type { case 128: return [AggregateQuery fromList:[self readValue]]; case 129: - return [DocumentReferenceRequest fromList:[self readValue]]; + return [AggregateQueryResponse fromList:[self readValue]]; case 130: - return [FirestorePigeonFirebaseApp fromList:[self readValue]]; + return [DocumentReferenceRequest fromList:[self readValue]]; case 131: - return [PigeonDocumentChange fromList:[self readValue]]; + return [FirestorePigeonFirebaseApp fromList:[self readValue]]; case 132: - return [PigeonDocumentOption fromList:[self readValue]]; + return [PigeonDocumentChange fromList:[self readValue]]; case 133: - return [PigeonDocumentSnapshot fromList:[self readValue]]; + return [PigeonDocumentOption fromList:[self readValue]]; case 134: - return [PigeonFirebaseSettings fromList:[self readValue]]; + return [PigeonDocumentSnapshot fromList:[self readValue]]; case 135: - return [PigeonGetOptions fromList:[self readValue]]; + return [PigeonFirebaseSettings fromList:[self readValue]]; case 136: - return [PigeonQueryParameters fromList:[self readValue]]; + return [PigeonGetOptions fromList:[self readValue]]; case 137: - return [PigeonQuerySnapshot fromList:[self readValue]]; + return [PigeonQueryParameters fromList:[self readValue]]; case 138: - return [PigeonSnapshotMetadata fromList:[self readValue]]; + return [PigeonQuerySnapshot fromList:[self readValue]]; case 139: + return [PigeonSnapshotMetadata fromList:[self readValue]]; + case 140: return [PigeonTransactionCommand fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -627,39 +664,42 @@ - (void)writeValue:(id)value { if ([value isKindOfClass:[AggregateQuery class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[DocumentReferenceRequest class]]) { + } else if ([value isKindOfClass:[AggregateQueryResponse class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FirestorePigeonFirebaseApp class]]) { + } else if ([value isKindOfClass:[DocumentReferenceRequest class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonDocumentChange class]]) { + } else if ([value isKindOfClass:[FirestorePigeonFirebaseApp class]]) { [self writeByte:131]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonDocumentOption class]]) { + } else if ([value isKindOfClass:[PigeonDocumentChange class]]) { [self writeByte:132]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonDocumentSnapshot class]]) { + } else if ([value isKindOfClass:[PigeonDocumentOption class]]) { [self writeByte:133]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonFirebaseSettings class]]) { + } else if ([value isKindOfClass:[PigeonDocumentSnapshot class]]) { [self writeByte:134]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonGetOptions class]]) { + } else if ([value isKindOfClass:[PigeonFirebaseSettings class]]) { [self writeByte:135]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonQueryParameters class]]) { + } else if ([value isKindOfClass:[PigeonGetOptions class]]) { [self writeByte:136]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonQuerySnapshot class]]) { + } else if ([value isKindOfClass:[PigeonQueryParameters class]]) { [self writeByte:137]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonSnapshotMetadata class]]) { + } else if ([value isKindOfClass:[PigeonQuerySnapshot class]]) { [self writeByte:138]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[PigeonTransactionCommand class]]) { + } else if ([value isKindOfClass:[PigeonSnapshotMetadata class]]) { [self writeByte:139]; [self writeValue:[value toList]]; + } else if ([value isKindOfClass:[PigeonTransactionCommand class]]) { + [self writeByte:140]; + [self writeValue:[value toList]]; } else { [super writeValue:value]; } @@ -1173,7 +1213,8 @@ void FirebaseFirestoreHostApiSetup(id binaryMessenger, parameters:arg_parameters source:arg_source queries:arg_queries - completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) { + completion:^(NSArray *_Nullable output, + FlutterError *_Nullable error) { callback(wrapResult(output, error)); }]; }]; diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h index ba3d15dcd658..f5d4878d3986 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h @@ -134,6 +134,7 @@ typedef NS_ENUM(NSUInteger, AggregateType) { @class DocumentReferenceRequest; @class PigeonQueryParameters; @class AggregateQuery; +@class AggregateQueryResponse; @interface PigeonFirebaseSettings : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. @@ -273,9 +274,20 @@ typedef NS_ENUM(NSUInteger, AggregateType) { @interface AggregateQuery : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithType:(AggregateType)type fieldPath:(NSString *)fieldPath; ++ (instancetype)makeWithType:(AggregateType)type field:(nullable NSString *)field; @property(nonatomic, assign) AggregateType type; -@property(nonatomic, copy) NSString *fieldPath; +@property(nonatomic, copy, nullable) NSString *field; +@end + +@interface AggregateQueryResponse : NSObject +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithType:(AggregateType)type + field:(nullable NSString *)field + value:(NSNumber *)value; +@property(nonatomic, assign) AggregateType type; +@property(nonatomic, copy, nullable) NSString *field; +@property(nonatomic, strong) NSNumber *value; @end /// The codec used by FirebaseFirestoreHostApi. @@ -344,7 +356,8 @@ NSObject *FirebaseFirestoreHostApiGetCodec(void); parameters:(PigeonQueryParameters *)parameters source:(AggregateSource)source queries:(NSArray *)queries - completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion; + completion:(void (^)(NSArray *_Nullable, + FlutterError *_Nullable))completion; - (void)writeBatchCommitApp:(FirestorePigeonFirebaseApp *)app writes:(NSArray *)writes completion:(void (^)(FlutterError *_Nullable))completion; diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp index cb74da04f2a9..39bd49e1a4c7 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp @@ -895,9 +895,12 @@ PigeonQueryParameters PigeonQueryParameters::FromEncodableList( // AggregateQuery +AggregateQuery::AggregateQuery(const AggregateType& type) : type_(type) {} + AggregateQuery::AggregateQuery(const AggregateType& type, - const std::string& field_path) - : type_(type), field_path_(field_path) {} + const std::string* field) + : type_(type), + field_(field ? std::optional(*field) : std::nullopt) {} const AggregateType& AggregateQuery::type() const { return type_; } @@ -905,23 +908,87 @@ void AggregateQuery::set_type(const AggregateType& value_arg) { type_ = value_arg; } -const std::string& AggregateQuery::field_path() const { return field_path_; } +const std::string* AggregateQuery::field() const { + return field_ ? &(*field_) : nullptr; +} + +void AggregateQuery::set_field(const std::string_view* value_arg) { + field_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} -void AggregateQuery::set_field_path(std::string_view value_arg) { - field_path_ = value_arg; +void AggregateQuery::set_field(std::string_view value_arg) { + field_ = value_arg; } EncodableList AggregateQuery::ToEncodableList() const { EncodableList list; list.reserve(2); list.push_back(EncodableValue((int)type_)); - list.push_back(EncodableValue(field_path_)); + list.push_back(field_ ? EncodableValue(*field_) : EncodableValue()); return list; } AggregateQuery AggregateQuery::FromEncodableList(const EncodableList& list) { - AggregateQuery decoded((AggregateType)(std::get(list[0])), - std::get(list[1])); + AggregateQuery decoded((AggregateType)(std::get(list[0]))); + auto& encodable_field = list[1]; + if (!encodable_field.IsNull()) { + decoded.set_field(std::get(encodable_field)); + } + return decoded; +} + +// AggregateQueryResponse + +AggregateQueryResponse::AggregateQueryResponse(const AggregateType& type, + double value) + : type_(type), value_(value) {} + +AggregateQueryResponse::AggregateQueryResponse(const AggregateType& type, + const std::string* field, + double value) + : type_(type), + field_(field ? std::optional(*field) : std::nullopt), + value_(value) {} + +const AggregateType& AggregateQueryResponse::type() const { return type_; } + +void AggregateQueryResponse::set_type(const AggregateType& value_arg) { + type_ = value_arg; +} + +const std::string* AggregateQueryResponse::field() const { + return field_ ? &(*field_) : nullptr; +} + +void AggregateQueryResponse::set_field(const std::string_view* value_arg) { + field_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void AggregateQueryResponse::set_field(std::string_view value_arg) { + field_ = value_arg; +} + +double AggregateQueryResponse::value() const { return value_; } + +void AggregateQueryResponse::set_value(double value_arg) { value_ = value_arg; } + +EncodableList AggregateQueryResponse::ToEncodableList() const { + EncodableList list; + list.reserve(3); + list.push_back(EncodableValue((int)type_)); + list.push_back(field_ ? EncodableValue(*field_) : EncodableValue()); + list.push_back(EncodableValue(value_)); + return list; +} + +AggregateQueryResponse AggregateQueryResponse::FromEncodableList( + const EncodableList& list) { + AggregateQueryResponse decoded((AggregateType)(std::get(list[0])), + std::get(list[2])); + auto& encodable_field = list[1]; + if (!encodable_field.IsNull()) { + decoded.set_field(std::get(encodable_field)); + } return decoded; } @@ -935,36 +1002,39 @@ EncodableValue FirebaseFirestoreHostApiCodecSerializer::ReadValueOfType( return CustomEncodableValue(AggregateQuery::FromEncodableList( std::get(ReadValue(stream)))); case 129: - return CustomEncodableValue(DocumentReferenceRequest::FromEncodableList( + return CustomEncodableValue(AggregateQueryResponse::FromEncodableList( std::get(ReadValue(stream)))); case 130: - return CustomEncodableValue(FirestorePigeonFirebaseApp::FromEncodableList( + return CustomEncodableValue(DocumentReferenceRequest::FromEncodableList( std::get(ReadValue(stream)))); case 131: - return CustomEncodableValue(PigeonDocumentChange::FromEncodableList( + return CustomEncodableValue(FirestorePigeonFirebaseApp::FromEncodableList( std::get(ReadValue(stream)))); case 132: - return CustomEncodableValue(PigeonDocumentOption::FromEncodableList( + return CustomEncodableValue(PigeonDocumentChange::FromEncodableList( std::get(ReadValue(stream)))); case 133: - return CustomEncodableValue(PigeonDocumentSnapshot::FromEncodableList( + return CustomEncodableValue(PigeonDocumentOption::FromEncodableList( std::get(ReadValue(stream)))); case 134: - return CustomEncodableValue(PigeonFirebaseSettings::FromEncodableList( + return CustomEncodableValue(PigeonDocumentSnapshot::FromEncodableList( std::get(ReadValue(stream)))); case 135: - return CustomEncodableValue(PigeonGetOptions::FromEncodableList( + return CustomEncodableValue(PigeonFirebaseSettings::FromEncodableList( std::get(ReadValue(stream)))); case 136: - return CustomEncodableValue(PigeonQueryParameters::FromEncodableList( + return CustomEncodableValue(PigeonGetOptions::FromEncodableList( std::get(ReadValue(stream)))); case 137: - return CustomEncodableValue(PigeonQuerySnapshot::FromEncodableList( + return CustomEncodableValue(PigeonQueryParameters::FromEncodableList( std::get(ReadValue(stream)))); case 138: - return CustomEncodableValue(PigeonSnapshotMetadata::FromEncodableList( + return CustomEncodableValue(PigeonQuerySnapshot::FromEncodableList( std::get(ReadValue(stream)))); case 139: + return CustomEncodableValue(PigeonSnapshotMetadata::FromEncodableList( + std::get(ReadValue(stream)))); + case 140: return CustomEncodableValue(PigeonTransactionCommand::FromEncodableList( std::get(ReadValue(stream)))); default: @@ -984,8 +1054,16 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( stream); return; } - if (custom_value->type() == typeid(DocumentReferenceRequest)) { + if (custom_value->type() == typeid(AggregateQueryResponse)) { stream->WriteByte(129); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); + return; + } + if (custom_value->type() == typeid(DocumentReferenceRequest)) { + stream->WriteByte(130); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -993,7 +1071,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(FirestorePigeonFirebaseApp)) { - stream->WriteByte(130); + stream->WriteByte(131); WriteValue(EncodableValue( std::any_cast(*custom_value) .ToEncodableList()), @@ -1001,7 +1079,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonDocumentChange)) { - stream->WriteByte(131); + stream->WriteByte(132); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1009,7 +1087,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonDocumentOption)) { - stream->WriteByte(132); + stream->WriteByte(133); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1017,7 +1095,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonDocumentSnapshot)) { - stream->WriteByte(133); + stream->WriteByte(134); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1025,7 +1103,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonFirebaseSettings)) { - stream->WriteByte(134); + stream->WriteByte(135); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1033,7 +1111,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonGetOptions)) { - stream->WriteByte(135); + stream->WriteByte(136); WriteValue( EncodableValue( std::any_cast(*custom_value).ToEncodableList()), @@ -1041,7 +1119,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonQueryParameters)) { - stream->WriteByte(136); + stream->WriteByte(137); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1049,7 +1127,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonQuerySnapshot)) { - stream->WriteByte(137); + stream->WriteByte(138); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1057,7 +1135,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonSnapshotMetadata)) { - stream->WriteByte(138); + stream->WriteByte(139); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1065,7 +1143,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } if (custom_value->type() == typeid(PigeonTransactionCommand)) { - stream->WriteByte(139); + stream->WriteByte(140); WriteValue( EncodableValue(std::any_cast(*custom_value) .ToEncodableList()), @@ -1960,7 +2038,7 @@ void FirebaseFirestoreHostApi::SetUp(flutter::BinaryMessenger* binary_messenger, std::get(encodable_queries_arg); api->AggregateQuery( app_arg, path_arg, parameters_arg, source_arg, queries_arg, - [reply](ErrorOr&& output) { + [reply](ErrorOr&& output) { if (output.has_error()) { reply(WrapError(output.error())); return; diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h index 86ffaa92224d..bf83c67511ed 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h @@ -523,15 +523,18 @@ class PigeonQueryParameters { // Generated class from Pigeon that represents data sent in messages. class AggregateQuery { public: + // Constructs an object setting all non-nullable fields. + explicit AggregateQuery(const AggregateType& type); + // Constructs an object setting all fields. - explicit AggregateQuery(const AggregateType& type, - const std::string& field_path); + explicit AggregateQuery(const AggregateType& type, const std::string* field); const AggregateType& type() const; void set_type(const AggregateType& value_arg); - const std::string& field_path() const; - void set_field_path(std::string_view value_arg); + const std::string* field() const; + void set_field(const std::string_view* value_arg); + void set_field(std::string_view value_arg); private: static AggregateQuery FromEncodableList(const flutter::EncodableList& list); @@ -539,7 +542,38 @@ class AggregateQuery { friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; AggregateType type_; - std::string field_path_; + std::optional field_; +}; + +// Generated class from Pigeon that represents data sent in messages. +class AggregateQueryResponse { + public: + // Constructs an object setting all non-nullable fields. + explicit AggregateQueryResponse(const AggregateType& type, double value); + + // Constructs an object setting all fields. + explicit AggregateQueryResponse(const AggregateType& type, + const std::string* field, double value); + + const AggregateType& type() const; + void set_type(const AggregateType& value_arg); + + const std::string* field() const; + void set_field(const std::string_view* value_arg); + void set_field(std::string_view value_arg); + + double value() const; + void set_value(double value_arg); + + private: + static AggregateQueryResponse FromEncodableList( + const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseFirestoreHostApi; + friend class FirebaseFirestoreHostApiCodecSerializer; + AggregateType type_; + std::optional field_; + double value_; }; class FirebaseFirestoreHostApiCodecSerializer @@ -636,7 +670,7 @@ class FirebaseFirestoreHostApi { const FirestorePigeonFirebaseApp& app, const std::string& path, const PigeonQueryParameters& parameters, const AggregateSource& source, const flutter::EncodableList& queries, - std::function reply)> result) = 0; + std::function reply)> result) = 0; virtual void WriteBatchCommit( const FirestorePigeonFirebaseApp& app, const flutter::EncodableList& writes, diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart index c32f93613063..60d744d38a2d 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart @@ -12,57 +12,92 @@ class MethodChannelAggregateQuery extends AggregateQueryPlatform { this._pigeonParameters, this._path, this._pigeonApp, + this._aggregateQueries, ) : super(query); final FirestorePigeonFirebaseApp _pigeonApp; final String _path; final PigeonQueryParameters _pigeonParameters; + final List _aggregateQueries; + @override Future get({ required AggregateSource source, }) async { - switch (aggregateType) { - case AggregateType.count: - return _getCount(source); - case AggregateType.sum: - return _getSum(source); - case AggregateType.average: - return _getAverage(source); - } - } + final data = + await MethodChannelFirebaseFirestore.pigeonChannel.aggregateQuery( + _pigeonApp, + _path, + _pigeonParameters, + source, + _aggregateQueries, + ); - Future _getCount( - AggregateSource source, - ) async { - final data = await MethodChannelFirebaseFirestore.pigeonChannel - .aggregateQueryCount(_pigeonApp, _path, _pigeonParameters, source); + int? count; + List sum = []; + List average = []; + for (final query in data) { + if (query == null) continue; + switch (query.type) { + case AggregateType.count: + count = query.value.toInt(); + break; + case AggregateType.sum: + sum.add(query); + break; + case AggregateType.average: + average.add(query); + break; + } + } return AggregateQuerySnapshotPlatform( - count: data.toInt(), - sum, + count: count, + sum: sum, + average: average, ); } - Future _getSum( - AggregateSource source, - ) async { - final data = await MethodChannelFirebaseFirestore.pigeonChannel - .aggregateQuerySum(_pigeonApp, _path, _pigeonParameters, source); - - return AggregateQuerySnapshotPlatform( - sum: data, + @override + AggregateQueryPlatform count() { + return MethodChannelAggregateQuery( + query, + _pigeonParameters, + _path, + _pigeonApp, + [ + ..._aggregateQueries, + AggregateQuery(type: AggregateType.count), + ], ); } - Future _getAverage( - AggregateSource source, - ) async { - final data = await MethodChannelFirebaseFirestore.pigeonChannel - .aggregateQueryAverage(_pigeonApp, _path, _pigeonParameters, source); + @override + AggregateQueryPlatform sum(String field) { + return MethodChannelAggregateQuery( + query, + _pigeonParameters, + _path, + _pigeonApp, + [ + ..._aggregateQueries, + AggregateQuery(type: AggregateType.sum, field: field), + ], + ); + } - return AggregateQuerySnapshotPlatform( - average: data, + @override + AggregateQueryPlatform average(String field) { + return MethodChannelAggregateQuery( + query, + _pigeonParameters, + _path, + _pigeonApp, + [ + ..._aggregateQueries, + AggregateQuery(type: AggregateType.average, field: field), + ], ); } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart index 6fbed8928e94..10e5c176e207 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart @@ -272,6 +272,43 @@ class MethodChannelQuery extends QueryPlatform { _pigeonParameters, _pointer.path, pigeonApp, + [ + AggregateQuery( + type: AggregateType.count, + ) + ], + ); + } + + @override + AggregateQueryPlatform sum(String field) { + return MethodChannelAggregateQuery( + this, + _pigeonParameters, + _pointer.path, + pigeonApp, + [ + AggregateQuery( + type: AggregateType.sum, + field: field, + ) + ], + ); + } + + @override + AggregateQueryPlatform average(String field) { + return MethodChannelAggregateQuery( + this, + _pigeonParameters, + _pointer.path, + pigeonApp, + [ + AggregateQuery( + type: AggregateType.average, + field: field, + ) + ], ); } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart index c0a5759df9ae..3a8ecf462715 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart @@ -477,17 +477,17 @@ class PigeonQueryParameters { class AggregateQuery { AggregateQuery({ required this.type, - required this.fieldPath, + this.field, }); AggregateType type; - String fieldPath; + String? field; Object encode() { return [ type.index, - fieldPath, + field, ]; } @@ -495,7 +495,38 @@ class AggregateQuery { result as List; return AggregateQuery( type: AggregateType.values[result[0]! as int], - fieldPath: result[1]! as String, + field: result[1] as String?, + ); + } +} + +class AggregateQueryResponse { + AggregateQueryResponse({ + required this.type, + this.field, + required this.value, + }); + + AggregateType type; + + String? field; + + double value; + + Object encode() { + return [ + type.index, + field, + value, + ]; + } + + static AggregateQueryResponse decode(Object result) { + result as List; + return AggregateQueryResponse( + type: AggregateType.values[result[0]! as int], + field: result[1] as String?, + value: result[2]! as double, ); } } @@ -507,39 +538,42 @@ class _FirebaseFirestoreHostApiCodec extends StandardMessageCodec { if (value is AggregateQuery) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is DocumentReferenceRequest) { + } else if (value is AggregateQueryResponse) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is FirestorePigeonFirebaseApp) { + } else if (value is DocumentReferenceRequest) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentChange) { + } else if (value is FirestorePigeonFirebaseApp) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentOption) { + } else if (value is PigeonDocumentChange) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentSnapshot) { + } else if (value is PigeonDocumentOption) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is PigeonFirebaseSettings) { + } else if (value is PigeonDocumentSnapshot) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is PigeonGetOptions) { + } else if (value is PigeonFirebaseSettings) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is PigeonQueryParameters) { + } else if (value is PigeonGetOptions) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is PigeonQuerySnapshot) { + } else if (value is PigeonQueryParameters) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is PigeonSnapshotMetadata) { + } else if (value is PigeonQuerySnapshot) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is PigeonTransactionCommand) { + } else if (value is PigeonSnapshotMetadata) { buffer.putUint8(139); writeValue(buffer, value.encode()); + } else if (value is PigeonTransactionCommand) { + buffer.putUint8(140); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -551,26 +585,28 @@ class _FirebaseFirestoreHostApiCodec extends StandardMessageCodec { case 128: return AggregateQuery.decode(readValue(buffer)!); case 129: - return DocumentReferenceRequest.decode(readValue(buffer)!); + return AggregateQueryResponse.decode(readValue(buffer)!); case 130: - return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); + return DocumentReferenceRequest.decode(readValue(buffer)!); case 131: - return PigeonDocumentChange.decode(readValue(buffer)!); + return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); case 132: - return PigeonDocumentOption.decode(readValue(buffer)!); + return PigeonDocumentChange.decode(readValue(buffer)!); case 133: - return PigeonDocumentSnapshot.decode(readValue(buffer)!); + return PigeonDocumentOption.decode(readValue(buffer)!); case 134: - return PigeonFirebaseSettings.decode(readValue(buffer)!); + return PigeonDocumentSnapshot.decode(readValue(buffer)!); case 135: - return PigeonGetOptions.decode(readValue(buffer)!); + return PigeonFirebaseSettings.decode(readValue(buffer)!); case 136: - return PigeonQueryParameters.decode(readValue(buffer)!); + return PigeonGetOptions.decode(readValue(buffer)!); case 137: - return PigeonQuerySnapshot.decode(readValue(buffer)!); + return PigeonQueryParameters.decode(readValue(buffer)!); case 138: - return PigeonSnapshotMetadata.decode(readValue(buffer)!); + return PigeonQuerySnapshot.decode(readValue(buffer)!); case 139: + return PigeonSnapshotMetadata.decode(readValue(buffer)!); + case 140: return PigeonTransactionCommand.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1066,7 +1102,7 @@ class FirebaseFirestoreHostApi { } } - Future aggregateQuery( + Future> aggregateQuery( FirestorePigeonFirebaseApp arg_app, String arg_path, PigeonQueryParameters arg_parameters, @@ -1100,7 +1136,7 @@ class FirebaseFirestoreHostApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyList[0] as double?)!; + return (replyList[0] as List?)!.cast(); } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart index e5b1085e7f21..b42e55710666 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart @@ -6,21 +6,13 @@ import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import '../../cloud_firestore_platform_interface.dart'; -enum AggregateType { - count, - sum, - average, -} - /// [AggregateQueryPlatform] represents the data at a particular location for retrieving metadata /// without retrieving the actual documents. abstract class AggregateQueryPlatform extends PlatformInterface { - AggregateQueryPlatform(this.query, this.aggregateType) : super(token: _token); + AggregateQueryPlatform(this.query) : super(token: _token); static final Object _token = Object(); - final AggregateType aggregateType; - /// Throws an [AssertionError] if [instance] does not extend /// [AggregateQueryPlatform]. /// @@ -40,4 +32,21 @@ abstract class AggregateQueryPlatform extends PlatformInterface { }) async { throw UnimplementedError('get() is not implemented'); } + + /// Returns an [AggregateQuerySnapshotPlatform] with the count of the documents that match the query. + AggregateQueryPlatform count() { + throw UnimplementedError('count() is not implemented'); + } + + /// Returns an [AggregateQuerySnapshotPlatform] with the sum of the values of the documents that match the query. + AggregateQueryPlatform sum( + String field, + ) { + throw UnimplementedError('sum() is not implemented'); + } + + /// Returns an [AggregateQuerySnapshotPlatform] with the average of the values of the documents that match the query. + AggregateQueryPlatform average(String field) { + throw UnimplementedError('average() is not implemented'); + } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart index 0a345dc462b2..7d4f938773e3 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart @@ -2,14 +2,16 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart'; +import 'package:collection/collection.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; /// [AggregateQuerySnapshotPlatform] represents a response to an [AggregateQueryPlatform] request. class AggregateQuerySnapshotPlatform extends PlatformInterface { AggregateQuerySnapshotPlatform({ required int? count, - required Map? sum, - required Map? average, + required List sum, + required List average, }) : _count = count, _sum = sum, _average = average, @@ -29,28 +31,24 @@ class AggregateQuerySnapshotPlatform extends PlatformInterface { final int? _count; - final Map? _average; + final List _average; - final Map? _sum; + final List _sum; /// Returns the count of the documents that match the query. int? get count => _count; /// Returns the average of the documents that match the query. /// The key is the field name and the value is the average. - double getAverage(String field) { - if (_average == null) { - throw 'This query does not have an average for $field.'; - } - return _average![field]!; + double? getAverage(String field) { + return _average + .firstWhereOrNull((element) => element.field == field) + ?.value; } /// Returns the sum of the documents that match the query. /// The key is the field name and the value is the sum. - double getSum(String field) { - if (_sum == null) { - throw 'This query does not have a sum for $field.'; - } - return _sum![field]!; + double? getSum(String field) { + return _sum.firstWhereOrNull((element) => element.field == field)?.value; } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart index 45dc344c3ba5..bd01b65aefd1 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart @@ -238,4 +238,16 @@ abstract class QueryPlatform extends PlatformInterface { AggregateQueryPlatform count() { throw UnimplementedError('count() is not implemented'); } + + /// Returns an [AggregateQueryPlatform] which uses the [QueryPlatform] to query for + /// metadata + AggregateQueryPlatform sum(String field) { + throw UnimplementedError('sum() is not implemented'); + } + + /// Returns an [AggregateQueryPlatform] which uses the [QueryPlatform] to query for + /// metadata + AggregateQueryPlatform average(String field) { + throw UnimplementedError('average() is not implemented'); + } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart index 3d31f1edcf97..1ef203c07016 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart @@ -249,11 +249,23 @@ enum AggregateType { class AggregateQuery { const AggregateQuery({ required this.type, - required this.fieldPath, + required this.field, }); final AggregateType type; - final String fieldPath; + final String? field; +} + +class AggregateQueryResponse { + const AggregateQueryResponse({ + required this.type, + required this.value, + required this.field, + }); + + final AggregateType type; + final String? field; + final double value; } @HostApi(dartHostTestHandler: 'TestFirebaseFirestoreHostApi') @@ -367,7 +379,7 @@ abstract class FirebaseFirestoreHostApi { ); @async - double aggregateQuery( + List aggregateQuery( FirestorePigeonFirebaseApp app, String path, PigeonQueryParameters parameters, diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart index 09589d089f0f..f85f6537cd28 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart @@ -20,39 +20,42 @@ class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec { if (value is AggregateQuery) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is DocumentReferenceRequest) { + } else if (value is AggregateQueryResponse) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is FirestorePigeonFirebaseApp) { + } else if (value is DocumentReferenceRequest) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentChange) { + } else if (value is FirestorePigeonFirebaseApp) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentOption) { + } else if (value is PigeonDocumentChange) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is PigeonDocumentSnapshot) { + } else if (value is PigeonDocumentOption) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is PigeonFirebaseSettings) { + } else if (value is PigeonDocumentSnapshot) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is PigeonGetOptions) { + } else if (value is PigeonFirebaseSettings) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is PigeonQueryParameters) { + } else if (value is PigeonGetOptions) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is PigeonQuerySnapshot) { + } else if (value is PigeonQueryParameters) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is PigeonSnapshotMetadata) { + } else if (value is PigeonQuerySnapshot) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is PigeonTransactionCommand) { + } else if (value is PigeonSnapshotMetadata) { buffer.putUint8(139); writeValue(buffer, value.encode()); + } else if (value is PigeonTransactionCommand) { + buffer.putUint8(140); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -64,26 +67,28 @@ class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec { case 128: return AggregateQuery.decode(readValue(buffer)!); case 129: - return DocumentReferenceRequest.decode(readValue(buffer)!); + return AggregateQueryResponse.decode(readValue(buffer)!); case 130: - return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); + return DocumentReferenceRequest.decode(readValue(buffer)!); case 131: - return PigeonDocumentChange.decode(readValue(buffer)!); + return FirestorePigeonFirebaseApp.decode(readValue(buffer)!); case 132: - return PigeonDocumentOption.decode(readValue(buffer)!); + return PigeonDocumentChange.decode(readValue(buffer)!); case 133: - return PigeonDocumentSnapshot.decode(readValue(buffer)!); + return PigeonDocumentOption.decode(readValue(buffer)!); case 134: - return PigeonFirebaseSettings.decode(readValue(buffer)!); + return PigeonDocumentSnapshot.decode(readValue(buffer)!); case 135: - return PigeonGetOptions.decode(readValue(buffer)!); + return PigeonFirebaseSettings.decode(readValue(buffer)!); case 136: - return PigeonQueryParameters.decode(readValue(buffer)!); + return PigeonGetOptions.decode(readValue(buffer)!); case 137: - return PigeonQuerySnapshot.decode(readValue(buffer)!); + return PigeonQueryParameters.decode(readValue(buffer)!); case 138: - return PigeonSnapshotMetadata.decode(readValue(buffer)!); + return PigeonQuerySnapshot.decode(readValue(buffer)!); case 139: + return PigeonSnapshotMetadata.decode(readValue(buffer)!); + case 140: return PigeonTransactionCommand.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -149,7 +154,7 @@ abstract class TestFirebaseFirestoreHostApi { PigeonQueryParameters parameters, PigeonGetOptions options); - Future aggregateQuery( + Future> aggregateQuery( FirestorePigeonFirebaseApp app, String path, PigeonQueryParameters parameters, @@ -702,7 +707,7 @@ abstract class TestFirebaseFirestoreHostApi { (args[4] as List?)?.cast(); assert(arg_queries != null, 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null List.'); - final double output = await api.aggregateQuery( + final List output = await api.aggregateQuery( arg_app!, arg_path!, arg_parameters!, arg_source!, arg_queries!); return [output]; }); From 3579e3c63055f8c5f14bc4397f1bfa80087f5ae6 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 23 Oct 2023 11:59:02 +0200 Subject: [PATCH 03/25] ready android --- .../FlutterFirebaseFirestorePlugin.java | 91 +++++++++++++++---- .../GeneratedAndroidFirebaseFirestore.java | 8 +- .../firebase_core/android/gradle.properties | 2 +- 3 files changed, 78 insertions(+), 23 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java index bd4e2526397e..97d34de73a79 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java @@ -4,6 +4,11 @@ package io.flutter.plugins.firebase.firestore; +import static com.google.firebase.firestore.AggregateField.average; +import static com.google.firebase.firestore.AggregateField.count; +import static com.google.firebase.firestore.AggregateField.sum; + +import android.annotation.SuppressLint; import android.app.Activity; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -11,6 +16,7 @@ import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; import com.google.firebase.FirebaseApp; +import com.google.firebase.firestore.AggregateField; import com.google.firebase.firestore.AggregateQuery; import com.google.firebase.firestore.AggregateQuerySnapshot; import com.google.firebase.firestore.DocumentReference; @@ -724,28 +730,77 @@ public void queryGet( }); } + @SuppressLint("RestrictedApi") @Override - public void aggregateQueryCount( - @NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, - @NonNull String path, - @NonNull GeneratedAndroidFirebaseFirestore.PigeonQueryParameters parameters, - @NonNull GeneratedAndroidFirebaseFirestore.AggregateSource source, - @NonNull GeneratedAndroidFirebaseFirestore.Result result) { + public void aggregateQuery(@NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull GeneratedAndroidFirebaseFirestore.PigeonQueryParameters parameters, @NonNull GeneratedAndroidFirebaseFirestore.AggregateSource source, @NonNull List queries, @NonNull GeneratedAndroidFirebaseFirestore.Result> result) { + Query query = + PigeonParser.parseQuery(getFirestoreFromPigeon(app), path, false, parameters); + + AggregateQuery aggregateQuery; + ArrayList aggregateFields = new ArrayList<>(); + + for (GeneratedAndroidFirebaseFirestore.AggregateQuery queryRequest : queries) { + switch (queryRequest.getType()) { + case COUNT: + aggregateFields.add(count()); + break; + case SUM: + assert queryRequest.getField() != null; + aggregateFields.add(sum(queryRequest.getField())); + break; + case AVERAGE: + assert queryRequest.getField() != null; + aggregateFields.add(average(queryRequest.getField())); + break; + } + } + + aggregateQuery = query.aggregate(aggregateFields.get(0), aggregateFields.subList(1, aggregateFields.size()).toArray(new AggregateField[0])); + cachedThreadPool.execute( - () -> { - try { - Query query = - PigeonParser.parseQuery(getFirestoreFromPigeon(app), path, false, parameters); - AggregateQuery aggregateQuery = query.count(); - AggregateQuerySnapshot aggregateQuerySnapshot = - Tasks.await(aggregateQuery.get(PigeonParser.parseAggregateSource(source))); - result.success((double) aggregateQuerySnapshot.getCount()); - } catch (Exception e) { - ExceptionConverter.sendErrorToFlutter(result, e); + () -> { + try { + AggregateQuerySnapshot aggregateQuerySnapshot = + Tasks.await(aggregateQuery.get(PigeonParser.parseAggregateSource(source))); + + ArrayList aggregateResponse = new ArrayList<>(); + for (GeneratedAndroidFirebaseFirestore.AggregateQuery queryRequest : queries) { + switch (queryRequest.getType()) { + case COUNT: + GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builder = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); + builder.setType(GeneratedAndroidFirebaseFirestore.AggregateType.COUNT); + builder.setValue((double) aggregateQuerySnapshot.getCount()); + + aggregateResponse.add(builder.build()); + break; + case SUM: + assert queryRequest.getField() != null; + GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderSum = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); + builderSum.setType(GeneratedAndroidFirebaseFirestore.AggregateType.SUM); + builderSum.setValue((Double) Objects.requireNonNull(aggregateQuerySnapshot.get(sum(queryRequest.getField())))); + builderSum.setField(queryRequest.getField()); + + aggregateResponse.add(builderSum.build()); + break; + case AVERAGE: + assert queryRequest.getField() != null; + GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderAverage = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); + builderAverage.setType(GeneratedAndroidFirebaseFirestore.AggregateType.AVERAGE); + builderAverage.setValue(Objects.requireNonNull(aggregateQuerySnapshot.get(average(queryRequest.getField())))); + builderAverage.setField(queryRequest.getField()); + + aggregateResponse.add(builderAverage.build()); + break; + } } - }); - } + result.success(aggregateResponse); + } catch (Exception e) { + ExceptionConverter.sendErrorToFlutter(result, e); + } + }); + + } @Override public void writeBatchCommit( @NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java index 56a96702e29a..26ae99d62bf1 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java @@ -468,7 +468,7 @@ public static final class Builder { } @NonNull - ArrayList toList() { + public ArrayList toList() { ArrayList toListResult = new ArrayList(2); toListResult.add(hasPendingWrites); toListResult.add(isFromCache); @@ -559,7 +559,7 @@ public static final class Builder { } @NonNull - ArrayList toList() { + public ArrayList toList() { ArrayList toListResult = new ArrayList(3); toListResult.add(path); toListResult.add(data); @@ -680,7 +680,7 @@ public static final class Builder { } @NonNull - ArrayList toList() { + public ArrayList toList() { ArrayList toListResult = new ArrayList(4); toListResult.add(type == null ? null : type.index); toListResult.add((document == null) ? null : document.toList()); @@ -1591,7 +1591,7 @@ public interface Result { void error(@NonNull Throwable error); } - private static class FirebaseFirestoreHostApiCodec extends StandardMessageCodec { + private static class FirebaseFirestoreHostApiCodec extends FlutterFirebaseFirestoreMessageCodec { public static final FirebaseFirestoreHostApiCodec INSTANCE = new FirebaseFirestoreHostApiCodec(); diff --git a/packages/firebase_core/firebase_core/android/gradle.properties b/packages/firebase_core/firebase_core/android/gradle.properties index 340204ceb988..8feb4844c3f9 100644 --- a/packages/firebase_core/firebase_core/android/gradle.properties +++ b/packages/firebase_core/firebase_core/android/gradle.properties @@ -1,2 +1,2 @@ # https://firebase.google.com/support/release-notes/android -FirebaseSDKVersion=32.3.1 +FirebaseSDKVersion=32.4.0 From 94754181367069994e399d057e44d6fd5b5933ef Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 23 Oct 2023 15:30:37 +0200 Subject: [PATCH 04/25] query ready for Android --- .../cloud_firestore/example/lib/main.dart | 24 ++++++++++++++ .../lib/src/aggregate_query.dart | 20 ++++++++++++ .../lib/src/aggregate_query_snapshot.dart | 8 ++++- .../cloud_firestore/lib/src/query.dart | 32 +++++++++++++++++++ .../lib/src/aggregate_query_web.dart | 6 +++- 5 files changed, 88 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index de0de2122efe..aa0c631e421b 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -20,6 +20,30 @@ Future main() async { FirebaseFirestore.instance.useFirestoreEmulator('localhost', 8080); } + // Count the number of movies + final count = await FirebaseFirestore.instance + .collection('firestore-example-app') + .count() + .get(); + + print('Count: ${count.count}'); + + // Average the number of likes + final average = await FirebaseFirestore.instance + .collection('firestore-example-app') + .average('likes') + .get(); + + print('Average: $average'); + + // Sum the number of likes + final sum = await FirebaseFirestore.instance + .collection('firestore-example-app') + .sum('likes') + .get(); + + print('Sum: $sum'); + runApp(FirestoreExampleApp()); } diff --git a/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart b/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart index e356a37ec07d..a4f9b7b6097a 100644 --- a/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart @@ -23,4 +23,24 @@ class AggregateQuery { }) async { return AggregateQuerySnapshot._(await _delegate.get(source: source), query); } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + AggregateQuery count() { + return AggregateQuery._(_delegate.count(), query); + } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + AggregateQuery sum( + String field, + ) { + return AggregateQuery._(_delegate.sum(field), query); + } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + AggregateQuery average(String field) { + return AggregateQuery._(_delegate.average(field), query); + } } diff --git a/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query_snapshot.dart b/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query_snapshot.dart index be3d3c612b61..af9aa5db1ac6 100644 --- a/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query_snapshot.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query_snapshot.dart @@ -16,5 +16,11 @@ class AggregateQuerySnapshot { final Query query; /// Returns the count of the documents that match the query. - int get count => _delegate.count; + int? get count => _delegate.count; + + /// Returns the sum of the values of the documents that match the query. + double? getSum(String field) => _delegate.getSum(field); + + /// Returns the average of the values of the documents that match the query. + double? getAverage(String field) => _delegate.getAverage(field); } diff --git a/packages/cloud_firestore/cloud_firestore/lib/src/query.dart b/packages/cloud_firestore/cloud_firestore/lib/src/query.dart index 0ea4d95cfb6a..649e993e6850 100644 --- a/packages/cloud_firestore/cloud_firestore/lib/src/query.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/src/query.dart @@ -188,6 +188,10 @@ abstract class Query { }); AggregateQuery count(); + + AggregateQuery sum(String field); + + AggregateQuery average(String field); } /// Represents a [Query] over the data at a particular location. @@ -844,6 +848,20 @@ class _JsonQuery implements Query> { AggregateQuery count() { return AggregateQuery._(_delegate.count(), this); } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + @override + AggregateQuery sum(String field) { + return AggregateQuery._(_delegate.sum(field), this); + } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + @override + AggregateQuery average(String field) { + return AggregateQuery._(_delegate.average(field), this); + } } class _WithConverterQuery implements Query { @@ -1013,4 +1031,18 @@ class _WithConverterQuery implements Query { AggregateQuery count() { return _originalQuery.count(); } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + @override + AggregateQuery sum(String field) { + return _originalQuery.sum(field); + } + + /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata + /// without retrieving the actual documents. + @override + AggregateQuery average(String field) { + return _originalQuery.average(field); + } } diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart index 63d3ee40074c..afbed037c69e 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart @@ -25,6 +25,10 @@ class AggregateQueryWeb extends AggregateQueryPlatform { // Note: There isn't a source option on the web platform firestore_interop.AggregateQuerySnapshot snapshot = await _delegate.get(); - return AggregateQuerySnapshotPlatform(count: snapshot.count); + return AggregateQuerySnapshotPlatform( + count: snapshot.count, + sum: [], + average: [], + ); } } From b115576bc55fea27a38d63ab0718c9af7a4895ef Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 3 Nov 2023 09:57:11 +0100 Subject: [PATCH 05/25] androidx --- .../firebase/firestore/FlutterFirebaseFirestorePlugin.java | 4 ++-- .../firebase_core/firebase_core/android/gradle.properties | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java index 97d34de73a79..5f722678e3a7 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java @@ -730,7 +730,6 @@ public void queryGet( }); } - @SuppressLint("RestrictedApi") @Override public void aggregateQuery(@NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull GeneratedAndroidFirebaseFirestore.PigeonQueryParameters parameters, @NonNull GeneratedAndroidFirebaseFirestore.AggregateSource source, @NonNull List queries, @NonNull GeneratedAndroidFirebaseFirestore.Result> result) { Query query = @@ -755,6 +754,7 @@ public void aggregateQuery(@NonNull GeneratedAndroidFirebaseFirestore.FirestoreP } } + assert query != null; aggregateQuery = query.aggregate(aggregateFields.get(0), aggregateFields.subList(1, aggregateFields.size()).toArray(new AggregateField[0])); cachedThreadPool.execute( @@ -777,7 +777,7 @@ public void aggregateQuery(@NonNull GeneratedAndroidFirebaseFirestore.FirestoreP assert queryRequest.getField() != null; GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderSum = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); builderSum.setType(GeneratedAndroidFirebaseFirestore.AggregateType.SUM); - builderSum.setValue((Double) Objects.requireNonNull(aggregateQuerySnapshot.get(sum(queryRequest.getField())))); + builderSum.setValue(((Number) Objects.requireNonNull(aggregateQuerySnapshot.get(sum(queryRequest.getField())))).doubleValue()); builderSum.setField(queryRequest.getField()); aggregateResponse.add(builderSum.build()); diff --git a/packages/firebase_core/firebase_core/android/gradle.properties b/packages/firebase_core/firebase_core/android/gradle.properties index 8feb4844c3f9..cbda9e3a118d 100644 --- a/packages/firebase_core/firebase_core/android/gradle.properties +++ b/packages/firebase_core/firebase_core/android/gradle.properties @@ -1,2 +1,2 @@ # https://firebase.google.com/support/release-notes/android -FirebaseSDKVersion=32.4.0 +FirebaseSDKVersion=32.4.1 From cbad6262b29782023b023ea3390b73a29841c57f Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 3 Nov 2023 14:36:11 +0100 Subject: [PATCH 06/25] fix codec --- .../lib/src/pigeon/messages.pigeon.dart | 281 ++++++++++-------- 1 file changed, 165 insertions(+), 116 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart index 3a8ecf462715..e734985d750d 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart @@ -8,6 +8,7 @@ import 'dart:async'; import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; +import 'package:cloud_firestore_platform_interface/src/method_channel/utils/firestore_message_codec.dart'; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; @@ -531,7 +532,7 @@ class AggregateQueryResponse { } } -class _FirebaseFirestoreHostApiCodec extends StandardMessageCodec { +class _FirebaseFirestoreHostApiCodec extends FirestoreMessageCodec { const _FirebaseFirestoreHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -625,11 +626,14 @@ class FirebaseFirestoreHostApi { static const MessageCodec codec = _FirebaseFirestoreHostApiCodec(); Future loadBundle( - FirestorePigeonFirebaseApp arg_app, Uint8List arg_bundle) async { + FirestorePigeonFirebaseApp arg_app, + Uint8List arg_bundle, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_bundle]) as List?; if (replyList == null) { @@ -653,12 +657,16 @@ class FirebaseFirestoreHostApi { } } - Future namedQueryGet(FirestorePigeonFirebaseApp arg_app, - String arg_name, PigeonGetOptions arg_options) async { + Future namedQueryGet( + FirestorePigeonFirebaseApp arg_app, + String arg_name, + PigeonGetOptions arg_options, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel .send([arg_app, arg_name, arg_options]) as List?; if (replyList == null) { @@ -684,9 +692,10 @@ class FirebaseFirestoreHostApi { Future clearPersistence(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -707,9 +716,10 @@ class FirebaseFirestoreHostApi { Future disableNetwork(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -730,9 +740,10 @@ class FirebaseFirestoreHostApi { Future enableNetwork(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -753,9 +764,10 @@ class FirebaseFirestoreHostApi { Future terminate(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -776,9 +788,10 @@ class FirebaseFirestoreHostApi { Future waitForPendingWrites(FirestorePigeonFirebaseApp arg_app) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -798,11 +811,14 @@ class FirebaseFirestoreHostApi { } Future setIndexConfiguration( - FirestorePigeonFirebaseApp arg_app, String arg_indexConfiguration) async { + FirestorePigeonFirebaseApp arg_app, + String arg_indexConfiguration, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel .send([arg_app, arg_indexConfiguration]) as List?; if (replyList == null) { @@ -823,9 +839,10 @@ class FirebaseFirestoreHostApi { Future setLoggingEnabled(bool arg_loggingEnabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_loggingEnabled]) as List?; if (replyList == null) { @@ -845,11 +862,13 @@ class FirebaseFirestoreHostApi { } Future snapshotsInSyncSetup( - FirestorePigeonFirebaseApp arg_app) async { + FirestorePigeonFirebaseApp arg_app, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app]) as List?; if (replyList == null) { @@ -873,12 +892,16 @@ class FirebaseFirestoreHostApi { } } - Future transactionCreate(FirestorePigeonFirebaseApp arg_app, - int arg_timeout, int arg_maxAttempts) async { + Future transactionCreate( + FirestorePigeonFirebaseApp arg_app, + int arg_timeout, + int arg_maxAttempts, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_timeout, arg_maxAttempts]) as List?; @@ -904,16 +927,18 @@ class FirebaseFirestoreHostApi { } Future transactionStoreResult( - String arg_transactionId, - PigeonTransactionResult arg_resultType, - List? arg_commands) async { + String arg_transactionId, + PigeonTransactionResult arg_resultType, + List? arg_commands, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send( - [arg_transactionId, arg_resultType.index, arg_commands]) - as List?; + [arg_transactionId, arg_resultType.index, arg_commands], + ) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -931,13 +956,15 @@ class FirebaseFirestoreHostApi { } Future transactionGet( - FirestorePigeonFirebaseApp arg_app, - String arg_transactionId, - String arg_path) async { + FirestorePigeonFirebaseApp arg_app, + String arg_transactionId, + String arg_path, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_transactionId, arg_path]) as List?; @@ -962,12 +989,15 @@ class FirebaseFirestoreHostApi { } } - Future documentReferenceSet(FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request) async { + Future documentReferenceSet( + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -986,12 +1016,15 @@ class FirebaseFirestoreHostApi { } } - Future documentReferenceUpdate(FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request) async { + Future documentReferenceUpdate( + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -1011,12 +1044,14 @@ class FirebaseFirestoreHostApi { } Future documentReferenceGet( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request) async { + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -1040,12 +1075,15 @@ class FirebaseFirestoreHostApi { } } - Future documentReferenceDelete(FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_request) async { + Future documentReferenceDelete( + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_request, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_request]) as List?; if (replyList == null) { @@ -1065,21 +1103,23 @@ class FirebaseFirestoreHostApi { } Future queryGet( - FirestorePigeonFirebaseApp arg_app, - String arg_path, - bool arg_isCollectionGroup, - PigeonQueryParameters arg_parameters, - PigeonGetOptions arg_options) async { + FirestorePigeonFirebaseApp arg_app, + String arg_path, + bool arg_isCollectionGroup, + PigeonQueryParameters arg_parameters, + PigeonGetOptions arg_options, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([ arg_app, arg_path, arg_isCollectionGroup, arg_parameters, - arg_options + arg_options, ]) as List?; if (replyList == null) { throw PlatformException( @@ -1103,21 +1143,23 @@ class FirebaseFirestoreHostApi { } Future> aggregateQuery( - FirestorePigeonFirebaseApp arg_app, - String arg_path, - PigeonQueryParameters arg_parameters, - AggregateSource arg_source, - List arg_queries) async { + FirestorePigeonFirebaseApp arg_app, + String arg_path, + PigeonQueryParameters arg_parameters, + AggregateSource arg_source, + List arg_queries, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([ arg_app, arg_path, arg_parameters, arg_source.index, - arg_queries + arg_queries, ]) as List?; if (replyList == null) { throw PlatformException( @@ -1140,12 +1182,15 @@ class FirebaseFirestoreHostApi { } } - Future writeBatchCommit(FirestorePigeonFirebaseApp arg_app, - List arg_writes) async { + Future writeBatchCommit( + FirestorePigeonFirebaseApp arg_app, + List arg_writes, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([arg_app, arg_writes]) as List?; if (replyList == null) { @@ -1165,23 +1210,25 @@ class FirebaseFirestoreHostApi { } Future querySnapshot( - FirestorePigeonFirebaseApp arg_app, - String arg_path, - bool arg_isCollectionGroup, - PigeonQueryParameters arg_parameters, - PigeonGetOptions arg_options, - bool arg_includeMetadataChanges) async { + FirestorePigeonFirebaseApp arg_app, + String arg_path, + bool arg_isCollectionGroup, + PigeonQueryParameters arg_parameters, + PigeonGetOptions arg_options, + bool arg_includeMetadataChanges, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send([ arg_app, arg_path, arg_isCollectionGroup, arg_parameters, arg_options, - arg_includeMetadataChanges + arg_includeMetadataChanges, ]) as List?; if (replyList == null) { throw PlatformException( @@ -1205,16 +1252,18 @@ class FirebaseFirestoreHostApi { } Future documentReferenceSnapshot( - FirestorePigeonFirebaseApp arg_app, - DocumentReferenceRequest arg_parameters, - bool arg_includeMetadataChanges) async { + FirestorePigeonFirebaseApp arg_app, + DocumentReferenceRequest arg_parameters, + bool arg_includeMetadataChanges, + ) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', - codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', + codec, + binaryMessenger: _binaryMessenger, + ); final List? replyList = await channel.send( - [arg_app, arg_parameters, arg_includeMetadataChanges]) - as List?; + [arg_app, arg_parameters, arg_includeMetadataChanges], + ) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', From 6ef8a8ef193e21364ed8db38ff4fc32fb658cad0 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 3 Nov 2023 15:39:47 +0100 Subject: [PATCH 07/25] iOS --- .../ios/Classes/FLTFirebaseFirestorePlugin.m | 102 ++++++++++++------ .../ios/Classes/FirestoreMessages.g.m | 14 +-- .../ios/Classes/Public/FirestoreMessages.g.h | 2 +- .../firebase_core/ios/firebase_sdk_version.rb | 2 +- 4 files changed, 78 insertions(+), 42 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m index 266b732f78fb..c58f8e47113f 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m @@ -276,40 +276,6 @@ - (FlutterError *)convertToFlutterError:(NSError *)error { return [FlutterError errorWithCode:code message:message details:details]; } -- (void)aggregateQueryCountApp:(nonnull FirestorePigeonFirebaseApp *)app - path:(nonnull NSString *)path - parameters:(nonnull PigeonQueryParameters *)parameters - source:(AggregateSource)source - completion: - (nonnull void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion { - FIRFirestore *firestore = [self getFIRFirestoreFromAppNameFromPigeon:app]; - - FIRQuery *query = [FirestorePigeonParser parseQueryWithParameters:parameters - firestore:firestore - path:path - isCollectionGroup:NO]; - if (query == nil) { - completion(nil, [FlutterError errorWithCode:@"error-parsing" - message:@"An error occurred while parsing query arguments, " - @"this is most likely an error with this SDK." - details:nil]); - return; - } - - FIRAggregateQuery *aggregateQuery = [query count]; - - [aggregateQuery aggregationWithSource:FIRAggregateSourceServer - completion:^(FIRAggregateQuerySnapshot *_Nullable snapshot, - NSError *_Nullable error) { - if (error != nil) { - completion(nil, [self convertToFlutterError:error]); - } else { - double myDoubleValue = [snapshot.count doubleValue]; - completion([NSNumber numberWithDouble:myDoubleValue], nil); - } - }]; -} - - (void)clearPersistenceApp:(nonnull FirestorePigeonFirebaseApp *)app completion:(nonnull void (^)(FlutterError *_Nullable))completion { FIRFirestore *firestore = [self getFIRFirestoreFromAppNameFromPigeon:app]; @@ -762,4 +728,72 @@ - (void)transactionCreateApp:(nonnull FirestorePigeonFirebaseApp *)app nil); } +- (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app path:(nonnull NSString *)path parameters:(nonnull PigeonQueryParameters *)parameters source:(AggregateSource)source queries:(nonnull NSArray *)queries completion:(nonnull void (^)(NSArray * _Nullable, FlutterError * _Nullable))completion { + FIRFirestore *firestore = [self getFIRFirestoreFromAppNameFromPigeon:app]; + + FIRQuery *query = [FirestorePigeonParser parseQueryWithParameters:parameters + firestore:firestore + path:path + isCollectionGroup:NO]; + if (query == nil) { + completion(nil, [FlutterError errorWithCode:@"error-parsing" + message:@"An error occurred while parsing query arguments, " + @"this is most likely an error with this SDK." + details:nil]); + return; + } + + FIRAggregateQuery *aggregateQuery; + NSMutableArray *aggregateFields = [[NSMutableArray alloc] init]; + + for (AggregateQuery *queryRequest in queries) { + switch ([queryRequest type]) { + case AggregateTypeCount: + [aggregateFields addObject:[FIRAggregateField aggregateFieldForCount]]; + break; + case AggregateTypeSum: + [aggregateFields addObject:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]]; + break; + case AggregateTypeAverage: + [aggregateFields addObject:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]]; + break; + default: + // Handle the default case + break; + } + } + + + [aggregateQuery aggregationWithSource:FIRAggregateSourceServer + completion:^(FIRAggregateQuerySnapshot *_Nullable snapshot, + NSError *_Nullable error) { + if (error != nil) { + completion(nil, [self convertToFlutterError:error]); + return; + } + NSMutableArray* aggregateResponses = [[NSMutableArray alloc] init]; + + for (AggregateQuery *queryRequest in queries) { + switch (queryRequest.type) { + case AggregateTypeCount: { + [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeCount field:nil value:snapshot.count]]; + break; + } + case AggregateTypeSum: { + [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeSum field:queryRequest.field value:[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]]]]; + break; + } + case AggregateTypeAverage: { + [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeAverage field:queryRequest.field value:[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]]]]; + break; + } + } + } + + completion(aggregateResponses, nil); + }]; + +} + + @end diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m index 328468a50b82..7645b2cd9f8d 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m @@ -5,6 +5,8 @@ // See also: https://pub.dev/packages/pigeon #import "FirestoreMessages.g.h" +#import "FLTFirebaseFirestoreReader.h" +#import "FLTFirebaseFirestoreWriter.h" #if TARGET_OS_OSX #import @@ -319,7 +321,7 @@ + (instancetype)makeWithType:(DocumentChangeType)type pigeonResult.type = type; pigeonResult.document = document; pigeonResult.oldIndex = oldIndex; - pigeonResult.newIndex = newIndex; + pigeonResult.index = newIndex; return pigeonResult; } + (PigeonDocumentChange *)fromList:(NSArray *)list { @@ -330,8 +332,8 @@ + (PigeonDocumentChange *)fromList:(NSArray *)list { NSAssert(pigeonResult.document != nil, @""); pigeonResult.oldIndex = GetNullableObjectAtIndex(list, 2); NSAssert(pigeonResult.oldIndex != nil, @""); - pigeonResult.newIndex = GetNullableObjectAtIndex(list, 3); - NSAssert(pigeonResult.newIndex != nil, @""); + pigeonResult.index = GetNullableObjectAtIndex(list, 3); + NSAssert(pigeonResult.index != nil, @""); return pigeonResult; } + (nullable PigeonDocumentChange *)nullableFromList:(NSArray *)list { @@ -342,7 +344,7 @@ - (NSArray *)toList { @(self.type), (self.document ? [self.document toList] : [NSNull null]), (self.oldIndex ?: [NSNull null]), - (self.newIndex ?: [NSNull null]), + (self.index ?: [NSNull null]), ]; } @end @@ -620,7 +622,7 @@ - (NSArray *)toList { } @end -@interface FirebaseFirestoreHostApiCodecReader : FlutterStandardReader +@interface FirebaseFirestoreHostApiCodecReader : FLTFirebaseFirestoreReader @end @implementation FirebaseFirestoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { @@ -706,7 +708,7 @@ - (void)writeValue:(id)value { } @end -@interface FirebaseFirestoreHostApiCodecReaderWriter : FlutterStandardReaderWriter +@interface FirebaseFirestoreHostApiCodecReaderWriter : FLTFirebaseFirestoreWriter @end @implementation FirebaseFirestoreHostApiCodecReaderWriter - (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h index f5d4878d3986..1ecc2e4062fa 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h @@ -192,7 +192,7 @@ typedef NS_ENUM(NSUInteger, AggregateType) { @property(nonatomic, assign) DocumentChangeType type; @property(nonatomic, strong) PigeonDocumentSnapshot *document; @property(nonatomic, strong) NSNumber *oldIndex; -@property(nonatomic, strong) NSNumber *newIndex; +@property(nonatomic, strong) NSNumber *index; @end @interface PigeonQuerySnapshot : NSObject diff --git a/packages/firebase_core/firebase_core/ios/firebase_sdk_version.rb b/packages/firebase_core/firebase_core/ios/firebase_sdk_version.rb index a8d63963db88..036488bab35d 100644 --- a/packages/firebase_core/firebase_core/ios/firebase_sdk_version.rb +++ b/packages/firebase_core/firebase_core/ios/firebase_sdk_version.rb @@ -1,4 +1,4 @@ # https://firebase.google.com/support/release-notes/ios def firebase_sdk_version!() - '10.15.0' + '10.17.0' end From 9e1a20725a1f826f438bd85a782ed75ff1b06145 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 3 Nov 2023 15:47:22 +0100 Subject: [PATCH 08/25] main --- .../cloud_firestore/cloud_firestore/example/lib/main.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index aa0c631e421b..f05b492355a7 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -34,7 +34,7 @@ Future main() async { .average('likes') .get(); - print('Average: $average'); + print('Average: ${average.getAverage('likes')}'); // Sum the number of likes final sum = await FirebaseFirestore.instance @@ -42,7 +42,7 @@ Future main() async { .sum('likes') .get(); - print('Sum: $sum'); + print('Sum: ${sum.getSum('likes')}'); runApp(FirestoreExampleApp()); } From e7eeffce3c5d1a237667dcfcb46043452d998749 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 3 Nov 2023 16:50:18 +0100 Subject: [PATCH 09/25] iOS ready --- .../cloud_firestore/example/lib/main.dart | 62 +++++++++++-------- .../ios/Classes/FLTFirebaseFirestorePlugin.m | 16 +++-- .../ios/Classes/FirestoreMessages.g.m | 4 +- 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index f05b492355a7..36924d624f9b 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -20,30 +20,6 @@ Future main() async { FirebaseFirestore.instance.useFirestoreEmulator('localhost', 8080); } - // Count the number of movies - final count = await FirebaseFirestore.instance - .collection('firestore-example-app') - .count() - .get(); - - print('Count: ${count.count}'); - - // Average the number of likes - final average = await FirebaseFirestore.instance - .collection('firestore-example-app') - .average('likes') - .get(); - - print('Average: ${average.getAverage('likes')}'); - - // Sum the number of likes - final sum = await FirebaseFirestore.instance - .collection('firestore-example-app') - .sum('likes') - .get(); - - print('Sum: ${sum.getSum('likes')}'); - runApp(FirestoreExampleApp()); } @@ -174,13 +150,49 @@ class _FilmListState extends State { }, ), PopupMenuButton( - onSelected: (_) => _resetLikes(), + onSelected: (value) async { + switch (value) { + case 'reset_likes': + return _resetLikes(); + case 'aggregate': + // Count the number of movies + final count = await FirebaseFirestore.instance + .collection('firestore-example-app') + .count() + .get(); + + print('Count: ${count.count}'); + + // Average the number of likes + final average = await FirebaseFirestore.instance + .collection('firestore-example-app') + .average('likes') + .get(); + + print('Average: ${average.getAverage('likes')}'); + + // Sum the number of likes + final sum = await FirebaseFirestore.instance + .collection('firestore-example-app') + .sum('likes') + .get(); + + print('Sum: ${sum.getSum('likes')}'); + return; + default: + return; + } + }, itemBuilder: (BuildContext context) { return [ const PopupMenuItem( value: 'reset_likes', child: Text('Reset like counts (WriteBatch)'), ), + const PopupMenuItem( + value: 'aggregate', + child: Text('Get aggregate data'), + ), ]; }, ), diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m index c58f8e47113f..edd661f1ee93 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m @@ -743,7 +743,6 @@ - (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app path:(nonnul return; } - FIRAggregateQuery *aggregateQuery; NSMutableArray *aggregateFields = [[NSMutableArray alloc] init]; for (AggregateQuery *queryRequest in queries) { @@ -762,7 +761,8 @@ - (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app path:(nonnul break; } } - + + FIRAggregateQuery *aggregateQuery = [query aggregate:aggregateFields]; [aggregateQuery aggregationWithSource:FIRAggregateSourceServer completion:^(FIRAggregateQuerySnapshot *_Nullable snapshot, @@ -776,15 +776,21 @@ - (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app path:(nonnul for (AggregateQuery *queryRequest in queries) { switch (queryRequest.type) { case AggregateTypeCount: { - [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeCount field:nil value:snapshot.count]]; + double doubleValue = [snapshot.count doubleValue]; + + [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeCount field:nil value:[NSNumber numberWithDouble:doubleValue]]]; break; } case AggregateTypeSum: { - [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeSum field:queryRequest.field value:[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]]]]; + double doubleValue = [[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]] doubleValue]; + + [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeSum field:queryRequest.field value:[NSNumber numberWithDouble:doubleValue]]]; break; } case AggregateTypeAverage: { - [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeAverage field:queryRequest.field value:[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]]]]; + double doubleValue = [[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]] doubleValue]; + + [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeAverage field:queryRequest.field value:[NSNumber numberWithDouble:doubleValue]]]; break; } } diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m index 7645b2cd9f8d..8438ab429206 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m @@ -659,7 +659,7 @@ - (nullable id)readValueOfType:(UInt8)type { } @end -@interface FirebaseFirestoreHostApiCodecWriter : FlutterStandardWriter +@interface FirebaseFirestoreHostApiCodecWriter : FLTFirebaseFirestoreWriter @end @implementation FirebaseFirestoreHostApiCodecWriter - (void)writeValue:(id)value { @@ -708,7 +708,7 @@ - (void)writeValue:(id)value { } @end -@interface FirebaseFirestoreHostApiCodecReaderWriter : FLTFirebaseFirestoreWriter +@interface FirebaseFirestoreHostApiCodecReaderWriter : FlutterStandardReaderWriter @end @implementation FirebaseFirestoreHostApiCodecReaderWriter - (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { From ea1ad479ffb6c14629d4aa52f70d3bcb97dff11c Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 6 Nov 2023 10:18:19 +0100 Subject: [PATCH 10/25] web --- .../lib/src/aggregate_query_web.dart | 82 +++++++++++++++++-- .../lib/src/interop/firestore.dart | 37 ++++++++- .../lib/src/interop/firestore_interop.dart | 15 ++++ .../lib/src/query_web.dart | 38 ++++++++- 4 files changed, 163 insertions(+), 9 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart index afbed037c69e..a5f9b3f0461b 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart @@ -13,22 +13,94 @@ class AggregateQueryWeb extends AggregateQueryPlatform { /// [AggregateQueryWeb] represents the data at a particular location for retrieving metadata /// without retrieving the actual documents. - AggregateQueryWeb(QueryPlatform query, _webQuery) - : _delegate = firestore_interop.AggregateQuery(_webQuery), + AggregateQueryWeb( + QueryPlatform query, + _webQuery, + this._aggregateQueries, + ) : _delegate = firestore_interop.AggregateQuery(_webQuery), super(query); + final List _aggregateQueries; + /// Returns an [AggregateQuerySnapshotPlatform] with the count of the documents that match the query. @override Future get({ required AggregateSource source, }) async { // Note: There isn't a source option on the web platform - firestore_interop.AggregateQuerySnapshot snapshot = await _delegate.get(); + firestore_interop.AggregateQuerySnapshot snapshot = + await _delegate.get(_aggregateQueries); + + List sum = []; + List average = []; + + for (final query in _aggregateQueries) { + switch (query.type) { + case AggregateType.sum: + sum.add( + AggregateQueryResponse( + type: AggregateType.sum, + value: snapshot.getDataValue(query), + field: query.field, + ), + ); + break; + case AggregateType.average: + average.add( + AggregateQueryResponse( + type: AggregateType.average, + value: snapshot.getDataValue(query), + field: query.field, + ), + ); + break; + default: + break; + } + } return AggregateQuerySnapshotPlatform( count: snapshot.count, - sum: [], - average: [], + sum: sum, + average: average, + ); + } + + @override + AggregateQueryPlatform count() { + return AggregateQueryWeb( + query, + this, + [ + ..._aggregateQueries, + AggregateQuery( + type: AggregateType.count, + ), + ], + ); + } + + @override + AggregateQueryPlatform sum(String field) { + return AggregateQueryWeb( + query, + this, + [ + ..._aggregateQueries, + AggregateQuery(type: AggregateType.sum, field: field), + ], + ); + } + + @override + AggregateQueryPlatform average(String field) { + return AggregateQueryWeb( + query, + this, + [ + ..._aggregateQueries, + AggregateQuery(type: AggregateType.average, field: field), + ], ); } } diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore.dart index 4d842bfb045f..dac2ed528af5 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore.dart @@ -9,6 +9,8 @@ import 'dart:async'; import 'dart:typed_data'; import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart'; +import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart' + as platform_interface; import 'package:cloud_firestore_web/src/utils/encode_utility.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core_web/firebase_core_web_interop.dart' @@ -833,9 +835,35 @@ abstract class FieldValue { class AggregateQuery { AggregateQuery(Query query) : _jsQuery = query.jsObject; final firestore_interop.QueryJsImpl _jsQuery; - Future get() async { + + static String name(platform_interface.AggregateQuery query) { + return '${query.type.name}_${query.field}'; + } + + Future get( + List aggregateQueries, + ) async { + // Create a map of the requests + final Map requests = {}; + for (final platform_interface.AggregateQuery aggregateQuery + in aggregateQueries) { + switch (aggregateQuery.type) { + case AggregateType.count: + requests['count'] = firestore_interop.count(); + break; + case AggregateType.sum: + requests[name(aggregateQuery)] = + firestore_interop.sum(aggregateQuery.field!); + break; + case AggregateType.average: + requests[name(aggregateQuery)] = + firestore_interop.average(aggregateQuery.field!); + break; + } + } + return handleThenable( - firestore_interop.getCountFromServer(_jsQuery)) + firestore_interop.getAggregateFromServer(_jsQuery, jsify(requests))) .then(AggregateQuerySnapshot.getInstance); } } @@ -857,5 +885,8 @@ class AggregateQuerySnapshot : _data = Map.from(dartify(jsObject.data())), super.fromJsObject(jsObject); - int get count => _data['count']! as int; + int? get count => _data['count'] as int?; + + double getDataValue(platform_interface.AggregateQuery query) => + _data[AggregateQuery.name(query)]! as double; } diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore_interop.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore_interop.dart index 8483c4e504b9..12f1d8e77aa2 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore_interop.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore_interop.dart @@ -665,11 +665,26 @@ external Object get arrayRemove; @JS() external Object get arrayUnion; +@JS() +external Object count(); + +@JS() +external Object average(String field); + +@JS() +external Object sum(String field); + @JS() external PromiseJsImpl getCountFromServer( QueryJsImpl query, ); +@JS() +external PromiseJsImpl getAggregateFromServer( + QueryJsImpl query, + Object specs, +); + @JS('AggregateQuerySnapshot') abstract class AggregateQuerySnapshotJsImpl { external Map data(); diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart index fce7490ac006..213f6c409f39 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart @@ -255,6 +255,42 @@ class QueryWeb extends QueryPlatform { @override AggregateQueryPlatform count() { - return AggregateQueryWeb(this, _buildWebQueryWithParameters()); + return AggregateQueryWeb( + this, + _buildWebQueryWithParameters(), + [ + AggregateQuery( + type: AggregateType.count, + ) + ], + ); + } + + @override + AggregateQueryPlatform sum(String field) { + return AggregateQueryWeb( + this, + _buildWebQueryWithParameters(), + [ + AggregateQuery( + type: AggregateType.sum, + field: field, + ) + ], + ); + } + + @override + AggregateQueryPlatform average(String field) { + return AggregateQueryWeb( + this, + _buildWebQueryWithParameters(), + [ + AggregateQuery( + type: AggregateType.average, + field: field, + ) + ], + ); } } From f39ad3d92d71314d9df580afa033017d3762a3e8 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 6 Nov 2023 14:27:38 +0100 Subject: [PATCH 11/25] e2e test --- .../example/integration_test/query_e2e.dart | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart index ee23b5e347c7..670883c1676a 100644 --- a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart +++ b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart @@ -3601,7 +3601,9 @@ void runQueryTests() { }, timeout: const Timeout.factor(3), ); + }); + group('Aggregate Queries', () { testWidgets( 'count()', (_) async { @@ -3644,6 +3646,127 @@ void runQueryTests() { ); }, ); + + testWidgets( + 'sum()', + (_) async { + final collection = await initializeTest('sum'); + + await Future.wait([ + collection.add({'foo': 1}), + collection.add({'foo': 2}), + ]); + + AggregateQuery query = collection.sum('foo'); + + AggregateQuerySnapshot snapshot = await query.get(); + + expect( + snapshot.getSum('foo'), + 3, + ); + }, + ); + + testWidgets( + 'sum() with query', + (_) async { + final collection = await initializeTest('sum'); + + await Future.wait([ + collection.add({'foo': 1}), + collection.add({'foo': 2}), + ]); + + AggregateQuery query = + collection.where('foo', isEqualTo: 1).sum('foo'); + + AggregateQuerySnapshot snapshot = await query.get(); + + expect( + snapshot.getSum('foo'), + 1, + ); + }, + ); + + testWidgets( + 'average()', + (_) async { + final collection = await initializeTest('avg'); + + await Future.wait([ + collection.add({'foo': 1}), + collection.add({'foo': 2}), + ]); + + AggregateQuery query = collection.average('foo'); + + AggregateQuerySnapshot snapshot = await query.get(); + + expect( + snapshot.getAverage('foo'), + 1.5, + ); + }, + ); + + testWidgets( + 'average() with query', + (_) async { + final collection = await initializeTest('avg'); + + await Future.wait([ + collection.add({'foo': 1}), + collection.add({'foo': 2}), + ]); + + AggregateQuery query = + collection.where('foo', isEqualTo: 1).average('foo'); + + AggregateQuerySnapshot snapshot = await query.get(); + + expect( + snapshot.getAverage('foo'), + 1, + ); + }, + ); + + testWidgets( + 'chaining multiples aggregate queries', + (_) async { + final collection = await initializeTest('chaining'); + + await Future.wait([ + collection.add({'foo': 1}), + collection.add({'foo': 2}), + ]); + + AggregateQuery query = collection + .where('foo', isEqualTo: 1) + .count() + .sum('foo') + .average('foo'); + + AggregateQuerySnapshot snapshot = await query.get(); + + expect( + snapshot.count, + 1, + ); + + expect( + snapshot.getSum('foo'), + 1, + ); + + expect( + snapshot.getAverage('foo'), + 1, + ); + }, + ); }); group('startAfterDocument', () { From 20061664751b3eccbaedb4847657ee056ddd7451 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 6 Nov 2023 14:31:53 +0100 Subject: [PATCH 12/25] e2e test --- .../example/integration_test/query_e2e.dart | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart index 670883c1676a..7229ec010f5f 100644 --- a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart +++ b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart @@ -3733,6 +3733,37 @@ void runQueryTests() { }, ); + testWidgets( + 'chaining aggregate queries', + (_) async { + final collection = await initializeTest('chaining'); + + await Future.wait([ + collection.add({'foo': 1}), + collection.add({'foo': 2}), + ]); + + AggregateQuery query = collection.count().sum('foo').average('foo'); + + AggregateQuerySnapshot snapshot = await query.get(); + + expect( + snapshot.count, + 2, + ); + + expect( + snapshot.getSum('foo'), + 3, + ); + + expect( + snapshot.getAverage('foo'), + 1.5, + ); + }, + ); + testWidgets( 'chaining multiples aggregate queries', (_) async { From e7df3efbc98e230f761066ab5fef074692be1b62 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 6 Nov 2023 15:02:36 +0100 Subject: [PATCH 13/25] analyze --- .../test/pigeon/test_api.dart | 736 ++++++++++++------ 1 file changed, 477 insertions(+), 259 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart index f85f6537cd28..3f960b240e8c 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart @@ -6,13 +6,13 @@ // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import // ignore_for_file: avoid_relative_lib_imports import 'dart:async'; -import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; +import 'dart:typed_data' show Uint8List; + +import 'package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart'; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart'; - class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec { const _TestFirebaseFirestoreHostApiCodec(); @override @@ -105,7 +105,10 @@ abstract class TestFirebaseFirestoreHostApi { Future loadBundle(FirestorePigeonFirebaseApp app, Uint8List bundle); Future namedQueryGet( - FirestorePigeonFirebaseApp app, String name, PigeonGetOptions options); + FirestorePigeonFirebaseApp app, + String name, + PigeonGetOptions options, + ); Future clearPersistence(FirestorePigeonFirebaseApp app); @@ -118,70 +121,98 @@ abstract class TestFirebaseFirestoreHostApi { Future waitForPendingWrites(FirestorePigeonFirebaseApp app); Future setIndexConfiguration( - FirestorePigeonFirebaseApp app, String indexConfiguration); + FirestorePigeonFirebaseApp app, + String indexConfiguration, + ); Future setLoggingEnabled(bool loggingEnabled); Future snapshotsInSyncSetup(FirestorePigeonFirebaseApp app); Future transactionCreate( - FirestorePigeonFirebaseApp app, int timeout, int maxAttempts); + FirestorePigeonFirebaseApp app, + int timeout, + int maxAttempts, + ); Future transactionStoreResult( - String transactionId, - PigeonTransactionResult resultType, - List? commands); + String transactionId, + PigeonTransactionResult resultType, + List? commands, + ); Future transactionGet( - FirestorePigeonFirebaseApp app, String transactionId, String path); + FirestorePigeonFirebaseApp app, + String transactionId, + String path, + ); Future documentReferenceSet( - FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); + FirestorePigeonFirebaseApp app, + DocumentReferenceRequest request, + ); Future documentReferenceUpdate( - FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); + FirestorePigeonFirebaseApp app, + DocumentReferenceRequest request, + ); Future documentReferenceGet( - FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); + FirestorePigeonFirebaseApp app, + DocumentReferenceRequest request, + ); Future documentReferenceDelete( - FirestorePigeonFirebaseApp app, DocumentReferenceRequest request); + FirestorePigeonFirebaseApp app, + DocumentReferenceRequest request, + ); Future queryGet( - FirestorePigeonFirebaseApp app, - String path, - bool isCollectionGroup, - PigeonQueryParameters parameters, - PigeonGetOptions options); + FirestorePigeonFirebaseApp app, + String path, + bool isCollectionGroup, + PigeonQueryParameters parameters, + PigeonGetOptions options, + ); Future> aggregateQuery( - FirestorePigeonFirebaseApp app, - String path, - PigeonQueryParameters parameters, - AggregateSource source, - List queries); + FirestorePigeonFirebaseApp app, + String path, + PigeonQueryParameters parameters, + AggregateSource source, + List queries, + ); Future writeBatchCommit( - FirestorePigeonFirebaseApp app, List writes); + FirestorePigeonFirebaseApp app, + List writes, + ); Future querySnapshot( - FirestorePigeonFirebaseApp app, - String path, - bool isCollectionGroup, - PigeonQueryParameters parameters, - PigeonGetOptions options, - bool includeMetadataChanges); + FirestorePigeonFirebaseApp app, + String path, + bool isCollectionGroup, + PigeonQueryParameters parameters, + PigeonGetOptions options, + bool includeMetadataChanges, + ); - Future documentReferenceSnapshot(FirestorePigeonFirebaseApp app, - DocumentReferenceRequest parameters, bool includeMetadataChanges); + Future documentReferenceSnapshot( + FirestorePigeonFirebaseApp app, + DocumentReferenceRequest parameters, + bool includeMetadataChanges, + ); - static void setup(TestFirebaseFirestoreHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup( + TestFirebaseFirestoreHostApi? api, { + BinaryMessenger? binaryMessenger, + }) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -189,16 +220,22 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null FirestorePigeonFirebaseApp.', + ); final Uint8List? arg_bundle = (args[1] as Uint8List?); - assert(arg_bundle != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null Uint8List.'); + assert( + arg_bundle != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle was null, expected non-null Uint8List.', + ); final String output = await api.loadBundle(arg_app!, arg_bundle!); return [output]; }); @@ -206,9 +243,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -216,19 +254,27 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String? arg_name = (args[1] as String?); - assert(arg_name != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null String.'); + assert( + arg_name != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null String.', + ); final PigeonGetOptions? arg_options = (args[2] as PigeonGetOptions?); - assert(arg_options != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null PigeonGetOptions.'); + assert( + arg_options != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet was null, expected non-null PigeonGetOptions.', + ); final PigeonQuerySnapshot output = await api.namedQueryGet(arg_app!, arg_name!, arg_options!); return [output]; @@ -237,9 +283,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -247,13 +294,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence was null, expected non-null FirestorePigeonFirebaseApp.', + ); await api.clearPersistence(arg_app!); return []; }); @@ -261,9 +312,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -271,13 +323,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork was null, expected non-null FirestorePigeonFirebaseApp.', + ); await api.disableNetwork(arg_app!); return []; }); @@ -285,9 +341,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -295,13 +352,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork was null, expected non-null FirestorePigeonFirebaseApp.', + ); await api.enableNetwork(arg_app!); return []; }); @@ -309,9 +370,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -319,13 +381,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate was null, expected non-null FirestorePigeonFirebaseApp.', + ); await api.terminate(arg_app!); return []; }); @@ -333,9 +399,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -343,13 +410,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites was null, expected non-null FirestorePigeonFirebaseApp.', + ); await api.waitForPendingWrites(arg_app!); return []; }); @@ -357,9 +428,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -367,16 +439,22 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String? arg_indexConfiguration = (args[1] as String?); - assert(arg_indexConfiguration != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null String.'); + assert( + arg_indexConfiguration != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration was null, expected non-null String.', + ); await api.setIndexConfiguration(arg_app!, arg_indexConfiguration!); return []; }); @@ -384,9 +462,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -394,12 +473,16 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null.', + ); final List args = (message as List?)!; final bool? arg_loggingEnabled = (args[0] as bool?); - assert(arg_loggingEnabled != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null, expected non-null bool.'); + assert( + arg_loggingEnabled != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled was null, expected non-null bool.', + ); await api.setLoggingEnabled(arg_loggingEnabled!); return []; }); @@ -407,9 +490,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -417,13 +501,17 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String output = await api.snapshotsInSyncSetup(arg_app!); return [output]; }); @@ -431,9 +519,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -441,30 +530,42 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null FirestorePigeonFirebaseApp.', + ); final int? arg_timeout = (args[1] as int?); - assert(arg_timeout != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.'); + assert( + arg_timeout != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.', + ); final int? arg_maxAttempts = (args[2] as int?); - assert(arg_maxAttempts != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.'); + assert( + arg_maxAttempts != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate was null, expected non-null int.', + ); final String output = await api.transactionCreate( - arg_app!, arg_timeout!, arg_maxAttempts!); + arg_app!, + arg_timeout!, + arg_maxAttempts!, + ); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -472,30 +573,40 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null.', + ); final List args = (message as List?)!; final String? arg_transactionId = (args[0] as String?); - assert(arg_transactionId != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null String.'); + assert( + arg_transactionId != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null String.', + ); final PigeonTransactionResult? arg_resultType = args[1] == null ? null : PigeonTransactionResult.values[args[1]! as int]; - assert(arg_resultType != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null PigeonTransactionResult.'); + assert( + arg_resultType != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult was null, expected non-null PigeonTransactionResult.', + ); final List? arg_commands = (args[2] as List?)?.cast(); await api.transactionStoreResult( - arg_transactionId!, arg_resultType!, arg_commands); + arg_transactionId!, + arg_resultType!, + arg_commands, + ); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -503,19 +614,27 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String? arg_transactionId = (args[1] as String?); - assert(arg_transactionId != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.'); + assert( + arg_transactionId != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.', + ); final String? arg_path = (args[2] as String?); - assert(arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.'); + assert( + arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet was null, expected non-null String.', + ); final PigeonDocumentSnapshot output = await api.transactionGet(arg_app!, arg_transactionId!, arg_path!); return [output]; @@ -524,9 +643,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -534,17 +654,23 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null FirestorePigeonFirebaseApp.', + ); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null DocumentReferenceRequest.'); + assert( + arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet was null, expected non-null DocumentReferenceRequest.', + ); await api.documentReferenceSet(arg_app!, arg_request!); return []; }); @@ -552,9 +678,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -562,17 +689,23 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null FirestorePigeonFirebaseApp.', + ); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null DocumentReferenceRequest.'); + assert( + arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate was null, expected non-null DocumentReferenceRequest.', + ); await api.documentReferenceUpdate(arg_app!, arg_request!); return []; }); @@ -580,9 +713,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -590,17 +724,23 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null FirestorePigeonFirebaseApp.', + ); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null DocumentReferenceRequest.'); + assert( + arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet was null, expected non-null DocumentReferenceRequest.', + ); final PigeonDocumentSnapshot output = await api.documentReferenceGet(arg_app!, arg_request!); return [output]; @@ -609,9 +749,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -619,17 +760,23 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null FirestorePigeonFirebaseApp.', + ); final DocumentReferenceRequest? arg_request = (args[1] as DocumentReferenceRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null DocumentReferenceRequest.'); + assert( + arg_request != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete was null, expected non-null DocumentReferenceRequest.', + ); await api.documentReferenceDelete(arg_app!, arg_request!); return []; }); @@ -637,9 +784,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -647,37 +795,55 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String? arg_path = (args[1] as String?); - assert(arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null String.'); + assert( + arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null String.', + ); final bool? arg_isCollectionGroup = (args[2] as bool?); - assert(arg_isCollectionGroup != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null bool.'); + assert( + arg_isCollectionGroup != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null bool.', + ); final PigeonQueryParameters? arg_parameters = (args[3] as PigeonQueryParameters?); - assert(arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonQueryParameters.'); + assert( + arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonQueryParameters.', + ); final PigeonGetOptions? arg_options = (args[4] as PigeonGetOptions?); - assert(arg_options != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonGetOptions.'); - final PigeonQuerySnapshot output = await api.queryGet(arg_app!, - arg_path!, arg_isCollectionGroup!, arg_parameters!, arg_options!); + assert( + arg_options != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet was null, expected non-null PigeonGetOptions.', + ); + final PigeonQuerySnapshot output = await api.queryGet( + arg_app!, + arg_path!, + arg_isCollectionGroup!, + arg_parameters!, + arg_options!, + ); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -685,39 +851,57 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String? arg_path = (args[1] as String?); - assert(arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null String.'); + assert( + arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null String.', + ); final PigeonQueryParameters? arg_parameters = (args[2] as PigeonQueryParameters?); - assert(arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null PigeonQueryParameters.'); + assert( + arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null PigeonQueryParameters.', + ); final AggregateSource? arg_source = args[3] == null ? null : AggregateSource.values[args[3]! as int]; - assert(arg_source != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null AggregateSource.'); + assert( + arg_source != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null AggregateSource.', + ); final List? arg_queries = (args[4] as List?)?.cast(); - assert(arg_queries != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null List.'); + assert( + arg_queries != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery was null, expected non-null List.', + ); final List output = await api.aggregateQuery( - arg_app!, arg_path!, arg_parameters!, arg_source!, arg_queries!); + arg_app!, + arg_path!, + arg_parameters!, + arg_source!, + arg_queries!, + ); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -725,17 +909,23 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null FirestorePigeonFirebaseApp.', + ); final List? arg_writes = (args[1] as List?)?.cast(); - assert(arg_writes != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null List.'); + assert( + arg_writes != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit was null, expected non-null List.', + ); await api.writeBatchCommit(arg_app!, arg_writes!); return []; }); @@ -743,9 +933,10 @@ abstract class TestFirebaseFirestoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -753,45 +944,61 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null FirestorePigeonFirebaseApp.', + ); final String? arg_path = (args[1] as String?); - assert(arg_path != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null String.'); + assert( + arg_path != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null String.', + ); final bool? arg_isCollectionGroup = (args[2] as bool?); - assert(arg_isCollectionGroup != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.'); + assert( + arg_isCollectionGroup != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.', + ); final PigeonQueryParameters? arg_parameters = (args[3] as PigeonQueryParameters?); - assert(arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonQueryParameters.'); + assert( + arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonQueryParameters.', + ); final PigeonGetOptions? arg_options = (args[4] as PigeonGetOptions?); - assert(arg_options != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonGetOptions.'); + assert( + arg_options != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null PigeonGetOptions.', + ); final bool? arg_includeMetadataChanges = (args[5] as bool?); - assert(arg_includeMetadataChanges != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.'); + assert( + arg_includeMetadataChanges != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot was null, expected non-null bool.', + ); final String output = await api.querySnapshot( - arg_app!, - arg_path!, - arg_isCollectionGroup!, - arg_parameters!, - arg_options!, - arg_includeMetadataChanges!); + arg_app!, + arg_path!, + arg_isCollectionGroup!, + arg_parameters!, + arg_options!, + arg_includeMetadataChanges!, + ); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', - codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot', + codec, + binaryMessenger: binaryMessenger, + ); if (api == null) { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, null); @@ -799,22 +1006,33 @@ abstract class TestFirebaseFirestoreHostApi { _testBinaryMessengerBinding!.defaultBinaryMessenger .setMockDecodedMessageHandler(channel, (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null.'); + assert( + message != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null.', + ); final List args = (message as List?)!; final FirestorePigeonFirebaseApp? arg_app = (args[0] as FirestorePigeonFirebaseApp?); - assert(arg_app != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null FirestorePigeonFirebaseApp.'); + assert( + arg_app != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null FirestorePigeonFirebaseApp.', + ); final DocumentReferenceRequest? arg_parameters = (args[1] as DocumentReferenceRequest?); - assert(arg_parameters != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null DocumentReferenceRequest.'); + assert( + arg_parameters != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null DocumentReferenceRequest.', + ); final bool? arg_includeMetadataChanges = (args[2] as bool?); - assert(arg_includeMetadataChanges != null, - 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null bool.'); + assert( + arg_includeMetadataChanges != null, + 'Argument for dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot was null, expected non-null bool.', + ); final String output = await api.documentReferenceSnapshot( - arg_app!, arg_parameters!, arg_includeMetadataChanges!); + arg_app!, + arg_parameters!, + arg_includeMetadataChanges!, + ); return [output]; }); } From 606186eceed5364d2d1896d1180c8ec21867d677 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 6 Nov 2023 15:57:01 +0100 Subject: [PATCH 14/25] fix js --- .../cloud_firestore_web/lib/src/aggregate_query_web.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart index a5f9b3f0461b..759cb22226e3 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart @@ -18,9 +18,11 @@ class AggregateQueryWeb extends AggregateQueryPlatform { _webQuery, this._aggregateQueries, ) : _delegate = firestore_interop.AggregateQuery(_webQuery), + _webQuery = _webQuery, super(query); final List _aggregateQueries; + final firestore_interop.Query _webQuery; /// Returns an [AggregateQuerySnapshotPlatform] with the count of the documents that match the query. @override @@ -70,7 +72,7 @@ class AggregateQueryWeb extends AggregateQueryPlatform { AggregateQueryPlatform count() { return AggregateQueryWeb( query, - this, + _webQuery, [ ..._aggregateQueries, AggregateQuery( @@ -84,7 +86,7 @@ class AggregateQueryWeb extends AggregateQueryPlatform { AggregateQueryPlatform sum(String field) { return AggregateQueryWeb( query, - this, + _webQuery, [ ..._aggregateQueries, AggregateQuery(type: AggregateType.sum, field: field), @@ -96,7 +98,7 @@ class AggregateQueryWeb extends AggregateQueryPlatform { AggregateQueryPlatform average(String field) { return AggregateQueryWeb( query, - this, + _webQuery, [ ..._aggregateQueries, AggregateQuery(type: AggregateType.average, field: field), From 913d40979dbcde4ab8625678d6f8d39cbedafc6b Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 7 Nov 2023 08:16:47 +0100 Subject: [PATCH 15/25] format --- .../FlutterFirebaseFirestorePlugin.java | 110 +++++++----- .../GeneratedAndroidFirebaseFirestore.java | 1 - .../ios/Classes/FLTFirebaseFirestorePlugin.m | 162 ++++++++++-------- 3 files changed, 160 insertions(+), 113 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java index 8e138fa93630..617d7da5da3b 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java @@ -8,7 +8,6 @@ import static com.google.firebase.firestore.AggregateField.count; import static com.google.firebase.firestore.AggregateField.sum; -import android.annotation.SuppressLint; import android.app.Activity; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -731,9 +730,17 @@ public void queryGet( } @Override - public void aggregateQuery(@NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull GeneratedAndroidFirebaseFirestore.PigeonQueryParameters parameters, @NonNull GeneratedAndroidFirebaseFirestore.AggregateSource source, @NonNull List queries, @NonNull GeneratedAndroidFirebaseFirestore.Result> result) { - Query query = - PigeonParser.parseQuery(getFirestoreFromPigeon(app), path, false, parameters); + public void aggregateQuery( + @NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, + @NonNull String path, + @NonNull GeneratedAndroidFirebaseFirestore.PigeonQueryParameters parameters, + @NonNull GeneratedAndroidFirebaseFirestore.AggregateSource source, + @NonNull List queries, + @NonNull + GeneratedAndroidFirebaseFirestore.Result< + List> + result) { + Query query = PigeonParser.parseQuery(getFirestoreFromPigeon(app), path, false, parameters); AggregateQuery aggregateQuery; ArrayList aggregateFields = new ArrayList<>(); @@ -755,52 +762,65 @@ public void aggregateQuery(@NonNull GeneratedAndroidFirebaseFirestore.FirestoreP } assert query != null; - aggregateQuery = query.aggregate(aggregateFields.get(0), aggregateFields.subList(1, aggregateFields.size()).toArray(new AggregateField[0])); + aggregateQuery = + query.aggregate( + aggregateFields.get(0), + aggregateFields.subList(1, aggregateFields.size()).toArray(new AggregateField[0])); cachedThreadPool.execute( - () -> { - try { - AggregateQuerySnapshot aggregateQuerySnapshot = - Tasks.await(aggregateQuery.get(PigeonParser.parseAggregateSource(source))); - - ArrayList aggregateResponse = new ArrayList<>(); - for (GeneratedAndroidFirebaseFirestore.AggregateQuery queryRequest : queries) { - switch (queryRequest.getType()) { - case COUNT: - GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builder = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); - builder.setType(GeneratedAndroidFirebaseFirestore.AggregateType.COUNT); - builder.setValue((double) aggregateQuerySnapshot.getCount()); - - aggregateResponse.add(builder.build()); - break; - case SUM: - assert queryRequest.getField() != null; - GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderSum = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); - builderSum.setType(GeneratedAndroidFirebaseFirestore.AggregateType.SUM); - builderSum.setValue(((Number) Objects.requireNonNull(aggregateQuerySnapshot.get(sum(queryRequest.getField())))).doubleValue()); - builderSum.setField(queryRequest.getField()); - - aggregateResponse.add(builderSum.build()); - break; - case AVERAGE: - assert queryRequest.getField() != null; - GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderAverage = new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); - builderAverage.setType(GeneratedAndroidFirebaseFirestore.AggregateType.AVERAGE); - builderAverage.setValue(Objects.requireNonNull(aggregateQuerySnapshot.get(average(queryRequest.getField())))); - builderAverage.setField(queryRequest.getField()); - - aggregateResponse.add(builderAverage.build()); - break; + () -> { + try { + AggregateQuerySnapshot aggregateQuerySnapshot = + Tasks.await(aggregateQuery.get(PigeonParser.parseAggregateSource(source))); + + ArrayList aggregateResponse = + new ArrayList<>(); + for (GeneratedAndroidFirebaseFirestore.AggregateQuery queryRequest : queries) { + switch (queryRequest.getType()) { + case COUNT: + GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builder = + new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); + builder.setType(GeneratedAndroidFirebaseFirestore.AggregateType.COUNT); + builder.setValue((double) aggregateQuerySnapshot.getCount()); + + aggregateResponse.add(builder.build()); + break; + case SUM: + assert queryRequest.getField() != null; + GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderSum = + new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); + builderSum.setType(GeneratedAndroidFirebaseFirestore.AggregateType.SUM); + builderSum.setValue( + ((Number) + Objects.requireNonNull( + aggregateQuerySnapshot.get(sum(queryRequest.getField())))) + .doubleValue()); + builderSum.setField(queryRequest.getField()); + + aggregateResponse.add(builderSum.build()); + break; + case AVERAGE: + assert queryRequest.getField() != null; + GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder builderAverage = + new GeneratedAndroidFirebaseFirestore.AggregateQueryResponse.Builder(); + builderAverage.setType(GeneratedAndroidFirebaseFirestore.AggregateType.AVERAGE); + builderAverage.setValue( + Objects.requireNonNull( + aggregateQuerySnapshot.get(average(queryRequest.getField())))); + builderAverage.setField(queryRequest.getField()); + + aggregateResponse.add(builderAverage.build()); + break; + } } - } - - result.success(aggregateResponse); - } catch (Exception e) { - ExceptionConverter.sendErrorToFlutter(result, e); - } - }); + result.success(aggregateResponse); + } catch (Exception e) { + ExceptionConverter.sendErrorToFlutter(result, e); + } + }); } + @Override public void writeBatchCommit( @NonNull GeneratedAndroidFirebaseFirestore.FirestorePigeonFirebaseApp app, diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java index 26ae99d62bf1..b80f71a9515c 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java @@ -12,7 +12,6 @@ import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MessageCodec; -import io.flutter.plugin.common.StandardMessageCodec; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.util.ArrayList; diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m index 1d0cbc39a9b0..222541d2f9e9 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m @@ -726,78 +726,106 @@ - (void)transactionCreateApp:(nonnull FirestorePigeonFirebaseApp *)app nil); } -- (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app path:(nonnull NSString *)path parameters:(nonnull PigeonQueryParameters *)parameters source:(AggregateSource)source queries:(nonnull NSArray *)queries completion:(nonnull void (^)(NSArray * _Nullable, FlutterError * _Nullable))completion { - FIRFirestore *firestore = [self getFIRFirestoreFromAppNameFromPigeon:app]; +- (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app + path:(nonnull NSString *)path + parameters:(nonnull PigeonQueryParameters *)parameters + source:(AggregateSource)source + queries:(nonnull NSArray *)queries + completion:(nonnull void (^)(NSArray *_Nullable, + FlutterError *_Nullable))completion { + FIRFirestore *firestore = [self getFIRFirestoreFromAppNameFromPigeon:app]; - FIRQuery *query = [FirestorePigeonParser parseQueryWithParameters:parameters - firestore:firestore - path:path - isCollectionGroup:NO]; - if (query == nil) { - completion(nil, [FlutterError errorWithCode:@"error-parsing" - message:@"An error occurred while parsing query arguments, " - @"this is most likely an error with this SDK." - details:nil]); - return; - } + FIRQuery *query = [FirestorePigeonParser parseQueryWithParameters:parameters + firestore:firestore + path:path + isCollectionGroup:NO]; + if (query == nil) { + completion(nil, [FlutterError errorWithCode:@"error-parsing" + message:@"An error occurred while parsing query arguments, " + @"this is most likely an error with this SDK." + details:nil]); + return; + } - NSMutableArray *aggregateFields = [[NSMutableArray alloc] init]; - - for (AggregateQuery *queryRequest in queries) { - switch ([queryRequest type]) { - case AggregateTypeCount: - [aggregateFields addObject:[FIRAggregateField aggregateFieldForCount]]; - break; - case AggregateTypeSum: - [aggregateFields addObject:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]]; - break; - case AggregateTypeAverage: - [aggregateFields addObject:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]]; - break; - default: - // Handle the default case - break; - } + NSMutableArray *aggregateFields = + [[NSMutableArray alloc] init]; + + for (AggregateQuery *queryRequest in queries) { + switch ([queryRequest type]) { + case AggregateTypeCount: + [aggregateFields addObject:[FIRAggregateField aggregateFieldForCount]]; + break; + case AggregateTypeSum: + [aggregateFields + addObject:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]]; + break; + case AggregateTypeAverage: + [aggregateFields + addObject:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]]; + break; + default: + // Handle the default case + break; } - - FIRAggregateQuery *aggregateQuery = [query aggregate:aggregateFields]; - - [aggregateQuery aggregationWithSource:FIRAggregateSourceServer - completion:^(FIRAggregateQuerySnapshot *_Nullable snapshot, - NSError *_Nullable error) { - if (error != nil) { - completion(nil, [self convertToFlutterError:error]); - return; - } - NSMutableArray* aggregateResponses = [[NSMutableArray alloc] init]; - - for (AggregateQuery *queryRequest in queries) { - switch (queryRequest.type) { - case AggregateTypeCount: { - double doubleValue = [snapshot.count doubleValue]; - - [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeCount field:nil value:[NSNumber numberWithDouble:doubleValue]]]; - break; - } - case AggregateTypeSum: { - double doubleValue = [[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForSumOfField:[queryRequest field]]] doubleValue]; - - [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeSum field:queryRequest.field value:[NSNumber numberWithDouble:doubleValue]]]; - break; - } - case AggregateTypeAverage: { - double doubleValue = [[snapshot valueForAggregateField:[FIRAggregateField aggregateFieldForAverageOfField:[queryRequest field]]] doubleValue]; - - [aggregateResponses addObject:[AggregateQueryResponse makeWithType:AggregateTypeAverage field:queryRequest.field value:[NSNumber numberWithDouble:doubleValue]]]; - break; - } - } - } + } - completion(aggregateResponses, nil); - }]; + FIRAggregateQuery *aggregateQuery = [query aggregate:aggregateFields]; + + [aggregateQuery + aggregationWithSource:FIRAggregateSourceServer + completion:^(FIRAggregateQuerySnapshot *_Nullable snapshot, + NSError *_Nullable error) { + if (error != nil) { + completion(nil, [self convertToFlutterError:error]); + return; + } + NSMutableArray *aggregateResponses = + [[NSMutableArray alloc] init]; + + for (AggregateQuery *queryRequest in queries) { + switch (queryRequest.type) { + case AggregateTypeCount: { + double doubleValue = [snapshot.count doubleValue]; + + [aggregateResponses + addObject:[AggregateQueryResponse + makeWithType:AggregateTypeCount + field:nil + value:[NSNumber numberWithDouble:doubleValue]]]; + break; + } + case AggregateTypeSum: { + double doubleValue = [[snapshot + valueForAggregateField:[FIRAggregateField + aggregateFieldForSumOfField:[queryRequest + field]]] + doubleValue]; + + [aggregateResponses + addObject:[AggregateQueryResponse + makeWithType:AggregateTypeSum + field:queryRequest.field + value:[NSNumber numberWithDouble:doubleValue]]]; + break; + } + case AggregateTypeAverage: { + double doubleValue = [[snapshot + valueForAggregateField:[FIRAggregateField + aggregateFieldForAverageOfField: + [queryRequest field]]] doubleValue]; + + [aggregateResponses + addObject:[AggregateQueryResponse + makeWithType:AggregateTypeAverage + field:queryRequest.field + value:[NSNumber numberWithDouble:doubleValue]]]; + break; + } + } + } + completion(aggregateResponses, nil); + }]; } - @end From c9355dcdae869dfb4d97963bc686f941bae9ae32 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 8 Nov 2023 09:32:36 +0100 Subject: [PATCH 16/25] windows --- .../windows/cloud_firestore_plugin.cpp | 63 +++++++++++++++++-- .../windows/cloud_firestore_plugin.h | 6 +- .../cloud_firestore/windows/messages.g.cpp | 4 +- .../cloud_firestore/windows/messages.g.h | 16 ++--- 4 files changed, 72 insertions(+), 17 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp index b11febd56d16..33210c3b6df1 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp @@ -1384,7 +1384,6 @@ void CloudFirestorePlugin::QueryGet( }); } -using firebase::firestore::AggregateQuery; firebase::firestore::AggregateSource GetAggregateSourceFromPigeon( const AggregateSource& source) { @@ -1395,29 +1394,81 @@ firebase::firestore::AggregateSource GetAggregateSourceFromPigeon( } } -void CloudFirestorePlugin::AggregateQueryCount( +void CloudFirestorePlugin::AggregateQuery( const FirestorePigeonFirebaseApp& app, const std::string& path, const PigeonQueryParameters& parameters, const AggregateSource& source, - std::function reply)> result) { + const flutter::EncodableList& queries, + std::function reply)> result) { + Firestore* firestore = GetFirestoreFromPigeon(app); Query query = ParseQuery(firestore, path, false, parameters); - AggregateQuery aggregate_query = query.Count(); + + // C++ SDK does not support average and sum + firebase::firestore::AggregateQuery aggregate_query; + + for (auto& queryRequest : queries) { + const cloud_firestore_windows::AggregateQuery& queryRequestTyped = + std::any_cast( + std::get(queryRequest)); + + switch (queryRequestTyped.type()) { + case AggregateType::count: + aggregate_query = query.Count(); + break; + case AggregateType::sum: + std::cout << "Sum is not supported on C++" << std::endl; + break; + case AggregateType::average: + std::cout << "Average is not supported on C++" << std::endl; + break; + } + } Future future = aggregate_query.Get(GetAggregateSourceFromPigeon(source)); future.OnCompletion( - [result](const Future& completed_future) { + [result, + queries](const Future& completed_future) { if (completed_future.error() == firebase::firestore::kErrorOk) { const AggregateQuerySnapshot* aggregateQuerySnapshot = completed_future.result(); - result(static_cast(aggregateQuerySnapshot->count())); + EncodableList aggregateResponses; + + for (auto& queryRequest : queries) { + const cloud_firestore_windows::AggregateQuery& queryRequestTyped = + std::any_cast( + std::get(queryRequest)); + + switch (queryRequestTyped.type()) { + case AggregateType::count: { + double doubleValue = + static_cast(aggregateQuerySnapshot->count()); + aggregateResponses.push_back( + CustomEncodableValue( + AggregateQueryResponse( + AggregateType::count, doubleValue))); + break; + } + case AggregateType::sum: { + std::cout << "Sum is not supported on C++" << std::endl; + break; + } + case AggregateType::average: { + std::cout << "Average is not supported on C++" << std::endl; + break; + } + } + } + + result(aggregateResponses); } else { result(CloudFirestorePlugin::ParseError(completed_future)); } }); } + void CloudFirestorePlugin::WriteBatchCommit( const FirestorePigeonFirebaseApp& app, const flutter::EncodableList& writes, std::function reply)> result) { diff --git a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h index 8c223afdd561..9c33f71e6c5f 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h +++ b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h @@ -111,10 +111,12 @@ class CloudFirestorePlugin : public flutter::Plugin, bool is_collection_group, const PigeonQueryParameters& parameters, const PigeonGetOptions& options, std::function reply)> result) override; - virtual void AggregateQueryCount( + virtual void AggregateQuery( const FirestorePigeonFirebaseApp& app, const std::string& path, const PigeonQueryParameters& parameters, const AggregateSource& source, - std::function reply)> result) override; + const flutter::EncodableList& queries, + std::function reply)> result) + override; virtual void WriteBatchCommit( const FirestorePigeonFirebaseApp& app, const flutter::EncodableList& writes, diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp index 39bd49e1a4c7..38cdf0b5cac6 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp @@ -1038,7 +1038,7 @@ EncodableValue FirebaseFirestoreHostApiCodecSerializer::ReadValueOfType( return CustomEncodableValue(PigeonTransactionCommand::FromEncodableList( std::get(ReadValue(stream)))); default: - return flutter::StandardCodecSerializer::ReadValueOfType(type, stream); + return cloud_firestore_windows::FirestoreCodec::ReadValueOfType(type, stream); } } @@ -1151,7 +1151,7 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( return; } } - flutter::StandardCodecSerializer::WriteValue(value, stream); + cloud_firestore_windows::FirestoreCodec::WriteValue(value, stream); } /// The codec used by FirebaseFirestoreHostApi. diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h index bf83c67511ed..38467b76955a 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h @@ -15,6 +15,8 @@ #include #include +#include "firestore_codec.h" + namespace cloud_firestore_windows { // Generated class from Pigeon. @@ -207,11 +209,11 @@ class PigeonSnapshotMetadata { bool is_from_cache() const; void set_is_from_cache(bool value_arg); - - private: static PigeonSnapshotMetadata FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; + + private: friend class PigeonDocumentSnapshot; friend class PigeonQuerySnapshot; friend class FirebaseFirestoreHostApi; @@ -241,11 +243,11 @@ class PigeonDocumentSnapshot { const PigeonSnapshotMetadata& metadata() const; void set_metadata(const PigeonSnapshotMetadata& value_arg); - - private: static PigeonDocumentSnapshot FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; + + private: friend class PigeonDocumentChange; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -273,11 +275,11 @@ class PigeonDocumentChange { int64_t new_index() const; void set_new_index(int64_t value_arg); - - private: static PigeonDocumentChange FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; + + private: friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; DocumentChangeType type_; @@ -577,7 +579,7 @@ class AggregateQueryResponse { }; class FirebaseFirestoreHostApiCodecSerializer - : public flutter::StandardCodecSerializer { + : public cloud_firestore_windows::FirestoreCodec { public: FirebaseFirestoreHostApiCodecSerializer(); inline static FirebaseFirestoreHostApiCodecSerializer& GetInstance() { From aba4c18b009c5db8f0c7521e3db1ee48da461c29 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 8 Nov 2023 14:55:02 +0100 Subject: [PATCH 17/25] format --- .../windows/cloud_firestore_plugin.cpp | 11 +++-------- .../cloud_firestore/windows/messages.g.cpp | 3 ++- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp index 33210c3b6df1..70b846e1b4f8 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp @@ -1384,7 +1384,6 @@ void CloudFirestorePlugin::QueryGet( }); } - firebase::firestore::AggregateSource GetAggregateSourceFromPigeon( const AggregateSource& source) { switch (source) { @@ -1399,7 +1398,6 @@ void CloudFirestorePlugin::AggregateQuery( const PigeonQueryParameters& parameters, const AggregateSource& source, const flutter::EncodableList& queries, std::function reply)> result) { - Firestore* firestore = GetFirestoreFromPigeon(app); Query query = ParseQuery(firestore, path, false, parameters); @@ -1443,11 +1441,9 @@ void CloudFirestorePlugin::AggregateQuery( switch (queryRequestTyped.type()) { case AggregateType::count: { double doubleValue = - static_cast(aggregateQuerySnapshot->count()); - aggregateResponses.push_back( - CustomEncodableValue( - AggregateQueryResponse( - AggregateType::count, doubleValue))); + static_cast(aggregateQuerySnapshot->count()); + aggregateResponses.push_back(CustomEncodableValue( + AggregateQueryResponse(AggregateType::count, doubleValue))); break; } case AggregateType::sum: { @@ -1468,7 +1464,6 @@ void CloudFirestorePlugin::AggregateQuery( }); } - void CloudFirestorePlugin::WriteBatchCommit( const FirestorePigeonFirebaseApp& app, const flutter::EncodableList& writes, std::function reply)> result) { diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp index 38cdf0b5cac6..dd5e34caf7d4 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp @@ -1038,7 +1038,8 @@ EncodableValue FirebaseFirestoreHostApiCodecSerializer::ReadValueOfType( return CustomEncodableValue(PigeonTransactionCommand::FromEncodableList( std::get(ReadValue(stream)))); default: - return cloud_firestore_windows::FirestoreCodec::ReadValueOfType(type, stream); + return cloud_firestore_windows::FirestoreCodec::ReadValueOfType(type, + stream); } } From 368698ad8e38de7084bede095365d7f2ee8d3a93 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 24 Nov 2023 09:16:21 +0100 Subject: [PATCH 18/25] merge master --- .../GeneratedAndroidFirebaseFirestore.java | 378 ++- .../ios/Classes/FLTFirebaseFirestorePlugin.m | 2 +- .../ios/Classes/FirestoreMessages.g.m | 643 +++-- .../ios/Classes/Public/FirestoreMessages.g.h | 268 +- .../windows/cloud_firestore_plugin.cpp | 3 +- .../windows/cloud_firestore_plugin.h | 3 +- .../cloud_firestore/windows/messages.g.cpp | 2247 +++++++++-------- .../cloud_firestore/windows/messages.g.h | 396 ++- 8 files changed, 2267 insertions(+), 1673 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java index 8e6818b0aa82..122314a75ec7 100644 --- a/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java +++ b/packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java @@ -12,13 +12,9 @@ import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MessageCodec; -import io.flutter.plugin.common.StandardMessageCodec; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -35,8 +31,7 @@ public static class FlutterError extends RuntimeException { /** The error details. Must be a datatype supported by the api codec. */ public final Object details; - public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) - { + public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) { super(message); this.code = code; this.details = details; @@ -55,23 +50,20 @@ protected static ArrayList wrapError(@NonNull Throwable exception) { errorList.add(exception.toString()); errorList.add(exception.getClass().getSimpleName()); errorList.add( - "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); } return errorList; } /** An enumeration of document change types. */ public enum DocumentChangeType { - /** - * Indicates a new document was added to the set of documents matching the - * query. - */ + /** Indicates a new document was added to the set of documents matching the query. */ ADDED(0), /** Indicates a document within the query was modified. */ MODIFIED(1), /** - * Indicates a document within the query was removed (either deleted or no - * longer matches the query. + * Indicates a document within the query was removed (either deleted or no longer matches the + * query. */ REMOVED(2); @@ -85,23 +77,23 @@ private DocumentChangeType(final int index) { /** An enumeration of firestore source types. */ public enum Source { /** - * Causes Firestore to try to retrieve an up-to-date (server-retrieved) snapshot, but fall back to - * returning cached data if the server can't be reached. + * Causes Firestore to try to retrieve an up-to-date (server-retrieved) snapshot, but fall back + * to returning cached data if the server can't be reached. */ SERVER_AND_CACHE(0), /** - * Causes Firestore to avoid the cache, generating an error if the server cannot be reached. Note - * that the cache will still be updated if the server request succeeds. Also note that - * latency-compensation still takes effect, so any pending write operations will be visible in the - * returned data (merged into the server-provided data). + * Causes Firestore to avoid the cache, generating an error if the server cannot be reached. + * Note that the cache will still be updated if the server request succeeds. Also note that + * latency-compensation still takes effect, so any pending write operations will be visible in + * the returned data (merged into the server-provided data). */ SERVER(1), /** * Causes Firestore to immediately return a value from the cache, ignoring the server completely * (implying that the returned value may be stale with respect to the value on the server). If - * there is no data in the cache to satisfy the `get` call, - * [DocumentReference.get] will throw a [FirebaseException] and - * [Query.get] will return an empty [QuerySnapshotPlatform] with no documents. + * there is no data in the cache to satisfy the `get` call, [DocumentReference.get] will throw a + * [FirebaseException] and [Query.get] will return an empty [QuerySnapshotPlatform] with no + * documents. */ CACHE(2); @@ -115,9 +107,15 @@ private Source(final int index) { public enum ServerTimestampBehavior { /** Return null for [FieldValue.serverTimestamp()] values that have not yet */ NONE(0), - /** Return local estimates for [FieldValue.serverTimestamp()] values that have not yet been set to their final value. */ + /** + * Return local estimates for [FieldValue.serverTimestamp()] values that have not yet been set + * to their final value. + */ ESTIMATE(1), - /** Return the previous value for [FieldValue.serverTimestamp()] values that have not yet been set to their final value. */ + /** + * Return the previous value for [FieldValue.serverTimestamp()] values that have not yet been + * set to their final value. + */ PREVIOUS(2); final int index; @@ -301,7 +299,12 @@ public ArrayList toList() { Object sslEnabled = list.get(2); pigeonResult.setSslEnabled((Boolean) sslEnabled); Object cacheSizeBytes = list.get(3); - pigeonResult.setCacheSizeBytes((cacheSizeBytes == null) ? null : ((cacheSizeBytes instanceof Integer) ? (Integer) cacheSizeBytes : (Long) cacheSizeBytes)); + pigeonResult.setCacheSizeBytes( + (cacheSizeBytes == null) + ? null + : ((cacheSizeBytes instanceof Integer) + ? (Integer) cacheSizeBytes + : (Long) cacheSizeBytes)); Object ignoreUndefinedProperties = list.get(4); pigeonResult.setIgnoreUndefinedProperties((Boolean) ignoreUndefinedProperties); return pigeonResult; @@ -398,7 +401,10 @@ public ArrayList toList() { Object appName = list.get(0); pigeonResult.setAppName((String) appName); Object settings = list.get(1); - pigeonResult.setSettings((settings == null) ? null : PigeonFirebaseSettings.fromList((ArrayList) settings)); + pigeonResult.setSettings( + (settings == null) + ? null + : PigeonFirebaseSettings.fromList((ArrayList) settings)); Object databaseURL = list.get(2); pigeonResult.setDatabaseURL((String) databaseURL); return pigeonResult; @@ -567,7 +573,10 @@ public ArrayList toList() { Object data = list.get(1); pigeonResult.setData((Map) data); Object metadata = list.get(2); - pigeonResult.setMetadata((metadata == null) ? null : PigeonSnapshotMetadata.fromList((ArrayList) metadata)); + pigeonResult.setMetadata( + (metadata == null) + ? null + : PigeonSnapshotMetadata.fromList((ArrayList) metadata)); return pigeonResult; } } @@ -684,11 +693,20 @@ public ArrayList toList() { Object type = list.get(0); pigeonResult.setType(DocumentChangeType.values()[(int) type]); Object document = list.get(1); - pigeonResult.setDocument((document == null) ? null : PigeonDocumentSnapshot.fromList((ArrayList) document)); + pigeonResult.setDocument( + (document == null) + ? null + : PigeonDocumentSnapshot.fromList((ArrayList) document)); Object oldIndex = list.get(2); - pigeonResult.setOldIndex((oldIndex == null) ? null : ((oldIndex instanceof Integer) ? (Integer) oldIndex : (Long) oldIndex)); + pigeonResult.setOldIndex( + (oldIndex == null) + ? null + : ((oldIndex instanceof Integer) ? (Integer) oldIndex : (Long) oldIndex)); Object newIndex = list.get(3); - pigeonResult.setNewIndex((newIndex == null) ? null : ((newIndex instanceof Integer) ? (Integer) newIndex : (Long) newIndex)); + pigeonResult.setNewIndex( + (newIndex == null) + ? null + : ((newIndex instanceof Integer) ? (Integer) newIndex : (Long) newIndex)); return pigeonResult; } } @@ -785,7 +803,10 @@ public ArrayList toList() { Object documentChanges = list.get(1); pigeonResult.setDocumentChanges((List) documentChanges); Object metadata = list.get(2); - pigeonResult.setMetadata((metadata == null) ? null : PigeonSnapshotMetadata.fromList((ArrayList) metadata)); + pigeonResult.setMetadata( + (metadata == null) + ? null + : PigeonSnapshotMetadata.fromList((ArrayList) metadata)); return pigeonResult; } } @@ -832,7 +853,8 @@ public static final class Builder { private @Nullable ServerTimestampBehavior serverTimestampBehavior; - public @NonNull Builder setServerTimestampBehavior(@NonNull ServerTimestampBehavior setterArg) { + public @NonNull Builder setServerTimestampBehavior( + @NonNull ServerTimestampBehavior setterArg) { this.serverTimestampBehavior = setterArg; return this; } @@ -858,7 +880,8 @@ public ArrayList toList() { Object source = list.get(0); pigeonResult.setSource(Source.values()[(int) source]); Object serverTimestampBehavior = list.get(1); - pigeonResult.setServerTimestampBehavior(ServerTimestampBehavior.values()[(int) serverTimestampBehavior]); + pigeonResult.setServerTimestampBehavior( + ServerTimestampBehavior.values()[(int) serverTimestampBehavior]); return pigeonResult; } } @@ -1037,7 +1060,8 @@ public ArrayList toList() { Object data = list.get(2); pigeonResult.setData((Map) data); Object option = list.get(3); - pigeonResult.setOption((option == null) ? null : PigeonDocumentOption.fromList((ArrayList) option)); + pigeonResult.setOption( + (option == null) ? null : PigeonDocumentOption.fromList((ArrayList) option)); return pigeonResult; } } @@ -1132,7 +1156,8 @@ public static final class Builder { private @Nullable ServerTimestampBehavior serverTimestampBehavior; - public @NonNull Builder setServerTimestampBehavior(@Nullable ServerTimestampBehavior setterArg) { + public @NonNull Builder setServerTimestampBehavior( + @Nullable ServerTimestampBehavior setterArg) { this.serverTimestampBehavior = setterArg; return this; } @@ -1166,11 +1191,15 @@ public ArrayList toList() { Object data = list.get(1); pigeonResult.setData((Map) data); Object option = list.get(2); - pigeonResult.setOption((option == null) ? null : PigeonDocumentOption.fromList((ArrayList) option)); + pigeonResult.setOption( + (option == null) ? null : PigeonDocumentOption.fromList((ArrayList) option)); Object source = list.get(3); pigeonResult.setSource(source == null ? null : Source.values()[(int) source]); Object serverTimestampBehavior = list.get(4); - pigeonResult.setServerTimestampBehavior(serverTimestampBehavior == null ? null : ServerTimestampBehavior.values()[(int) serverTimestampBehavior]); + pigeonResult.setServerTimestampBehavior( + serverTimestampBehavior == null + ? null + : ServerTimestampBehavior.values()[(int) serverTimestampBehavior]); return pigeonResult; } } @@ -1369,9 +1398,13 @@ public ArrayList toList() { Object orderBy = list.get(1); pigeonResult.setOrderBy((List>) orderBy); Object limit = list.get(2); - pigeonResult.setLimit((limit == null) ? null : ((limit instanceof Integer) ? (Integer) limit : (Long) limit)); + pigeonResult.setLimit( + (limit == null) ? null : ((limit instanceof Integer) ? (Integer) limit : (Long) limit)); Object limitToLast = list.get(3); - pigeonResult.setLimitToLast((limitToLast == null) ? null : ((limitToLast instanceof Integer) ? (Integer) limitToLast : (Long) limitToLast)); + pigeonResult.setLimitToLast( + (limitToLast == null) + ? null + : ((limitToLast instanceof Integer) ? (Integer) limitToLast : (Long) limitToLast)); Object startAt = list.get(4); pigeonResult.setStartAt((List) startAt); Object startAfter = list.get(5); @@ -1558,7 +1591,8 @@ public interface Result { } private static class FirebaseFirestoreHostApiCodec extends FlutterFirebaseFirestoreMessageCodec { - public static final FirebaseFirestoreHostApiCodec INSTANCE = new FirebaseFirestoreHostApiCodec(); + public static final FirebaseFirestoreHostApiCodec INSTANCE = + new FirebaseFirestoreHostApiCodec(); private FirebaseFirestoreHostApiCodec() {} @@ -1646,9 +1680,16 @@ protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface FirebaseFirestoreHostApi { - void loadBundle(@NonNull FirestorePigeonFirebaseApp app, @NonNull byte[] bundle, @NonNull Result result); + void loadBundle( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull byte[] bundle, + @NonNull Result result); - void namedQueryGet(@NonNull FirestorePigeonFirebaseApp app, @NonNull String name, @NonNull PigeonGetOptions options, @NonNull Result result); + void namedQueryGet( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull String name, + @NonNull PigeonGetOptions options, + @NonNull Result result); void clearPersistence(@NonNull FirestorePigeonFirebaseApp app, @NonNull Result result); @@ -1658,48 +1699,110 @@ public interface FirebaseFirestoreHostApi { void terminate(@NonNull FirestorePigeonFirebaseApp app, @NonNull Result result); - void waitForPendingWrites(@NonNull FirestorePigeonFirebaseApp app, @NonNull Result result); + void waitForPendingWrites( + @NonNull FirestorePigeonFirebaseApp app, @NonNull Result result); - void setIndexConfiguration(@NonNull FirestorePigeonFirebaseApp app, @NonNull String indexConfiguration, @NonNull Result result); + void setIndexConfiguration( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull String indexConfiguration, + @NonNull Result result); void setLoggingEnabled(@NonNull Boolean loggingEnabled, @NonNull Result result); - void snapshotsInSyncSetup(@NonNull FirestorePigeonFirebaseApp app, @NonNull Result result); - - void transactionCreate(@NonNull FirestorePigeonFirebaseApp app, @NonNull Long timeout, @NonNull Long maxAttempts, @NonNull Result result); - - void transactionStoreResult(@NonNull String transactionId, @NonNull PigeonTransactionResult resultType, @Nullable List commands, @NonNull Result result); - - void transactionGet(@NonNull FirestorePigeonFirebaseApp app, @NonNull String transactionId, @NonNull String path, @NonNull Result result); - - void documentReferenceSet(@NonNull FirestorePigeonFirebaseApp app, @NonNull DocumentReferenceRequest request, @NonNull Result result); - - void documentReferenceUpdate(@NonNull FirestorePigeonFirebaseApp app, @NonNull DocumentReferenceRequest request, @NonNull Result result); - - void documentReferenceGet(@NonNull FirestorePigeonFirebaseApp app, @NonNull DocumentReferenceRequest request, @NonNull Result result); - - void documentReferenceDelete(@NonNull FirestorePigeonFirebaseApp app, @NonNull DocumentReferenceRequest request, @NonNull Result result); - - void queryGet(@NonNull FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull Boolean isCollectionGroup, @NonNull PigeonQueryParameters parameters, @NonNull PigeonGetOptions options, @NonNull Result result); - - void aggregateQuery(@NonNull FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull PigeonQueryParameters parameters, @NonNull AggregateSource source, @NonNull List queries, @NonNull Boolean isCollectionGroup, @NonNull Result> result); - - void writeBatchCommit(@NonNull FirestorePigeonFirebaseApp app, @NonNull List writes, @NonNull Result result); - - void querySnapshot(@NonNull FirestorePigeonFirebaseApp app, @NonNull String path, @NonNull Boolean isCollectionGroup, @NonNull PigeonQueryParameters parameters, @NonNull PigeonGetOptions options, @NonNull Boolean includeMetadataChanges, @NonNull Result result); - - void documentReferenceSnapshot(@NonNull FirestorePigeonFirebaseApp app, @NonNull DocumentReferenceRequest parameters, @NonNull Boolean includeMetadataChanges, @NonNull Result result); + void snapshotsInSyncSetup( + @NonNull FirestorePigeonFirebaseApp app, @NonNull Result result); + + void transactionCreate( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull Long timeout, + @NonNull Long maxAttempts, + @NonNull Result result); + + void transactionStoreResult( + @NonNull String transactionId, + @NonNull PigeonTransactionResult resultType, + @Nullable List commands, + @NonNull Result result); + + void transactionGet( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull String transactionId, + @NonNull String path, + @NonNull Result result); + + void documentReferenceSet( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull DocumentReferenceRequest request, + @NonNull Result result); + + void documentReferenceUpdate( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull DocumentReferenceRequest request, + @NonNull Result result); + + void documentReferenceGet( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull DocumentReferenceRequest request, + @NonNull Result result); + + void documentReferenceDelete( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull DocumentReferenceRequest request, + @NonNull Result result); + + void queryGet( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull String path, + @NonNull Boolean isCollectionGroup, + @NonNull PigeonQueryParameters parameters, + @NonNull PigeonGetOptions options, + @NonNull Result result); + + void aggregateQuery( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull String path, + @NonNull PigeonQueryParameters parameters, + @NonNull AggregateSource source, + @NonNull List queries, + @NonNull Boolean isCollectionGroup, + @NonNull Result> result); + + void writeBatchCommit( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull List writes, + @NonNull Result result); + + void querySnapshot( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull String path, + @NonNull Boolean isCollectionGroup, + @NonNull PigeonQueryParameters parameters, + @NonNull PigeonGetOptions options, + @NonNull Boolean includeMetadataChanges, + @NonNull Result result); + + void documentReferenceSnapshot( + @NonNull FirestorePigeonFirebaseApp app, + @NonNull DocumentReferenceRequest parameters, + @NonNull Boolean includeMetadataChanges, + @NonNull Result result); /** The codec used by FirebaseFirestoreHostApi. */ static @NonNull MessageCodec getCodec() { return FirebaseFirestoreHostApiCodec.INSTANCE; } - /**Sets up an instance of `FirebaseFirestoreHostApi` to handle messages through the `binaryMessenger`. */ - static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable FirebaseFirestoreHostApi api) { + /** + * Sets up an instance of `FirebaseFirestoreHostApi` to handle messages through the + * `binaryMessenger`. + */ + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable FirebaseFirestoreHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1729,7 +1832,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1760,7 +1865,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1789,7 +1896,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1818,7 +1927,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1847,7 +1958,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1876,7 +1989,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1905,7 +2020,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1935,7 +2052,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1964,7 +2083,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1993,7 +2114,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2015,7 +2138,11 @@ public void error(Throwable error) { } }; - api.transactionCreate(appArg, (timeoutArg == null) ? null : timeoutArg.longValue(), (maxAttemptsArg == null) ? null : maxAttemptsArg.longValue(), resultCallback); + api.transactionCreate( + appArg, + (timeoutArg == null) ? null : timeoutArg.longValue(), + (maxAttemptsArg == null) ? null : maxAttemptsArg.longValue(), + resultCallback); }); } else { channel.setMessageHandler(null); @@ -2024,15 +2151,19 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); ArrayList args = (ArrayList) message; String transactionIdArg = (String) args.get(0); - PigeonTransactionResult resultTypeArg = PigeonTransactionResult.values()[(int) args.get(1)]; - List commandsArg = (List) args.get(2); + PigeonTransactionResult resultTypeArg = + PigeonTransactionResult.values()[(int) args.get(1)]; + List commandsArg = + (List) args.get(2); Result resultCallback = new Result() { public void success(Void result) { @@ -2046,7 +2177,8 @@ public void error(Throwable error) { } }; - api.transactionStoreResult(transactionIdArg, resultTypeArg, commandsArg, resultCallback); + api.transactionStoreResult( + transactionIdArg, resultTypeArg, commandsArg, resultCallback); }); } else { channel.setMessageHandler(null); @@ -2055,7 +2187,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2086,7 +2220,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2116,7 +2252,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2146,7 +2284,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2176,7 +2316,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2206,7 +2348,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2230,7 +2374,13 @@ public void error(Throwable error) { } }; - api.queryGet(appArg, pathArg, isCollectionGroupArg, parametersArg, optionsArg, resultCallback); + api.queryGet( + appArg, + pathArg, + isCollectionGroupArg, + parametersArg, + optionsArg, + resultCallback); }); } else { channel.setMessageHandler(null); @@ -2239,7 +2389,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2264,7 +2416,14 @@ public void error(Throwable error) { } }; - api.aggregateQuery(appArg, pathArg, parametersArg, sourceArg, queriesArg, isCollectionGroupArg, resultCallback); + api.aggregateQuery( + appArg, + pathArg, + parametersArg, + sourceArg, + queriesArg, + isCollectionGroupArg, + resultCallback); }); } else { channel.setMessageHandler(null); @@ -2273,14 +2432,17 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); ArrayList args = (ArrayList) message; FirestorePigeonFirebaseApp appArg = (FirestorePigeonFirebaseApp) args.get(0); - List writesArg = (List) args.get(1); + List writesArg = + (List) args.get(1); Result resultCallback = new Result() { public void success(Void result) { @@ -2303,7 +2465,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2328,7 +2492,14 @@ public void error(Throwable error) { } }; - api.querySnapshot(appArg, pathArg, isCollectionGroupArg, parametersArg, optionsArg, includeMetadataChangesArg, resultCallback); + api.querySnapshot( + appArg, + pathArg, + isCollectionGroupArg, + parametersArg, + optionsArg, + includeMetadataChangesArg, + resultCallback); }); } else { channel.setMessageHandler(null); @@ -2337,7 +2508,9 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot", getCodec()); + binaryMessenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot", + getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2359,7 +2532,8 @@ public void error(Throwable error) { } }; - api.documentReferenceSnapshot(appArg, parametersArg, includeMetadataChangesArg, resultCallback); + api.documentReferenceSnapshot( + appArg, parametersArg, includeMetadataChangesArg, resultCallback); }); } else { channel.setMessageHandler(null); diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m index 07de1068dece..370b72316b2d 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FLTFirebaseFirestorePlugin.m @@ -731,7 +731,7 @@ - (void)aggregateQueryApp:(nonnull FirestorePigeonFirebaseApp *)app parameters:(nonnull PigeonQueryParameters *)parameters source:(AggregateSource)source queries:(nonnull NSArray *)queries - isCollectionGroup:(NSNumber *)isCollectionGroup + isCollectionGroup:(NSNumber *)isCollectionGroup completion:(nonnull void (^)(NSArray *_Nullable, FlutterError *_Nullable))completion { FIRFirestore *firestore = [self getFIRFirestoreFromAppNameFromPigeon:app]; diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m index dd99515bac06..eb82ef9ce4c3 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/FirestoreMessages.g.m @@ -184,11 +184,11 @@ - (NSArray *)toList; @implementation PigeonFirebaseSettings + (instancetype)makeWithPersistenceEnabled:(nullable NSNumber *)persistenceEnabled - host:(nullable NSString *)host - sslEnabled:(nullable NSNumber *)sslEnabled - cacheSizeBytes:(nullable NSNumber *)cacheSizeBytes - ignoreUndefinedProperties:(NSNumber *)ignoreUndefinedProperties { - PigeonFirebaseSettings* pigeonResult = [[PigeonFirebaseSettings alloc] init]; + host:(nullable NSString *)host + sslEnabled:(nullable NSNumber *)sslEnabled + cacheSizeBytes:(nullable NSNumber *)cacheSizeBytes + ignoreUndefinedProperties:(NSNumber *)ignoreUndefinedProperties { + PigeonFirebaseSettings *pigeonResult = [[PigeonFirebaseSettings alloc] init]; pigeonResult.persistenceEnabled = persistenceEnabled; pigeonResult.host = host; pigeonResult.sslEnabled = sslEnabled; @@ -222,9 +222,9 @@ - (NSArray *)toList { @implementation FirestorePigeonFirebaseApp + (instancetype)makeWithAppName:(NSString *)appName - settings:(PigeonFirebaseSettings *)settings - databaseURL:(NSString *)databaseURL { - FirestorePigeonFirebaseApp* pigeonResult = [[FirestorePigeonFirebaseApp alloc] init]; + settings:(PigeonFirebaseSettings *)settings + databaseURL:(NSString *)databaseURL { + FirestorePigeonFirebaseApp *pigeonResult = [[FirestorePigeonFirebaseApp alloc] init]; pigeonResult.appName = appName; pigeonResult.settings = settings; pigeonResult.databaseURL = databaseURL; @@ -234,7 +234,8 @@ + (FirestorePigeonFirebaseApp *)fromList:(NSArray *)list { FirestorePigeonFirebaseApp *pigeonResult = [[FirestorePigeonFirebaseApp alloc] init]; pigeonResult.appName = GetNullableObjectAtIndex(list, 0); NSAssert(pigeonResult.appName != nil, @""); - pigeonResult.settings = [PigeonFirebaseSettings nullableFromList:(GetNullableObjectAtIndex(list, 1))]; + pigeonResult.settings = + [PigeonFirebaseSettings nullableFromList:(GetNullableObjectAtIndex(list, 1))]; NSAssert(pigeonResult.settings != nil, @""); pigeonResult.databaseURL = GetNullableObjectAtIndex(list, 2); NSAssert(pigeonResult.databaseURL != nil, @""); @@ -254,8 +255,8 @@ - (NSArray *)toList { @implementation PigeonSnapshotMetadata + (instancetype)makeWithHasPendingWrites:(NSNumber *)hasPendingWrites - isFromCache:(NSNumber *)isFromCache { - PigeonSnapshotMetadata* pigeonResult = [[PigeonSnapshotMetadata alloc] init]; + isFromCache:(NSNumber *)isFromCache { + PigeonSnapshotMetadata *pigeonResult = [[PigeonSnapshotMetadata alloc] init]; pigeonResult.hasPendingWrites = hasPendingWrites; pigeonResult.isFromCache = isFromCache; return pigeonResult; @@ -281,9 +282,9 @@ - (NSArray *)toList { @implementation PigeonDocumentSnapshot + (instancetype)makeWithPath:(NSString *)path - data:(nullable NSDictionary *)data - metadata:(PigeonSnapshotMetadata *)metadata { - PigeonDocumentSnapshot* pigeonResult = [[PigeonDocumentSnapshot alloc] init]; + data:(nullable NSDictionary *)data + metadata:(PigeonSnapshotMetadata *)metadata { + PigeonDocumentSnapshot *pigeonResult = [[PigeonDocumentSnapshot alloc] init]; pigeonResult.path = path; pigeonResult.data = data; pigeonResult.metadata = metadata; @@ -294,7 +295,8 @@ + (PigeonDocumentSnapshot *)fromList:(NSArray *)list { pigeonResult.path = GetNullableObjectAtIndex(list, 0); NSAssert(pigeonResult.path != nil, @""); pigeonResult.data = GetNullableObjectAtIndex(list, 1); - pigeonResult.metadata = [PigeonSnapshotMetadata nullableFromList:(GetNullableObjectAtIndex(list, 2))]; + pigeonResult.metadata = + [PigeonSnapshotMetadata nullableFromList:(GetNullableObjectAtIndex(list, 2))]; NSAssert(pigeonResult.metadata != nil, @""); return pigeonResult; } @@ -312,10 +314,10 @@ - (NSArray *)toList { @implementation PigeonDocumentChange + (instancetype)makeWithType:(DocumentChangeType)type - document:(PigeonDocumentSnapshot *)document - oldIndex:(NSNumber *)oldIndex - newIndex:(NSNumber *)newIndex { - PigeonDocumentChange* pigeonResult = [[PigeonDocumentChange alloc] init]; + document:(PigeonDocumentSnapshot *)document + oldIndex:(NSNumber *)oldIndex + newIndex:(NSNumber *)newIndex { + PigeonDocumentChange *pigeonResult = [[PigeonDocumentChange alloc] init]; pigeonResult.type = type; pigeonResult.document = document; pigeonResult.oldIndex = oldIndex; @@ -325,7 +327,8 @@ + (instancetype)makeWithType:(DocumentChangeType)type + (PigeonDocumentChange *)fromList:(NSArray *)list { PigeonDocumentChange *pigeonResult = [[PigeonDocumentChange alloc] init]; pigeonResult.type = [GetNullableObjectAtIndex(list, 0) integerValue]; - pigeonResult.document = [PigeonDocumentSnapshot nullableFromList:(GetNullableObjectAtIndex(list, 1))]; + pigeonResult.document = + [PigeonDocumentSnapshot nullableFromList:(GetNullableObjectAtIndex(list, 1))]; NSAssert(pigeonResult.document != nil, @""); pigeonResult.oldIndex = GetNullableObjectAtIndex(list, 2); NSAssert(pigeonResult.oldIndex != nil, @""); @@ -348,9 +351,9 @@ - (NSArray *)toList { @implementation PigeonQuerySnapshot + (instancetype)makeWithDocuments:(NSArray *)documents - documentChanges:(NSArray *)documentChanges - metadata:(PigeonSnapshotMetadata *)metadata { - PigeonQuerySnapshot* pigeonResult = [[PigeonQuerySnapshot alloc] init]; + documentChanges:(NSArray *)documentChanges + metadata:(PigeonSnapshotMetadata *)metadata { + PigeonQuerySnapshot *pigeonResult = [[PigeonQuerySnapshot alloc] init]; pigeonResult.documents = documents; pigeonResult.documentChanges = documentChanges; pigeonResult.metadata = metadata; @@ -362,7 +365,8 @@ + (PigeonQuerySnapshot *)fromList:(NSArray *)list { NSAssert(pigeonResult.documents != nil, @""); pigeonResult.documentChanges = GetNullableObjectAtIndex(list, 1); NSAssert(pigeonResult.documentChanges != nil, @""); - pigeonResult.metadata = [PigeonSnapshotMetadata nullableFromList:(GetNullableObjectAtIndex(list, 2))]; + pigeonResult.metadata = + [PigeonSnapshotMetadata nullableFromList:(GetNullableObjectAtIndex(list, 2))]; NSAssert(pigeonResult.metadata != nil, @""); return pigeonResult; } @@ -380,8 +384,8 @@ - (NSArray *)toList { @implementation PigeonGetOptions + (instancetype)makeWithSource:(Source)source - serverTimestampBehavior:(ServerTimestampBehavior)serverTimestampBehavior { - PigeonGetOptions* pigeonResult = [[PigeonGetOptions alloc] init]; + serverTimestampBehavior:(ServerTimestampBehavior)serverTimestampBehavior { + PigeonGetOptions *pigeonResult = [[PigeonGetOptions alloc] init]; pigeonResult.source = source; pigeonResult.serverTimestampBehavior = serverTimestampBehavior; return pigeonResult; @@ -405,8 +409,8 @@ - (NSArray *)toList { @implementation PigeonDocumentOption + (instancetype)makeWithMerge:(nullable NSNumber *)merge - mergeFields:(nullable NSArray *> *)mergeFields { - PigeonDocumentOption* pigeonResult = [[PigeonDocumentOption alloc] init]; + mergeFields:(nullable NSArray *> *)mergeFields { + PigeonDocumentOption *pigeonResult = [[PigeonDocumentOption alloc] init]; pigeonResult.merge = merge; pigeonResult.mergeFields = mergeFields; return pigeonResult; @@ -430,10 +434,10 @@ - (NSArray *)toList { @implementation PigeonTransactionCommand + (instancetype)makeWithType:(PigeonTransactionType)type - path:(NSString *)path - data:(nullable NSDictionary *)data - option:(nullable PigeonDocumentOption *)option { - PigeonTransactionCommand* pigeonResult = [[PigeonTransactionCommand alloc] init]; + path:(NSString *)path + data:(nullable NSDictionary *)data + option:(nullable PigeonDocumentOption *)option { + PigeonTransactionCommand *pigeonResult = [[PigeonTransactionCommand alloc] init]; pigeonResult.type = type; pigeonResult.path = path; pigeonResult.data = data; @@ -464,11 +468,11 @@ - (NSArray *)toList { @implementation DocumentReferenceRequest + (instancetype)makeWithPath:(NSString *)path - data:(nullable NSDictionary *)data - option:(nullable PigeonDocumentOption *)option - source:(nullable SourceBox *)source - serverTimestampBehavior:(nullable ServerTimestampBehaviorBox *)serverTimestampBehavior { - DocumentReferenceRequest* pigeonResult = [[DocumentReferenceRequest alloc] init]; + data:(nullable NSDictionary *)data + option:(nullable PigeonDocumentOption *)option + source:(nullable SourceBox *)source + serverTimestampBehavior:(nullable ServerTimestampBehaviorBox *)serverTimestampBehavior { + DocumentReferenceRequest *pigeonResult = [[DocumentReferenceRequest alloc] init]; pigeonResult.path = path; pigeonResult.data = data; pigeonResult.option = option; @@ -483,10 +487,15 @@ + (DocumentReferenceRequest *)fromList:(NSArray *)list { pigeonResult.data = GetNullableObjectAtIndex(list, 1); pigeonResult.option = [PigeonDocumentOption nullableFromList:(GetNullableObjectAtIndex(list, 2))]; NSNumber *sourceAsNumber = GetNullableObjectAtIndex(list, 3); - SourceBox *source = sourceAsNumber == nil ? nil : [[SourceBox alloc] initWithValue: [sourceAsNumber integerValue]]; + SourceBox *source = + sourceAsNumber == nil ? nil : [[SourceBox alloc] initWithValue:[sourceAsNumber integerValue]]; pigeonResult.source = source; NSNumber *serverTimestampBehaviorAsNumber = GetNullableObjectAtIndex(list, 4); - ServerTimestampBehaviorBox *serverTimestampBehavior = serverTimestampBehaviorAsNumber == nil ? nil : [[ServerTimestampBehaviorBox alloc] initWithValue: [serverTimestampBehaviorAsNumber integerValue]]; + ServerTimestampBehaviorBox *serverTimestampBehavior = + serverTimestampBehaviorAsNumber == nil + ? nil + : [[ServerTimestampBehaviorBox alloc] + initWithValue:[serverTimestampBehaviorAsNumber integerValue]]; pigeonResult.serverTimestampBehavior = serverTimestampBehavior; return pigeonResult; } @@ -499,22 +508,24 @@ - (NSArray *)toList { (self.data ?: [NSNull null]), (self.option ? [self.option toList] : [NSNull null]), (self.source == nil ? [NSNull null] : [NSNumber numberWithInteger:self.source.value]), - (self.serverTimestampBehavior == nil ? [NSNull null] : [NSNumber numberWithInteger:self.serverTimestampBehavior.value]), + (self.serverTimestampBehavior == nil + ? [NSNull null] + : [NSNumber numberWithInteger:self.serverTimestampBehavior.value]), ]; } @end @implementation PigeonQueryParameters + (instancetype)makeWithWhere:(nullable NSArray *> *)where - orderBy:(nullable NSArray *> *)orderBy - limit:(nullable NSNumber *)limit - limitToLast:(nullable NSNumber *)limitToLast - startAt:(nullable NSArray *)startAt - startAfter:(nullable NSArray *)startAfter - endAt:(nullable NSArray *)endAt - endBefore:(nullable NSArray *)endBefore - filters:(nullable NSDictionary *)filters { - PigeonQueryParameters* pigeonResult = [[PigeonQueryParameters alloc] init]; + orderBy:(nullable NSArray *> *)orderBy + limit:(nullable NSNumber *)limit + limitToLast:(nullable NSNumber *)limitToLast + startAt:(nullable NSArray *)startAt + startAfter:(nullable NSArray *)startAfter + endAt:(nullable NSArray *)endAt + endBefore:(nullable NSArray *)endBefore + filters:(nullable NSDictionary *)filters { + PigeonQueryParameters *pigeonResult = [[PigeonQueryParameters alloc] init]; pigeonResult.where = where; pigeonResult.orderBy = orderBy; pigeonResult.limit = limit; @@ -558,9 +569,8 @@ - (NSArray *)toList { @end @implementation AggregateQuery -+ (instancetype)makeWithType:(AggregateType)type - field:(nullable NSString *)field { - AggregateQuery* pigeonResult = [[AggregateQuery alloc] init]; ++ (instancetype)makeWithType:(AggregateType)type field:(nullable NSString *)field { + AggregateQuery *pigeonResult = [[AggregateQuery alloc] init]; pigeonResult.type = type; pigeonResult.field = field; return pigeonResult; @@ -584,9 +594,9 @@ - (NSArray *)toList { @implementation AggregateQueryResponse + (instancetype)makeWithType:(AggregateType)type - field:(nullable NSString *)field - value:(NSNumber *)value { - AggregateQueryResponse* pigeonResult = [[AggregateQueryResponse alloc] init]; + field:(nullable NSString *)field + value:(NSNumber *)value { + AggregateQueryResponse *pigeonResult = [[AggregateQueryResponse alloc] init]; pigeonResult.type = type; pigeonResult.field = field; pigeonResult.value = value; @@ -617,31 +627,31 @@ @interface FirebaseFirestoreHostApiCodecReader : FLTFirebaseFirestoreReader @implementation FirebaseFirestoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [AggregateQuery fromList:[self readValue]]; - case 129: + case 129: return [AggregateQueryResponse fromList:[self readValue]]; - case 130: + case 130: return [DocumentReferenceRequest fromList:[self readValue]]; - case 131: + case 131: return [FirestorePigeonFirebaseApp fromList:[self readValue]]; - case 132: + case 132: return [PigeonDocumentChange fromList:[self readValue]]; - case 133: + case 133: return [PigeonDocumentOption fromList:[self readValue]]; - case 134: + case 134: return [PigeonDocumentSnapshot fromList:[self readValue]]; - case 135: + case 135: return [PigeonFirebaseSettings fromList:[self readValue]]; - case 136: + case 136: return [PigeonGetOptions fromList:[self readValue]]; - case 137: + case 137: return [PigeonQueryParameters fromList:[self readValue]]; - case 138: + case 138: return [PigeonQuerySnapshot fromList:[self readValue]]; - case 139: + case 139: return [PigeonSnapshotMetadata fromList:[self readValue]]; - case 140: + case 140: return [PigeonTransactionCommand fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -713,358 +723,453 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FirebaseFirestoreHostApiCodecReaderWriter *readerWriter = [[FirebaseFirestoreHostApiCodecReaderWriter alloc] init]; + FirebaseFirestoreHostApiCodecReaderWriter *readerWriter = + [[FirebaseFirestoreHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FirebaseFirestoreHostApiSetup(id binaryMessenger, NSObject *api) { +void FirebaseFirestoreHostApiSetup(id binaryMessenger, + NSObject *api) { { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.loadBundle" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadBundleApp:bundle:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(loadBundleApp:bundle:completion:)", api); + NSCAssert([api respondsToSelector:@selector(loadBundleApp:bundle:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(loadBundleApp:bundle:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); FlutterStandardTypedData *arg_bundle = GetNullableObjectAtIndex(args, 1); - [api loadBundleApp:arg_app bundle:arg_bundle completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api loadBundleApp:arg_app + bundle:arg_bundle + completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.namedQueryGet" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(namedQueryGetApp:name:options:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(namedQueryGetApp:name:options:completion:)", api); + NSCAssert([api respondsToSelector:@selector(namedQueryGetApp:name:options:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(namedQueryGetApp:name:options:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); NSString *arg_name = GetNullableObjectAtIndex(args, 1); PigeonGetOptions *arg_options = GetNullableObjectAtIndex(args, 2); - [api namedQueryGetApp:arg_app name:arg_name options:arg_options completion:^(PigeonQuerySnapshot *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api namedQueryGetApp:arg_app + name:arg_name + options:arg_options + completion:^(PigeonQuerySnapshot *_Nullable output, + FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.clearPersistence" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(clearPersistenceApp:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(clearPersistenceApp:completion:)", api); + NSCAssert([api respondsToSelector:@selector(clearPersistenceApp:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(clearPersistenceApp:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); - [api clearPersistenceApp:arg_app completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api clearPersistenceApp:arg_app + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.disableNetwork" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(disableNetworkApp:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(disableNetworkApp:completion:)", api); + NSCAssert([api respondsToSelector:@selector(disableNetworkApp:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(disableNetworkApp:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); - [api disableNetworkApp:arg_app completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api disableNetworkApp:arg_app + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.enableNetwork" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(enableNetworkApp:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(enableNetworkApp:completion:)", api); + NSCAssert([api respondsToSelector:@selector(enableNetworkApp:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(enableNetworkApp:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); - [api enableNetworkApp:arg_app completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api enableNetworkApp:arg_app + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.terminate" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(terminateApp:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(terminateApp:completion:)", api); + NSCAssert([api respondsToSelector:@selector(terminateApp:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(terminateApp:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); - [api terminateApp:arg_app completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api terminateApp:arg_app + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.waitForPendingWrites" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(waitForPendingWritesApp:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(waitForPendingWritesApp:completion:)", api); + NSCAssert([api respondsToSelector:@selector(waitForPendingWritesApp:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(waitForPendingWritesApp:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); - [api waitForPendingWritesApp:arg_app completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api waitForPendingWritesApp:arg_app + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.setIndexConfiguration" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setIndexConfigurationApp:indexConfiguration:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(setIndexConfigurationApp:indexConfiguration:completion:)", api); + NSCAssert([api respondsToSelector:@selector(setIndexConfigurationApp: + indexConfiguration:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(setIndexConfigurationApp:indexConfiguration:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); NSString *arg_indexConfiguration = GetNullableObjectAtIndex(args, 1); - [api setIndexConfigurationApp:arg_app indexConfiguration:arg_indexConfiguration completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api setIndexConfigurationApp:arg_app + indexConfiguration:arg_indexConfiguration + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.setLoggingEnabled" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setLoggingEnabledLoggingEnabled:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(setLoggingEnabledLoggingEnabled:completion:)", api); + NSCAssert([api respondsToSelector:@selector(setLoggingEnabledLoggingEnabled:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(setLoggingEnabledLoggingEnabled:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_loggingEnabled = GetNullableObjectAtIndex(args, 0); - [api setLoggingEnabledLoggingEnabled:arg_loggingEnabled completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api setLoggingEnabledLoggingEnabled:arg_loggingEnabled + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.snapshotsInSyncSetup" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(snapshotsInSyncSetupApp:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(snapshotsInSyncSetupApp:completion:)", api); + NSCAssert([api respondsToSelector:@selector(snapshotsInSyncSetupApp:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(snapshotsInSyncSetupApp:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); - [api snapshotsInSyncSetupApp:arg_app completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api snapshotsInSyncSetupApp:arg_app + completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.transactionCreate" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(transactionCreateApp:timeout:maxAttempts:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(transactionCreateApp:timeout:maxAttempts:completion:)", api); + NSCAssert([api respondsToSelector:@selector(transactionCreateApp: + timeout:maxAttempts:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(transactionCreateApp:timeout:maxAttempts:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); NSNumber *arg_timeout = GetNullableObjectAtIndex(args, 1); NSNumber *arg_maxAttempts = GetNullableObjectAtIndex(args, 2); - [api transactionCreateApp:arg_app timeout:arg_timeout maxAttempts:arg_maxAttempts completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api transactionCreateApp:arg_app + timeout:arg_timeout + maxAttempts:arg_maxAttempts + completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.transactionStoreResult" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(transactionStoreResultTransactionId:resultType:commands:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(transactionStoreResultTransactionId:resultType:commands:completion:)", api); + NSCAssert([api respondsToSelector:@selector + (transactionStoreResultTransactionId:resultType:commands:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(transactionStoreResultTransactionId:resultType:commands:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSString *arg_transactionId = GetNullableObjectAtIndex(args, 0); PigeonTransactionResult arg_resultType = [GetNullableObjectAtIndex(args, 1) integerValue]; NSArray *arg_commands = GetNullableObjectAtIndex(args, 2); - [api transactionStoreResultTransactionId:arg_transactionId resultType:arg_resultType commands:arg_commands completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api transactionStoreResultTransactionId:arg_transactionId + resultType:arg_resultType + commands:arg_commands + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.transactionGet" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(transactionGetApp:transactionId:path:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(transactionGetApp:transactionId:path:completion:)", api); + NSCAssert([api respondsToSelector:@selector(transactionGetApp: + transactionId:path:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(transactionGetApp:transactionId:path:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); NSString *arg_transactionId = GetNullableObjectAtIndex(args, 1); NSString *arg_path = GetNullableObjectAtIndex(args, 2); - [api transactionGetApp:arg_app transactionId:arg_transactionId path:arg_path completion:^(PigeonDocumentSnapshot *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api transactionGetApp:arg_app + transactionId:arg_transactionId + path:arg_path + completion:^(PigeonDocumentSnapshot *_Nullable output, + FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.documentReferenceSet" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(documentReferenceSetApp:request:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(documentReferenceSetApp:request:completion:)", api); + NSCAssert([api respondsToSelector:@selector(documentReferenceSetApp:request:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(documentReferenceSetApp:request:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); DocumentReferenceRequest *arg_request = GetNullableObjectAtIndex(args, 1); - [api documentReferenceSetApp:arg_app request:arg_request completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api documentReferenceSetApp:arg_app + request:arg_request + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.documentReferenceUpdate" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(documentReferenceUpdateApp:request:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(documentReferenceUpdateApp:request:completion:)", api); + NSCAssert([api respondsToSelector:@selector(documentReferenceUpdateApp:request:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(documentReferenceUpdateApp:request:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); DocumentReferenceRequest *arg_request = GetNullableObjectAtIndex(args, 1); - [api documentReferenceUpdateApp:arg_app request:arg_request completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api documentReferenceUpdateApp:arg_app + request:arg_request + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.documentReferenceGet" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(documentReferenceGetApp:request:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(documentReferenceGetApp:request:completion:)", api); + NSCAssert([api respondsToSelector:@selector(documentReferenceGetApp:request:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(documentReferenceGetApp:request:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); DocumentReferenceRequest *arg_request = GetNullableObjectAtIndex(args, 1); - [api documentReferenceGetApp:arg_app request:arg_request completion:^(PigeonDocumentSnapshot *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api documentReferenceGetApp:arg_app + request:arg_request + completion:^(PigeonDocumentSnapshot *_Nullable output, + FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.documentReferenceDelete" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(documentReferenceDeleteApp:request:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(documentReferenceDeleteApp:request:completion:)", api); + NSCAssert([api respondsToSelector:@selector(documentReferenceDeleteApp:request:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(documentReferenceDeleteApp:request:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); DocumentReferenceRequest *arg_request = GetNullableObjectAtIndex(args, 1); - [api documentReferenceDeleteApp:arg_app request:arg_request completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api documentReferenceDeleteApp:arg_app + request:arg_request + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.queryGet" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(queryGetApp:path:isCollectionGroup:parameters:options:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(queryGetApp:path:isCollectionGroup:parameters:options:completion:)", api); + NSCAssert([api respondsToSelector:@selector + (queryGetApp:path:isCollectionGroup:parameters:options:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(queryGetApp:path:isCollectionGroup:parameters:options:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); @@ -1072,22 +1177,34 @@ void FirebaseFirestoreHostApiSetup(id binaryMessenger, N NSNumber *arg_isCollectionGroup = GetNullableObjectAtIndex(args, 2); PigeonQueryParameters *arg_parameters = GetNullableObjectAtIndex(args, 3); PigeonGetOptions *arg_options = GetNullableObjectAtIndex(args, 4); - [api queryGetApp:arg_app path:arg_path isCollectionGroup:arg_isCollectionGroup parameters:arg_parameters options:arg_options completion:^(PigeonQuerySnapshot *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api queryGetApp:arg_app + path:arg_path + isCollectionGroup:arg_isCollectionGroup + parameters:arg_parameters + options:arg_options + completion:^(PigeonQuerySnapshot *_Nullable output, + FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.aggregateQuery" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(aggregateQueryApp:path:parameters:source:queries:isCollectionGroup:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(aggregateQueryApp:path:parameters:source:queries:isCollectionGroup:completion:)", api); + NSCAssert([api respondsToSelector:@selector + (aggregateQueryApp: + path:parameters:source:queries:isCollectionGroup:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(aggregateQueryApp:path:parameters:source:queries:isCollectionGroup:" + @"completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); @@ -1096,42 +1213,61 @@ void FirebaseFirestoreHostApiSetup(id binaryMessenger, N AggregateSource arg_source = [GetNullableObjectAtIndex(args, 3) integerValue]; NSArray *arg_queries = GetNullableObjectAtIndex(args, 4); NSNumber *arg_isCollectionGroup = GetNullableObjectAtIndex(args, 5); - [api aggregateQueryApp:arg_app path:arg_path parameters:arg_parameters source:arg_source queries:arg_queries isCollectionGroup:arg_isCollectionGroup completion:^(NSArray *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api aggregateQueryApp:arg_app + path:arg_path + parameters:arg_parameters + source:arg_source + queries:arg_queries + isCollectionGroup:arg_isCollectionGroup + completion:^(NSArray *_Nullable output, + FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.writeBatchCommit" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(writeBatchCommitApp:writes:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(writeBatchCommitApp:writes:completion:)", api); + NSCAssert([api respondsToSelector:@selector(writeBatchCommitApp:writes:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(writeBatchCommitApp:writes:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); NSArray *arg_writes = GetNullableObjectAtIndex(args, 1); - [api writeBatchCommitApp:arg_app writes:arg_writes completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api writeBatchCommitApp:arg_app + writes:arg_writes + completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.querySnapshot" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(querySnapshotApp:path:isCollectionGroup:parameters:options:includeMetadataChanges:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(querySnapshotApp:path:isCollectionGroup:parameters:options:includeMetadataChanges:completion:)", api); + NSCAssert( + [api respondsToSelector:@selector(querySnapshotApp: + path:isCollectionGroup:parameters:options + :includeMetadataChanges:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(querySnapshotApp:path:isCollectionGroup:parameters:options:" + @"includeMetadataChanges:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); @@ -1140,30 +1276,45 @@ void FirebaseFirestoreHostApiSetup(id binaryMessenger, N PigeonQueryParameters *arg_parameters = GetNullableObjectAtIndex(args, 3); PigeonGetOptions *arg_options = GetNullableObjectAtIndex(args, 4); NSNumber *arg_includeMetadataChanges = GetNullableObjectAtIndex(args, 5); - [api querySnapshotApp:arg_app path:arg_path isCollectionGroup:arg_isCollectionGroup parameters:arg_parameters options:arg_options includeMetadataChanges:arg_includeMetadataChanges completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api querySnapshotApp:arg_app + path:arg_path + isCollectionGroup:arg_isCollectionGroup + parameters:arg_parameters + options:arg_options + includeMetadataChanges:arg_includeMetadataChanges + completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot" + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.cloud_firestore_platform_interface." + @"FirebaseFirestoreHostApi.documentReferenceSnapshot" binaryMessenger:binaryMessenger - codec:FirebaseFirestoreHostApiGetCodec()]; + codec:FirebaseFirestoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(documentReferenceSnapshotApp:parameters:includeMetadataChanges:completion:)], @"FirebaseFirestoreHostApi api (%@) doesn't respond to @selector(documentReferenceSnapshotApp:parameters:includeMetadataChanges:completion:)", api); + NSCAssert( + [api respondsToSelector:@selector + (documentReferenceSnapshotApp:parameters:includeMetadataChanges:completion:)], + @"FirebaseFirestoreHostApi api (%@) doesn't respond to " + @"@selector(documentReferenceSnapshotApp:parameters:includeMetadataChanges:completion:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; FirestorePigeonFirebaseApp *arg_app = GetNullableObjectAtIndex(args, 0); DocumentReferenceRequest *arg_parameters = GetNullableObjectAtIndex(args, 1); NSNumber *arg_includeMetadataChanges = GetNullableObjectAtIndex(args, 2); - [api documentReferenceSnapshotApp:arg_app parameters:arg_parameters includeMetadataChanges:arg_includeMetadataChanges completion:^(NSString *_Nullable output, FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api documentReferenceSnapshotApp:arg_app + parameters:arg_parameters + includeMetadataChanges:arg_includeMetadataChanges + completion:^(NSString *_Nullable output, + FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h index 668693c74372..c85ce318f493 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h @@ -33,12 +33,14 @@ typedef NS_ENUM(NSUInteger, DocumentChangeType) { /// An enumeration of firestore source types. typedef NS_ENUM(NSUInteger, Source) { - /// Causes Firestore to try to retrieve an up-to-date (server-retrieved) snapshot, but fall back to + /// Causes Firestore to try to retrieve an up-to-date (server-retrieved) snapshot, but fall back + /// to /// returning cached data if the server can't be reached. SourceServerAndCache = 0, /// Causes Firestore to avoid the cache, generating an error if the server cannot be reached. Note /// that the cache will still be updated if the server request succeeds. Also note that - /// latency-compensation still takes effect, so any pending write operations will be visible in the + /// latency-compensation still takes effect, so any pending write operations will be visible in + /// the /// returned data (merged into the server-provided data). SourceServer = 1, /// Causes Firestore to immediately return a value from the cache, ignoring the server completely @@ -58,9 +60,11 @@ typedef NS_ENUM(NSUInteger, Source) { typedef NS_ENUM(NSUInteger, ServerTimestampBehavior) { /// Return null for [FieldValue.serverTimestamp()] values that have not yet ServerTimestampBehaviorNone = 0, - /// Return local estimates for [FieldValue.serverTimestamp()] values that have not yet been set to their final value. + /// Return local estimates for [FieldValue.serverTimestamp()] values that have not yet been set to + /// their final value. ServerTimestampBehaviorEstimate = 1, - /// Return the previous value for [FieldValue.serverTimestamp()] values that have not yet been set to their final value. + /// Return the previous value for [FieldValue.serverTimestamp()] values that have not yet been set + /// to their final value. ServerTimestampBehaviorPrevious = 2, }; @@ -136,185 +140,243 @@ typedef NS_ENUM(NSUInteger, AggregateType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithPersistenceEnabled:(nullable NSNumber *)persistenceEnabled - host:(nullable NSString *)host - sslEnabled:(nullable NSNumber *)sslEnabled - cacheSizeBytes:(nullable NSNumber *)cacheSizeBytes - ignoreUndefinedProperties:(NSNumber *)ignoreUndefinedProperties; -@property(nonatomic, strong, nullable) NSNumber * persistenceEnabled; -@property(nonatomic, copy, nullable) NSString * host; -@property(nonatomic, strong, nullable) NSNumber * sslEnabled; -@property(nonatomic, strong, nullable) NSNumber * cacheSizeBytes; -@property(nonatomic, strong) NSNumber * ignoreUndefinedProperties; + host:(nullable NSString *)host + sslEnabled:(nullable NSNumber *)sslEnabled + cacheSizeBytes:(nullable NSNumber *)cacheSizeBytes + ignoreUndefinedProperties:(NSNumber *)ignoreUndefinedProperties; +@property(nonatomic, strong, nullable) NSNumber *persistenceEnabled; +@property(nonatomic, copy, nullable) NSString *host; +@property(nonatomic, strong, nullable) NSNumber *sslEnabled; +@property(nonatomic, strong, nullable) NSNumber *cacheSizeBytes; +@property(nonatomic, strong) NSNumber *ignoreUndefinedProperties; @end @interface FirestorePigeonFirebaseApp : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithAppName:(NSString *)appName - settings:(PigeonFirebaseSettings *)settings - databaseURL:(NSString *)databaseURL; -@property(nonatomic, copy) NSString * appName; -@property(nonatomic, strong) PigeonFirebaseSettings * settings; -@property(nonatomic, copy) NSString * databaseURL; + settings:(PigeonFirebaseSettings *)settings + databaseURL:(NSString *)databaseURL; +@property(nonatomic, copy) NSString *appName; +@property(nonatomic, strong) PigeonFirebaseSettings *settings; +@property(nonatomic, copy) NSString *databaseURL; @end @interface PigeonSnapshotMetadata : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithHasPendingWrites:(NSNumber *)hasPendingWrites - isFromCache:(NSNumber *)isFromCache; -@property(nonatomic, strong) NSNumber * hasPendingWrites; -@property(nonatomic, strong) NSNumber * isFromCache; + isFromCache:(NSNumber *)isFromCache; +@property(nonatomic, strong) NSNumber *hasPendingWrites; +@property(nonatomic, strong) NSNumber *isFromCache; @end @interface PigeonDocumentSnapshot : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithPath:(NSString *)path - data:(nullable NSDictionary *)data - metadata:(PigeonSnapshotMetadata *)metadata; -@property(nonatomic, copy) NSString * path; -@property(nonatomic, strong, nullable) NSDictionary * data; -@property(nonatomic, strong) PigeonSnapshotMetadata * metadata; + data:(nullable NSDictionary *)data + metadata:(PigeonSnapshotMetadata *)metadata; +@property(nonatomic, copy) NSString *path; +@property(nonatomic, strong, nullable) NSDictionary *data; +@property(nonatomic, strong) PigeonSnapshotMetadata *metadata; @end @interface PigeonDocumentChange : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithType:(DocumentChangeType)type - document:(PigeonDocumentSnapshot *)document - oldIndex:(NSNumber *)oldIndex - newIndex:(NSNumber *)newIndex; + document:(PigeonDocumentSnapshot *)document + oldIndex:(NSNumber *)oldIndex + newIndex:(NSNumber *)newIndex; @property(nonatomic, assign) DocumentChangeType type; -@property(nonatomic, strong) PigeonDocumentSnapshot * document; -@property(nonatomic, strong) NSNumber * oldIndex; -@property(nonatomic, strong) NSNumber * newIndex; +@property(nonatomic, strong) PigeonDocumentSnapshot *document; +@property(nonatomic, strong) NSNumber *oldIndex; +@property(nonatomic, strong) NSNumber *newIndex; @end @interface PigeonQuerySnapshot : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithDocuments:(NSArray *)documents - documentChanges:(NSArray *)documentChanges - metadata:(PigeonSnapshotMetadata *)metadata; -@property(nonatomic, strong) NSArray * documents; -@property(nonatomic, strong) NSArray * documentChanges; -@property(nonatomic, strong) PigeonSnapshotMetadata * metadata; + documentChanges:(NSArray *)documentChanges + metadata:(PigeonSnapshotMetadata *)metadata; +@property(nonatomic, strong) NSArray *documents; +@property(nonatomic, strong) NSArray *documentChanges; +@property(nonatomic, strong) PigeonSnapshotMetadata *metadata; @end @interface PigeonGetOptions : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithSource:(Source)source - serverTimestampBehavior:(ServerTimestampBehavior)serverTimestampBehavior; + serverTimestampBehavior:(ServerTimestampBehavior)serverTimestampBehavior; @property(nonatomic, assign) Source source; @property(nonatomic, assign) ServerTimestampBehavior serverTimestampBehavior; @end @interface PigeonDocumentOption : NSObject + (instancetype)makeWithMerge:(nullable NSNumber *)merge - mergeFields:(nullable NSArray *> *)mergeFields; -@property(nonatomic, strong, nullable) NSNumber * merge; -@property(nonatomic, strong, nullable) NSArray *> * mergeFields; + mergeFields:(nullable NSArray *> *)mergeFields; +@property(nonatomic, strong, nullable) NSNumber *merge; +@property(nonatomic, strong, nullable) NSArray *> *mergeFields; @end @interface PigeonTransactionCommand : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithType:(PigeonTransactionType)type - path:(NSString *)path - data:(nullable NSDictionary *)data - option:(nullable PigeonDocumentOption *)option; + path:(NSString *)path + data:(nullable NSDictionary *)data + option:(nullable PigeonDocumentOption *)option; @property(nonatomic, assign) PigeonTransactionType type; -@property(nonatomic, copy) NSString * path; -@property(nonatomic, strong, nullable) NSDictionary * data; -@property(nonatomic, strong, nullable) PigeonDocumentOption * option; +@property(nonatomic, copy) NSString *path; +@property(nonatomic, strong, nullable) NSDictionary *data; +@property(nonatomic, strong, nullable) PigeonDocumentOption *option; @end @interface DocumentReferenceRequest : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithPath:(NSString *)path - data:(nullable NSDictionary *)data - option:(nullable PigeonDocumentOption *)option - source:(nullable SourceBox *)source - serverTimestampBehavior:(nullable ServerTimestampBehaviorBox *)serverTimestampBehavior; -@property(nonatomic, copy) NSString * path; -@property(nonatomic, strong, nullable) NSDictionary * data; -@property(nonatomic, strong, nullable) PigeonDocumentOption * option; -@property(nonatomic, strong, nullable) SourceBox * source; -@property(nonatomic, strong, nullable) ServerTimestampBehaviorBox * serverTimestampBehavior; + data:(nullable NSDictionary *)data + option:(nullable PigeonDocumentOption *)option + source:(nullable SourceBox *)source + serverTimestampBehavior:(nullable ServerTimestampBehaviorBox *)serverTimestampBehavior; +@property(nonatomic, copy) NSString *path; +@property(nonatomic, strong, nullable) NSDictionary *data; +@property(nonatomic, strong, nullable) PigeonDocumentOption *option; +@property(nonatomic, strong, nullable) SourceBox *source; +@property(nonatomic, strong, nullable) ServerTimestampBehaviorBox *serverTimestampBehavior; @end @interface PigeonQueryParameters : NSObject + (instancetype)makeWithWhere:(nullable NSArray *> *)where - orderBy:(nullable NSArray *> *)orderBy - limit:(nullable NSNumber *)limit - limitToLast:(nullable NSNumber *)limitToLast - startAt:(nullable NSArray *)startAt - startAfter:(nullable NSArray *)startAfter - endAt:(nullable NSArray *)endAt - endBefore:(nullable NSArray *)endBefore - filters:(nullable NSDictionary *)filters; -@property(nonatomic, strong, nullable) NSArray *> * where; -@property(nonatomic, strong, nullable) NSArray *> * orderBy; -@property(nonatomic, strong, nullable) NSNumber * limit; -@property(nonatomic, strong, nullable) NSNumber * limitToLast; -@property(nonatomic, strong, nullable) NSArray * startAt; -@property(nonatomic, strong, nullable) NSArray * startAfter; -@property(nonatomic, strong, nullable) NSArray * endAt; -@property(nonatomic, strong, nullable) NSArray * endBefore; -@property(nonatomic, strong, nullable) NSDictionary * filters; + orderBy:(nullable NSArray *> *)orderBy + limit:(nullable NSNumber *)limit + limitToLast:(nullable NSNumber *)limitToLast + startAt:(nullable NSArray *)startAt + startAfter:(nullable NSArray *)startAfter + endAt:(nullable NSArray *)endAt + endBefore:(nullable NSArray *)endBefore + filters:(nullable NSDictionary *)filters; +@property(nonatomic, strong, nullable) NSArray *> *where; +@property(nonatomic, strong, nullable) NSArray *> *orderBy; +@property(nonatomic, strong, nullable) NSNumber *limit; +@property(nonatomic, strong, nullable) NSNumber *limitToLast; +@property(nonatomic, strong, nullable) NSArray *startAt; +@property(nonatomic, strong, nullable) NSArray *startAfter; +@property(nonatomic, strong, nullable) NSArray *endAt; +@property(nonatomic, strong, nullable) NSArray *endBefore; +@property(nonatomic, strong, nullable) NSDictionary *filters; @end @interface AggregateQuery : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithType:(AggregateType)type - field:(nullable NSString *)field; ++ (instancetype)makeWithType:(AggregateType)type field:(nullable NSString *)field; @property(nonatomic, assign) AggregateType type; -@property(nonatomic, copy, nullable) NSString * field; +@property(nonatomic, copy, nullable) NSString *field; @end @interface AggregateQueryResponse : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithType:(AggregateType)type - field:(nullable NSString *)field - value:(NSNumber *)value; + field:(nullable NSString *)field + value:(NSNumber *)value; @property(nonatomic, assign) AggregateType type; -@property(nonatomic, copy, nullable) NSString * field; -@property(nonatomic, strong) NSNumber * value; +@property(nonatomic, copy, nullable) NSString *field; +@property(nonatomic, strong) NSNumber *value; @end /// The codec used by FirebaseFirestoreHostApi. NSObject *FirebaseFirestoreHostApiGetCodec(void); @protocol FirebaseFirestoreHostApi -- (void)loadBundleApp:(FirestorePigeonFirebaseApp *)app bundle:(FlutterStandardTypedData *)bundle completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; -- (void)namedQueryGetApp:(FirestorePigeonFirebaseApp *)app name:(NSString *)name options:(PigeonGetOptions *)options completion:(void (^)(PigeonQuerySnapshot *_Nullable, FlutterError *_Nullable))completion; -- (void)clearPersistenceApp:(FirestorePigeonFirebaseApp *)app completion:(void (^)(FlutterError *_Nullable))completion; -- (void)disableNetworkApp:(FirestorePigeonFirebaseApp *)app completion:(void (^)(FlutterError *_Nullable))completion; -- (void)enableNetworkApp:(FirestorePigeonFirebaseApp *)app completion:(void (^)(FlutterError *_Nullable))completion; -- (void)terminateApp:(FirestorePigeonFirebaseApp *)app completion:(void (^)(FlutterError *_Nullable))completion; -- (void)waitForPendingWritesApp:(FirestorePigeonFirebaseApp *)app completion:(void (^)(FlutterError *_Nullable))completion; -- (void)setIndexConfigurationApp:(FirestorePigeonFirebaseApp *)app indexConfiguration:(NSString *)indexConfiguration completion:(void (^)(FlutterError *_Nullable))completion; -- (void)setLoggingEnabledLoggingEnabled:(NSNumber *)loggingEnabled completion:(void (^)(FlutterError *_Nullable))completion; -- (void)snapshotsInSyncSetupApp:(FirestorePigeonFirebaseApp *)app completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; -- (void)transactionCreateApp:(FirestorePigeonFirebaseApp *)app timeout:(NSNumber *)timeout maxAttempts:(NSNumber *)maxAttempts completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; -- (void)transactionStoreResultTransactionId:(NSString *)transactionId resultType:(PigeonTransactionResult)resultType commands:(nullable NSArray *)commands completion:(void (^)(FlutterError *_Nullable))completion; -- (void)transactionGetApp:(FirestorePigeonFirebaseApp *)app transactionId:(NSString *)transactionId path:(NSString *)path completion:(void (^)(PigeonDocumentSnapshot *_Nullable, FlutterError *_Nullable))completion; -- (void)documentReferenceSetApp:(FirestorePigeonFirebaseApp *)app request:(DocumentReferenceRequest *)request completion:(void (^)(FlutterError *_Nullable))completion; -- (void)documentReferenceUpdateApp:(FirestorePigeonFirebaseApp *)app request:(DocumentReferenceRequest *)request completion:(void (^)(FlutterError *_Nullable))completion; -- (void)documentReferenceGetApp:(FirestorePigeonFirebaseApp *)app request:(DocumentReferenceRequest *)request completion:(void (^)(PigeonDocumentSnapshot *_Nullable, FlutterError *_Nullable))completion; -- (void)documentReferenceDeleteApp:(FirestorePigeonFirebaseApp *)app request:(DocumentReferenceRequest *)request completion:(void (^)(FlutterError *_Nullable))completion; -- (void)queryGetApp:(FirestorePigeonFirebaseApp *)app path:(NSString *)path isCollectionGroup:(NSNumber *)isCollectionGroup parameters:(PigeonQueryParameters *)parameters options:(PigeonGetOptions *)options completion:(void (^)(PigeonQuerySnapshot *_Nullable, FlutterError *_Nullable))completion; -- (void)aggregateQueryApp:(FirestorePigeonFirebaseApp *)app path:(NSString *)path parameters:(PigeonQueryParameters *)parameters source:(AggregateSource)source queries:(NSArray *)queries isCollectionGroup:(NSNumber *)isCollectionGroup completion:(void (^)(NSArray *_Nullable, FlutterError *_Nullable))completion; -- (void)writeBatchCommitApp:(FirestorePigeonFirebaseApp *)app writes:(NSArray *)writes completion:(void (^)(FlutterError *_Nullable))completion; -- (void)querySnapshotApp:(FirestorePigeonFirebaseApp *)app path:(NSString *)path isCollectionGroup:(NSNumber *)isCollectionGroup parameters:(PigeonQueryParameters *)parameters options:(PigeonGetOptions *)options includeMetadataChanges:(NSNumber *)includeMetadataChanges completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; -- (void)documentReferenceSnapshotApp:(FirestorePigeonFirebaseApp *)app parameters:(DocumentReferenceRequest *)parameters includeMetadataChanges:(NSNumber *)includeMetadataChanges completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; +- (void)loadBundleApp:(FirestorePigeonFirebaseApp *)app + bundle:(FlutterStandardTypedData *)bundle + completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; +- (void)namedQueryGetApp:(FirestorePigeonFirebaseApp *)app + name:(NSString *)name + options:(PigeonGetOptions *)options + completion: + (void (^)(PigeonQuerySnapshot *_Nullable, FlutterError *_Nullable))completion; +- (void)clearPersistenceApp:(FirestorePigeonFirebaseApp *)app + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)disableNetworkApp:(FirestorePigeonFirebaseApp *)app + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)enableNetworkApp:(FirestorePigeonFirebaseApp *)app + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)terminateApp:(FirestorePigeonFirebaseApp *)app + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)waitForPendingWritesApp:(FirestorePigeonFirebaseApp *)app + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)setIndexConfigurationApp:(FirestorePigeonFirebaseApp *)app + indexConfiguration:(NSString *)indexConfiguration + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)setLoggingEnabledLoggingEnabled:(NSNumber *)loggingEnabled + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)snapshotsInSyncSetupApp:(FirestorePigeonFirebaseApp *)app + completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; +- (void)transactionCreateApp:(FirestorePigeonFirebaseApp *)app + timeout:(NSNumber *)timeout + maxAttempts:(NSNumber *)maxAttempts + completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; +- (void)transactionStoreResultTransactionId:(NSString *)transactionId + resultType:(PigeonTransactionResult)resultType + commands:(nullable NSArray *)commands + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)transactionGetApp:(FirestorePigeonFirebaseApp *)app + transactionId:(NSString *)transactionId + path:(NSString *)path + completion: + (void (^)(PigeonDocumentSnapshot *_Nullable, FlutterError *_Nullable))completion; +- (void)documentReferenceSetApp:(FirestorePigeonFirebaseApp *)app + request:(DocumentReferenceRequest *)request + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)documentReferenceUpdateApp:(FirestorePigeonFirebaseApp *)app + request:(DocumentReferenceRequest *)request + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)documentReferenceGetApp:(FirestorePigeonFirebaseApp *)app + request:(DocumentReferenceRequest *)request + completion:(void (^)(PigeonDocumentSnapshot *_Nullable, + FlutterError *_Nullable))completion; +- (void)documentReferenceDeleteApp:(FirestorePigeonFirebaseApp *)app + request:(DocumentReferenceRequest *)request + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)queryGetApp:(FirestorePigeonFirebaseApp *)app + path:(NSString *)path + isCollectionGroup:(NSNumber *)isCollectionGroup + parameters:(PigeonQueryParameters *)parameters + options:(PigeonGetOptions *)options + completion:(void (^)(PigeonQuerySnapshot *_Nullable, FlutterError *_Nullable))completion; +- (void)aggregateQueryApp:(FirestorePigeonFirebaseApp *)app + path:(NSString *)path + parameters:(PigeonQueryParameters *)parameters + source:(AggregateSource)source + queries:(NSArray *)queries + isCollectionGroup:(NSNumber *)isCollectionGroup + completion:(void (^)(NSArray *_Nullable, + FlutterError *_Nullable))completion; +- (void)writeBatchCommitApp:(FirestorePigeonFirebaseApp *)app + writes:(NSArray *)writes + completion:(void (^)(FlutterError *_Nullable))completion; +- (void)querySnapshotApp:(FirestorePigeonFirebaseApp *)app + path:(NSString *)path + isCollectionGroup:(NSNumber *)isCollectionGroup + parameters:(PigeonQueryParameters *)parameters + options:(PigeonGetOptions *)options + includeMetadataChanges:(NSNumber *)includeMetadataChanges + completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; +- (void)documentReferenceSnapshotApp:(FirestorePigeonFirebaseApp *)app + parameters:(DocumentReferenceRequest *)parameters + includeMetadataChanges:(NSNumber *)includeMetadataChanges + completion: + (void (^)(NSString *_Nullable, FlutterError *_Nullable))completion; @end -extern void FirebaseFirestoreHostApiSetup(id binaryMessenger, NSObject *_Nullable api); +extern void FirebaseFirestoreHostApiSetup(id binaryMessenger, + NSObject *_Nullable api); NS_ASSUME_NONNULL_END diff --git a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp index d5605f95a902..9df63ce1713f 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp @@ -1396,8 +1396,7 @@ firebase::firestore::AggregateSource GetAggregateSourceFromPigeon( void CloudFirestorePlugin::AggregateQuery( const FirestorePigeonFirebaseApp& app, const std::string& path, const PigeonQueryParameters& parameters, const AggregateSource& source, - const flutter::EncodableList& queries, - bool is_collection_group, + const flutter::EncodableList& queries, bool is_collection_group, std::function reply)> result) { Firestore* firestore = GetFirestoreFromPigeon(app); Query query = ParseQuery(firestore, path, is_collection_group, parameters); diff --git a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h index e054a6a72a86..72d9c15d8939 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h +++ b/packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h @@ -114,8 +114,7 @@ class CloudFirestorePlugin : public flutter::Plugin, virtual void AggregateQuery( const FirestorePigeonFirebaseApp& app, const std::string& path, const PigeonQueryParameters& parameters, const AggregateSource& source, - const flutter::EncodableList& queries, - bool is_collection_group, + const flutter::EncodableList& queries, bool is_collection_group, std::function reply)> result) override; virtual void WriteBatchCommit( diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp index 20575151a522..fcf06964eab7 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp @@ -27,33 +27,37 @@ using flutter::EncodableValue; // PigeonFirebaseSettings PigeonFirebaseSettings::PigeonFirebaseSettings(bool ignore_undefined_properties) - : ignore_undefined_properties_(ignore_undefined_properties) {} - -PigeonFirebaseSettings::PigeonFirebaseSettings( - const bool* persistence_enabled, - const std::string* host, - const bool* ssl_enabled, - const int64_t* cache_size_bytes, - bool ignore_undefined_properties) - : persistence_enabled_(persistence_enabled ? std::optional(*persistence_enabled) : std::nullopt), - host_(host ? std::optional(*host) : std::nullopt), - ssl_enabled_(ssl_enabled ? std::optional(*ssl_enabled) : std::nullopt), - cache_size_bytes_(cache_size_bytes ? std::optional(*cache_size_bytes) : std::nullopt), - ignore_undefined_properties_(ignore_undefined_properties) {} + : ignore_undefined_properties_(ignore_undefined_properties) {} + +PigeonFirebaseSettings::PigeonFirebaseSettings(const bool* persistence_enabled, + const std::string* host, + const bool* ssl_enabled, + const int64_t* cache_size_bytes, + bool ignore_undefined_properties) + : persistence_enabled_(persistence_enabled + ? std::optional(*persistence_enabled) + : std::nullopt), + host_(host ? std::optional(*host) : std::nullopt), + ssl_enabled_(ssl_enabled ? std::optional(*ssl_enabled) + : std::nullopt), + cache_size_bytes_(cache_size_bytes + ? std::optional(*cache_size_bytes) + : std::nullopt), + ignore_undefined_properties_(ignore_undefined_properties) {} const bool* PigeonFirebaseSettings::persistence_enabled() const { return persistence_enabled_ ? &(*persistence_enabled_) : nullptr; } void PigeonFirebaseSettings::set_persistence_enabled(const bool* value_arg) { - persistence_enabled_ = value_arg ? std::optional(*value_arg) : std::nullopt; + persistence_enabled_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonFirebaseSettings::set_persistence_enabled(bool value_arg) { persistence_enabled_ = value_arg; } - const std::string* PigeonFirebaseSettings::host() const { return host_ ? &(*host_) : nullptr; } @@ -66,7 +70,6 @@ void PigeonFirebaseSettings::set_host(std::string_view value_arg) { host_ = value_arg; } - const bool* PigeonFirebaseSettings::ssl_enabled() const { return ssl_enabled_ ? &(*ssl_enabled_) : nullptr; } @@ -79,20 +82,19 @@ void PigeonFirebaseSettings::set_ssl_enabled(bool value_arg) { ssl_enabled_ = value_arg; } - const int64_t* PigeonFirebaseSettings::cache_size_bytes() const { return cache_size_bytes_ ? &(*cache_size_bytes_) : nullptr; } void PigeonFirebaseSettings::set_cache_size_bytes(const int64_t* value_arg) { - cache_size_bytes_ = value_arg ? std::optional(*value_arg) : std::nullopt; + cache_size_bytes_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonFirebaseSettings::set_cache_size_bytes(int64_t value_arg) { cache_size_bytes_ = value_arg; } - bool PigeonFirebaseSettings::ignore_undefined_properties() const { return ignore_undefined_properties_; } @@ -101,24 +103,27 @@ void PigeonFirebaseSettings::set_ignore_undefined_properties(bool value_arg) { ignore_undefined_properties_ = value_arg; } - EncodableList PigeonFirebaseSettings::ToEncodableList() const { EncodableList list; list.reserve(5); - list.push_back(persistence_enabled_ ? EncodableValue(*persistence_enabled_) : EncodableValue()); + list.push_back(persistence_enabled_ ? EncodableValue(*persistence_enabled_) + : EncodableValue()); list.push_back(host_ ? EncodableValue(*host_) : EncodableValue()); - list.push_back(ssl_enabled_ ? EncodableValue(*ssl_enabled_) : EncodableValue()); - list.push_back(cache_size_bytes_ ? EncodableValue(*cache_size_bytes_) : EncodableValue()); + list.push_back(ssl_enabled_ ? EncodableValue(*ssl_enabled_) + : EncodableValue()); + list.push_back(cache_size_bytes_ ? EncodableValue(*cache_size_bytes_) + : EncodableValue()); list.push_back(EncodableValue(ignore_undefined_properties_)); return list; } -PigeonFirebaseSettings PigeonFirebaseSettings::FromEncodableList(const EncodableList& list) { - PigeonFirebaseSettings decoded( - std::get(list[4])); +PigeonFirebaseSettings PigeonFirebaseSettings::FromEncodableList( + const EncodableList& list) { + PigeonFirebaseSettings decoded(std::get(list[4])); auto& encodable_persistence_enabled = list[0]; if (!encodable_persistence_enabled.IsNull()) { - decoded.set_persistence_enabled(std::get(encodable_persistence_enabled)); + decoded.set_persistence_enabled( + std::get(encodable_persistence_enabled)); } auto& encodable_host = list[1]; if (!encodable_host.IsNull()) { @@ -138,12 +143,11 @@ PigeonFirebaseSettings PigeonFirebaseSettings::FromEncodableList(const Encodable // FirestorePigeonFirebaseApp FirestorePigeonFirebaseApp::FirestorePigeonFirebaseApp( - const std::string& app_name, - const PigeonFirebaseSettings& settings, - const std::string& database_u_r_l) - : app_name_(app_name), - settings_(settings), - database_u_r_l_(database_u_r_l) {} + const std::string& app_name, const PigeonFirebaseSettings& settings, + const std::string& database_u_r_l) + : app_name_(app_name), + settings_(settings), + database_u_r_l_(database_u_r_l) {} const std::string& FirestorePigeonFirebaseApp::app_name() const { return app_name_; @@ -153,25 +157,24 @@ void FirestorePigeonFirebaseApp::set_app_name(std::string_view value_arg) { app_name_ = value_arg; } - const PigeonFirebaseSettings& FirestorePigeonFirebaseApp::settings() const { return settings_; } -void FirestorePigeonFirebaseApp::set_settings(const PigeonFirebaseSettings& value_arg) { +void FirestorePigeonFirebaseApp::set_settings( + const PigeonFirebaseSettings& value_arg) { settings_ = value_arg; } - const std::string& FirestorePigeonFirebaseApp::database_u_r_l() const { return database_u_r_l_; } -void FirestorePigeonFirebaseApp::set_database_u_r_l(std::string_view value_arg) { +void FirestorePigeonFirebaseApp::set_database_u_r_l( + std::string_view value_arg) { database_u_r_l_ = value_arg; } - EncodableList FirestorePigeonFirebaseApp::ToEncodableList() const { EncodableList list; list.reserve(3); @@ -181,21 +184,20 @@ EncodableList FirestorePigeonFirebaseApp::ToEncodableList() const { return list; } -FirestorePigeonFirebaseApp FirestorePigeonFirebaseApp::FromEncodableList(const EncodableList& list) { - FirestorePigeonFirebaseApp decoded( - std::get(list[0]), - PigeonFirebaseSettings::FromEncodableList(std::get(list[1])), - std::get(list[2])); +FirestorePigeonFirebaseApp FirestorePigeonFirebaseApp::FromEncodableList( + const EncodableList& list) { + FirestorePigeonFirebaseApp decoded(std::get(list[0]), + PigeonFirebaseSettings::FromEncodableList( + std::get(list[1])), + std::get(list[2])); return decoded; } // PigeonSnapshotMetadata -PigeonSnapshotMetadata::PigeonSnapshotMetadata( - bool has_pending_writes, - bool is_from_cache) - : has_pending_writes_(has_pending_writes), - is_from_cache_(is_from_cache) {} +PigeonSnapshotMetadata::PigeonSnapshotMetadata(bool has_pending_writes, + bool is_from_cache) + : has_pending_writes_(has_pending_writes), is_from_cache_(is_from_cache) {} bool PigeonSnapshotMetadata::has_pending_writes() const { return has_pending_writes_; @@ -205,16 +207,12 @@ void PigeonSnapshotMetadata::set_has_pending_writes(bool value_arg) { has_pending_writes_ = value_arg; } - -bool PigeonSnapshotMetadata::is_from_cache() const { - return is_from_cache_; -} +bool PigeonSnapshotMetadata::is_from_cache() const { return is_from_cache_; } void PigeonSnapshotMetadata::set_is_from_cache(bool value_arg) { is_from_cache_ = value_arg; } - EncodableList PigeonSnapshotMetadata::ToEncodableList() const { EncodableList list; list.reserve(2); @@ -223,38 +221,32 @@ EncodableList PigeonSnapshotMetadata::ToEncodableList() const { return list; } -PigeonSnapshotMetadata PigeonSnapshotMetadata::FromEncodableList(const EncodableList& list) { - PigeonSnapshotMetadata decoded( - std::get(list[0]), - std::get(list[1])); +PigeonSnapshotMetadata PigeonSnapshotMetadata::FromEncodableList( + const EncodableList& list) { + PigeonSnapshotMetadata decoded(std::get(list[0]), + std::get(list[1])); return decoded; } // PigeonDocumentSnapshot PigeonDocumentSnapshot::PigeonDocumentSnapshot( - const std::string& path, - const PigeonSnapshotMetadata& metadata) - : path_(path), - metadata_(metadata) {} + const std::string& path, const PigeonSnapshotMetadata& metadata) + : path_(path), metadata_(metadata) {} PigeonDocumentSnapshot::PigeonDocumentSnapshot( - const std::string& path, - const EncodableMap* data, - const PigeonSnapshotMetadata& metadata) - : path_(path), - data_(data ? std::optional(*data) : std::nullopt), - metadata_(metadata) {} + const std::string& path, const EncodableMap* data, + const PigeonSnapshotMetadata& metadata) + : path_(path), + data_(data ? std::optional(*data) : std::nullopt), + metadata_(metadata) {} -const std::string& PigeonDocumentSnapshot::path() const { - return path_; -} +const std::string& PigeonDocumentSnapshot::path() const { return path_; } void PigeonDocumentSnapshot::set_path(std::string_view value_arg) { path_ = value_arg; } - const EncodableMap* PigeonDocumentSnapshot::data() const { return data_ ? &(*data_) : nullptr; } @@ -267,16 +259,15 @@ void PigeonDocumentSnapshot::set_data(const EncodableMap& value_arg) { data_ = value_arg; } - const PigeonSnapshotMetadata& PigeonDocumentSnapshot::metadata() const { return metadata_; } -void PigeonDocumentSnapshot::set_metadata(const PigeonSnapshotMetadata& value_arg) { +void PigeonDocumentSnapshot::set_metadata( + const PigeonSnapshotMetadata& value_arg) { metadata_ = value_arg; } - EncodableList PigeonDocumentSnapshot::ToEncodableList() const { EncodableList list; list.reserve(3); @@ -286,10 +277,11 @@ EncodableList PigeonDocumentSnapshot::ToEncodableList() const { return list; } -PigeonDocumentSnapshot PigeonDocumentSnapshot::FromEncodableList(const EncodableList& list) { - PigeonDocumentSnapshot decoded( - std::get(list[0]), - PigeonSnapshotMetadata::FromEncodableList(std::get(list[2]))); +PigeonDocumentSnapshot PigeonDocumentSnapshot::FromEncodableList( + const EncodableList& list) { + PigeonDocumentSnapshot decoded(std::get(list[0]), + PigeonSnapshotMetadata::FromEncodableList( + std::get(list[2]))); auto& encodable_data = list[1]; if (!encodable_data.IsNull()) { decoded.set_data(std::get(encodable_data)); @@ -300,51 +292,40 @@ PigeonDocumentSnapshot PigeonDocumentSnapshot::FromEncodableList(const Encodable // PigeonDocumentChange PigeonDocumentChange::PigeonDocumentChange( - const DocumentChangeType& type, - const PigeonDocumentSnapshot& document, - int64_t old_index, - int64_t new_index) - : type_(type), - document_(document), - old_index_(old_index), - new_index_(new_index) {} - -const DocumentChangeType& PigeonDocumentChange::type() const { - return type_; -} + const DocumentChangeType& type, const PigeonDocumentSnapshot& document, + int64_t old_index, int64_t new_index) + : type_(type), + document_(document), + old_index_(old_index), + new_index_(new_index) {} + +const DocumentChangeType& PigeonDocumentChange::type() const { return type_; } void PigeonDocumentChange::set_type(const DocumentChangeType& value_arg) { type_ = value_arg; } - const PigeonDocumentSnapshot& PigeonDocumentChange::document() const { return document_; } -void PigeonDocumentChange::set_document(const PigeonDocumentSnapshot& value_arg) { +void PigeonDocumentChange::set_document( + const PigeonDocumentSnapshot& value_arg) { document_ = value_arg; } - -int64_t PigeonDocumentChange::old_index() const { - return old_index_; -} +int64_t PigeonDocumentChange::old_index() const { return old_index_; } void PigeonDocumentChange::set_old_index(int64_t value_arg) { old_index_ = value_arg; } - -int64_t PigeonDocumentChange::new_index() const { - return new_index_; -} +int64_t PigeonDocumentChange::new_index() const { return new_index_; } void PigeonDocumentChange::set_new_index(int64_t value_arg) { new_index_ = value_arg; } - EncodableList PigeonDocumentChange::ToEncodableList() const { EncodableList list; list.reserve(4); @@ -355,24 +336,23 @@ EncodableList PigeonDocumentChange::ToEncodableList() const { return list; } -PigeonDocumentChange PigeonDocumentChange::FromEncodableList(const EncodableList& list) { - PigeonDocumentChange decoded( - (DocumentChangeType)(std::get(list[0])), - PigeonDocumentSnapshot::FromEncodableList(std::get(list[1])), - list[2].LongValue(), - list[3].LongValue()); +PigeonDocumentChange PigeonDocumentChange::FromEncodableList( + const EncodableList& list) { + PigeonDocumentChange decoded((DocumentChangeType)(std::get(list[0])), + PigeonDocumentSnapshot::FromEncodableList( + std::get(list[1])), + list[2].LongValue(), list[3].LongValue()); return decoded; } // PigeonQuerySnapshot -PigeonQuerySnapshot::PigeonQuerySnapshot( - const EncodableList& documents, - const EncodableList& document_changes, - const PigeonSnapshotMetadata& metadata) - : documents_(documents), - document_changes_(document_changes), - metadata_(metadata) {} +PigeonQuerySnapshot::PigeonQuerySnapshot(const EncodableList& documents, + const EncodableList& document_changes, + const PigeonSnapshotMetadata& metadata) + : documents_(documents), + document_changes_(document_changes), + metadata_(metadata) {} const EncodableList& PigeonQuerySnapshot::documents() const { return documents_; @@ -382,7 +362,6 @@ void PigeonQuerySnapshot::set_documents(const EncodableList& value_arg) { documents_ = value_arg; } - const EncodableList& PigeonQuerySnapshot::document_changes() const { return document_changes_; } @@ -391,16 +370,15 @@ void PigeonQuerySnapshot::set_document_changes(const EncodableList& value_arg) { document_changes_ = value_arg; } - const PigeonSnapshotMetadata& PigeonQuerySnapshot::metadata() const { return metadata_; } -void PigeonQuerySnapshot::set_metadata(const PigeonSnapshotMetadata& value_arg) { +void PigeonQuerySnapshot::set_metadata( + const PigeonSnapshotMetadata& value_arg) { metadata_ = value_arg; } - EncodableList PigeonQuerySnapshot::ToEncodableList() const { EncodableList list; list.reserve(3); @@ -410,40 +388,38 @@ EncodableList PigeonQuerySnapshot::ToEncodableList() const { return list; } -PigeonQuerySnapshot PigeonQuerySnapshot::FromEncodableList(const EncodableList& list) { - PigeonQuerySnapshot decoded( - std::get(list[0]), - std::get(list[1]), - PigeonSnapshotMetadata::FromEncodableList(std::get(list[2]))); +PigeonQuerySnapshot PigeonQuerySnapshot::FromEncodableList( + const EncodableList& list) { + PigeonQuerySnapshot decoded(std::get(list[0]), + std::get(list[1]), + PigeonSnapshotMetadata::FromEncodableList( + std::get(list[2]))); return decoded; } // PigeonGetOptions PigeonGetOptions::PigeonGetOptions( - const Source& source, - const ServerTimestampBehavior& server_timestamp_behavior) - : source_(source), - server_timestamp_behavior_(server_timestamp_behavior) {} + const Source& source, + const ServerTimestampBehavior& server_timestamp_behavior) + : source_(source), server_timestamp_behavior_(server_timestamp_behavior) {} -const Source& PigeonGetOptions::source() const { - return source_; -} +const Source& PigeonGetOptions::source() const { return source_; } void PigeonGetOptions::set_source(const Source& value_arg) { source_ = value_arg; } - -const ServerTimestampBehavior& PigeonGetOptions::server_timestamp_behavior() const { +const ServerTimestampBehavior& PigeonGetOptions::server_timestamp_behavior() + const { return server_timestamp_behavior_; } -void PigeonGetOptions::set_server_timestamp_behavior(const ServerTimestampBehavior& value_arg) { +void PigeonGetOptions::set_server_timestamp_behavior( + const ServerTimestampBehavior& value_arg) { server_timestamp_behavior_ = value_arg; } - EncodableList PigeonGetOptions::ToEncodableList() const { EncodableList list; list.reserve(2); @@ -452,10 +428,11 @@ EncodableList PigeonGetOptions::ToEncodableList() const { return list; } -PigeonGetOptions PigeonGetOptions::FromEncodableList(const EncodableList& list) { +PigeonGetOptions PigeonGetOptions::FromEncodableList( + const EncodableList& list) { PigeonGetOptions decoded( - (Source)(std::get(list[0])), - (ServerTimestampBehavior)(std::get(list[1]))); + (Source)(std::get(list[0])), + (ServerTimestampBehavior)(std::get(list[1]))); return decoded; } @@ -463,11 +440,11 @@ PigeonGetOptions PigeonGetOptions::FromEncodableList(const EncodableList& list) PigeonDocumentOption::PigeonDocumentOption() {} -PigeonDocumentOption::PigeonDocumentOption( - const bool* merge, - const EncodableList* merge_fields) - : merge_(merge ? std::optional(*merge) : std::nullopt), - merge_fields_(merge_fields ? std::optional(*merge_fields) : std::nullopt) {} +PigeonDocumentOption::PigeonDocumentOption(const bool* merge, + const EncodableList* merge_fields) + : merge_(merge ? std::optional(*merge) : std::nullopt), + merge_fields_(merge_fields ? std::optional(*merge_fields) + : std::nullopt) {} const bool* PigeonDocumentOption::merge() const { return merge_ ? &(*merge_) : nullptr; @@ -477,33 +454,32 @@ void PigeonDocumentOption::set_merge(const bool* value_arg) { merge_ = value_arg ? std::optional(*value_arg) : std::nullopt; } -void PigeonDocumentOption::set_merge(bool value_arg) { - merge_ = value_arg; -} - +void PigeonDocumentOption::set_merge(bool value_arg) { merge_ = value_arg; } const EncodableList* PigeonDocumentOption::merge_fields() const { return merge_fields_ ? &(*merge_fields_) : nullptr; } void PigeonDocumentOption::set_merge_fields(const EncodableList* value_arg) { - merge_fields_ = value_arg ? std::optional(*value_arg) : std::nullopt; + merge_fields_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonDocumentOption::set_merge_fields(const EncodableList& value_arg) { merge_fields_ = value_arg; } - EncodableList PigeonDocumentOption::ToEncodableList() const { EncodableList list; list.reserve(2); list.push_back(merge_ ? EncodableValue(*merge_) : EncodableValue()); - list.push_back(merge_fields_ ? EncodableValue(*merge_fields_) : EncodableValue()); + list.push_back(merge_fields_ ? EncodableValue(*merge_fields_) + : EncodableValue()); return list; } -PigeonDocumentOption PigeonDocumentOption::FromEncodableList(const EncodableList& list) { +PigeonDocumentOption PigeonDocumentOption::FromEncodableList( + const EncodableList& list) { PigeonDocumentOption decoded; auto& encodable_merge = list[0]; if (!encodable_merge.IsNull()) { @@ -519,39 +495,33 @@ PigeonDocumentOption PigeonDocumentOption::FromEncodableList(const EncodableList // PigeonTransactionCommand PigeonTransactionCommand::PigeonTransactionCommand( - const PigeonTransactionType& type, - const std::string& path) - : type_(type), - path_(path) {} + const PigeonTransactionType& type, const std::string& path) + : type_(type), path_(path) {} PigeonTransactionCommand::PigeonTransactionCommand( - const PigeonTransactionType& type, - const std::string& path, - const EncodableMap* data, - const PigeonDocumentOption* option) - : type_(type), - path_(path), - data_(data ? std::optional(*data) : std::nullopt), - option_(option ? std::optional(*option) : std::nullopt) {} + const PigeonTransactionType& type, const std::string& path, + const EncodableMap* data, const PigeonDocumentOption* option) + : type_(type), + path_(path), + data_(data ? std::optional(*data) : std::nullopt), + option_(option ? std::optional(*option) + : std::nullopt) {} const PigeonTransactionType& PigeonTransactionCommand::type() const { return type_; } -void PigeonTransactionCommand::set_type(const PigeonTransactionType& value_arg) { +void PigeonTransactionCommand::set_type( + const PigeonTransactionType& value_arg) { type_ = value_arg; } - -const std::string& PigeonTransactionCommand::path() const { - return path_; -} +const std::string& PigeonTransactionCommand::path() const { return path_; } void PigeonTransactionCommand::set_path(std::string_view value_arg) { path_ = value_arg; } - const EncodableMap* PigeonTransactionCommand::data() const { return data_ ? &(*data_) : nullptr; } @@ -564,41 +534,45 @@ void PigeonTransactionCommand::set_data(const EncodableMap& value_arg) { data_ = value_arg; } - const PigeonDocumentOption* PigeonTransactionCommand::option() const { return option_ ? &(*option_) : nullptr; } -void PigeonTransactionCommand::set_option(const PigeonDocumentOption* value_arg) { - option_ = value_arg ? std::optional(*value_arg) : std::nullopt; +void PigeonTransactionCommand::set_option( + const PigeonDocumentOption* value_arg) { + option_ = value_arg ? std::optional(*value_arg) + : std::nullopt; } -void PigeonTransactionCommand::set_option(const PigeonDocumentOption& value_arg) { +void PigeonTransactionCommand::set_option( + const PigeonDocumentOption& value_arg) { option_ = value_arg; } - EncodableList PigeonTransactionCommand::ToEncodableList() const { EncodableList list; list.reserve(4); list.push_back(EncodableValue((int)type_)); list.push_back(EncodableValue(path_)); list.push_back(data_ ? EncodableValue(*data_) : EncodableValue()); - list.push_back(option_ ? EncodableValue(option_->ToEncodableList()) : EncodableValue()); + list.push_back(option_ ? EncodableValue(option_->ToEncodableList()) + : EncodableValue()); return list; } -PigeonTransactionCommand PigeonTransactionCommand::FromEncodableList(const EncodableList& list) { +PigeonTransactionCommand PigeonTransactionCommand::FromEncodableList( + const EncodableList& list) { PigeonTransactionCommand decoded( - (PigeonTransactionType)(std::get(list[0])), - std::get(list[1])); + (PigeonTransactionType)(std::get(list[0])), + std::get(list[1])); auto& encodable_data = list[2]; if (!encodable_data.IsNull()) { decoded.set_data(std::get(encodable_data)); } auto& encodable_option = list[3]; if (!encodable_option.IsNull()) { - decoded.set_option(PigeonDocumentOption::FromEncodableList(std::get(encodable_option))); + decoded.set_option(PigeonDocumentOption::FromEncodableList( + std::get(encodable_option))); } return decoded; } @@ -606,29 +580,28 @@ PigeonTransactionCommand PigeonTransactionCommand::FromEncodableList(const Encod // DocumentReferenceRequest DocumentReferenceRequest::DocumentReferenceRequest(const std::string& path) - : path_(path) {} + : path_(path) {} DocumentReferenceRequest::DocumentReferenceRequest( - const std::string& path, - const EncodableMap* data, - const PigeonDocumentOption* option, - const Source* source, - const ServerTimestampBehavior* server_timestamp_behavior) - : path_(path), - data_(data ? std::optional(*data) : std::nullopt), - option_(option ? std::optional(*option) : std::nullopt), - source_(source ? std::optional(*source) : std::nullopt), - server_timestamp_behavior_(server_timestamp_behavior ? std::optional(*server_timestamp_behavior) : std::nullopt) {} - -const std::string& DocumentReferenceRequest::path() const { - return path_; -} + const std::string& path, const EncodableMap* data, + const PigeonDocumentOption* option, const Source* source, + const ServerTimestampBehavior* server_timestamp_behavior) + : path_(path), + data_(data ? std::optional(*data) : std::nullopt), + option_(option ? std::optional(*option) + : std::nullopt), + source_(source ? std::optional(*source) : std::nullopt), + server_timestamp_behavior_(server_timestamp_behavior + ? std::optional( + *server_timestamp_behavior) + : std::nullopt) {} + +const std::string& DocumentReferenceRequest::path() const { return path_; } void DocumentReferenceRequest::set_path(std::string_view value_arg) { path_ = value_arg; } - const EncodableMap* DocumentReferenceRequest::data() const { return data_ ? &(*data_) : nullptr; } @@ -641,20 +614,21 @@ void DocumentReferenceRequest::set_data(const EncodableMap& value_arg) { data_ = value_arg; } - const PigeonDocumentOption* DocumentReferenceRequest::option() const { return option_ ? &(*option_) : nullptr; } -void DocumentReferenceRequest::set_option(const PigeonDocumentOption* value_arg) { - option_ = value_arg ? std::optional(*value_arg) : std::nullopt; +void DocumentReferenceRequest::set_option( + const PigeonDocumentOption* value_arg) { + option_ = value_arg ? std::optional(*value_arg) + : std::nullopt; } -void DocumentReferenceRequest::set_option(const PigeonDocumentOption& value_arg) { +void DocumentReferenceRequest::set_option( + const PigeonDocumentOption& value_arg) { option_ = value_arg; } - const Source* DocumentReferenceRequest::source() const { return source_ ? &(*source_) : nullptr; } @@ -667,41 +641,48 @@ void DocumentReferenceRequest::set_source(const Source& value_arg) { source_ = value_arg; } - -const ServerTimestampBehavior* DocumentReferenceRequest::server_timestamp_behavior() const { +const ServerTimestampBehavior* +DocumentReferenceRequest::server_timestamp_behavior() const { return server_timestamp_behavior_ ? &(*server_timestamp_behavior_) : nullptr; } -void DocumentReferenceRequest::set_server_timestamp_behavior(const ServerTimestampBehavior* value_arg) { - server_timestamp_behavior_ = value_arg ? std::optional(*value_arg) : std::nullopt; +void DocumentReferenceRequest::set_server_timestamp_behavior( + const ServerTimestampBehavior* value_arg) { + server_timestamp_behavior_ = + value_arg ? std::optional(*value_arg) + : std::nullopt; } -void DocumentReferenceRequest::set_server_timestamp_behavior(const ServerTimestampBehavior& value_arg) { +void DocumentReferenceRequest::set_server_timestamp_behavior( + const ServerTimestampBehavior& value_arg) { server_timestamp_behavior_ = value_arg; } - EncodableList DocumentReferenceRequest::ToEncodableList() const { EncodableList list; list.reserve(5); list.push_back(EncodableValue(path_)); list.push_back(data_ ? EncodableValue(*data_) : EncodableValue()); - list.push_back(option_ ? EncodableValue(option_->ToEncodableList()) : EncodableValue()); + list.push_back(option_ ? EncodableValue(option_->ToEncodableList()) + : EncodableValue()); list.push_back(source_ ? EncodableValue((int)(*source_)) : EncodableValue()); - list.push_back(server_timestamp_behavior_ ? EncodableValue((int)(*server_timestamp_behavior_)) : EncodableValue()); + list.push_back(server_timestamp_behavior_ + ? EncodableValue((int)(*server_timestamp_behavior_)) + : EncodableValue()); return list; } -DocumentReferenceRequest DocumentReferenceRequest::FromEncodableList(const EncodableList& list) { - DocumentReferenceRequest decoded( - std::get(list[0])); +DocumentReferenceRequest DocumentReferenceRequest::FromEncodableList( + const EncodableList& list) { + DocumentReferenceRequest decoded(std::get(list[0])); auto& encodable_data = list[1]; if (!encodable_data.IsNull()) { decoded.set_data(std::get(encodable_data)); } auto& encodable_option = list[2]; if (!encodable_option.IsNull()) { - decoded.set_option(PigeonDocumentOption::FromEncodableList(std::get(encodable_option))); + decoded.set_option(PigeonDocumentOption::FromEncodableList( + std::get(encodable_option))); } auto& encodable_source = list[3]; if (!encodable_source.IsNull()) { @@ -709,7 +690,9 @@ DocumentReferenceRequest DocumentReferenceRequest::FromEncodableList(const Encod } auto& encodable_server_timestamp_behavior = list[4]; if (!encodable_server_timestamp_behavior.IsNull()) { - decoded.set_server_timestamp_behavior((ServerTimestampBehavior)(std::get(encodable_server_timestamp_behavior))); + decoded.set_server_timestamp_behavior( + (ServerTimestampBehavior)(std::get( + encodable_server_timestamp_behavior))); } return decoded; } @@ -719,24 +702,26 @@ DocumentReferenceRequest DocumentReferenceRequest::FromEncodableList(const Encod PigeonQueryParameters::PigeonQueryParameters() {} PigeonQueryParameters::PigeonQueryParameters( - const EncodableList* where, - const EncodableList* order_by, - const int64_t* limit, - const int64_t* limit_to_last, - const EncodableList* start_at, - const EncodableList* start_after, - const EncodableList* end_at, - const EncodableList* end_before, - const EncodableMap* filters) - : where_(where ? std::optional(*where) : std::nullopt), - order_by_(order_by ? std::optional(*order_by) : std::nullopt), - limit_(limit ? std::optional(*limit) : std::nullopt), - limit_to_last_(limit_to_last ? std::optional(*limit_to_last) : std::nullopt), - start_at_(start_at ? std::optional(*start_at) : std::nullopt), - start_after_(start_after ? std::optional(*start_after) : std::nullopt), - end_at_(end_at ? std::optional(*end_at) : std::nullopt), - end_before_(end_before ? std::optional(*end_before) : std::nullopt), - filters_(filters ? std::optional(*filters) : std::nullopt) {} + const EncodableList* where, const EncodableList* order_by, + const int64_t* limit, const int64_t* limit_to_last, + const EncodableList* start_at, const EncodableList* start_after, + const EncodableList* end_at, const EncodableList* end_before, + const EncodableMap* filters) + : where_(where ? std::optional(*where) : std::nullopt), + order_by_(order_by ? std::optional(*order_by) + : std::nullopt), + limit_(limit ? std::optional(*limit) : std::nullopt), + limit_to_last_(limit_to_last ? std::optional(*limit_to_last) + : std::nullopt), + start_at_(start_at ? std::optional(*start_at) + : std::nullopt), + start_after_(start_after ? std::optional(*start_after) + : std::nullopt), + end_at_(end_at ? std::optional(*end_at) : std::nullopt), + end_before_(end_before ? std::optional(*end_before) + : std::nullopt), + filters_(filters ? std::optional(*filters) : std::nullopt) { +} const EncodableList* PigeonQueryParameters::where() const { return where_ ? &(*where_) : nullptr; @@ -750,20 +735,19 @@ void PigeonQueryParameters::set_where(const EncodableList& value_arg) { where_ = value_arg; } - const EncodableList* PigeonQueryParameters::order_by() const { return order_by_ ? &(*order_by_) : nullptr; } void PigeonQueryParameters::set_order_by(const EncodableList* value_arg) { - order_by_ = value_arg ? std::optional(*value_arg) : std::nullopt; + order_by_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonQueryParameters::set_order_by(const EncodableList& value_arg) { order_by_ = value_arg; } - const int64_t* PigeonQueryParameters::limit() const { return limit_ ? &(*limit_) : nullptr; } @@ -772,50 +756,47 @@ void PigeonQueryParameters::set_limit(const int64_t* value_arg) { limit_ = value_arg ? std::optional(*value_arg) : std::nullopt; } -void PigeonQueryParameters::set_limit(int64_t value_arg) { - limit_ = value_arg; -} - +void PigeonQueryParameters::set_limit(int64_t value_arg) { limit_ = value_arg; } const int64_t* PigeonQueryParameters::limit_to_last() const { return limit_to_last_ ? &(*limit_to_last_) : nullptr; } void PigeonQueryParameters::set_limit_to_last(const int64_t* value_arg) { - limit_to_last_ = value_arg ? std::optional(*value_arg) : std::nullopt; + limit_to_last_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonQueryParameters::set_limit_to_last(int64_t value_arg) { limit_to_last_ = value_arg; } - const EncodableList* PigeonQueryParameters::start_at() const { return start_at_ ? &(*start_at_) : nullptr; } void PigeonQueryParameters::set_start_at(const EncodableList* value_arg) { - start_at_ = value_arg ? std::optional(*value_arg) : std::nullopt; + start_at_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonQueryParameters::set_start_at(const EncodableList& value_arg) { start_at_ = value_arg; } - const EncodableList* PigeonQueryParameters::start_after() const { return start_after_ ? &(*start_after_) : nullptr; } void PigeonQueryParameters::set_start_after(const EncodableList* value_arg) { - start_after_ = value_arg ? std::optional(*value_arg) : std::nullopt; + start_after_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonQueryParameters::set_start_after(const EncodableList& value_arg) { start_after_ = value_arg; } - const EncodableList* PigeonQueryParameters::end_at() const { return end_at_ ? &(*end_at_) : nullptr; } @@ -828,20 +809,19 @@ void PigeonQueryParameters::set_end_at(const EncodableList& value_arg) { end_at_ = value_arg; } - const EncodableList* PigeonQueryParameters::end_before() const { return end_before_ ? &(*end_before_) : nullptr; } void PigeonQueryParameters::set_end_before(const EncodableList* value_arg) { - end_before_ = value_arg ? std::optional(*value_arg) : std::nullopt; + end_before_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void PigeonQueryParameters::set_end_before(const EncodableList& value_arg) { end_before_ = value_arg; } - const EncodableMap* PigeonQueryParameters::filters() const { return filters_ ? &(*filters_) : nullptr; } @@ -854,23 +834,25 @@ void PigeonQueryParameters::set_filters(const EncodableMap& value_arg) { filters_ = value_arg; } - EncodableList PigeonQueryParameters::ToEncodableList() const { EncodableList list; list.reserve(9); list.push_back(where_ ? EncodableValue(*where_) : EncodableValue()); list.push_back(order_by_ ? EncodableValue(*order_by_) : EncodableValue()); list.push_back(limit_ ? EncodableValue(*limit_) : EncodableValue()); - list.push_back(limit_to_last_ ? EncodableValue(*limit_to_last_) : EncodableValue()); + list.push_back(limit_to_last_ ? EncodableValue(*limit_to_last_) + : EncodableValue()); list.push_back(start_at_ ? EncodableValue(*start_at_) : EncodableValue()); - list.push_back(start_after_ ? EncodableValue(*start_after_) : EncodableValue()); + list.push_back(start_after_ ? EncodableValue(*start_after_) + : EncodableValue()); list.push_back(end_at_ ? EncodableValue(*end_at_) : EncodableValue()); list.push_back(end_before_ ? EncodableValue(*end_before_) : EncodableValue()); list.push_back(filters_ ? EncodableValue(*filters_) : EncodableValue()); return list; } -PigeonQueryParameters PigeonQueryParameters::FromEncodableList(const EncodableList& list) { +PigeonQueryParameters PigeonQueryParameters::FromEncodableList( + const EncodableList& list) { PigeonQueryParameters decoded; auto& encodable_where = list[0]; if (!encodable_where.IsNull()) { @@ -913,24 +895,19 @@ PigeonQueryParameters PigeonQueryParameters::FromEncodableList(const EncodableLi // AggregateQuery -AggregateQuery::AggregateQuery(const AggregateType& type) - : type_(type) {} +AggregateQuery::AggregateQuery(const AggregateType& type) : type_(type) {} -AggregateQuery::AggregateQuery( - const AggregateType& type, - const std::string* field) - : type_(type), - field_(field ? std::optional(*field) : std::nullopt) {} +AggregateQuery::AggregateQuery(const AggregateType& type, + const std::string* field) + : type_(type), + field_(field ? std::optional(*field) : std::nullopt) {} -const AggregateType& AggregateQuery::type() const { - return type_; -} +const AggregateType& AggregateQuery::type() const { return type_; } void AggregateQuery::set_type(const AggregateType& value_arg) { type_ = value_arg; } - const std::string* AggregateQuery::field() const { return field_ ? &(*field_) : nullptr; } @@ -943,7 +920,6 @@ void AggregateQuery::set_field(std::string_view value_arg) { field_ = value_arg; } - EncodableList AggregateQuery::ToEncodableList() const { EncodableList list; list.reserve(2); @@ -953,8 +929,7 @@ EncodableList AggregateQuery::ToEncodableList() const { } AggregateQuery AggregateQuery::FromEncodableList(const EncodableList& list) { - AggregateQuery decoded( - (AggregateType)(std::get(list[0]))); + AggregateQuery decoded((AggregateType)(std::get(list[0]))); auto& encodable_field = list[1]; if (!encodable_field.IsNull()) { decoded.set_field(std::get(encodable_field)); @@ -964,29 +939,23 @@ AggregateQuery AggregateQuery::FromEncodableList(const EncodableList& list) { // AggregateQueryResponse -AggregateQueryResponse::AggregateQueryResponse( - const AggregateType& type, - double value) - : type_(type), - value_(value) {} - -AggregateQueryResponse::AggregateQueryResponse( - const AggregateType& type, - const std::string* field, - double value) - : type_(type), - field_(field ? std::optional(*field) : std::nullopt), - value_(value) {} - -const AggregateType& AggregateQueryResponse::type() const { - return type_; -} +AggregateQueryResponse::AggregateQueryResponse(const AggregateType& type, + double value) + : type_(type), value_(value) {} + +AggregateQueryResponse::AggregateQueryResponse(const AggregateType& type, + const std::string* field, + double value) + : type_(type), + field_(field ? std::optional(*field) : std::nullopt), + value_(value) {} + +const AggregateType& AggregateQueryResponse::type() const { return type_; } void AggregateQueryResponse::set_type(const AggregateType& value_arg) { type_ = value_arg; } - const std::string* AggregateQueryResponse::field() const { return field_ ? &(*field_) : nullptr; } @@ -999,15 +968,9 @@ void AggregateQueryResponse::set_field(std::string_view value_arg) { field_ = value_arg; } +double AggregateQueryResponse::value() const { return value_; } -double AggregateQueryResponse::value() const { - return value_; -} - -void AggregateQueryResponse::set_value(double value_arg) { - value_ = value_arg; -} - +void AggregateQueryResponse::set_value(double value_arg) { value_ = value_arg; } EncodableList AggregateQueryResponse::ToEncodableList() const { EncodableList list; @@ -1018,10 +981,10 @@ EncodableList AggregateQueryResponse::ToEncodableList() const { return list; } -AggregateQueryResponse AggregateQueryResponse::FromEncodableList(const EncodableList& list) { - AggregateQueryResponse decoded( - (AggregateType)(std::get(list[0])), - std::get(list[2])); +AggregateQueryResponse AggregateQueryResponse::FromEncodableList( + const EncodableList& list) { + AggregateQueryResponse decoded((AggregateType)(std::get(list[0])), + std::get(list[2])); auto& encodable_field = list[1]; if (!encodable_field.IsNull()) { decoded.set_field(std::get(encodable_field)); @@ -1029,111 +992,163 @@ AggregateQueryResponse AggregateQueryResponse::FromEncodableList(const Encodable return decoded; } - -FirebaseFirestoreHostApiCodecSerializer::FirebaseFirestoreHostApiCodecSerializer() {} +FirebaseFirestoreHostApiCodecSerializer:: + FirebaseFirestoreHostApiCodecSerializer() {} EncodableValue FirebaseFirestoreHostApiCodecSerializer::ReadValueOfType( - uint8_t type, - flutter::ByteStreamReader* stream) const { + uint8_t type, flutter::ByteStreamReader* stream) const { switch (type) { case 128: - return CustomEncodableValue(AggregateQuery::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(AggregateQuery::FromEncodableList( + std::get(ReadValue(stream)))); case 129: - return CustomEncodableValue(AggregateQueryResponse::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(AggregateQueryResponse::FromEncodableList( + std::get(ReadValue(stream)))); case 130: - return CustomEncodableValue(DocumentReferenceRequest::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(DocumentReferenceRequest::FromEncodableList( + std::get(ReadValue(stream)))); case 131: - return CustomEncodableValue(FirestorePigeonFirebaseApp::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(FirestorePigeonFirebaseApp::FromEncodableList( + std::get(ReadValue(stream)))); case 132: - return CustomEncodableValue(PigeonDocumentChange::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonDocumentChange::FromEncodableList( + std::get(ReadValue(stream)))); case 133: - return CustomEncodableValue(PigeonDocumentOption::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonDocumentOption::FromEncodableList( + std::get(ReadValue(stream)))); case 134: - return CustomEncodableValue(PigeonDocumentSnapshot::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonDocumentSnapshot::FromEncodableList( + std::get(ReadValue(stream)))); case 135: - return CustomEncodableValue(PigeonFirebaseSettings::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonFirebaseSettings::FromEncodableList( + std::get(ReadValue(stream)))); case 136: - return CustomEncodableValue(PigeonGetOptions::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonGetOptions::FromEncodableList( + std::get(ReadValue(stream)))); case 137: - return CustomEncodableValue(PigeonQueryParameters::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonQueryParameters::FromEncodableList( + std::get(ReadValue(stream)))); case 138: - return CustomEncodableValue(PigeonQuerySnapshot::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonQuerySnapshot::FromEncodableList( + std::get(ReadValue(stream)))); case 139: - return CustomEncodableValue(PigeonSnapshotMetadata::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonSnapshotMetadata::FromEncodableList( + std::get(ReadValue(stream)))); case 140: - return CustomEncodableValue(PigeonTransactionCommand::FromEncodableList(std::get(ReadValue(stream)))); + return CustomEncodableValue(PigeonTransactionCommand::FromEncodableList( + std::get(ReadValue(stream)))); default: - return cloud_firestore_windows::FirestoreCodec::ReadValueOfType(type, stream); + return cloud_firestore_windows::FirestoreCodec::ReadValueOfType(type, + stream); } } void FirebaseFirestoreHostApiCodecSerializer::WriteValue( - const EncodableValue& value, - flutter::ByteStreamWriter* stream) const { - if (const CustomEncodableValue* custom_value = std::get_if(&value)) { + const EncodableValue& value, flutter::ByteStreamWriter* stream) const { + if (const CustomEncodableValue* custom_value = + std::get_if(&value)) { if (custom_value->type() == typeid(AggregateQuery)) { stream->WriteByte(128); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue( + std::any_cast(*custom_value).ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(AggregateQueryResponse)) { stream->WriteByte(129); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(DocumentReferenceRequest)) { stream->WriteByte(130); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(FirestorePigeonFirebaseApp)) { stream->WriteByte(131); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue(EncodableValue( + std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonDocumentChange)) { stream->WriteByte(132); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonDocumentOption)) { stream->WriteByte(133); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonDocumentSnapshot)) { stream->WriteByte(134); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonFirebaseSettings)) { stream->WriteByte(135); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonGetOptions)) { stream->WriteByte(136); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue( + std::any_cast(*custom_value).ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonQueryParameters)) { stream->WriteByte(137); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonQuerySnapshot)) { stream->WriteByte(138); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonSnapshotMetadata)) { stream->WriteByte(139); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(PigeonTransactionCommand)) { stream->WriteByte(140); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } } @@ -1142,849 +1157,1105 @@ void FirebaseFirestoreHostApiCodecSerializer::WriteValue( /// The codec used by FirebaseFirestoreHostApi. const flutter::StandardMessageCodec& FirebaseFirestoreHostApi::GetCodec() { - return flutter::StandardMessageCodec::GetInstance(&FirebaseFirestoreHostApiCodecSerializer::GetInstance()); + return flutter::StandardMessageCodec::GetInstance( + &FirebaseFirestoreHostApiCodecSerializer::GetInstance()); } -// Sets up an instance of `FirebaseFirestoreHostApi` to handle messages through the `binary_messenger`. -void FirebaseFirestoreHostApi::SetUp( - flutter::BinaryMessenger* binary_messenger, - FirebaseFirestoreHostApi* api) { +// Sets up an instance of `FirebaseFirestoreHostApi` to handle messages through +// the `binary_messenger`. +void FirebaseFirestoreHostApi::SetUp(flutter::BinaryMessenger* binary_messenger, + FirebaseFirestoreHostApi* api) { { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.loadBundle", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.loadBundle", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_bundle_arg = args.at(1); - if (encodable_bundle_arg.IsNull()) { - reply(WrapError("bundle_arg unexpectedly null.")); - return; - } - const auto& bundle_arg = std::get>(encodable_bundle_arg); - api->LoadBundle(app_arg, bundle_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_bundle_arg = args.at(1); + if (encodable_bundle_arg.IsNull()) { + reply(WrapError("bundle_arg unexpectedly null.")); + return; + } + const auto& bundle_arg = + std::get>(encodable_bundle_arg); + api->LoadBundle( + app_arg, bundle_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.namedQueryGet", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.namedQueryGet", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_name_arg = args.at(1); - if (encodable_name_arg.IsNull()) { - reply(WrapError("name_arg unexpectedly null.")); - return; - } - const auto& name_arg = std::get(encodable_name_arg); - const auto& encodable_options_arg = args.at(2); - if (encodable_options_arg.IsNull()) { - reply(WrapError("options_arg unexpectedly null.")); - return; - } - const auto& options_arg = std::any_cast(std::get(encodable_options_arg)); - api->NamedQueryGet(app_arg, name_arg, options_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_name_arg = args.at(1); + if (encodable_name_arg.IsNull()) { + reply(WrapError("name_arg unexpectedly null.")); + return; + } + const auto& name_arg = std::get(encodable_name_arg); + const auto& encodable_options_arg = args.at(2); + if (encodable_options_arg.IsNull()) { + reply(WrapError("options_arg unexpectedly null.")); + return; + } + const auto& options_arg = std::any_cast( + std::get(encodable_options_arg)); + api->NamedQueryGet( + app_arg, name_arg, options_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.clearPersistence", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.clearPersistence", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->ClearPersistence(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->ClearPersistence( + app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.disableNetwork", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.disableNetwork", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->DisableNetwork(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->DisableNetwork( + app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.enableNetwork", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.enableNetwork", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->EnableNetwork(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->EnableNetwork(app_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.terminate", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.terminate", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->Terminate(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->Terminate(app_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.waitForPendingWrites", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.waitForPendingWrites", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->WaitForPendingWrites(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->WaitForPendingWrites( + app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setIndexConfiguration", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.setIndexConfiguration", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_index_configuration_arg = args.at(1); - if (encodable_index_configuration_arg.IsNull()) { - reply(WrapError("index_configuration_arg unexpectedly null.")); - return; - } - const auto& index_configuration_arg = std::get(encodable_index_configuration_arg); - api->SetIndexConfiguration(app_arg, index_configuration_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_index_configuration_arg = args.at(1); + if (encodable_index_configuration_arg.IsNull()) { + reply(WrapError("index_configuration_arg unexpectedly null.")); + return; + } + const auto& index_configuration_arg = + std::get(encodable_index_configuration_arg); + api->SetIndexConfiguration( + app_arg, index_configuration_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.setLoggingEnabled", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.setLoggingEnabled", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_logging_enabled_arg = args.at(0); - if (encodable_logging_enabled_arg.IsNull()) { - reply(WrapError("logging_enabled_arg unexpectedly null.")); - return; - } - const auto& logging_enabled_arg = std::get(encodable_logging_enabled_arg); - api->SetLoggingEnabled(logging_enabled_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_logging_enabled_arg = args.at(0); + if (encodable_logging_enabled_arg.IsNull()) { + reply(WrapError("logging_enabled_arg unexpectedly null.")); + return; + } + const auto& logging_enabled_arg = + std::get(encodable_logging_enabled_arg); + api->SetLoggingEnabled( + logging_enabled_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.snapshotsInSyncSetup", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.snapshotsInSyncSetup", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->SnapshotsInSyncSetup(app_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->SnapshotsInSyncSetup( + app_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionCreate", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.transactionCreate", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_timeout_arg = args.at(1); - if (encodable_timeout_arg.IsNull()) { - reply(WrapError("timeout_arg unexpectedly null.")); - return; - } - const int64_t timeout_arg = encodable_timeout_arg.LongValue(); - const auto& encodable_max_attempts_arg = args.at(2); - if (encodable_max_attempts_arg.IsNull()) { - reply(WrapError("max_attempts_arg unexpectedly null.")); - return; - } - const int64_t max_attempts_arg = encodable_max_attempts_arg.LongValue(); - api->TransactionCreate(app_arg, timeout_arg, max_attempts_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_timeout_arg = args.at(1); + if (encodable_timeout_arg.IsNull()) { + reply(WrapError("timeout_arg unexpectedly null.")); + return; + } + const int64_t timeout_arg = encodable_timeout_arg.LongValue(); + const auto& encodable_max_attempts_arg = args.at(2); + if (encodable_max_attempts_arg.IsNull()) { + reply(WrapError("max_attempts_arg unexpectedly null.")); + return; + } + const int64_t max_attempts_arg = + encodable_max_attempts_arg.LongValue(); + api->TransactionCreate( + app_arg, timeout_arg, max_attempts_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionStoreResult", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.transactionStoreResult", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_transaction_id_arg = args.at(0); - if (encodable_transaction_id_arg.IsNull()) { - reply(WrapError("transaction_id_arg unexpectedly null.")); - return; - } - const auto& transaction_id_arg = std::get(encodable_transaction_id_arg); - const auto& encodable_result_type_arg = args.at(1); - if (encodable_result_type_arg.IsNull()) { - reply(WrapError("result_type_arg unexpectedly null.")); - return; - } - const PigeonTransactionResult& result_type_arg = (PigeonTransactionResult)encodable_result_type_arg.LongValue(); - const auto& encodable_commands_arg = args.at(2); - const auto* commands_arg = std::get_if(&encodable_commands_arg); - api->TransactionStoreResult(transaction_id_arg, result_type_arg, commands_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_transaction_id_arg = args.at(0); + if (encodable_transaction_id_arg.IsNull()) { + reply(WrapError("transaction_id_arg unexpectedly null.")); + return; + } + const auto& transaction_id_arg = + std::get(encodable_transaction_id_arg); + const auto& encodable_result_type_arg = args.at(1); + if (encodable_result_type_arg.IsNull()) { + reply(WrapError("result_type_arg unexpectedly null.")); + return; + } + const PigeonTransactionResult& result_type_arg = + (PigeonTransactionResult) + encodable_result_type_arg.LongValue(); + const auto& encodable_commands_arg = args.at(2); + const auto* commands_arg = + std::get_if(&encodable_commands_arg); + api->TransactionStoreResult( + transaction_id_arg, result_type_arg, commands_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.transactionGet", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.transactionGet", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_transaction_id_arg = args.at(1); - if (encodable_transaction_id_arg.IsNull()) { - reply(WrapError("transaction_id_arg unexpectedly null.")); - return; - } - const auto& transaction_id_arg = std::get(encodable_transaction_id_arg); - const auto& encodable_path_arg = args.at(2); - if (encodable_path_arg.IsNull()) { - reply(WrapError("path_arg unexpectedly null.")); - return; - } - const auto& path_arg = std::get(encodable_path_arg); - api->TransactionGet(app_arg, transaction_id_arg, path_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_transaction_id_arg = args.at(1); + if (encodable_transaction_id_arg.IsNull()) { + reply(WrapError("transaction_id_arg unexpectedly null.")); + return; + } + const auto& transaction_id_arg = + std::get(encodable_transaction_id_arg); + const auto& encodable_path_arg = args.at(2); + if (encodable_path_arg.IsNull()) { + reply(WrapError("path_arg unexpectedly null.")); + return; + } + const auto& path_arg = std::get(encodable_path_arg); + api->TransactionGet( + app_arg, transaction_id_arg, path_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSet", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.documentReferenceSet", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DocumentReferenceSet(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DocumentReferenceSet( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceUpdate", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.documentReferenceUpdate", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DocumentReferenceUpdate(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DocumentReferenceUpdate( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceGet", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.documentReferenceGet", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DocumentReferenceGet(app_arg, request_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DocumentReferenceGet( + app_arg, request_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceDelete", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.documentReferenceDelete", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DocumentReferenceDelete(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DocumentReferenceDelete( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.queryGet", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.queryGet", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_path_arg = args.at(1); - if (encodable_path_arg.IsNull()) { - reply(WrapError("path_arg unexpectedly null.")); - return; - } - const auto& path_arg = std::get(encodable_path_arg); - const auto& encodable_is_collection_group_arg = args.at(2); - if (encodable_is_collection_group_arg.IsNull()) { - reply(WrapError("is_collection_group_arg unexpectedly null.")); - return; - } - const auto& is_collection_group_arg = std::get(encodable_is_collection_group_arg); - const auto& encodable_parameters_arg = args.at(3); - if (encodable_parameters_arg.IsNull()) { - reply(WrapError("parameters_arg unexpectedly null.")); - return; - } - const auto& parameters_arg = std::any_cast(std::get(encodable_parameters_arg)); - const auto& encodable_options_arg = args.at(4); - if (encodable_options_arg.IsNull()) { - reply(WrapError("options_arg unexpectedly null.")); - return; - } - const auto& options_arg = std::any_cast(std::get(encodable_options_arg)); - api->QueryGet(app_arg, path_arg, is_collection_group_arg, parameters_arg, options_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + if (encodable_path_arg.IsNull()) { + reply(WrapError("path_arg unexpectedly null.")); + return; + } + const auto& path_arg = std::get(encodable_path_arg); + const auto& encodable_is_collection_group_arg = args.at(2); + if (encodable_is_collection_group_arg.IsNull()) { + reply(WrapError("is_collection_group_arg unexpectedly null.")); + return; + } + const auto& is_collection_group_arg = + std::get(encodable_is_collection_group_arg); + const auto& encodable_parameters_arg = args.at(3); + if (encodable_parameters_arg.IsNull()) { + reply(WrapError("parameters_arg unexpectedly null.")); + return; + } + const auto& parameters_arg = + std::any_cast( + std::get(encodable_parameters_arg)); + const auto& encodable_options_arg = args.at(4); + if (encodable_options_arg.IsNull()) { + reply(WrapError("options_arg unexpectedly null.")); + return; + } + const auto& options_arg = std::any_cast( + std::get(encodable_options_arg)); + api->QueryGet( + app_arg, path_arg, is_collection_group_arg, parameters_arg, + options_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.aggregateQuery", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.aggregateQuery", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_path_arg = args.at(1); - if (encodable_path_arg.IsNull()) { - reply(WrapError("path_arg unexpectedly null.")); - return; - } - const auto& path_arg = std::get(encodable_path_arg); - const auto& encodable_parameters_arg = args.at(2); - if (encodable_parameters_arg.IsNull()) { - reply(WrapError("parameters_arg unexpectedly null.")); - return; - } - const auto& parameters_arg = std::any_cast(std::get(encodable_parameters_arg)); - const auto& encodable_source_arg = args.at(3); - if (encodable_source_arg.IsNull()) { - reply(WrapError("source_arg unexpectedly null.")); - return; - } - const AggregateSource& source_arg = (AggregateSource)encodable_source_arg.LongValue(); - const auto& encodable_queries_arg = args.at(4); - if (encodable_queries_arg.IsNull()) { - reply(WrapError("queries_arg unexpectedly null.")); - return; - } - const auto& queries_arg = std::get(encodable_queries_arg); - const auto& encodable_is_collection_group_arg = args.at(5); - if (encodable_is_collection_group_arg.IsNull()) { - reply(WrapError("is_collection_group_arg unexpectedly null.")); - return; - } - const auto& is_collection_group_arg = std::get(encodable_is_collection_group_arg); - api->AggregateQuery(app_arg, path_arg, parameters_arg, source_arg, queries_arg, is_collection_group_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + if (encodable_path_arg.IsNull()) { + reply(WrapError("path_arg unexpectedly null.")); + return; + } + const auto& path_arg = std::get(encodable_path_arg); + const auto& encodable_parameters_arg = args.at(2); + if (encodable_parameters_arg.IsNull()) { + reply(WrapError("parameters_arg unexpectedly null.")); + return; + } + const auto& parameters_arg = + std::any_cast( + std::get(encodable_parameters_arg)); + const auto& encodable_source_arg = args.at(3); + if (encodable_source_arg.IsNull()) { + reply(WrapError("source_arg unexpectedly null.")); + return; + } + const AggregateSource& source_arg = + (AggregateSource)encodable_source_arg.LongValue(); + const auto& encodable_queries_arg = args.at(4); + if (encodable_queries_arg.IsNull()) { + reply(WrapError("queries_arg unexpectedly null.")); + return; + } + const auto& queries_arg = + std::get(encodable_queries_arg); + const auto& encodable_is_collection_group_arg = args.at(5); + if (encodable_is_collection_group_arg.IsNull()) { + reply(WrapError("is_collection_group_arg unexpectedly null.")); + return; + } + const auto& is_collection_group_arg = + std::get(encodable_is_collection_group_arg); + api->AggregateQuery(app_arg, path_arg, parameters_arg, source_arg, + queries_arg, is_collection_group_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue( + std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.writeBatchCommit", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.writeBatchCommit", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_writes_arg = args.at(1); - if (encodable_writes_arg.IsNull()) { - reply(WrapError("writes_arg unexpectedly null.")); - return; - } - const auto& writes_arg = std::get(encodable_writes_arg); - api->WriteBatchCommit(app_arg, writes_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_writes_arg = args.at(1); + if (encodable_writes_arg.IsNull()) { + reply(WrapError("writes_arg unexpectedly null.")); + return; + } + const auto& writes_arg = + std::get(encodable_writes_arg); + api->WriteBatchCommit( + app_arg, writes_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.querySnapshot", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.querySnapshot", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_path_arg = args.at(1); - if (encodable_path_arg.IsNull()) { - reply(WrapError("path_arg unexpectedly null.")); - return; - } - const auto& path_arg = std::get(encodable_path_arg); - const auto& encodable_is_collection_group_arg = args.at(2); - if (encodable_is_collection_group_arg.IsNull()) { - reply(WrapError("is_collection_group_arg unexpectedly null.")); - return; - } - const auto& is_collection_group_arg = std::get(encodable_is_collection_group_arg); - const auto& encodable_parameters_arg = args.at(3); - if (encodable_parameters_arg.IsNull()) { - reply(WrapError("parameters_arg unexpectedly null.")); - return; - } - const auto& parameters_arg = std::any_cast(std::get(encodable_parameters_arg)); - const auto& encodable_options_arg = args.at(4); - if (encodable_options_arg.IsNull()) { - reply(WrapError("options_arg unexpectedly null.")); - return; - } - const auto& options_arg = std::any_cast(std::get(encodable_options_arg)); - const auto& encodable_include_metadata_changes_arg = args.at(5); - if (encodable_include_metadata_changes_arg.IsNull()) { - reply(WrapError("include_metadata_changes_arg unexpectedly null.")); - return; - } - const auto& include_metadata_changes_arg = std::get(encodable_include_metadata_changes_arg); - api->QuerySnapshot(app_arg, path_arg, is_collection_group_arg, parameters_arg, options_arg, include_metadata_changes_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + if (encodable_path_arg.IsNull()) { + reply(WrapError("path_arg unexpectedly null.")); + return; + } + const auto& path_arg = std::get(encodable_path_arg); + const auto& encodable_is_collection_group_arg = args.at(2); + if (encodable_is_collection_group_arg.IsNull()) { + reply(WrapError("is_collection_group_arg unexpectedly null.")); + return; + } + const auto& is_collection_group_arg = + std::get(encodable_is_collection_group_arg); + const auto& encodable_parameters_arg = args.at(3); + if (encodable_parameters_arg.IsNull()) { + reply(WrapError("parameters_arg unexpectedly null.")); + return; + } + const auto& parameters_arg = + std::any_cast( + std::get(encodable_parameters_arg)); + const auto& encodable_options_arg = args.at(4); + if (encodable_options_arg.IsNull()) { + reply(WrapError("options_arg unexpectedly null.")); + return; + } + const auto& options_arg = std::any_cast( + std::get(encodable_options_arg)); + const auto& encodable_include_metadata_changes_arg = args.at(5); + if (encodable_include_metadata_changes_arg.IsNull()) { + reply(WrapError( + "include_metadata_changes_arg unexpectedly null.")); + return; + } + const auto& include_metadata_changes_arg = + std::get(encodable_include_metadata_changes_arg); + api->QuerySnapshot( + app_arg, path_arg, is_collection_group_arg, parameters_arg, + options_arg, include_metadata_changes_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } { - auto channel = std::make_unique>(binary_messenger, "dev.flutter.pigeon.cloud_firestore_platform_interface.FirebaseFirestoreHostApi.documentReferenceSnapshot", &GetCodec()); + auto channel = std::make_unique>( + binary_messenger, + "dev.flutter.pigeon.cloud_firestore_platform_interface." + "FirebaseFirestoreHostApi.documentReferenceSnapshot", + &GetCodec()); if (api != nullptr) { - channel->SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_parameters_arg = args.at(1); - if (encodable_parameters_arg.IsNull()) { - reply(WrapError("parameters_arg unexpectedly null.")); - return; - } - const auto& parameters_arg = std::any_cast(std::get(encodable_parameters_arg)); - const auto& encodable_include_metadata_changes_arg = args.at(2); - if (encodable_include_metadata_changes_arg.IsNull()) { - reply(WrapError("include_metadata_changes_arg unexpectedly null.")); - return; - } - const auto& include_metadata_changes_arg = std::get(encodable_include_metadata_changes_arg); - api->DocumentReferenceSnapshot(app_arg, parameters_arg, include_metadata_changes_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel->SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_parameters_arg = args.at(1); + if (encodable_parameters_arg.IsNull()) { + reply(WrapError("parameters_arg unexpectedly null.")); + return; + } + const auto& parameters_arg = + std::any_cast( + std::get(encodable_parameters_arg)); + const auto& encodable_include_metadata_changes_arg = args.at(2); + if (encodable_include_metadata_changes_arg.IsNull()) { + reply(WrapError( + "include_metadata_changes_arg unexpectedly null.")); + return; + } + const auto& include_metadata_changes_arg = + std::get(encodable_include_metadata_changes_arg); + api->DocumentReferenceSnapshot( + app_arg, parameters_arg, include_metadata_changes_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel->SetMessageHandler(nullptr); } } } -EncodableValue FirebaseFirestoreHostApi::WrapError(std::string_view error_message) { - return EncodableValue(EncodableList{ - EncodableValue(std::string(error_message)), - EncodableValue("Error"), - EncodableValue() - }); +EncodableValue FirebaseFirestoreHostApi::WrapError( + std::string_view error_message) { + return EncodableValue( + EncodableList{EncodableValue(std::string(error_message)), + EncodableValue("Error"), EncodableValue()}); } EncodableValue FirebaseFirestoreHostApi::WrapError(const FlutterError& error) { - return EncodableValue(EncodableList{ - EncodableValue(error.code()), - EncodableValue(error.message()), - error.details() - }); + return EncodableValue(EncodableList{EncodableValue(error.code()), + EncodableValue(error.message()), + error.details()}); } } // namespace cloud_firestore_windows diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h index d340e31ad56a..d9354a7ccbc0 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h @@ -14,21 +14,21 @@ #include #include #include + #include "firestore_codec.h" namespace cloud_firestore_windows { - // Generated class from Pigeon. class FlutterError { public: - explicit FlutterError(const std::string& code) - : code_(code) {} + explicit FlutterError(const std::string& code) : code_(code) {} explicit FlutterError(const std::string& code, const std::string& message) - : code_(code), message_(message) {} - explicit FlutterError(const std::string& code, const std::string& message, const flutter::EncodableValue& details) - : code_(code), message_(message), details_(details) {} + : code_(code), message_(message) {} + explicit FlutterError(const std::string& code, const std::string& message, + const flutter::EncodableValue& details) + : code_(code), message_(message), details_(details) {} const std::string& code() const { return code_; } const std::string& message() const { return message_; } @@ -40,7 +40,8 @@ class FlutterError { flutter::EncodableValue details_; }; -template class ErrorOr { +template +class ErrorOr { public: ErrorOr(const T& rhs) : v_(rhs) {} ErrorOr(const T&& rhs) : v_(std::move(rhs)) {} @@ -59,7 +60,6 @@ template class ErrorOr { std::variant v_; }; - // An enumeration of document change types. enum class DocumentChangeType { // Indicates a new document was added to the set of documents matching the @@ -74,16 +74,22 @@ enum class DocumentChangeType { // An enumeration of firestore source types. enum class Source { - // Causes Firestore to try to retrieve an up-to-date (server-retrieved) snapshot, but fall back to + // Causes Firestore to try to retrieve an up-to-date (server-retrieved) + // snapshot, but fall back to // returning cached data if the server can't be reached. serverAndCache = 0, - // Causes Firestore to avoid the cache, generating an error if the server cannot be reached. Note - // that the cache will still be updated if the server request succeeds. Also note that - // latency-compensation still takes effect, so any pending write operations will be visible in the + // Causes Firestore to avoid the cache, generating an error if the server + // cannot be reached. Note + // that the cache will still be updated if the server request succeeds. Also + // note that + // latency-compensation still takes effect, so any pending write operations + // will be visible in the // returned data (merged into the server-provided data). server = 1, - // Causes Firestore to immediately return a value from the cache, ignoring the server completely - // (implying that the returned value may be stale with respect to the value on the server). If + // Causes Firestore to immediately return a value from the cache, ignoring the + // server completely + // (implying that the returned value may be stale with respect to the value on + // the server). If // there is no data in the cache to satisfy the `get` call, // [DocumentReference.get] will throw a [FirebaseException] and // [Query.get] will return an empty [QuerySnapshotPlatform] with no documents. @@ -93,9 +99,11 @@ enum class Source { enum class ServerTimestampBehavior { // Return null for [FieldValue.serverTimestamp()] values that have not yet none = 0, - // Return local estimates for [FieldValue.serverTimestamp()] values that have not yet been set to their final value. + // Return local estimates for [FieldValue.serverTimestamp()] values that have + // not yet been set to their final value. estimate = 1, - // Return the previous value for [FieldValue.serverTimestamp()] values that have not yet been set to their final value. + // Return the previous value for [FieldValue.serverTimestamp()] values that + // have not yet been set to their final value. previous = 2 }; @@ -105,10 +113,7 @@ enum class AggregateSource { server = 0 }; -enum class PigeonTransactionResult { - success = 0, - failure = 1 -}; +enum class PigeonTransactionResult { success = 0, failure = 1 }; enum class PigeonTransactionType { get = 0, @@ -117,11 +122,7 @@ enum class PigeonTransactionType { deleteType = 3 }; -enum class AggregateType { - count = 0, - sum = 1, - average = 2 -}; +enum class AggregateType { count = 0, sum = 1, average = 2 }; // Generated class from Pigeon that represents data sent in messages. class PigeonFirebaseSettings { @@ -130,12 +131,11 @@ class PigeonFirebaseSettings { explicit PigeonFirebaseSettings(bool ignore_undefined_properties); // Constructs an object setting all fields. - explicit PigeonFirebaseSettings( - const bool* persistence_enabled, - const std::string* host, - const bool* ssl_enabled, - const int64_t* cache_size_bytes, - bool ignore_undefined_properties); + explicit PigeonFirebaseSettings(const bool* persistence_enabled, + const std::string* host, + const bool* ssl_enabled, + const int64_t* cache_size_bytes, + bool ignore_undefined_properties); const bool* persistence_enabled() const; void set_persistence_enabled(const bool* value_arg); @@ -156,9 +156,9 @@ class PigeonFirebaseSettings { bool ignore_undefined_properties() const; void set_ignore_undefined_properties(bool value_arg); - private: - static PigeonFirebaseSettings FromEncodableList(const flutter::EncodableList& list); + static PigeonFirebaseSettings FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirestorePigeonFirebaseApp; friend class FirebaseFirestoreHostApi; @@ -168,18 +168,15 @@ class PigeonFirebaseSettings { std::optional ssl_enabled_; std::optional cache_size_bytes_; bool ignore_undefined_properties_; - }; - // Generated class from Pigeon that represents data sent in messages. class FirestorePigeonFirebaseApp { public: // Constructs an object setting all fields. - explicit FirestorePigeonFirebaseApp( - const std::string& app_name, - const PigeonFirebaseSettings& settings, - const std::string& database_u_r_l); + explicit FirestorePigeonFirebaseApp(const std::string& app_name, + const PigeonFirebaseSettings& settings, + const std::string& database_u_r_l); const std::string& app_name() const; void set_app_name(std::string_view value_arg); @@ -190,26 +187,22 @@ class FirestorePigeonFirebaseApp { const std::string& database_u_r_l() const; void set_database_u_r_l(std::string_view value_arg); - private: - static FirestorePigeonFirebaseApp FromEncodableList(const flutter::EncodableList& list); + static FirestorePigeonFirebaseApp FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; std::string app_name_; PigeonFirebaseSettings settings_; std::string database_u_r_l_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonSnapshotMetadata { public: // Constructs an object setting all fields. - explicit PigeonSnapshotMetadata( - bool has_pending_writes, - bool is_from_cache); + explicit PigeonSnapshotMetadata(bool has_pending_writes, bool is_from_cache); bool has_pending_writes() const; void set_has_pending_writes(bool value_arg); @@ -217,9 +210,9 @@ class PigeonSnapshotMetadata { bool is_from_cache() const; void set_is_from_cache(bool value_arg); - private: - static PigeonSnapshotMetadata FromEncodableList(const flutter::EncodableList& list); + static PigeonSnapshotMetadata FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class PigeonDocumentSnapshot; friend class PigeonQuerySnapshot; @@ -227,23 +220,19 @@ class PigeonSnapshotMetadata { friend class FirebaseFirestoreHostApiCodecSerializer; bool has_pending_writes_; bool is_from_cache_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonDocumentSnapshot { public: // Constructs an object setting all non-nullable fields. - explicit PigeonDocumentSnapshot( - const std::string& path, - const PigeonSnapshotMetadata& metadata); + explicit PigeonDocumentSnapshot(const std::string& path, + const PigeonSnapshotMetadata& metadata); // Constructs an object setting all fields. - explicit PigeonDocumentSnapshot( - const std::string& path, - const flutter::EncodableMap* data, - const PigeonSnapshotMetadata& metadata); + explicit PigeonDocumentSnapshot(const std::string& path, + const flutter::EncodableMap* data, + const PigeonSnapshotMetadata& metadata); const std::string& path() const; void set_path(std::string_view value_arg); @@ -255,9 +244,9 @@ class PigeonDocumentSnapshot { const PigeonSnapshotMetadata& metadata() const; void set_metadata(const PigeonSnapshotMetadata& value_arg); - private: - static PigeonDocumentSnapshot FromEncodableList(const flutter::EncodableList& list); + static PigeonDocumentSnapshot FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class PigeonDocumentChange; friend class FirebaseFirestoreHostApi; @@ -265,19 +254,15 @@ class PigeonDocumentSnapshot { std::string path_; std::optional data_; PigeonSnapshotMetadata metadata_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonDocumentChange { public: // Constructs an object setting all fields. - explicit PigeonDocumentChange( - const DocumentChangeType& type, - const PigeonDocumentSnapshot& document, - int64_t old_index, - int64_t new_index); + explicit PigeonDocumentChange(const DocumentChangeType& type, + const PigeonDocumentSnapshot& document, + int64_t old_index, int64_t new_index); const DocumentChangeType& type() const; void set_type(const DocumentChangeType& value_arg); @@ -291,9 +276,9 @@ class PigeonDocumentChange { int64_t new_index() const; void set_new_index(int64_t value_arg); - private: - static PigeonDocumentChange FromEncodableList(const flutter::EncodableList& list); + static PigeonDocumentChange FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -301,18 +286,15 @@ class PigeonDocumentChange { PigeonDocumentSnapshot document_; int64_t old_index_; int64_t new_index_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonQuerySnapshot { public: // Constructs an object setting all fields. - explicit PigeonQuerySnapshot( - const flutter::EncodableList& documents, - const flutter::EncodableList& document_changes, - const PigeonSnapshotMetadata& metadata); + explicit PigeonQuerySnapshot(const flutter::EncodableList& documents, + const flutter::EncodableList& document_changes, + const PigeonSnapshotMetadata& metadata); const flutter::EncodableList& documents() const; void set_documents(const flutter::EncodableList& value_arg); @@ -323,26 +305,24 @@ class PigeonQuerySnapshot { const PigeonSnapshotMetadata& metadata() const; void set_metadata(const PigeonSnapshotMetadata& value_arg); - private: - static PigeonQuerySnapshot FromEncodableList(const flutter::EncodableList& list); + static PigeonQuerySnapshot FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; flutter::EncodableList documents_; flutter::EncodableList document_changes_; PigeonSnapshotMetadata metadata_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonGetOptions { public: // Constructs an object setting all fields. explicit PigeonGetOptions( - const Source& source, - const ServerTimestampBehavior& server_timestamp_behavior); + const Source& source, + const ServerTimestampBehavior& server_timestamp_behavior); const Source& source() const; void set_source(const Source& value_arg); @@ -350,7 +330,6 @@ class PigeonGetOptions { const ServerTimestampBehavior& server_timestamp_behavior() const; void set_server_timestamp_behavior(const ServerTimestampBehavior& value_arg); - private: static PigeonGetOptions FromEncodableList(const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; @@ -358,10 +337,8 @@ class PigeonGetOptions { friend class FirebaseFirestoreHostApiCodecSerializer; Source source_; ServerTimestampBehavior server_timestamp_behavior_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonDocumentOption { public: @@ -369,9 +346,8 @@ class PigeonDocumentOption { PigeonDocumentOption(); // Constructs an object setting all fields. - explicit PigeonDocumentOption( - const bool* merge, - const flutter::EncodableList* merge_fields); + explicit PigeonDocumentOption(const bool* merge, + const flutter::EncodableList* merge_fields); const bool* merge() const; void set_merge(const bool* value_arg); @@ -381,9 +357,9 @@ class PigeonDocumentOption { void set_merge_fields(const flutter::EncodableList* value_arg); void set_merge_fields(const flutter::EncodableList& value_arg); - private: - static PigeonDocumentOption FromEncodableList(const flutter::EncodableList& list); + static PigeonDocumentOption FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class PigeonTransactionCommand; friend class DocumentReferenceRequest; @@ -391,24 +367,20 @@ class PigeonDocumentOption { friend class FirebaseFirestoreHostApiCodecSerializer; std::optional merge_; std::optional merge_fields_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonTransactionCommand { public: // Constructs an object setting all non-nullable fields. - explicit PigeonTransactionCommand( - const PigeonTransactionType& type, - const std::string& path); + explicit PigeonTransactionCommand(const PigeonTransactionType& type, + const std::string& path); // Constructs an object setting all fields. - explicit PigeonTransactionCommand( - const PigeonTransactionType& type, - const std::string& path, - const flutter::EncodableMap* data, - const PigeonDocumentOption* option); + explicit PigeonTransactionCommand(const PigeonTransactionType& type, + const std::string& path, + const flutter::EncodableMap* data, + const PigeonDocumentOption* option); const PigeonTransactionType& type() const; void set_type(const PigeonTransactionType& value_arg); @@ -424,9 +396,9 @@ class PigeonTransactionCommand { void set_option(const PigeonDocumentOption* value_arg); void set_option(const PigeonDocumentOption& value_arg); - private: - static PigeonTransactionCommand FromEncodableList(const flutter::EncodableList& list); + static PigeonTransactionCommand FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -434,10 +406,8 @@ class PigeonTransactionCommand { std::string path_; std::optional data_; std::optional option_; - }; - // Generated class from Pigeon that represents data sent in messages. class DocumentReferenceRequest { public: @@ -446,11 +416,9 @@ class DocumentReferenceRequest { // Constructs an object setting all fields. explicit DocumentReferenceRequest( - const std::string& path, - const flutter::EncodableMap* data, - const PigeonDocumentOption* option, - const Source* source, - const ServerTimestampBehavior* server_timestamp_behavior); + const std::string& path, const flutter::EncodableMap* data, + const PigeonDocumentOption* option, const Source* source, + const ServerTimestampBehavior* server_timestamp_behavior); const std::string& path() const; void set_path(std::string_view value_arg); @@ -471,9 +439,9 @@ class DocumentReferenceRequest { void set_server_timestamp_behavior(const ServerTimestampBehavior* value_arg); void set_server_timestamp_behavior(const ServerTimestampBehavior& value_arg); - private: - static DocumentReferenceRequest FromEncodableList(const flutter::EncodableList& list); + static DocumentReferenceRequest FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -482,10 +450,8 @@ class DocumentReferenceRequest { std::optional option_; std::optional source_; std::optional server_timestamp_behavior_; - }; - // Generated class from Pigeon that represents data sent in messages. class PigeonQueryParameters { public: @@ -493,16 +459,15 @@ class PigeonQueryParameters { PigeonQueryParameters(); // Constructs an object setting all fields. - explicit PigeonQueryParameters( - const flutter::EncodableList* where, - const flutter::EncodableList* order_by, - const int64_t* limit, - const int64_t* limit_to_last, - const flutter::EncodableList* start_at, - const flutter::EncodableList* start_after, - const flutter::EncodableList* end_at, - const flutter::EncodableList* end_before, - const flutter::EncodableMap* filters); + explicit PigeonQueryParameters(const flutter::EncodableList* where, + const flutter::EncodableList* order_by, + const int64_t* limit, + const int64_t* limit_to_last, + const flutter::EncodableList* start_at, + const flutter::EncodableList* start_after, + const flutter::EncodableList* end_at, + const flutter::EncodableList* end_before, + const flutter::EncodableMap* filters); const flutter::EncodableList* where() const; void set_where(const flutter::EncodableList* value_arg); @@ -540,9 +505,9 @@ class PigeonQueryParameters { void set_filters(const flutter::EncodableMap* value_arg); void set_filters(const flutter::EncodableMap& value_arg); - private: - static PigeonQueryParameters FromEncodableList(const flutter::EncodableList& list); + static PigeonQueryParameters FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -555,10 +520,8 @@ class PigeonQueryParameters { std::optional end_at_; std::optional end_before_; std::optional filters_; - }; - // Generated class from Pigeon that represents data sent in messages. class AggregateQuery { public: @@ -566,9 +529,7 @@ class AggregateQuery { explicit AggregateQuery(const AggregateType& type); // Constructs an object setting all fields. - explicit AggregateQuery( - const AggregateType& type, - const std::string* field); + explicit AggregateQuery(const AggregateType& type, const std::string* field); const AggregateType& type() const; void set_type(const AggregateType& value_arg); @@ -577,7 +538,6 @@ class AggregateQuery { void set_field(const std::string_view* value_arg); void set_field(std::string_view value_arg); - private: static AggregateQuery FromEncodableList(const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; @@ -585,23 +545,17 @@ class AggregateQuery { friend class FirebaseFirestoreHostApiCodecSerializer; AggregateType type_; std::optional field_; - }; - // Generated class from Pigeon that represents data sent in messages. class AggregateQueryResponse { public: // Constructs an object setting all non-nullable fields. - explicit AggregateQueryResponse( - const AggregateType& type, - double value); + explicit AggregateQueryResponse(const AggregateType& type, double value); // Constructs an object setting all fields. - explicit AggregateQueryResponse( - const AggregateType& type, - const std::string* field, - double value); + explicit AggregateQueryResponse(const AggregateType& type, + const std::string* field, double value); const AggregateType& type() const; void set_type(const AggregateType& value_arg); @@ -613,19 +567,19 @@ class AggregateQueryResponse { double value() const; void set_value(double value_arg); - private: - static AggregateQueryResponse FromEncodableList(const flutter::EncodableList& list); + static AggregateQueryResponse FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; AggregateType type_; std::optional field_; double value_; - }; -class FirebaseFirestoreHostApiCodecSerializer : public cloud_firestore_windows::FirestoreCodec { +class FirebaseFirestoreHostApiCodecSerializer + : public cloud_firestore_windows::FirestoreCodec { public: FirebaseFirestoreHostApiCodecSerializer(); inline static FirebaseFirestoreHostApiCodecSerializer& GetInstance() { @@ -633,133 +587,117 @@ class FirebaseFirestoreHostApiCodecSerializer : public cloud_firestore_windows:: return sInstance; } - void WriteValue( - const flutter::EncodableValue& value, - flutter::ByteStreamWriter* stream) const override; + void WriteValue(const flutter::EncodableValue& value, + flutter::ByteStreamWriter* stream) const override; protected: flutter::EncodableValue ReadValueOfType( - uint8_t type, - flutter::ByteStreamReader* stream) const override; - + uint8_t type, flutter::ByteStreamReader* stream) const override; }; -// Generated interface from Pigeon that represents a handler of messages from Flutter. +// Generated interface from Pigeon that represents a handler of messages from +// Flutter. class FirebaseFirestoreHostApi { public: FirebaseFirestoreHostApi(const FirebaseFirestoreHostApi&) = delete; FirebaseFirestoreHostApi& operator=(const FirebaseFirestoreHostApi&) = delete; virtual ~FirebaseFirestoreHostApi() {} virtual void LoadBundle( - const FirestorePigeonFirebaseApp& app, - const std::vector& bundle, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, const std::vector& bundle, + std::function reply)> result) = 0; virtual void NamedQueryGet( - const FirestorePigeonFirebaseApp& app, - const std::string& name, - const PigeonGetOptions& options, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, const std::string& name, + const PigeonGetOptions& options, + std::function reply)> result) = 0; virtual void ClearPersistence( - const FirestorePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void DisableNetwork( - const FirestorePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void EnableNetwork( - const FirestorePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void Terminate( - const FirestorePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void WaitForPendingWrites( - const FirestorePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void SetIndexConfiguration( - const FirestorePigeonFirebaseApp& app, - const std::string& index_configuration, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const std::string& index_configuration, + std::function reply)> result) = 0; virtual void SetLoggingEnabled( - bool logging_enabled, - std::function reply)> result) = 0; + bool logging_enabled, + std::function reply)> result) = 0; virtual void SnapshotsInSyncSetup( - const FirestorePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void TransactionCreate( - const FirestorePigeonFirebaseApp& app, - int64_t timeout, - int64_t max_attempts, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, int64_t timeout, + int64_t max_attempts, + std::function reply)> result) = 0; virtual void TransactionStoreResult( - const std::string& transaction_id, - const PigeonTransactionResult& result_type, - const flutter::EncodableList* commands, - std::function reply)> result) = 0; + const std::string& transaction_id, + const PigeonTransactionResult& result_type, + const flutter::EncodableList* commands, + std::function reply)> result) = 0; virtual void TransactionGet( - const FirestorePigeonFirebaseApp& app, - const std::string& transaction_id, - const std::string& path, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, const std::string& transaction_id, + const std::string& path, + std::function reply)> result) = 0; virtual void DocumentReferenceSet( - const FirestorePigeonFirebaseApp& app, - const DocumentReferenceRequest& request, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const DocumentReferenceRequest& request, + std::function reply)> result) = 0; virtual void DocumentReferenceUpdate( - const FirestorePigeonFirebaseApp& app, - const DocumentReferenceRequest& request, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const DocumentReferenceRequest& request, + std::function reply)> result) = 0; virtual void DocumentReferenceGet( - const FirestorePigeonFirebaseApp& app, - const DocumentReferenceRequest& request, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const DocumentReferenceRequest& request, + std::function reply)> result) = 0; virtual void DocumentReferenceDelete( - const FirestorePigeonFirebaseApp& app, - const DocumentReferenceRequest& request, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const DocumentReferenceRequest& request, + std::function reply)> result) = 0; virtual void QueryGet( - const FirestorePigeonFirebaseApp& app, - const std::string& path, - bool is_collection_group, - const PigeonQueryParameters& parameters, - const PigeonGetOptions& options, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, const std::string& path, + bool is_collection_group, const PigeonQueryParameters& parameters, + const PigeonGetOptions& options, + std::function reply)> result) = 0; virtual void AggregateQuery( - const FirestorePigeonFirebaseApp& app, - const std::string& path, - const PigeonQueryParameters& parameters, - const AggregateSource& source, - const flutter::EncodableList& queries, - bool is_collection_group, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, const std::string& path, + const PigeonQueryParameters& parameters, const AggregateSource& source, + const flutter::EncodableList& queries, bool is_collection_group, + std::function reply)> result) = 0; virtual void WriteBatchCommit( - const FirestorePigeonFirebaseApp& app, - const flutter::EncodableList& writes, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const flutter::EncodableList& writes, + std::function reply)> result) = 0; virtual void QuerySnapshot( - const FirestorePigeonFirebaseApp& app, - const std::string& path, - bool is_collection_group, - const PigeonQueryParameters& parameters, - const PigeonGetOptions& options, - bool include_metadata_changes, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, const std::string& path, + bool is_collection_group, const PigeonQueryParameters& parameters, + const PigeonGetOptions& options, bool include_metadata_changes, + std::function reply)> result) = 0; virtual void DocumentReferenceSnapshot( - const FirestorePigeonFirebaseApp& app, - const DocumentReferenceRequest& parameters, - bool include_metadata_changes, - std::function reply)> result) = 0; + const FirestorePigeonFirebaseApp& app, + const DocumentReferenceRequest& parameters, bool include_metadata_changes, + std::function reply)> result) = 0; // The codec used by FirebaseFirestoreHostApi. static const flutter::StandardMessageCodec& GetCodec(); - // Sets up an instance of `FirebaseFirestoreHostApi` to handle messages through the `binary_messenger`. - static void SetUp( - flutter::BinaryMessenger* binary_messenger, - FirebaseFirestoreHostApi* api); + // Sets up an instance of `FirebaseFirestoreHostApi` to handle messages + // through the `binary_messenger`. + static void SetUp(flutter::BinaryMessenger* binary_messenger, + FirebaseFirestoreHostApi* api); static flutter::EncodableValue WrapError(std::string_view error_message); static flutter::EncodableValue WrapError(const FlutterError& error); protected: FirebaseFirestoreHostApi() = default; - }; } // namespace cloud_firestore_windows #endif // PIGEON_MESSAGES_G_H_ From 7d2723d4983f02d74a4da8790628d08ff16ebbf9 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 11 Dec 2023 09:44:39 +0100 Subject: [PATCH 19/25] fix ios --- .../ios/Classes/Public/FirestoreMessages.g.h | 2 +- .../cloud_firestore/cloud_firestore/windows/messages.g.h | 9 ++++++--- .../test/pigeon/test_api.dart | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h index c85ce318f493..0814b8f0f546 100644 --- a/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h +++ b/packages/cloud_firestore/cloud_firestore/ios/Classes/Public/FirestoreMessages.g.h @@ -192,7 +192,7 @@ typedef NS_ENUM(NSUInteger, AggregateType) { @property(nonatomic, assign) DocumentChangeType type; @property(nonatomic, strong) PigeonDocumentSnapshot *document; @property(nonatomic, strong) NSNumber *oldIndex; -@property(nonatomic, strong) NSNumber *newIndex; +@property(nonatomic, strong) NSNumber *index; @end @interface PigeonQuerySnapshot : NSObject diff --git a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h index d9354a7ccbc0..79b3618b614f 100644 --- a/packages/cloud_firestore/cloud_firestore/windows/messages.g.h +++ b/packages/cloud_firestore/cloud_firestore/windows/messages.g.h @@ -210,10 +210,11 @@ class PigeonSnapshotMetadata { bool is_from_cache() const; void set_is_from_cache(bool value_arg); - private: static PigeonSnapshotMetadata FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; + + private: friend class PigeonDocumentSnapshot; friend class PigeonQuerySnapshot; friend class FirebaseFirestoreHostApi; @@ -244,10 +245,11 @@ class PigeonDocumentSnapshot { const PigeonSnapshotMetadata& metadata() const; void set_metadata(const PigeonSnapshotMetadata& value_arg); - private: static PigeonDocumentSnapshot FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; + + private: friend class PigeonDocumentChange; friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; @@ -276,10 +278,11 @@ class PigeonDocumentChange { int64_t new_index() const; void set_new_index(int64_t value_arg); - private: static PigeonDocumentChange FromEncodableList( const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; + + private: friend class FirebaseFirestoreHostApi; friend class FirebaseFirestoreHostApiCodecSerializer; DocumentChangeType type_; diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart index 19292fcbbeb9..649a5ff1793d 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart @@ -7,12 +7,12 @@ // ignore_for_file: avoid_relative_lib_imports import 'dart:async'; import 'dart:typed_data' show Uint8List; - -import 'package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart'; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:cloud_firestore_platform_interface/src/pigeon/messages.pigeon.dart'; + class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec { const _TestFirebaseFirestoreHostApiCodec(); @override From 15a17920013847ac1aa923c35ec8ff274445601d Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 2 Jan 2024 09:11:51 +0100 Subject: [PATCH 20/25] move to list API --- .../example/integration_test/query_e2e.dart | 15 ++++---- .../cloud_firestore/example/lib/main.dart | 14 +++---- .../cloud_firestore/lib/cloud_firestore.dart | 5 ++- .../lib/src/aggregate_query.dart | 14 ------- .../cloud_firestore/lib/src/query.dart | 36 ++++++------------ .../method_channel/method_channel_query.dart | 37 +++++++++++++++++++ .../platform_interface_query.dart | 33 +++++++++++++++++ .../lib/src/query_web.dart | 31 ++++++++++++++++ 8 files changed, 129 insertions(+), 56 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart index bec0f950c583..44af8be4b9a6 100644 --- a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart +++ b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart @@ -3831,7 +3831,7 @@ void runQueryTests() { collection.add({'foo': 2}), ]); - AggregateQuery query = collection.sum('foo'); + AggregateQuery query = collection.aggregate([sum('foo')]); AggregateQuerySnapshot snapshot = await query.get(); @@ -3853,7 +3853,7 @@ void runQueryTests() { ]); AggregateQuery query = - collection.where('foo', isEqualTo: 1).sum('foo'); + collection.where('foo', isEqualTo: 1).aggregate([sum('foo')]); AggregateQuerySnapshot snapshot = await query.get(); @@ -3874,7 +3874,7 @@ void runQueryTests() { collection.add({'foo': 2}), ]); - AggregateQuery query = collection.average('foo'); + AggregateQuery query = collection.aggregate([average('foo')]); AggregateQuerySnapshot snapshot = await query.get(); @@ -3896,7 +3896,7 @@ void runQueryTests() { ]); AggregateQuery query = - collection.where('foo', isEqualTo: 1).average('foo'); + collection.where('foo', isEqualTo: 1).aggregate([average('foo')]); AggregateQuerySnapshot snapshot = await query.get(); @@ -3917,7 +3917,8 @@ void runQueryTests() { collection.add({'foo': 2}), ]); - AggregateQuery query = collection.count().sum('foo').average('foo'); + AggregateQuery query = + collection.aggregate([count(), sum('fou'), average('foo')]); AggregateQuerySnapshot snapshot = await query.get(); expect( @@ -3947,9 +3948,7 @@ void runQueryTests() { AggregateQuery query = collection .where('foo', isEqualTo: 1) - .count() - .sum('foo') - .average('foo'); + .aggregate([count(), sum('fou'), average('foo')]); AggregateQuerySnapshot snapshot = await query.get(); diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index d8514c0a5237..f13a382a4c37 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -166,20 +166,18 @@ class _FilmListState extends State { print('Count: ${count.count}'); // Average the number of likes - final average = await FirebaseFirestore.instance + final _average = await FirebaseFirestore.instance .collection('firestore-example-app') - .average('likes') - .get(); + .aggregate([average('likes')]).get(); - print('Average: ${average.getAverage('likes')}'); + print('Average: ${_average.getAverage('likes')}'); // Sum the number of likes - final sum = await FirebaseFirestore.instance + final _sum = await FirebaseFirestore.instance .collection('firestore-example-app') - .sum('likes') - .get(); + .aggregate([sum('likes')]).get(); - print('Sum: ${sum.getSum('likes')}'); + print('Sum: ${_sum.getSum('likes')}'); return; default: return; diff --git a/packages/cloud_firestore/cloud_firestore/lib/cloud_firestore.dart b/packages/cloud_firestore/cloud_firestore/lib/cloud_firestore.dart index 8322d550cbfc..350dbb286d67 100755 --- a/packages/cloud_firestore/cloud_firestore/lib/cloud_firestore.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/cloud_firestore.dart @@ -38,7 +38,10 @@ export 'package:cloud_firestore_platform_interface/cloud_firestore_platform_inte Order, ArrayConfig, QueryScope, - LoadBundleTaskState; + LoadBundleTaskState, + average, + count, + sum; export 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart' show FirebaseException; diff --git a/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart b/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart index a4f9b7b6097a..97c385537b7d 100644 --- a/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart @@ -29,18 +29,4 @@ class AggregateQuery { AggregateQuery count() { return AggregateQuery._(_delegate.count(), query); } - - /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata - /// without retrieving the actual documents. - AggregateQuery sum( - String field, - ) { - return AggregateQuery._(_delegate.sum(field), query); - } - - /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata - /// without retrieving the actual documents. - AggregateQuery average(String field) { - return AggregateQuery._(_delegate.average(field), query); - } } diff --git a/packages/cloud_firestore/cloud_firestore/lib/src/query.dart b/packages/cloud_firestore/cloud_firestore/lib/src/query.dart index b54ae10fe450..4d71ae10f2ca 100644 --- a/packages/cloud_firestore/cloud_firestore/lib/src/query.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/src/query.dart @@ -193,9 +193,9 @@ abstract class Query { AggregateQuery count(); - AggregateQuery sum(String field); - - AggregateQuery average(String field); + /// Calculates the specified aggregations over the documents in the + /// result set of the given query, without actually downloading the documents. + AggregateQuery aggregate(List fields); } /// Represents a [Query] over the data at a particular location. @@ -857,18 +857,11 @@ class _JsonQuery implements Query> { return AggregateQuery._(_delegate.count(), this); } - /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata - /// without retrieving the actual documents. - @override - AggregateQuery sum(String field) { - return AggregateQuery._(_delegate.sum(field), this); - } - - /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata - /// without retrieving the actual documents. + /// Calculates the specified aggregations over the documents in the + /// result set of the given query, without actually downloading the documents. @override - AggregateQuery average(String field) { - return AggregateQuery._(_delegate.average(field), this); + AggregateQuery aggregate(List fields) { + return AggregateQuery._(_delegate.aggregate(fields), this); } } @@ -1040,17 +1033,10 @@ class _WithConverterQuery implements Query { return _originalQuery.count(); } - /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata - /// without retrieving the actual documents. - @override - AggregateQuery sum(String field) { - return _originalQuery.sum(field); - } - - /// Represents an [AggregateQuery] over the data at a particular location for retrieving metadata - /// without retrieving the actual documents. + /// Calculates the specified aggregations over the documents in the + /// result set of the given query, without actually downloading the documents. @override - AggregateQuery average(String field) { - return _originalQuery.average(field); + AggregateQuery aggregate(List fields) { + return _originalQuery.aggregate(fields); } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart index 0bcee54be95a..fc6c409a16a3 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart @@ -8,6 +8,8 @@ import 'dart:async'; import 'package:_flutterfire_internals/_flutterfire_internals.dart'; import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart'; import 'package:cloud_firestore_platform_interface/src/internal/pointer.dart'; +import 'package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_query.dart' + as query; import 'package:collection/collection.dart'; import 'package:flutter/services.dart'; @@ -281,6 +283,40 @@ class MethodChannelQuery extends QueryPlatform { ); } + @override + AggregateQueryPlatform aggregate(List fields) { + return MethodChannelAggregateQuery( + this, + _pigeonParameters, + _pointer.path, + pigeonApp, + fields.map( + (e) { + if (e is query.count) { + return AggregateQuery( + type: AggregateType.count, + ); + } else if (e is query.sum) { + return AggregateQuery( + type: AggregateType.sum, + field: e.field, + ); + } else if (e is query.average) { + return AggregateQuery( + type: AggregateType.average, + field: e.field, + ); + } else { + throw ArgumentError( + 'Unsupported aggregate method ${e.runtimeType}'); + } + }, + ).toList(), + isCollectionGroupQuery, + ); + } + + // This method is not exposed in the public API, but can be used internally @override AggregateQueryPlatform sum(String field) { return MethodChannelAggregateQuery( @@ -298,6 +334,7 @@ class MethodChannelQuery extends QueryPlatform { ); } + // This method is not exposed in the public API, but can be used internally @override AggregateQueryPlatform average(String field) { return MethodChannelAggregateQuery( diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart index bd01b65aefd1..f4f2f69cda12 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart @@ -239,15 +239,48 @@ abstract class QueryPlatform extends PlatformInterface { throw UnimplementedError('count() is not implemented'); } + AggregateQueryPlatform aggregate(List fields) { + throw UnimplementedError('aggregate() is not implemented'); + } + /// Returns an [AggregateQueryPlatform] which uses the [QueryPlatform] to query for /// metadata + /// + /// This method is not exposed in the public API, but can be used internally AggregateQueryPlatform sum(String field) { throw UnimplementedError('sum() is not implemented'); } /// Returns an [AggregateQueryPlatform] which uses the [QueryPlatform] to query for /// metadata + /// + /// This method is not exposed in the public API, but can be used internally AggregateQueryPlatform average(String field) { throw UnimplementedError('average() is not implemented'); } } + +abstract class AggregateField {} + +/// Create a CountAggregateField object that can be used to compute +/// the count of documents in the result set of a query. +// ignore: camel_case_types +class count extends AggregateField {} + +/// Create an object that can be used to compute the sum of a specified field +/// over a range of documents in the result set of a query. +// ignore: camel_case_types +class sum extends AggregateField { + sum(this.field); + + final String field; +} + +/// Create an object that can be used to compute the average of a specified field +/// over a range of documents in the result set of a query. +// ignore: camel_case_types +class average extends AggregateField { + average(this.field); + + final String field; +} diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart index 1f66ec7cc758..241b0f800787 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart @@ -4,6 +4,8 @@ // BSD-style license that can be found in the LICENSE file. import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart'; +import 'package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_query.dart' + as query; import 'package:cloud_firestore_web/src/utils/encode_utility.dart'; import 'package:collection/collection.dart'; @@ -266,6 +268,35 @@ class QueryWeb extends QueryPlatform { ); } + @override + AggregateQueryPlatform aggregate(List fields) { + return AggregateQueryWeb( + this, + _buildWebQueryWithParameters(), + fields.map((e) { + if (e is query.count) { + return AggregateQuery( + type: AggregateType.count, + ); + } else if (e is query.sum) { + return AggregateQuery( + type: AggregateType.sum, + field: e.field, + ); + } else if (e is query.average) { + return AggregateQuery( + type: AggregateType.average, + field: e.field, + ); + } else { + throw UnsupportedError( + 'Unsupported aggregate field type ${e.runtimeType}', + ); + } + }).toList(), + ); + } + @override AggregateQueryPlatform sum(String field) { return AggregateQueryWeb( From d3016e3d9e03a9c7bd85f7265de49f6efc4bf6aa Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 2 Jan 2024 09:21:26 +0100 Subject: [PATCH 21/25] fix import --- .../cloud_firestore_web/lib/src/query_web.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart index 241b0f800787..d5d4632b5ade 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart @@ -3,9 +3,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart' + as platform_interface; import 'package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart'; -import 'package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_query.dart' - as query; import 'package:cloud_firestore_web/src/utils/encode_utility.dart'; import 'package:collection/collection.dart'; @@ -274,16 +274,16 @@ class QueryWeb extends QueryPlatform { this, _buildWebQueryWithParameters(), fields.map((e) { - if (e is query.count) { + if (e is platform_interface.count) { return AggregateQuery( type: AggregateType.count, ); - } else if (e is query.sum) { + } else if (e is platform_interface.sum) { return AggregateQuery( type: AggregateType.sum, field: e.field, ); - } else if (e is query.average) { + } else if (e is platform_interface.average) { return AggregateQuery( type: AggregateType.average, field: e.field, From 926c1247f8bdcc19da0b94660d89c9a1116634cf Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 2 Jan 2024 09:25:44 +0100 Subject: [PATCH 22/25] add test --- .../cloud_firestore/example/lib/main.dart | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index f13a382a4c37..07cd55e1d23c 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -158,12 +158,12 @@ class _FilmListState extends State { return _resetLikes(); case 'aggregate': // Count the number of movies - final count = await FirebaseFirestore.instance + final _count = await FirebaseFirestore.instance .collection('firestore-example-app') .count() .get(); - print('Count: ${count.count}'); + print('Count: ${_count.count}'); // Average the number of likes final _average = await FirebaseFirestore.instance @@ -178,6 +178,17 @@ class _FilmListState extends State { .aggregate([sum('likes')]).get(); print('Sum: ${_sum.getSum('likes')}'); + + // In one query + final _all = await FirebaseFirestore.instance + .collection('firestore-example-app') + .aggregate( + [average('likes'), sum('likes'), count()]).get(); + + print('Average: ${_all.getAverage('likes')} ' + 'Sum: ${_all.getSum('likes')} ' + 'Count: ${_all.count}'); + return; default: return; From 9ebec4e3fab498dead5ca41309c82789bf021a9d Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 2 Jan 2024 09:42:41 +0100 Subject: [PATCH 23/25] analyze --- packages/cloud_firestore/cloud_firestore/example/lib/main.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index 07cd55e1d23c..fa0ece32c09d 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -183,7 +183,8 @@ class _FilmListState extends State { final _all = await FirebaseFirestore.instance .collection('firestore-example-app') .aggregate( - [average('likes'), sum('likes'), count()]).get(); + [average('likes'), sum('likes'), count()], + ).get(); print('Average: ${_all.getAverage('likes')} ' 'Sum: ${_all.getSum('likes')} ' From 3c1f4e50fc443077f7e5e12dae244d04d9fb0dc2 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 2 Jan 2024 11:44:11 +0100 Subject: [PATCH 24/25] fix tests --- .../cloud_firestore/example/integration_test/query_e2e.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart index 44af8be4b9a6..082a9b70b883 100644 --- a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart +++ b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart @@ -3918,7 +3918,7 @@ void runQueryTests() { ]); AggregateQuery query = - collection.aggregate([count(), sum('fou'), average('foo')]); + collection.aggregate([count(), sum('foo'), average('foo')]); AggregateQuerySnapshot snapshot = await query.get(); expect( @@ -3948,7 +3948,7 @@ void runQueryTests() { AggregateQuery query = collection .where('foo', isEqualTo: 1) - .aggregate([count(), sum('fou'), average('foo')]); + .aggregate([count(), sum('foo'), average('foo')]); AggregateQuerySnapshot snapshot = await query.get(); From ea3045464d7aa9c0a47f101bbbad1228f00ebf73 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Tue, 2 Jan 2024 12:03:09 +0100 Subject: [PATCH 25/25] migrate the API to use optionnal arguments --- .../example/integration_test/query_e2e.dart | 12 +- .../cloud_firestore/example/lib/main.dart | 13 +- .../cloud_firestore/lib/src/query.dart | 168 +++++++++++++++++- .../method_channel/method_channel_query.dart | 65 ++++++- .../platform_interface_query.dart | 33 +++- .../lib/src/query_web.dart | 65 ++++++- 6 files changed, 338 insertions(+), 18 deletions(-) diff --git a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart index 082a9b70b883..3bdb7f3d2377 100644 --- a/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart +++ b/packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart @@ -3831,7 +3831,7 @@ void runQueryTests() { collection.add({'foo': 2}), ]); - AggregateQuery query = collection.aggregate([sum('foo')]); + AggregateQuery query = collection.aggregate(sum('foo')); AggregateQuerySnapshot snapshot = await query.get(); @@ -3853,7 +3853,7 @@ void runQueryTests() { ]); AggregateQuery query = - collection.where('foo', isEqualTo: 1).aggregate([sum('foo')]); + collection.where('foo', isEqualTo: 1).aggregate(sum('foo')); AggregateQuerySnapshot snapshot = await query.get(); @@ -3874,7 +3874,7 @@ void runQueryTests() { collection.add({'foo': 2}), ]); - AggregateQuery query = collection.aggregate([average('foo')]); + AggregateQuery query = collection.aggregate(average('foo')); AggregateQuerySnapshot snapshot = await query.get(); @@ -3896,7 +3896,7 @@ void runQueryTests() { ]); AggregateQuery query = - collection.where('foo', isEqualTo: 1).aggregate([average('foo')]); + collection.where('foo', isEqualTo: 1).aggregate(average('foo')); AggregateQuerySnapshot snapshot = await query.get(); @@ -3918,7 +3918,7 @@ void runQueryTests() { ]); AggregateQuery query = - collection.aggregate([count(), sum('foo'), average('foo')]); + collection.aggregate(count(), sum('foo'), average('foo')); AggregateQuerySnapshot snapshot = await query.get(); expect( @@ -3948,7 +3948,7 @@ void runQueryTests() { AggregateQuery query = collection .where('foo', isEqualTo: 1) - .aggregate([count(), sum('foo'), average('foo')]); + .aggregate(count(), sum('foo'), average('foo')); AggregateQuerySnapshot snapshot = await query.get(); diff --git a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart index fa0ece32c09d..ad671e8cdb32 100755 --- a/packages/cloud_firestore/cloud_firestore/example/lib/main.dart +++ b/packages/cloud_firestore/cloud_firestore/example/lib/main.dart @@ -168,14 +168,16 @@ class _FilmListState extends State { // Average the number of likes final _average = await FirebaseFirestore.instance .collection('firestore-example-app') - .aggregate([average('likes')]).get(); + .aggregate(average('likes')) + .get(); print('Average: ${_average.getAverage('likes')}'); // Sum the number of likes final _sum = await FirebaseFirestore.instance .collection('firestore-example-app') - .aggregate([sum('likes')]).get(); + .aggregate(sum('likes')) + .get(); print('Sum: ${_sum.getSum('likes')}'); @@ -183,8 +185,11 @@ class _FilmListState extends State { final _all = await FirebaseFirestore.instance .collection('firestore-example-app') .aggregate( - [average('likes'), sum('likes'), count()], - ).get(); + average('likes'), + sum('likes'), + count(), + ) + .get(); print('Average: ${_all.getAverage('likes')} ' 'Sum: ${_all.getSum('likes')} ' diff --git a/packages/cloud_firestore/cloud_firestore/lib/src/query.dart b/packages/cloud_firestore/cloud_firestore/lib/src/query.dart index 4d71ae10f2ca..8057b578dd9e 100644 --- a/packages/cloud_firestore/cloud_firestore/lib/src/query.dart +++ b/packages/cloud_firestore/cloud_firestore/lib/src/query.dart @@ -195,7 +195,38 @@ abstract class Query { /// Calculates the specified aggregations over the documents in the /// result set of the given query, without actually downloading the documents. - AggregateQuery aggregate(List fields); + AggregateQuery aggregate( + AggregateField aggregateField1, [ + AggregateField? aggregateField2, + AggregateField? aggregateField3, + AggregateField? aggregateField4, + AggregateField? aggregateField5, + AggregateField? aggregateField6, + AggregateField? aggregateField7, + AggregateField? aggregateField8, + AggregateField? aggregateField9, + AggregateField? aggregateField10, + AggregateField? aggregateField11, + AggregateField? aggregateField12, + AggregateField? aggregateField13, + AggregateField? aggregateField14, + AggregateField? aggregateField15, + AggregateField? aggregateField16, + AggregateField? aggregateField17, + AggregateField? aggregateField18, + AggregateField? aggregateField19, + AggregateField? aggregateField20, + AggregateField? aggregateField21, + AggregateField? aggregateField22, + AggregateField? aggregateField23, + AggregateField? aggregateField24, + AggregateField? aggregateField25, + AggregateField? aggregateField26, + AggregateField? aggregateField27, + AggregateField? aggregateField28, + AggregateField? aggregateField29, + AggregateField? aggregateField30, + ]); } /// Represents a [Query] over the data at a particular location. @@ -860,8 +891,73 @@ class _JsonQuery implements Query> { /// Calculates the specified aggregations over the documents in the /// result set of the given query, without actually downloading the documents. @override - AggregateQuery aggregate(List fields) { - return AggregateQuery._(_delegate.aggregate(fields), this); + AggregateQuery aggregate( + AggregateField aggregateField1, [ + AggregateField? aggregateField2, + AggregateField? aggregateField3, + AggregateField? aggregateField4, + AggregateField? aggregateField5, + AggregateField? aggregateField6, + AggregateField? aggregateField7, + AggregateField? aggregateField8, + AggregateField? aggregateField9, + AggregateField? aggregateField10, + AggregateField? aggregateField11, + AggregateField? aggregateField12, + AggregateField? aggregateField13, + AggregateField? aggregateField14, + AggregateField? aggregateField15, + AggregateField? aggregateField16, + AggregateField? aggregateField17, + AggregateField? aggregateField18, + AggregateField? aggregateField19, + AggregateField? aggregateField20, + AggregateField? aggregateField21, + AggregateField? aggregateField22, + AggregateField? aggregateField23, + AggregateField? aggregateField24, + AggregateField? aggregateField25, + AggregateField? aggregateField26, + AggregateField? aggregateField27, + AggregateField? aggregateField28, + AggregateField? aggregateField29, + AggregateField? aggregateField30, + ]) { + return AggregateQuery._( + _delegate.aggregate( + aggregateField1, + aggregateField2, + aggregateField3, + aggregateField4, + aggregateField5, + aggregateField6, + aggregateField7, + aggregateField8, + aggregateField9, + aggregateField10, + aggregateField11, + aggregateField12, + aggregateField13, + aggregateField14, + aggregateField15, + aggregateField16, + aggregateField17, + aggregateField18, + aggregateField19, + aggregateField20, + aggregateField21, + aggregateField22, + aggregateField23, + aggregateField24, + aggregateField25, + aggregateField26, + aggregateField27, + aggregateField28, + aggregateField29, + aggregateField30, + ), + this, + ); } } @@ -1036,7 +1132,69 @@ class _WithConverterQuery implements Query { /// Calculates the specified aggregations over the documents in the /// result set of the given query, without actually downloading the documents. @override - AggregateQuery aggregate(List fields) { - return _originalQuery.aggregate(fields); + AggregateQuery aggregate( + AggregateField aggregateField1, [ + AggregateField? aggregateField2, + AggregateField? aggregateField3, + AggregateField? aggregateField4, + AggregateField? aggregateField5, + AggregateField? aggregateField6, + AggregateField? aggregateField7, + AggregateField? aggregateField8, + AggregateField? aggregateField9, + AggregateField? aggregateField10, + AggregateField? aggregateField11, + AggregateField? aggregateField12, + AggregateField? aggregateField13, + AggregateField? aggregateField14, + AggregateField? aggregateField15, + AggregateField? aggregateField16, + AggregateField? aggregateField17, + AggregateField? aggregateField18, + AggregateField? aggregateField19, + AggregateField? aggregateField20, + AggregateField? aggregateField21, + AggregateField? aggregateField22, + AggregateField? aggregateField23, + AggregateField? aggregateField24, + AggregateField? aggregateField25, + AggregateField? aggregateField26, + AggregateField? aggregateField27, + AggregateField? aggregateField28, + AggregateField? aggregateField29, + AggregateField? aggregateField30, + ]) { + return _originalQuery.aggregate( + aggregateField1, + aggregateField2, + aggregateField3, + aggregateField4, + aggregateField5, + aggregateField6, + aggregateField7, + aggregateField8, + aggregateField9, + aggregateField10, + aggregateField11, + aggregateField12, + aggregateField13, + aggregateField14, + aggregateField15, + aggregateField16, + aggregateField17, + aggregateField18, + aggregateField19, + aggregateField20, + aggregateField21, + aggregateField22, + aggregateField23, + aggregateField24, + aggregateField25, + aggregateField26, + aggregateField27, + aggregateField28, + aggregateField29, + aggregateField30, + ); } } diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart index fc6c409a16a3..6e4ae0a648da 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart @@ -284,7 +284,70 @@ class MethodChannelQuery extends QueryPlatform { } @override - AggregateQueryPlatform aggregate(List fields) { + AggregateQueryPlatform aggregate( + AggregateField aggregateField1, [ + AggregateField? aggregateField2, + AggregateField? aggregateField3, + AggregateField? aggregateField4, + AggregateField? aggregateField5, + AggregateField? aggregateField6, + AggregateField? aggregateField7, + AggregateField? aggregateField8, + AggregateField? aggregateField9, + AggregateField? aggregateField10, + AggregateField? aggregateField11, + AggregateField? aggregateField12, + AggregateField? aggregateField13, + AggregateField? aggregateField14, + AggregateField? aggregateField15, + AggregateField? aggregateField16, + AggregateField? aggregateField17, + AggregateField? aggregateField18, + AggregateField? aggregateField19, + AggregateField? aggregateField20, + AggregateField? aggregateField21, + AggregateField? aggregateField22, + AggregateField? aggregateField23, + AggregateField? aggregateField24, + AggregateField? aggregateField25, + AggregateField? aggregateField26, + AggregateField? aggregateField27, + AggregateField? aggregateField28, + AggregateField? aggregateField29, + AggregateField? aggregateField30, + ]) { + final fields = [ + aggregateField1, + aggregateField2, + aggregateField3, + aggregateField4, + aggregateField5, + aggregateField6, + aggregateField7, + aggregateField8, + aggregateField9, + aggregateField10, + aggregateField11, + aggregateField12, + aggregateField13, + aggregateField14, + aggregateField15, + aggregateField16, + aggregateField17, + aggregateField18, + aggregateField19, + aggregateField20, + aggregateField21, + aggregateField22, + aggregateField23, + aggregateField24, + aggregateField25, + aggregateField26, + aggregateField27, + aggregateField28, + aggregateField29, + aggregateField30, + ].whereType(); return MethodChannelAggregateQuery( this, _pigeonParameters, diff --git a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart index f4f2f69cda12..c64623efc54a 100644 --- a/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart +++ b/packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart @@ -239,7 +239,38 @@ abstract class QueryPlatform extends PlatformInterface { throw UnimplementedError('count() is not implemented'); } - AggregateQueryPlatform aggregate(List fields) { + AggregateQueryPlatform aggregate( + AggregateField aggregateField1, [ + AggregateField? aggregateField2, + AggregateField? aggregateField3, + AggregateField? aggregateField4, + AggregateField? aggregateField5, + AggregateField? aggregateField6, + AggregateField? aggregateField7, + AggregateField? aggregateField8, + AggregateField? aggregateField9, + AggregateField? aggregateField10, + AggregateField? aggregateField11, + AggregateField? aggregateField12, + AggregateField? aggregateField13, + AggregateField? aggregateField14, + AggregateField? aggregateField15, + AggregateField? aggregateField16, + AggregateField? aggregateField17, + AggregateField? aggregateField18, + AggregateField? aggregateField19, + AggregateField? aggregateField20, + AggregateField? aggregateField21, + AggregateField? aggregateField22, + AggregateField? aggregateField23, + AggregateField? aggregateField24, + AggregateField? aggregateField25, + AggregateField? aggregateField26, + AggregateField? aggregateField27, + AggregateField? aggregateField28, + AggregateField? aggregateField29, + AggregateField? aggregateField30, + ]) { throw UnimplementedError('aggregate() is not implemented'); } diff --git a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart index d5d4632b5ade..459bda5736dc 100644 --- a/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart +++ b/packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart @@ -269,7 +269,70 @@ class QueryWeb extends QueryPlatform { } @override - AggregateQueryPlatform aggregate(List fields) { + AggregateQueryPlatform aggregate( + AggregateField aggregateField1, [ + AggregateField? aggregateField2, + AggregateField? aggregateField3, + AggregateField? aggregateField4, + AggregateField? aggregateField5, + AggregateField? aggregateField6, + AggregateField? aggregateField7, + AggregateField? aggregateField8, + AggregateField? aggregateField9, + AggregateField? aggregateField10, + AggregateField? aggregateField11, + AggregateField? aggregateField12, + AggregateField? aggregateField13, + AggregateField? aggregateField14, + AggregateField? aggregateField15, + AggregateField? aggregateField16, + AggregateField? aggregateField17, + AggregateField? aggregateField18, + AggregateField? aggregateField19, + AggregateField? aggregateField20, + AggregateField? aggregateField21, + AggregateField? aggregateField22, + AggregateField? aggregateField23, + AggregateField? aggregateField24, + AggregateField? aggregateField25, + AggregateField? aggregateField26, + AggregateField? aggregateField27, + AggregateField? aggregateField28, + AggregateField? aggregateField29, + AggregateField? aggregateField30, + ]) { + final fields = [ + aggregateField1, + aggregateField2, + aggregateField3, + aggregateField4, + aggregateField5, + aggregateField6, + aggregateField7, + aggregateField8, + aggregateField9, + aggregateField10, + aggregateField11, + aggregateField12, + aggregateField13, + aggregateField14, + aggregateField15, + aggregateField16, + aggregateField17, + aggregateField18, + aggregateField19, + aggregateField20, + aggregateField21, + aggregateField22, + aggregateField23, + aggregateField24, + aggregateField25, + aggregateField26, + aggregateField27, + aggregateField28, + aggregateField29, + aggregateField30, + ].whereType(); return AggregateQueryWeb( this, _buildWebQueryWithParameters(),