diff --git a/creche_app/lib/main.dart b/creche_app/lib/main.dart deleted file mode 100644 index 98f6920..0000000 --- a/creche_app/lib/main.dart +++ /dev/null @@ -1,113 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:supabase_flutter/supabase_flutter.dart'; -import 'package:intl/date_symbol_data_local.dart'; -import 'package:app_links/app_links.dart'; -import 'core/routes.dart'; - -const _supabaseUrl = 'https://xeotegswjwmhkwvtuxgx.supabase.co'; -const _supabaseAnonKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inhlb3RlZ3N3andtaGt3dnR1eGd4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzIxODEwMjcsImV4cCI6MjA4Nzc1NzAyN30.PW6IQhpO8PRhPzA3ycPOgy_-Pqw9XQ0BCCE5ukPCcVM'; - -void main() async { - WidgetsFlutterBinding.ensureInitialized(); - await initializeDateFormatting('pt_PT', null); - - await Supabase.initialize( - url: _supabaseUrl, - anonKey: _supabaseAnonKey, - authOptions: const FlutterAuthClientOptions( - authFlowType: AuthFlowType.pkce, - ), - ); - - runApp(const ProviderScope(child: CrecheApp())); -} - -class CrecheApp extends ConsumerStatefulWidget { - const CrecheApp({super.key}); - @override - ConsumerState createState() => _CrecheAppState(); -} - -class _CrecheAppState extends ConsumerState { - final _appLinks = AppLinks(); - - @override - void initState() { - super.initState(); - _initDeepLinks(); - } - - Future _initDeepLinks() async { - try { - final initialUri = await _appLinks.getInitialLink(); - if (initialUri != null && _isAuthUri(initialUri)) { - await _handleDeepLink(initialUri); - } - } catch (_) {} - - _appLinks.uriLinkStream.listen( - (uri) { if (_isAuthUri(uri)) _handleDeepLink(uri); }, - onError: (_) {}, - ); - } - - bool _isAuthUri(Uri uri) { - final q = uri.queryParameters; - return q.containsKey('code') || - q.containsKey('access_token') || - q.containsKey('token_hash') || - uri.host == 'login-callback' || - uri.path.contains('login-callback'); - } - - Future _handleDeepLink(Uri uri) async { - try { - await Supabase.instance.client.auth.getSessionFromUrl(uri); - } catch (e) { - debugPrint('Deep link error: $e'); - } - } - - @override - Widget build(BuildContext context) { - final router = ref.watch(goRouterProvider); - return MaterialApp.router( - title: 'Diário do Candengue', - debugShowCheckedModeBanner: false, - routerConfig: router, - theme: ThemeData( - brightness: Brightness.dark, - scaffoldBackgroundColor: const Color(0xFF0D1117), - colorScheme: const ColorScheme.dark( - primary: Color(0xFF4FC3F7), - secondary: Color(0xFF2ECC71), - surface: Color(0xFF161B22), - error: Color(0xFFE74C3C), - ), - appBarTheme: const AppBarTheme( - backgroundColor: Color(0xFF161B22), - elevation: 0, - iconTheme: IconThemeData(color: Color(0xFF4FC3F7)), - titleTextStyle: TextStyle( - color: Color(0xFF4FC3F7), fontSize: 18, fontWeight: FontWeight.bold), - ), - bottomNavigationBarTheme: const BottomNavigationBarThemeData( - backgroundColor: Color(0xFF161B22), - selectedItemColor: Color(0xFF4FC3F7), - unselectedItemColor: Color(0xFF888888), - type: BottomNavigationBarType.fixed, - ), - inputDecorationTheme: InputDecorationTheme( - filled: true, - fillColor: Colors.white.withOpacity(0.04), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(12), - borderSide: BorderSide(color: Colors.white.withOpacity(0.09)), - ), - ), - useMaterial3: true, - ), - ); - } -}