Skip to content

Commit d0e7c29

Browse files
committed
clean up FirebaseIndexArray
1 parent 133e2eb commit d0e7c29

File tree

4 files changed

+32
-44
lines changed

4 files changed

+32
-44
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 & 26 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; };
@@ -495,10 +493,6 @@
495493
C329B15B1DA8694A00059A13 /* FirebaseUISampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FirebaseUISampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
496494
C329B15F1DA8694B00059A13 /* FirebaseUISampleUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirebaseUISampleUITests.m; sourceTree = "<group>"; };
497495
C329B1611DA8694B00059A13 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
498-
C329B1871DAC3A9600059A13 /* FirebaseCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseCore.framework; path = Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework; sourceTree = "<group>"; };
499-
C329B1981DAC455F00059A13 /* Pods_FirebaseUISample.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods_FirebaseUISample.framework; path = "../../../../Library/Developer/Xcode/DerivedData/FirebaseUI-agltuknweouaseeodelopbjhffgx/Build/Products/Debug-iphonesimulator/Pods_FirebaseUISample.framework"; sourceTree = "<group>"; };
500-
C329B1A91DAC499700059A13 /* Pods_FirebaseAuthUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods_FirebaseAuthUI.framework; path = "../../../../Library/Developer/Xcode/DerivedData/FirebaseUI-agltuknweouaseeodelopbjhffgx/Build/Products/Debug-iphonesimulator/Pods_FirebaseAuthUI.framework"; sourceTree = "<group>"; };
501-
C329B1AB1DAC49EF00059A13 /* FirebaseAuthUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAuthUI.framework; path = FirebaseUIFrameworks/FirebaseAuthUI/Frameworks/FirebaseAuthUI.framework; sourceTree = "<group>"; };
502496
C380A7D01D89ECF1005C031D /* ic_twitter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ic_twitter.png; sourceTree = "<group>"; };
503497
C380A7D11D89ECF1005C031D /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
504498
C380A7D21D89ECF1005C031D /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
@@ -647,15 +641,13 @@
647641
isa = PBXFrameworksBuildPhase;
648642
buildActionMask = 2147483647;
649643
files = (
650-
82A419EAC211FC8A5321C6EF /* libPods-FirebaseUISample.a in Frameworks */,
651644
);
652645
runOnlyForDeploymentPostprocessing = 0;
653646
};
654647
C329B1581DA8694A00059A13 /* Frameworks */ = {
655648
isa = PBXFrameworksBuildPhase;
656649
buildActionMask = 2147483647;
657650
files = (
658-
9376A0BF883EF4F0275C8079 /* libPods-FirebaseUISampleUITests.a in Frameworks */,
659651
);
660652
runOnlyForDeploymentPostprocessing = 0;
661653
};
@@ -681,7 +673,6 @@
681673
C329B1391DA8694A00059A13 /* FirebaseUISample */,
682674
C329B15E1DA8694B00059A13 /* FirebaseUISampleUITests */,
683675
8D2A84A71D678B2B0058DF04 /* Products */,
684-
C6755E8A1320A2BECE081E94 /* Frameworks */,
685676
);
686677
sourceTree = "<group>";
687678
};
@@ -1062,13 +1053,6 @@
10621053
path = en.lproj;
10631054
sourceTree = "<group>";
10641055
};
1065-
C6755E8A1320A2BECE081E94 /* Frameworks */ = {
1066-
isa = PBXGroup;
1067-
children = (
1068-
);
1069-
name = Frameworks;
1070-
sourceTree = "<group>";
1071-
};
10721056
/* End PBXGroup section */
10731057

10741058
/* Begin PBXHeadersBuildPhase section */
@@ -1510,12 +1494,9 @@
15101494
isa = PBXNativeTarget;
15111495
buildConfigurationList = C329B1681DA8694B00059A13 /* Build configuration list for PBXNativeTarget "FirebaseUISample" */;
15121496
buildPhases = (
1513-
1147A66FA15803D8B18992AB /* [CP] Check Pods Manifest.lock */,
15141497
C329B1341DA8694A00059A13 /* Sources */,
15151498
C329B1351DA8694A00059A13 /* Frameworks */,
15161499
C329B1361DA8694A00059A13 /* Resources */,
1517-
7BDBAF33D65713E7B1BB8E46 /* [CP] Embed Pods Frameworks */,
1518-
A59628F5107B15F4AD8735F6 /* [CP] Copy Pods Resources */,
15191500
);
15201501
buildRules = (
15211502
);
@@ -1531,11 +1512,9 @@
15311512
isa = PBXNativeTarget;
15321513
buildConfigurationList = C329B16A1DA8694B00059A13 /* Build configuration list for PBXNativeTarget "FirebaseUISampleUITests" */;
15331514
buildPhases = (
1534-
9ED25F86F9AB1BCFB216DA8A /* [CP] Check Pods Manifest.lock */,
15351515
C329B1571DA8694A00059A13 /* Sources */,
15361516
C329B1581DA8694A00059A13 /* Frameworks */,
15371517
C329B1591DA8694A00059A13 /* Resources */,
1538-
CD438546FC51FC16C273D3A3 /* [CP] Copy Pods Resources */,
15391518
C329B1781DAC120200059A13 /* CopyFiles */,
15401519
);
15411520
buildRules = (
@@ -3008,7 +2987,6 @@
30082987
};
30092988
C329B1621DA8694B00059A13 /* Debug */ = {
30102989
isa = XCBuildConfiguration;
3011-
baseConfigurationReference = 9ECC9CB0611615DB6FBA62F1 /* Pods-FirebaseUISample.debug.xcconfig */;
30122990
buildSettings = {
30132991
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
30142992
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
@@ -3038,7 +3016,6 @@
30383016
};
30393017
C329B1631DA8694B00059A13 /* Release */ = {
30403018
isa = XCBuildConfiguration;
3041-
baseConfigurationReference = D39C8610AB7379937D1A10C8 /* Pods-FirebaseUISample.release.xcconfig */;
30423019
buildSettings = {
30433020
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
30443021
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
@@ -3068,7 +3045,6 @@
30683045
};
30693046
C329B1661DA8694B00059A13 /* Debug */ = {
30703047
isa = XCBuildConfiguration;
3071-
baseConfigurationReference = 0E6C009AA7B7E755F6ADC3BF /* Pods-FirebaseUISampleUITests.debug.xcconfig */;
30723048
buildSettings = {
30733049
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
30743050
CLANG_WARN_SUSPICIOUS_MOVES = YES;
@@ -3091,7 +3067,6 @@
30913067
};
30923068
C329B1671DA8694B00059A13 /* Release */ = {
30933069
isa = XCBuildConfiguration;
3094-
baseConfigurationReference = E16217232FAB3C155A5DC2AF /* Pods-FirebaseUISampleUITests.release.xcconfig */;
30953070
buildSettings = {
30963071
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
30973072
CLANG_WARN_SUSPICIOUS_MOVES = YES;

0 commit comments

Comments
 (0)