Skip to content

Commit dfd7211

Browse files
committed
clean up FirebaseIndexArray
1 parent 299f540 commit dfd7211

File tree

4 files changed

+32
-22
lines changed

4 files changed

+32
-22
lines changed

FirebaseDatabaseUI/FirebaseDatabaseUI.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,6 @@ FOUNDATION_EXPORT const unsigned char FirebaseDatabaseUIVersionString[];
2727
#import <FirebaseDatabaseUI/FirebaseCollectionViewDataSource.h>
2828
#import <FirebaseDatabaseUI/FirebaseDataSource.h>
2929
#import <FirebaseDatabaseUI/FirebaseTableViewDataSource.h>
30-
31-
30+
#import <FirebaseDatabaseUI/FirebaseIndexArray.h>
31+
#import <FirebaseDatabaseUI/FirebaseIndexTableViewDataSource.h>
32+
#import <FirebaseDatabaseUI/FirebaseIndexCollectionViewDataSource.h>

FirebaseDatabaseUI/FirebaseIndexArray.h

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ NS_ASSUME_NONNULL_BEGIN
3636
/**
3737
* Delegate method called when the database reference at an index has
3838
* finished loading its contents.
39-
* @param array The array calling this method.
40-
* @param reference The reference that was loaded.
39+
* @param array The array containing the reference.
40+
* @param ref The reference that was loaded.
4141
* @param object The database reference's contents.
4242
* @param index The index of the reference that was loaded.
4343
*/
@@ -46,6 +46,19 @@ NS_ASSUME_NONNULL_BEGIN
4646
didLoadObject:(FIRDataSnapshot *)object
4747
atIndex:(NSUInteger)index;
4848

