@@ -101,17 +101,20 @@ - (void)dealloc {
101
101
// they must be kept up to date as the FirebaseArray
102
102
// changes over time.
103
103
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
+
105
110
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];
109
113
}
110
114
return ;
111
115
}
112
116
113
117
if ([self .delegate respondsToSelector: @selector (array:reference:didLoadObject:atIndex: )]) {
114
- NSUInteger index = [self .observers indexOfObject: obs];
115
118
[self .delegate array: self reference: obs.query didLoadObject: snap atIndex: index];
116
119
}
117
120
}
@@ -124,7 +127,7 @@ - (void)array:(FirebaseArray *)array
124
127
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery: query
125
128
completion: ^(FIRDataSnapshot *snap,
126
129
NSError *error) {
127
- [self observer: obs finishedLoadWithSnap : snap error: error];
130
+ [self observer: obs didFinishLoadWithSnap : snap error: error];
128
131
}];
129
132
[self .observers insertObject: obs atIndex: index];
130
133
@@ -138,17 +141,13 @@ - (void)array:(FirebaseArray *)array
138
141
fromIndex : (NSUInteger )fromIndex
139
142
toIndex : (NSUInteger )toIndex {
140
143
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
+
147
146
[self .observers removeObjectAtIndex: fromIndex];
148
147
[self .observers insertObject: obs atIndex: toIndex];
149
148
150
149
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];
152
151
}
153
152
}
154
153
@@ -165,7 +164,7 @@ - (void)array:(FirebaseArray *)array
165
164
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery: query
166
165
completion: ^(FIRDataSnapshot *snap,
167
166
NSError *error) {
168
- [self observer: obs finishedLoadWithSnap : snap error: error];
167
+ [self observer: obs didFinishLoadWithSnap : snap error: error];
169
168
}];
170
169
[self .observers replaceObjectAtIndex: index withObject: obs];
171
170
0 commit comments