Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions FirebaseDatabaseUI/FUIArray.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

NS_ASSUME_NONNULL_BEGIN

@protocol FIRDataObservable <NSObject>
@protocol FUIDataObservable <NSObject>
@required

- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType
Expand All @@ -33,11 +33,11 @@ NS_ASSUME_NONNULL_BEGIN

- (void)removeObserverWithHandle:(FIRDatabaseHandle)handle;

- (id<FIRDataObservable>)child:(NSString *)path;
- (id<FUIDataObservable>)child:(NSString *)path;

@end

@interface FIRDatabaseQuery (FIRDataObservable) <FIRDataObservable>
@interface FIRDatabaseQuery (FUIDataObservable) <FUIDataObservable>
@end

/**
Expand All @@ -56,7 +56,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
* The query on a Firebase reference that provides data to populate the array.
*/
@property(strong, nonatomic) id<FIRDataObservable> query;
@property(strong, nonatomic) id<FUIDataObservable> query;

/**
* The number of objects in the array.
Expand All @@ -77,7 +77,7 @@ NS_ASSUME_NONNULL_BEGIN
* @param delegate An object conforming to FirebaseArrayDelegate that should receive delegate messages.
* @return A FirebaseArray instance
*/
- (instancetype)initWithQuery:(id<FIRDataObservable>)query
- (instancetype)initWithQuery:(id<FUIDataObservable>)query
delegate:(nullable id<FUIArrayDelegate>)delegate NS_DESIGNATED_INITIALIZER;

/**
Expand All @@ -88,12 +88,12 @@ NS_ASSUME_NONNULL_BEGIN
* @param query A query or Firebase database reference
* @return An FUIArray instance
*/
- (instancetype)initWithQuery:(id<FIRDataObservable>)query;
- (instancetype)initWithQuery:(id<FUIDataObservable>)query;

/**
* See `initWithQuery:`
*/
+ (instancetype)arrayWithQuery:(id<FIRDataObservable>)query;
+ (instancetype)arrayWithQuery:(id<FUIDataObservable>)query;

- (instancetype)init NS_UNAVAILABLE;

Expand Down
4 changes: 2 additions & 2 deletions FirebaseDatabaseUI/FUIArray.m
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ - (instancetype)initWithQuery:(FIRDatabaseQuery *)query delegate:(id<FUIArrayDel
return self;
}

