Skip to content

Commit 5e6e0c9

Browse files
committed
feat: add logging to supabase package
1 parent 3575ac3 commit 5e6e0c9

File tree

8 files changed

+31
-2
lines changed

8 files changed

+31
-2
lines changed

packages/gotrue/lib/src/gotrue_client.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import 'package:logging/logging.dart';
1818

1919
import 'broadcast_stub.dart' if (dart.library.html) './broadcast_web.dart'
2020
as web;
21+
import 'version.dart';
2122

2223
part 'gotrue_mfa_api.dart';
2324

@@ -111,7 +112,7 @@ class GoTrueClient {
111112
_autoRefreshToken = autoRefreshToken ?? true;
112113

113114
_log.config(
114-
'GoTrueClient initialized with url: $_url, autoRefreshToken: $_autoRefreshToken, flowType: $_flowType, tickDuration: ${Constants.autoRefreshTickDuration}, tickThreshold: ${Constants.autoRefreshTickThreshold}');
115+
'Initialize GoTrueClient v$version with url: $_url, autoRefreshToken: $_autoRefreshToken, flowType: $_flowType, tickDuration: ${Constants.autoRefreshTickDuration}, tickThreshold: ${Constants.autoRefreshTickThreshold}');
115116

116117
final gotrueUrl = url ?? Constants.defaultGotrueUrl;
117118
final gotrueHeader = {
@@ -626,6 +627,7 @@ class GoTrueClient {
626627
_log.warning("Can't refresh session, no current session found.");
627628
throw AuthSessionMissingException();
628629
}
630+
_log.info('Refresh session');
629631

630632
final currentSessionRefreshToken =
631633
refreshToken ?? _currentSession?.refreshToken;

packages/supabase/lib/src/auth_user.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:gotrue/gotrue.dart' show User;
22

3+
@Deprecated('No longer used. May be removed in the future.')
34
class AuthUser extends User {
45
AuthUser({
56
required super.id,

packages/supabase/lib/src/remove_subscription_result.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:supabase/src/supabase_realtime_error.dart';
22

3+
@Deprecated("No longer used. May be removed in the future.")
34
class RemoveSubscriptionResult {
45
const RemoveSubscriptionResult({required this.openSubscriptions, this.error});
56
final int openSubscriptions;

packages/supabase/lib/src/supabase_client.dart

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import 'dart:async';
22

33
import 'package:http/http.dart';
4+
import 'package:logging/logging.dart';
45
import 'package:supabase/src/constants.dart';
6+
import 'package:supabase/src/version.dart';
57
import 'package:supabase/supabase.dart';
68
import 'package:yet_another_json_isolate/yet_another_json_isolate.dart';
79

@@ -66,6 +68,8 @@ class SupabaseClient {
6668
/// Increment ID of the stream to create different realtime topic for each stream
6769
final _incrementId = Counter();
6870

71+
final _log = Logger('supabase.supabase');
72+
6973
/// Getter for the HTTP headers
7074
Map<String, String> get headers {
7175
return _headers;
@@ -145,7 +149,12 @@ class SupabaseClient {
145149
storage = _initStorageClient(storageOptions.retryAttempts);
146150
realtime = _initRealtimeClient(options: realtimeClientOptions);
147151
if (accessToken == null) {
152+
_log.config(
153+
'Initialize SupabaseClient v$version with no custom access token');
148154
_listenForAuthEvents();
155+
} else {
156+
_log.config(
157+
'Initialize SupabaseClient v$version with custom access token');
149158
}
150159
}
151160

@@ -223,6 +232,8 @@ class SupabaseClient {
223232
return realtime.removeAllChannels();
224233
}
225234

235+
/// Get either the custom access token from [accessToken] or the supabase one
236+
/// from [_authInstance]
226237
Future<String?> _getAccessToken() async {
227238
if (accessToken != null) {
228239
return await accessToken!();
@@ -231,14 +242,19 @@ class SupabaseClient {
231242
if (_authInstance.currentSession?.isExpired ?? false) {
232243
try {
233244
await _authInstance.refreshSession();
234-
} catch (error) {
245+
} catch (error, stackTrace) {
235246
final expiresAt = _authInstance.currentSession?.expiresAt;
236247
if (expiresAt != null) {
237248
// Failed to refresh the token.
238249
final isExpiredWithoutMargin = DateTime.now()
239250
.isAfter(DateTime.fromMillisecondsSinceEpoch(expiresAt * 1000));
240251
if (isExpiredWithoutMargin) {
241252
// Throw the error instead of making an API request with an expired token.
253+
_log.warning(
254+
'Access token is expired and refreshing failed, aborting api request',
255+
error,
256+
stackTrace,
257+
);
242258
rethrow;
243259
}
244260
}
@@ -248,6 +264,7 @@ class SupabaseClient {
248264
}
249265

250266
Future<void> dispose() async {
267+
_log.fine('Dispose SupabaseClient');
251268
await _authStateSubscription?.cancel();
252269
await _isolate.dispose();
253270
auth.dispose();

packages/supabase/lib/src/supabase_event_types.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
@Deprecated('No longer used. May be removed in the future.')
12
enum SupabaseEventTypes { insert, update, delete, all, broadcast, presence }
23

4+
// ignore: deprecated_member_use_from_same_package
35
extension SupabaseEventTypesName on SupabaseEventTypes {
46
String name() {
57
final name = toString().split('.').last;

packages/supabase/lib/src/supabase_realtime_error.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@Deprecated('No longer used. May be removed in the future.')
12
class SupabaseRealtimeError extends Error {
23
/// Creates an Unsubscribe error with the provided [message].
34
SupabaseRealtimeError([this.message]);

packages/supabase/lib/src/supabase_stream_builder.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:async';
22

3+
import 'package:logging/logging.dart';
34
import 'package:rxdart/rxdart.dart';
45
import 'package:supabase/supabase.dart';
56

@@ -49,6 +50,8 @@ class SupabaseStreamBuilder extends Stream<SupabaseStreamEvent> {
4950
/// Used to identify which row has changed
5051
final List<String> _uniqueColumns;
5152

53+
final _log = Logger('supabase.supabase');
54+
5255
/// StreamController for `stream()` method.
5356
BehaviorSubject<SupabaseStreamEvent>? _streamController;
5457

@@ -129,6 +132,7 @@ class SupabaseStreamBuilder extends Stream<SupabaseStreamEvent> {
129132
_getStreamData();
130133
},
131134
onCancel: () {
135+
_log.fine('stream controller for table: $_table got closed');
132136
_channel?.unsubscribe();
133137
_streamController?.close();
134138
_streamController = null;

packages/supabase/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ dependencies:
1717
storage_client: 2.0.3
1818
rxdart: '>=0.27.5 <0.29.0'
1919
yet_another_json_isolate: 2.0.2
20+
logging: ^1.2.0
2021

2122
dev_dependencies:
2223
lints: ^3.0.0

0 commit comments

Comments
 (0)