Skip to content

Commit 2244a7b

Browse files
committed
Support startAfter for firebase query
1 parent bcd7e58 commit 2244a7b

3 files changed

Lines changed: 58 additions & 2 deletions

File tree

crossfire/lib/src/crossfire_base.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ abstract class FirebaseCollection {
4646
bool isNull,
4747
});
4848
FirebaseQuery orderBy(String field, {bool descending: false});
49+
FirebaseQuery startAfter({
50+
FirebaseDocument snapshot,
51+
List fieldValues,
52+
});
4953
}
5054

5155
abstract class FirebaseQuerySnapshot {
@@ -89,6 +93,10 @@ abstract class FirebaseQuery {
8993
});
9094
FirebaseQuery orderBy(String field, {bool descending: false});
9195
FirebaseQuery limit(int length);
96+
FirebaseQuery startAfter({
97+
FirebaseDocument snapshot,
98+
List fieldValues,
99+
});
92100
}
93101

94102
enum FireDocumentChangeType {

crossfire_flutter/lib/crossfire_flutter.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,12 @@ class FlutterFirebaseCollection implements FirebaseCollection {
196196
var q = collection.orderBy(field, descending: descending);
197197
return new FlutterFirebaseQuery(q);
198198
}
199+
200+
@override
201+
FirebaseQuery startAfter({FirebaseDocument snapshot, List fieldValues}) {
202+
final q = collection.startAfter(fieldValues);
203+
return FlutterFirebaseQuery(q);
204+
}
199205
}
200206

201207
class FlutterFirebaseQuery implements FirebaseQuery {
@@ -237,6 +243,12 @@ class FlutterFirebaseQuery implements FirebaseQuery {
237243
var snapshot = await _ref.getDocuments();
238244
return new FlutterFirebaseQuerySnapshot(snapshot);
239245
}
246+
247+
@override
248+
FirebaseQuery startAfter({FirebaseDocument snapshot, List fieldValues}) {
249+
final q = _ref.startAfter(fieldValues);
250+
return FlutterFirebaseQuery(q);
251+
}
240252
}
241253

242254
class FlutterFirebaseQuerySnapshot implements FirebaseQuerySnapshot {

crossfire_web/lib/crossfire_web.dart

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,12 @@ class FirebaseWeb implements Firebase {
3737
if (usePersistence != null && usePersistence) {
3838
try {
3939
_store.enablePersistence();
40-
} catch(e) {
40+
} catch (e) {
4141
// Support re-initializing with a different app. Enabling persistence
4242
// can throw an error if it has already been enabled once on the page.
4343
}
4444
}
4545
_storage = fb.storage(app);
46-
4746
}
4847

4948
@override
@@ -180,6 +179,25 @@ class BrowserFirebaseCollection implements FirebaseCollection {
180179
var q = _collection.where(field, op, value);
181180
return new BrowserFirebaseQuery(q);
182181
}
182+
183+
@override
184+
FirebaseQuery startAfter({
185+
FirebaseDocument snapshot,
186+
List fieldValues,
187+
}) {
188+
DocumentSnapshot snap;
189+
190+
if (snapshot != null) {
191+
final doc = snapshot as BrowserDocumentSnapshot;
192+
snap = doc._snapshot;
193+
}
194+
195+
final q = _collection.startAfter(
196+
snapshot: snap,
197+
fieldValues: fieldValues,
198+
);
199+
return BrowserFirebaseQuery(q);
200+
}
183201
}
184202

185203
class BrowserDocumentSnapshot implements FirebaseDocument {
@@ -321,4 +339,22 @@ class BrowserFirebaseQuery extends FirebaseQuery {
321339
var q = _ref.where(field, op, value);
322340
return new BrowserFirebaseQuery(q);
323341
}
342+
343+
@override
344+
FirebaseQuery startAfter({
345+
FirebaseDocument snapshot,
346+
List fieldValues,
347+
}) {
348+
DocumentSnapshot snap;
349+
if (snapshot != null) {
350+
final doc = snapshot as BrowserDocumentSnapshot;
351+
snap = doc._snapshot;
352+
}
353+
354+
final q = _ref.startAfter(
355+
snapshot: snap,
356+
fieldValues: fieldValues,
357+
);
358+
return BrowserFirebaseQuery(q);
359+
}
324360
}

0 commit comments

Comments
 (0)