Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 16037fb

Browse files
fix(database, web): more explicit interop types (#17823)
* fix(database, web): more explicit interop types * fix: interop types * fix: format
1 parent 64986b1 commit 16037fb

File tree

5 files changed

+26
-67
lines changed

5 files changed

+26
-67
lines changed

‎packages/firebase_database/firebase_database_web/lib/src/interop/data_snapshot_interop.dart‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@
44

55
part of 'database_interop.dart';
66

7-
@JS('DataSnapshot')
8-
@staticInterop
9-
@anonymous
10-
abstract class DataSnapshotJsImpl {}
11-
12-
extension DataSnapshotJsImpl$ on DataSnapshotJsImpl {
7+
extension type DataSnapshotJsImpl._(JSObject _) implements JSObject {
138
external JSString? get key;
149

1510
external JSAny? /* JSString | num | null*/ get priority;

‎packages/firebase_database/firebase_database_web/lib/src/interop/database.dart‎

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ class Database
7878
/// can be used for reading or writing data to that database location.
7979
///
8080
/// See: <https://firebase.google.com/docs/reference/js/firebase.database.Reference>.
81-
class DatabaseReference<T extends database_interop.ReferenceJsImpl>
82-
extends Query<T> {
81+
class DatabaseReference extends Query<database_interop.ReferenceJsImpl> {
8382
static final _expando = Expando<DatabaseReference>();
8483

8584
/// The last part of the current path.
@@ -204,11 +203,9 @@ class DatabaseReference<T extends database_interop.ReferenceJsImpl>
204203
applyLocally: applyLocally.toJS),
205204
)
206205
.toDart;
207-
final castedJsTransaction =
208-
jsTransactionResult as database_interop.TransactionResultJsImpl;
209206
return Transaction(
210-
committed: (castedJsTransaction.committed).toDart,
211-
snapshot: DataSnapshot._fromJsObject(castedJsTransaction.snapshot),
207+
committed: (jsTransactionResult.committed).toDart,
208+
snapshot: DataSnapshot._fromJsObject(jsTransactionResult.snapshot),
212209
);
213210
} catch (e, s) {
214211
throw convertFirebaseDatabaseException(e, s);
@@ -317,8 +314,7 @@ class Query<T extends database_interop.QueryJsImpl> extends JsObjectWrapper<T> {
317314
final jsSnapshotPromise = database_interop.get(jsObject);
318315
final snapshot = await jsSnapshotPromise.toDart;
319316

320-
return DataSnapshot.getInstance(
321-
snapshot as database_interop.DataSnapshotJsImpl);
317+
return DataSnapshot.getInstance(snapshot);
322318
}
323319

324320
/// Returns a Query with the ending point [value]. The ending point
@@ -674,18 +670,18 @@ class OnDisconnect
674670
/// [Future] property.
675671
///
676672
/// See: <https://firebase.google.com/docs/reference/js/firebase.database.ThenableReference>.
677-
class ThenableReference
678-
extendsDatabaseReference<database_interop.ThenableReferenceJsImpl> {
679-
latefinalFuture<DatabaseReference> _future =jsObject
680-
.then(((database_interop.ReferenceJsImpl reference) {
681-
DatabaseReference.getInstance(reference);
682-
}).toJS)
683-
.toDart
684-
.then((value) => value as DatabaseReference);
673+
class ThenableReferenceextendsDatabaseReference {
674+
latefinalFuture<DatabaseReference> _future =
675+
(jsObjectas database_interop.ThenableReferenceJsImpl)
676+
.then(((database_interop.ReferenceJsImpl reference) {
677+
DatabaseReference.getInstance(reference);
678+
}).toJS)
679+
.toDart
680+
.then((value) => value as DatabaseReference);
685681

686682
/// Creates a new ThenableReference from a [jsObject].
687683
ThenableReference.fromJsObject(
688-
super.jsObject,
684+
database_interop.ThenableReferenceJsImplsuper.jsObject,
689685
) : super._fromJsObject();
690686

691687
/// A Future property.

‎packages/firebase_database/firebase_database_web/lib/src/interop/database_interop.dart‎

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ external void forceWebSockets();
5050

5151
@JS()
5252
@staticInterop
53-
external JSPromise/*DataSnapshotJsImpl*/ get(QueryJsImpl query);
53+
external JSPromise<DataSnapshotJsImpl> get(QueryJsImpl query);
5454

5555
@JS()
5656
@staticInterop
@@ -164,13 +164,13 @@ external ReferenceJsImpl refFromURL(
164164

165165
@JS()
166166
@staticInterop
167-
external JSPromise remove(
167+
external JSPromise<ReferenceJsImpl> remove(
168168
ReferenceJsImpl ref,
169169
);
170170

171171
@JS()
172172
@staticInterop
173-
external JSPromise/*<TransactionResultJsImpl>*/ runTransaction(
173+
external JSPromise<TransactionResultJsImpl> runTransaction(
174174
ReferenceJsImpl ref,
175175
JSFunction transactionUpdate,
176176
// Function(JSAny currentData) transactionUpdate,
@@ -220,29 +220,17 @@ abstract class ServerValue {
220220
external static JSAny get TIMESTAMP;
221221
}
222222

223-
@JS('Database')
224-
@staticInterop
225-
abstract class DatabaseJsImpl {}
226-
227-
extension DatabaseJsImplExtension on DatabaseJsImpl {
223+
extension type DatabaseJsImpl._(JSObject _) implements JSObject {
228224
external AppJsImpl get app;
229225
external set app(AppJsImpl a);
230226
external JSString get type;
231227
}
232228

233-
@JS('QueryConstraint')
234-
@staticInterop
235-
abstract class QueryConstraintJsImpl {}
236-
237-
extension QueryConstraintJsImplExtension on QueryConstraintJsImpl {
229+
extension type QueryConstraintJsImpl._(JSObject _) implements JSObject {
238230
external JSString get type;
239231
}
240232

241-
@JS('OnDisconnect')
242-
@staticInterop
243-
abstract class OnDisconnectJsImpl {}
244-
245-
extension OnDisconnectJsImplExtension on OnDisconnectJsImpl {
233+
extension type OnDisconnectJsImpl._(JSObject _) implements JSObject {
246234
external JSPromise cancel([
247235
JSFunction onComplete,
248236
//void Function(JSAny) onComplete
@@ -269,11 +257,8 @@ extension OnDisconnectJsImplExtension on OnDisconnectJsImpl {
269257
);
270258
}
271259

272-
@JS('ThenableReference')
273-
@staticInterop
274-
abstract class ThenableReferenceJsImpl extends ReferenceJsImpl {}
275-
276-
extension ThenableReferenceJsImplExtension on ThenableReferenceJsImpl {
260+
extension type ThenableReferenceJsImpl._(JSObject _)
261+
implements JSObject, ReferenceJsImpl {
277262
external JSPromise then([JSFunction? onResolve, JSFunction? onReject]);
278263
}
279264

@@ -302,12 +287,7 @@ abstract class ListenOptions {
302287
external static JSBoolean get onlyOnce;
303288
}
304289

305-
@JS()
306-
@staticInterop
307-
@anonymous
308-
abstract class FirebaseError {}
309-
310-
extension FirebaseErrorExtension on FirebaseError {
290+
extension type FirebaseError._(JSObject _) implements JSObject {
311291
external JSString get code;
312292
external JSString get message;
313293
external JSString get name;

‎packages/firebase_database/firebase_database_web/lib/src/interop/query_interop.dart‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@
44

55
part of 'database_interop.dart';
66

7-
@JS('Query')
8-
@staticInterop
9-
abstract class QueryJsImpl {}
10-
11-
extension ExtensionQueryJsImpl on QueryJsImpl {
7+
extension type QueryJsImpl._(JSObject _) implements JSObject {
128
external ReferenceJsImpl get ref;
139

1410
external JSBoolean isEqual(QueryJsImpl other);

‎packages/firebase_database/firebase_database_web/lib/src/interop/reference_interop.dart‎

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,13 @@
44

55
part of 'database_interop.dart';
66

7-
@JS('TransactionResult')
8-
@staticInterop
9-
abstract class TransactionResultJsImpl {}
10-
11-
extension TransactionResultJsImplExtension on TransactionResultJsImpl {
7+
extension type TransactionResultJsImpl._(JSObject _) implements JSObject {
128
external JSObject toJSON();
139
external JSBoolean get committed;
1410
external DataSnapshotJsImpl get snapshot;
1511
}
1612

17-
@JS('DatabaseReference')
18-
@staticInterop
19-
abstract class ReferenceJsImpl extends QueryJsImpl {}
20-
21-
extension ReferenceJsImplExtension on ReferenceJsImpl {
13+
extension type ReferenceJsImpl._(JSObject _) implements JSObject, QueryJsImpl {
2214
external JSString? get key;
2315

2416
external ReferenceJsImpl? get parent;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /