Skip to content

Commit

Permalink
fix: automatically take care of starting and ending deeplink observer
Browse files Browse the repository at this point in the history
  • Loading branch information
dshukertjr committed Jun 16, 2022
1 parent 93f630a commit debb82f
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions lib/src/supabase_auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ import 'package:url_launcher/url_launcher.dart';

/// SupabaseAuth
class SupabaseAuth with WidgetsBindingObserver {
SupabaseAuth._() {
WidgetsBinding.instance?.addObserver(this);
}
SupabaseAuth._();
static final SupabaseAuth _instance = SupabaseAuth._();

bool _initialized = false;
Expand Down Expand Up @@ -97,6 +95,8 @@ class SupabaseAuth with WidgetsBindingObserver {
}
}
}
WidgetsBinding.instance?.addObserver(_instance);
_instance._startDeeplinkObserver();

return _instance;
}
Expand All @@ -105,7 +105,7 @@ class SupabaseAuth with WidgetsBindingObserver {
void dispose() {
_listenerController.close();
_authSubscription?.data?.unsubscribe();
stopDeeplinkObserver();
_stopDeeplinkObserver();
WidgetsBinding.instance?.removeObserver(this);
}

Expand Down Expand Up @@ -185,7 +185,7 @@ class SupabaseAuth with WidgetsBindingObserver {
/// **ATTENTION**: `getInitialLink`/`getInitialUri` should be handled
/// ONLY ONCE in your app's lifetime, since it is not meant to change
/// throughout your app's life.
bool shouldHandleInitialDeeplink() {
bool get shouldHandleInitialDeeplink {
if (_initialDeeplinkIsHandled) {
return false;
} else {
Expand All @@ -204,7 +204,7 @@ class SupabaseAuth with WidgetsBindingObserver {
}

/// Enable deep link observer to handle deep links
void startDeeplinkObserver() {
void _startDeeplinkObserver() {
Supabase.instance.log('***** SupabaseDeepLinkingMixin startAuthObserver');
_handleIncomingLinks();
_handleInitialUri();
Expand All @@ -213,7 +213,7 @@ class SupabaseAuth with WidgetsBindingObserver {
/// Stop deep link observer
///
/// Automatically called on dispose().
void stopDeeplinkObserver() {
void _stopDeeplinkObserver() {
Supabase.instance.log('***** SupabaseDeepLinkingMixin stopAuthObserver');
if (_deeplinkSubscription != null) _deeplinkSubscription?.cancel();
}
Expand Down Expand Up @@ -245,7 +245,7 @@ class SupabaseAuth with WidgetsBindingObserver {
///
/// We handle all exceptions, since it is called from initState.
Future<void> _handleInitialUri() async {
if (!SupabaseAuth.instance.shouldHandleInitialDeeplink()) return;
if (!shouldHandleInitialDeeplink) return;

try {
final uri = await getInitialUri();
Expand All @@ -261,7 +261,7 @@ class SupabaseAuth with WidgetsBindingObserver {

/// Callback when deeplink receiving succeeds
Future<bool> _handleDeeplink(Uri uri) async {
if (!SupabaseAuth.instance.isAuthCallbackDeeplink(uri)) return false;
if (!_instance.isAuthCallbackDeeplink(uri)) return false;

Supabase.instance.log('***** SupabaseAuthState handleDeeplink $uri');

Expand Down

0 comments on commit debb82f

Please sign in to comment.