Skip to content

Commit f520345

Browse files
authored
Merge branch 'main' into guilherme/clibs-120-supabase-flutter-send-standard-client-headers-on-all
2 parents 548e480 + 6a86752 commit f520345

File tree

22 files changed

+1346
-92
lines changed

22 files changed

+1346
-92
lines changed

.github/workflows/supabase_flutter.yml

+11-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
fail-fast: false
3535
matrix:
3636
os: [ubuntu-latest]
37-
flutter-version: ['3.10.x', '3.x']
37+
flutter-version: ['3.19.x', '3.x']
3838

3939
defaults:
4040
run:
@@ -60,16 +60,24 @@ jobs:
6060
melos bootstrap
6161
6262
- name: flutterfmt
63-
if: ${{ matrix.sdk == '3.x'}}
63+
if: ${{ matrix.flutter-version == '3.x'}}
6464
run: dart format lib test -l 80 --set-exit-if-changed
6565

6666
- name: analyzer
67-
if: ${{ matrix.sdk == '3.x'}}
67+
if: ${{ matrix.flutter-version == '3.x'}}
6868
run: flutter analyze --fatal-warnings --fatal-infos .
6969

7070
- name: Run tests
7171
run: flutter test --concurrency=1
7272

73+
- name: Run tests on chrome with js
74+
if: ${{ matrix.flutter-version == '3.x'}}
75+
run: flutter test --platform chrome
76+
77+
- name: Run tests on chrome with wasm
78+
if: ${{ matrix.flutter-version == '3.x'}}
79+
run: flutter test --platform chrome --wasm
80+
7381
- name: Run tests with downgraded app_links
7482
run: |
7583
flutter pub downgrade app_links

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,5 @@ packages/**/pubspec.lock
7878
!**/ios/**/default.mode2v3
7979
!**/ios/**/default.pbxuser
8080
!**/ios/**/default.perspectivev3
81+
82+
/packages/*/coverage

packages/functions_client/lib/src/types.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class FunctionResponse {
2626
});
2727
}
2828

29-
class FunctionException {
29+
class FunctionException implements Exception {
3030
final int status;
3131
final dynamic details;
3232
final String? reasonPhrase;

packages/gotrue/lib/src/broadcast_stub.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// coverage:ignore-file
12
import 'package:gotrue/src/types/types.dart';
23

34
/// Stub implementation of [BroadcastChannel] for platforms that don't support it.
+22-13
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,37 @@
1+
import 'dart:async';
12
import 'dart:convert';
2-
import 'dart:html' as html;
3-
import 'dart:js_util' as js_util;
3+
import 'dart:js_interop';
44

55
import 'package:gotrue/src/types/types.dart';
66
import 'package:logging/logging.dart';
7+
import 'package:web/web.dart' as web;
78

89
final _log = Logger('supabase.auth');
910

1011
BroadcastChannel getBroadcastChannel(String broadcastKey) {
11-
final broadcast = html.BroadcastChannel(broadcastKey);
12-
return (
13-
onMessage: broadcast.onMessage.map((event) {
14-
final dataMap = js_util.dartify(event.data);
12+
final broadcast = web.BroadcastChannel(broadcastKey);
13+
final controller = StreamController<Map<String, dynamic>>();
14+
15+
broadcast.addEventListener(
16+
'message',
17+
(web.Event event) {
18+
if (event is web.MessageEvent) {
19+
final dataMap = event.data.dartify();
20+
controller.add(json.decode(json.encode(dataMap)));
21+
}
22+
} as web.EventListener,
23+
);
1524

16-
// some parts have the wrong map type. This is an easy workaround and
17-
// should be efficient enough for the small session and user data
18-
return json.decode(json.encode(dataMap));
19-
}),
25+
return (
26+
onMessage: controller.stream,
2027
postMessage: (message) {
2128
_log.finest('Broadcasting message: $message');
2229
_log.fine('Broadcasting event: ${message['event']}');
23-
final jsMessage = js_util.jsify(message);
24-
broadcast.postMessage(jsMessage);
30+
broadcast.postMessage(message.jsify() as JSAny);
31+
},
32+
close: () {
33+
broadcast.close();
34+
controller.close();
2535
},
26-
close: broadcast.close,
2736
);
2837
}

packages/gotrue/lib/src/gotrue_client.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import 'package:gotrue/src/types/auth_response.dart';
1111
import 'package:gotrue/src/types/fetch_options.dart';
1212
import 'package:http/http.dart';
1313
import 'package:jwt_decode/jwt_decode.dart';
14+
import 'package:logging/logging.dart';
1415
import 'package:meta/meta.dart';
1516
import 'package:retry/retry.dart';
1617
import 'package:rxdart/subjects.dart';
17-
import 'package:logging/logging.dart';
1818

19-
import 'broadcast_stub.dart' if (dart.library.html) './broadcast_web.dart'
19+
import 'broadcast_stub.dart' if (dart.library.js_interop) './broadcast_web.dart'
2020
as web;
2121
import 'version.dart';
2222

@@ -363,8 +363,8 @@ class GoTrueClient {
363363
),
364364
);
365365

366-
await _asyncStorage!
367-
.removeItem(key: '${Constants.defaultStorageKey}-code-verifier');
366+
await _asyncStorage.removeItem(
367+
key: '${Constants.defaultStorageKey}-code-verifier');
368368

369369
final authSessionUrlResponse = AuthSessionUrlResponse(
370370
session: Session.fromJson(response)!, redirectType: redirectType?.name);
@@ -1163,7 +1163,7 @@ class GoTrueClient {
11631163
}
11641164

11651165
void _mayStartBroadcastChannel() {
1166-
if (const bool.fromEnvironment('dart.library.html')) {
1166+
if (const bool.fromEnvironment('dart.library.js_interop')) {
11671167
// Used by the js library as well
11681168
final broadcastKey =
11691169
"sb-${Uri.parse(_url).host.split(".").first}-auth-token";

packages/gotrue/lib/src/types/auth_state.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class AuthState {
55
final AuthChangeEvent event;
66
final Session? session;
77

8-
/// Whether this state was broadcasted via `html.ChannelBroadcast` on web from
8+
/// Whether this state was broadcasted via `web.BroadcastChannel` on web from
99
/// another tab or window.
1010
final bool fromBroadcast;
1111

packages/gotrue/pubspec.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ repository: 'https://github.com/supabase/supabase-flutter/tree/main/packages/got
66
documentation: 'https://supabase.com/docs/reference/dart/auth-signup'
77

88
environment:
9-
sdk: '>=3.0.0 <4.0.0'
9+
sdk: '>=3.3.0 <4.0.0'
1010

1111
dependencies:
1212
collection: ^1.15.0
@@ -17,6 +17,7 @@ dependencies:
1717
rxdart: '>=0.27.7 <0.29.0'
1818
meta: ^1.7.0
1919
logging: ^1.2.0
20+
web: '>=0.5.0 <2.0.0'
2021

2122
dev_dependencies:
2223
dart_jsonwebtoken: ^2.4.1

0 commit comments

Comments
 (0)