+1 from me!
Is this feature possible yet? Would be nice for Supabase to just ignore all those unrelated columns in `data`.
Not yet. I haven't look into this in awhile as my app is not support this yet.
I ended up making an extension. Not sure if it good but it works. ```dart extension GoTrueClientEx on GoTrueClient { /// Safe OAuth sign-in that waits for the user to complete the flow, /// detects app return/cancel, and applies a timeout. Future<AuthResponse> safeSignInWithOAuth( OAuthProvider provider, { String? redirectTo, String? scopes, LaunchMode authScreenLaunchMode = LaunchMode.platformDefault, Map<String, String>? queryParams, Duration timeout = const Duration(minutes: 2), }) async { final completer = Completer<AuthResponse>(); // Listen for auth state changes final sub = onAuthStateChange.listen((ev) { final session = ev.session; if (session != null && !completer.isCompleted) { completer.complete(AuthResponse(session: session, user: session.user)); } }); // Lifecycle watcher to detect user returning without completing login final lifecycleWatcher = AppLifecycleListener( onResume: () { if (!completer.isCompleted) { completer.completeError(AuthException("User returned without completing ${provider.name} sign-in")); } }, ); // Start the OAuth flow await signInWithOAuth( provider, redirectTo: redirectTo, scopes: scopes, authScreenLaunchMode: authScreenLaunchMode, queryParams: queryParams, ); // Wait for the session or timeout final res = await completer.future.timeout(timeout, onTimeout: () { throw AuthException("${provider.name} sign-in timed out or cancelled"); }); // Cleanup sub.cancel(); lifecycleWatcher.dispose(); return res; } } ```