49+
/**
50+
* Delegate method called when the database reference at an index has
51+
* failed to load contents.
52+
* @param array The array containing the reference.
53+
* @param ref The reference that failed to load.
54+
* @param index The index in the array of the reference that failed to load.
55+
* @param error The error that occurred.
56+
*/
57+
- (void)array:(FirebaseIndexArray *)array
58+
reference:(FIRDatabaseReference *)ref
59+
atIndex:(NSUInteger)index
60+
didFailLoadWithError:(NSError *)error;
61+
4962
/**
5063
* Delegate method which is called whenever an object is added to a
5164
* FirebaseArray. On a

FirebaseDatabaseUI/FirebaseIndexArray.m

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -101,17 +101,20 @@ - (void)dealloc {
101101
// they must be kept up to date as the FirebaseArray
102102
// changes over time.
103103

104-
- (void)observer:(FirebaseQueryObserver *)obs finishedLoadWithSnap:(FIRDataSnapshot *)snap error:(NSError *)error {
104+
- (void)observer:(FirebaseQueryObserver *)obs
105+
didFinishLoadWithSnap:(FIRDataSnapshot *)snap
106+
error:(NSError *)error {
107+
// Need to look up location in array to account for possible moves
108+
NSUInteger index = [self.observers indexOfObject:obs];
109+
105110
if (error != nil) {
106-
[self invalidate];
107-
if ([self.delegate respondsToSelector:@selector(array:queryCancelledWithError:)]) {
108-
[self.delegate array:self queryCancelledWithError:error];
111+
if ([self.delegate respondsToSelector:@selector(array:reference:atIndex:didFailLoadWithError:)]) {
112+
[self.delegate array:self reference:obs.query atIndex:index didFailLoadWithError:error];
109113
}
110114
return;
111115
}
112116

113117
if ([self.delegate respondsToSelector:@selector(array:reference:didLoadObject:atIndex:)]) {
114-
NSUInteger index = [self.observers indexOfObject:obs];
115118
[self.delegate array:self reference:obs.query didLoadObject:snap atIndex:index];
116119
}
117120
}
@@ -124,7 +127,7 @@ - (void)array:(FirebaseArray *)array
124127
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery:query
125128
completion:^(FIRDataSnapshot *snap,
126129
NSError *error) {
127-
[self observer:obs finishedLoadWithSnap:snap error:error];
130+
[self observer:obs didFinishLoadWithSnap:snap error:error];
128131
}];
129132
[self.observers insertObject:obs atIndex:index];
130133

@@ -138,17 +141,13 @@ - (void)array:(FirebaseArray *)array
138141
fromIndex:(NSUInteger)fromIndex
139142
toIndex:(NSUInteger)toIndex {
140143
NSParameterAssert([object.key isKindOfClass:[NSString class]]);
141-
id<FIRDataObservable> query = [self.data child:object.key];
142-
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery:query
143-
completion:^(FIRDataSnapshot *snap,
144-
NSError *error) {
145-
[self observer:obs finishedLoadWithSnap:snap error:error];
146-
}];
144+
FirebaseQueryObserver *obs = self.observers[fromIndex];
145+
147146
[self.observers removeObjectAtIndex:fromIndex];
148147
[self.observers insertObject:obs atIndex:toIndex];
149148

150149
if ([self.delegate respondsToSelector:@selector(array:didMoveReference:fromIndex:toIndex:)]) {
151-
[self.delegate array:self didMoveReference:query fromIndex:fromIndex toIndex:toIndex];
150+
[self.delegate array:self didMoveReference:obs.query fromIndex:fromIndex toIndex:toIndex];
152151
}
153152
}
154153

@@ -165,7 +164,7 @@ - (void)array:(FirebaseArray *)array
165164
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery:query
166165
completion:^(FIRDataSnapshot *snap,
167166
NSError *error) {
168-
[self observer:obs finishedLoadWithSnap:snap error:error];
167+
[self observer:obs didFinishLoadWithSnap:snap error:error];
169168
}];
170169
[self.observers replaceObjectAtIndex:index withObject:obs];
171170

FirebaseUI.xcodeproj/project.pbxproj

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
8DFA90421DAC1DAC003B5E10 /* FirebaseIndexTableViewDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DFA90401DAC1DAC003B5E10 /* FirebaseIndexTableViewDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
128128
8DFA90431DAC1DAC003B5E10 /* FirebaseIndexTableViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA90411DAC1DAC003B5E10 /* FirebaseIndexTableViewDataSource.m */; };
129129
8DFA90441DAC1DAC003B5E10 /* FirebaseIndexTableViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA90411DAC1DAC003B5E10 /* FirebaseIndexTableViewDataSource.m */; };
130-
8DFA90471DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DFA90451DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.h */; };
130+
8DFA90471DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DFA90451DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
131131
8DFA90481DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA90461DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.m */; };
132132
8DFA90491DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA90461DAC54DD003B5E10 /* FirebaseIndexCollectionViewDataSource.m */; };
133133
C32516951D88A54C00B0B3F9 /* FirebaseTwitterAuthUI.h in Headers */ = {isa = PBXBuildFile; fileRef = C32516941D88A54C00B0B3F9 /* FirebaseTwitterAuthUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -364,7 +364,6 @@
364364
8D924C601DA6F69100C4DA48 /* FirebaseIndexArrayTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirebaseIndexArrayTest.m; sourceTree = "<group>"; };
365365
8D924C621DA6F77700C4DA48 /* FirebaseQueryObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirebaseQueryObserver.h; sourceTree = "<group>"; };
366366
8D924C631DA6F77700C4DA48 /* FirebaseQueryObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirebaseQueryObserver.m; sourceTree = "<group>"; };
367-
8D9861121D81EEE2007D3FD3 /* libPods-FirebaseDatabaseUI.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libPods-FirebaseDatabaseUI.a"; path = "../../Library/Developer/Xcode/DerivedData/FirebaseUI-fwcyvciocjlrhqbyjmmybozelsll/Build/Products/Debug-iphonesimulator/libPods-FirebaseDatabaseUI.a"; sourceTree = "<group>"; };
368367
8DA941391D678DEB00CD3685 /* FirebaseArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirebaseArray.h; sourceTree = "<group>"; };
369368
8DA9413A1D678DEB00CD3685 /* FirebaseArrayDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirebaseArrayDelegate.h; sourceTree = "<group>"; };
370369
8DA9413B1D678DEB00CD3685 /* FirebaseCollectionViewDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirebaseCollectionViewDataSource.h; sourceTree = "<group>"; };
@@ -442,7 +441,6 @@
442441
8DA941ED1D67951B00CD3685 /* FirebaseTableViewDataSourceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirebaseTableViewDataSourceTest.m; sourceTree = "<group>"; };
443442
8DAF8BF41D89CC5300B251C7 /* FIRAuthUITest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FIRAuthUITest.m; sourceTree = "<group>"; };
444443
8DAF8BF51D89CC5300B251C7 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
445-
8DB06C5D1D89D18B00F0AAD3 /* libPods-FirebaseAuthUITests.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libPods-FirebaseAuthUITests.a"; path = "../../Library/Developer/Xcode/DerivedData/FirebaseUI-fwcyvciocjlrhqbyjmmybozelsll/Build/Products/Debug-iphonesimulator/libPods-FirebaseAuthUITests.a"; sourceTree = "<group>"; };
446444
8DBA0F4F1D872E1C00D113D3 /* libDatabase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libDatabase.a; sourceTree = BUILT_PRODUCTS_DIR; };
447445
8DBA0F5C1D872E2400D113D3 /* libAuth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAuth.a; sourceTree = BUILT_PRODUCTS_DIR; };
448446
8DBA0F691D872E2E00D113D3 /* libFacebook.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFacebook.a; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -677,7 +675,6 @@
677675
C329B1391DA8694A00059A13 /* FirebaseUISample */,
678676
C329B15E1DA8694B00059A13 /* FirebaseUISampleUITests */,
679677
8D2A84A71D678B2B0058DF04 /* Products */,
680-
C6755E8A1320A2BECE081E94 /* Frameworks */,
681678
);
682679
sourceTree = "<group>";
683680
};

0 commit comments

Comments
 (0)