|
9 | 9 | #import "include/cloud_firestore/Private/FLTFirebaseFirestoreUtils.h" |
10 | 10 | #import "include/cloud_firestore/Public/FLTFirebaseFirestorePlugin.h" |
11 | 11 |
|
| 12 | +static const UInt8 FLTStandardFieldList = 12; |
| 13 | +static const UInt8 FLTStandardFieldMap = 13; |
| 14 | + |
12 | 15 | @implementation FLTFirebaseFirestoreWriter : FlutterStandardWriter |
13 | 16 | - (void)writeValue:(id)value { |
14 | 17 | if ([value isKindOfClass:[NSDate class]]) { |
@@ -51,15 +54,30 @@ - (void)writeValue:(id)value { |
51 | 54 | [self writeValue:extension.databaseURL]; |
52 | 55 |
|
53 | 56 | } else if ([value isKindOfClass:[FIRDocumentSnapshot class]]) { |
54 | | - [super writeValue:[self FIRDocumentSnapshot:value]]; |
| 57 | + [self writeValue:[self FIRDocumentSnapshot:value]]; |
55 | 58 | } else if ([value isKindOfClass:[FIRLoadBundleTaskProgress class]]) { |
56 | | - [super writeValue:[self FIRLoadBundleTaskProgress:value]]; |
| 59 | + [self writeValue:[self FIRLoadBundleTaskProgress:value]]; |
57 | 60 | } else if ([value isKindOfClass:[FIRQuerySnapshot class]]) { |
58 | | - [super writeValue:[self FIRQuerySnapshot:value]]; |
| 61 | + [self writeValue:[self FIRQuerySnapshot:value]]; |
59 | 62 | } else if ([value isKindOfClass:[FIRDocumentChange class]]) { |
60 | | - [super writeValue:[self FIRDocumentChange:value]]; |
| 63 | + [self writeValue:[self FIRDocumentChange:value]]; |
61 | 64 | } else if ([value isKindOfClass:[FIRSnapshotMetadata class]]) { |
62 | | - [super writeValue:[self FIRSnapshotMetadata:value]]; |
| 65 | + [self writeValue:[self FIRSnapshotMetadata:value]]; |
| 66 | + } else if ([value isKindOfClass:[NSArray class]]) { |
| 67 | + NSArray *list = value; |
| 68 | + [self writeByte:FLTStandardFieldList]; |
| 69 | + [self writeSize:(UInt32)list.count]; |
| 70 | + for (id item in list) { |
| 71 | + [self writeValue:item]; |
| 72 | + } |
| 73 | + } else if ([value isKindOfClass:[NSDictionary class]]) { |
| 74 | + NSDictionary *map = value; |
| 75 | + [self writeByte:FLTStandardFieldMap]; |
| 76 | + [self writeSize:(UInt32)map.count]; |
| 77 | + for (id key in map) { |
| 78 | + [self writeValue:key]; |
| 79 | + [self writeValue:map[key]]; |
| 80 | + } |
63 | 81 | } else if ([value isKindOfClass:[NSNumber class]]) { |
64 | 82 | NSNumber *number = (NSNumber *)value; |
65 | 83 |
|
|
0 commit comments