- (instancetype)initWithQuery:(id<FIRDataObservable>)query {
- (instancetype)initWithQuery:(id<FUIDataObservable>)query {
return [self initWithQuery:query delegate:nil];
}

+ (instancetype)arrayWithQuery:(id<FIRDataObservable>)query {
+ (instancetype)arrayWithQuery:(id<FUIDataObservable>)query {
return [[self alloc] initWithQuery:query];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@

NS_ASSUME_NONNULL_BEGIN

@class FirebaseIndexArray;
@class FUIIndexArray;

/**
* A protocol to allow instances of FirebaseIndexArray to raise events through a
* A protocol to allow instances of FUIIndexArray to raise events through a
* delegate. Raises all Firebase events except @c FIRDataEventTypeValue.
*/
@protocol FirebaseIndexArrayDelegate <NSObject>
@protocol FUIIndexArrayDelegate <NSObject>

@optional

Expand All @@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
* @param object The database reference's contents.
* @param index The index of the reference that was loaded.
*/
- (void)array:(FirebaseIndexArray *)array
- (void)array:(FUIIndexArray *)array
reference:(FIRDatabaseReference *)ref
didLoadObject:(FIRDataSnapshot *)object
atIndex:(NSUInteger)index;
Expand All @@ -53,7 +53,7 @@ didLoadObject:(FIRDataSnapshot *)object
* @param index The index in the array of the reference that failed to load.
* @param error The error that occurred.
*/
- (void)array:(FirebaseIndexArray *)array
- (void)array:(FUIIndexArray *)array
reference:(FIRDatabaseReference *)ref
atIndex:(NSUInteger)index
didFailLoadWithError:(NSError *)error;
Expand All @@ -65,7 +65,7 @@ didFailLoadWithError:(NSError *)error;
* @param ref The database reference added to the array
* @param index The index the reference was added at
*/
- (void)array:(FirebaseIndexArray *)array didAddReference:(FIRDatabaseReference *)ref atIndex:(NSUInteger)index;
- (void)array:(FUIIndexArray *)array didAddReference:(FIRDatabaseReference *)ref atIndex:(NSUInteger)index;

/**
* Delegate method which is called whenever an object is changed in a
Expand All @@ -74,7 +74,7 @@ didFailLoadWithError:(NSError *)error;
* @param ref The database reference that changed in the array
* @param index The index the reference was changed at
*/
- (void)array:(FirebaseIndexArray *)array didChangeReference:(FIRDatabaseReference *)ref atIndex:(NSUInteger)index;
- (void)array:(FUIIndexArray *)array didChangeReference:(FIRDatabaseReference *)ref atIndex:(NSUInteger)index;

/**
* Delegate method which is called whenever an object is removed from a
Expand All @@ -83,7 +83,7 @@ didFailLoadWithError:(NSError *)error;
* @param ref The database reference removed from the array
* @param index The index the reference was removed at
*/
- (void)array:(FirebaseIndexArray *)array didRemoveReference:(FIRDatabaseReference *)ref atIndex:(NSUInteger)index;
- (void)array:(FUIIndexArray *)array didRemoveReference:(FIRDatabaseReference *)ref atIndex:(NSUInteger)index;

/**
* Delegate method which is called whenever an object is moved within a
Expand All @@ -93,24 +93,24 @@ didFailLoadWithError:(NSError *)error;
* @param fromIndex The index the reference is being moved from
* @param toIndex The index the reference is being moved to
*/
- (void)array:(FirebaseIndexArray *)array didMoveReference:(FIRDatabaseReference *)ref fromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex;
- (void)array:(FUIIndexArray *)array didMoveReference:(FIRDatabaseReference *)ref fromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex;

/**
* Delegate method which is called whenever the backing query is canceled. This error is fatal
* and the index array will become unusable afterward, so please handle it appropriately
* (i.e. by displaying a modal error explaining why there's no content).
* @param error the error that was raised
*/
- (void)array:(FirebaseIndexArray *)array queryCancelledWithError:(NSError *)error;
- (void)array:(FUIIndexArray *)array queryCancelledWithError:(NSError *)error;

@end

/**
* A FirebaseIndexArray instance uses a query's contents to query children of
* A FUIIndexArray instance uses a query's contents to query children of
* a separate database reference, which is useful for displaying an indexed list
* of data as described in https://firebase.google.com/docs/database/ios/structure-data
*/
@interface FirebaseIndexArray : NSObject
@interface FUIIndexArray : NSObject

/**
* An immutable copy of the loaded contents in the array. Returns an
Expand All @@ -121,7 +121,7 @@ didFailLoadWithError:(NSError *)error;
/**
* The delegate that this array should forward events to.
*/
@property(nonatomic, weak) id<FirebaseIndexArrayDelegate> delegate;
@property(nonatomic, weak) id<FUIIndexArrayDelegate> delegate;

/**
* Returns the number of items in the array.
Expand All @@ -131,7 +131,7 @@ didFailLoadWithError:(NSError *)error;
- (instancetype)init NS_UNAVAILABLE;

/**
* Initializes a FirebaseIndexArray with an index query and a data query.
* Initializes a FUIIndexArray with an index query and a data query.
* The array expects the keys of the children of the index query to match exactly children
* of the data query.
* @param index A Firebase database query whose childrens' keys are all children
Expand All @@ -140,21 +140,21 @@ didFailLoadWithError:(NSError *)error;
* to populate the array's contents according to the index query.
* @param delegate The delegate that events should be forwarded to.
*/
- (instancetype)initWithIndex:(id<FIRDataObservable>)index
data:(id<FIRDataObservable>)data
delegate:(nullable id<FirebaseIndexArrayDelegate>)delegate NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithIndex:(id<FUIDataObservable>)index
data:(id<FUIDataObservable>)data
delegate:(nullable id<FUIIndexArrayDelegate>)delegate NS_DESIGNATED_INITIALIZER;

/**
* Initializes a FirebaseIndexArray with an index query and a data query.
* Initializes a FUIIndexArray with an index query and a data query.
* The array expects the keys of the children of the index query to be children
* of the data query.
* @param index A Firebase database query whose childrens' keys are all children
* of the data query.
* @param data A Firebase database reference whose children will be fetched and used
* to populate the array's contents according to the index query.
*/
- (instancetype)initWithIndex:(id<FIRDataObservable>)index
data:(id<FIRDataObservable>)data;
- (instancetype)initWithIndex:(id<FUIDataObservable>)index
data:(id<FUIDataObservable>)data;

/**
* Returns the snapshot at the given index, if it has loaded.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,27 @@

// clang-format on

#import "FirebaseIndexArray.h"
#import "FirebaseQueryObserver.h"
#import "FUIIndexArray.h"
#import "FUIQueryObserver.h"

@interface FirebaseIndexArray () <FUIArrayDelegate>
@interface FUIIndexArray () <FUIArrayDelegate>

@property (nonatomic, readonly) id<FIRDataObservable> index;
@property (nonatomic, readonly) id<FIRDataObservable> data;
@property (nonatomic, readonly) id<FUIDataObservable> index;
@property (nonatomic, readonly) id<FUIDataObservable> data;

@property (nonatomic, readonly) FUIArray *indexArray;

@property (nonatomic, readonly) NSMutableArray<FirebaseQueryObserver *> *observers;
@property (nonatomic, readonly) NSMutableArray<FUIQueryObserver *> *observers;

@end

/**
* FirebaseIndexArray manages an instance of FirebaseArray internally to
* FUIIndexArray manages an instance of FirebaseArray internally to
* keep track of which queries it should be updating. The FirebaseArrayDelegate
* methods are responsible for keeping observers up-to-date as the contents of
* the FirebaseArray change.
*/
@implementation FirebaseIndexArray
@implementation FUIIndexArray

- (instancetype)init {
NSException *e =
Expand All @@ -48,9 +48,9 @@ - (instancetype)init {
@throw e;
}

- (instancetype)initWithIndex:(id<FIRDataObservable>)index
data:(id<FIRDataObservable>)data
delegate:(nullable id<FirebaseIndexArrayDelegate>)delegate; {
- (instancetype)initWithIndex:(id<FUIDataObservable>)index
data:(id<FUIDataObservable>)data
delegate:(nullable id<FUIIndexArrayDelegate>)delegate; {
NSParameterAssert(index != nil);
NSParameterAssert(data != nil);
self = [super init];
Expand All @@ -64,8 +64,8 @@ - (instancetype)initWithIndex:(id<FIRDataObservable>)index
return self;
}

- (instancetype)initWithIndex:(id<FIRDataObservable>)index
data:(id<FIRDataObservable>)data {
- (instancetype)initWithIndex:(id<FUIDataObservable>)index
data:(id<FUIDataObservable>)data {
return [self initWithIndex:index data:data delegate:nil];
}

Expand All @@ -76,7 +76,7 @@ - (void)observeQueries {
- (NSArray <FIRDataSnapshot *> *)items {
NSArray *observers = [self.observers copy];
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:observers.count];
for (FirebaseQueryObserver *observer in observers) {
for (FUIQueryObserver *observer in observers) {
if (observer.contents != nil) {
[array addObject:observer.contents];
}
Expand All @@ -88,10 +88,10 @@ - (NSUInteger)count {
return self.observers.count;
}

// FirebaseIndexArray instance becomes unusable after invalidation.
// FUIIndexArray instance becomes unusable after invalidation.
- (void)invalidate {
for (NSInteger i = 0; i < self.observers.count; i++) {
FirebaseQueryObserver *observer = self.observers[i];
FUIQueryObserver *observer = self.observers[i];
[observer removeAllObservers];
}
_observers = nil;
Expand All @@ -107,7 +107,7 @@ - (void)dealloc {

#pragma mark - FirebaseArrayDelegate

- (void)observer:(FirebaseQueryObserver *)obs
- (void)observer:(FUIQueryObserver *)obs
didFinishLoadWithSnap:(FIRDataSnapshot *)snap
error:(NSError *)error {
// Need to look up location in array to account for possible moves
Expand All @@ -129,10 +129,10 @@ - (void)array:(FUIArray *)array
didAddObject:(FIRDataSnapshot *)object
atIndex:(NSUInteger)index {
NSParameterAssert([object.key isKindOfClass:[NSString class]]);
id<FIRDataObservable> query = [self.data child:object.key];
id<FUIDataObservable> query = [self.data child:object.key];
__weak typeof(self) wSelf = self;
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery:query
completion:^(FirebaseQueryObserver *observer,
FUIQueryObserver *obs = [FUIQueryObserver observerForQuery:query
completion:^(FUIQueryObserver *observer,
FIRDataSnapshot *snap,
NSError *error) {
[wSelf observer:observer didFinishLoadWithSnap:snap error:error];
Expand All @@ -149,7 +149,7 @@ - (void)array:(FUIArray *)array
fromIndex:(NSUInteger)fromIndex
toIndex:(NSUInteger)toIndex {
NSParameterAssert([object.key isKindOfClass:[NSString class]]);
FirebaseQueryObserver *obs = self.observers[fromIndex];
FUIQueryObserver *obs = self.observers[fromIndex];

[self.observers removeObjectAtIndex:fromIndex];
[self.observers insertObject:obs atIndex:toIndex];
Expand All @@ -169,9 +169,9 @@ - (void)array:(FUIArray *)array

// Add new observer
__weak typeof(self) wSelf = self;
id<FIRDataObservable> query = [self.data child:object.key];
FirebaseQueryObserver *obs = [FirebaseQueryObserver observerForQuery:query
completion:^(FirebaseQueryObserver *observer,
id<FUIDataObservable> query = [self.data child:object.key];
FUIQueryObserver *obs = [FUIQueryObserver observerForQuery:query
completion:^(FUIQueryObserver *observer,
FIRDataSnapshot *snap,
NSError *error) {
[wSelf observer:observer didFinishLoadWithSnap:snap error:error];
Expand All @@ -191,7 +191,7 @@ - (void)array:(FUIArray *)array

[self.observers removeObjectAtIndex:index];

id<FIRDataObservable> query = [self.data child:object.key];
id<FUIDataObservable> query = [self.data child:object.key];
if ([self.delegate respondsToSelector:@selector(array:didRemoveReference:atIndex:)]) {
[self.delegate array:self didRemoveReference:query atIndex:index];
}
Expand Down
Loading