Skip to content

Commit c6d8f8b

Browse files
committed
fix(database, web): more explicit interop types
1 parent be12eed commit c6d8f8b

File tree

4 files changed

+20
-58
lines changed

4 files changed

+20
-58
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_interop.dart

Lines changed: 16 additions & 37 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,
@@ -183,16 +183,16 @@ external JSAny serverTimestamp();
183183

184184
@JS()
185185
@staticInterop
186-
external JSPromise set(ReferenceJsImpl ref, JSAny? value);
186+
external JSPromise<ReferenceJsImpl> set(ReferenceJsImpl ref, JSAny? value);
187187

188188
@JS()
189189
@staticInterop
190-
external JSPromise setPriority(
190+
external JSPromise<ReferenceJsImpl> setPriority(
191191
ReferenceJsImpl ref, /* JSString | JSNumber | null */ JSAny? priority);
192192

193193
@JS()
194194
@staticInterop
195-
external JSPromise setWithPriority(ReferenceJsImpl ref, JSAny? value,
195+
external JSPromise<ReferenceJsImpl> setWithPriority(ReferenceJsImpl ref, JSAny? value,
196196
/* JSString | JSNumber | null */ JSAny? priority);
197197

198198
@JS()
@@ -220,60 +220,44 @@ 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 {
246-
external JSPromise cancel([
233+
extension type OnDisconnectJsImpl._(JSObject _) implements JSObject {
234+
external JSPromise<ReferenceJsImpl> cancel([
247235
JSFunction onComplete,
248236
//void Function(JSAny) onComplete
249237
]);
250238

251-
external JSPromise remove([
239+
external JSPromise<ReferenceJsImpl> remove([
252240
JSFunction onComplete,
253241
//void Function(JSAny) onComplete
254242
]);
255243

256-
external JSPromise set(
244+
external JSPromise<ReferenceJsImpl> set(
257245
JSAny? value, [
258246
JSFunction onComplete,
259247
//void Function(JSAny) onComplete
260248
]);
261249

262-
external JSPromise setWithPriority(
250+
external JSPromise<ReferenceJsImpl> setWithPriority(
263251
JSAny? value,
264252
JSAny? priority,
265253
);
266254

267-
external JSPromise update(
255+
external JSPromise<ReferenceJsImpl> update(
268256
JSAny? values,
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 _) implements JSObject {
277261
external JSPromise then([JSFunction? onResolve, JSFunction? onReject]);
278262
}
279263

@@ -302,12 +286,7 @@ abstract class ListenOptions {
302286
external static JSBoolean get onlyOnce;
303287
}
304288

305-
@JS()
306-
@staticInterop
307-
@anonymous
308-
abstract class FirebaseError {}
309-
310-
extension FirebaseErrorExtension on FirebaseError {
289+
extension type FirebaseError._(JSObject _) implements JSObject {
311290
external JSString get code;
312291
external JSString get message;
313292
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 {
2214
external JSString? get key;
2315

2416
external ReferenceJsImpl? get parent;

0 commit comments

Comments
 (0)