Skip to content

Commit 3f905ee

Browse files
committed
use auth token provider for creating database
1 parent 9b6d124 commit 3f905ee

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

lib/src/database.dart

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,40 @@
1+
import 'dart:async';
2+
13
import 'package:firebase_admin/src/service.dart';
24

35
import '../firebase_admin.dart';
6+
import 'app/app.dart';
47
import 'app/app_extension.dart';
58
import 'app.dart';
69

710
import 'package:firebase_dart/standalone_database.dart';
811

12+
class _AuthTokenProvider implements AuthTokenProvider {
13+
final FirebaseAppInternals internals;
14+
15+
_AuthTokenProvider(this.internals);
16+
17+
@override
18+
Future<String?> getToken([bool forceRefresh = false]) async {
19+
print('getToken');
20+
print((await internals.getToken(forceRefresh)).accessToken);
21+
return (await internals.getToken(forceRefresh)).accessToken;
22+
}
23+
24+
@override
25+
Stream<String?> get onTokenChanged {
26+
var controller = StreamController<String?>();
27+
var listener = (v) => controller.add(v);
28+
29+
controller.onListen = () {
30+
internals.addAuthTokenListener(listener);
31+
};
32+
controller.onCancel = () => internals.removeAuthTokenListener(listener);
33+
34+
return controller.stream;
35+
}
36+
}
37+
938
/// Firebase Realtime Database service.
1039
class Database implements FirebaseService {
1140
final StandaloneFirebaseDatabase _database;
@@ -15,13 +44,10 @@ class Database implements FirebaseService {
1544

1645
/// Do not call this constructor directly. Instead, use app().database.
1746
Database(this.app)
18-
: _database = StandaloneFirebaseDatabase(app.options.databaseUrl ??
19-
'https://${app.projectId}.firebaseio.com/') {
20-
_database.authenticate(app.internals.getToken().then((v) => v.accessToken));
21-
22-
app.internals
23-
.addAuthTokenListener((token) => _database.authenticate(token));
24-
}
47+
: _database = StandaloneFirebaseDatabase(
48+
app.options.databaseUrl ??
49+
'https://${app.projectId}.firebaseio.com/',
50+
authTokenProvider: _AuthTokenProvider(app.internals));
2551

2652
/// Returns a [Reference] representing the location in the Database
2753
/// corresponding to the provided [path]. If no path is provided, the

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ dependencies:
1212
jose: ^0.3.2
1313
dotenv: ^3.0.0
1414
openid_client: ^0.4.3
15-
firebase_dart: ^1.0.0-dev.45
15+
firebase_dart: ^1.0.0-dev.49
1616
path: ^1.8.0
1717
meta: ^1.4.0
1818
http: ^0.13.0

0 commit comments

Comments
 (0)