Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions uber_admin_panel/.devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "Flutter",
"image": "mcr.microsoft.com/devcontainers/universal:1",
"features": {
"ghcr.io/devcontainers-contrib/features/flutter:1": {}
}
}
18 changes: 12 additions & 6 deletions uber_admin_panel/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:uber_admin_panel/dashboard/side_navigation_drawer.dart';
import 'package:uber_admin_panel/firebase_options.dart';
import 'package:uber_admin_panel/provider/driver_provider.dart';
import 'package:uber_admin_panel/provider/user_provider.dart';

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);

// Inicjalizacja Supabase w panelu Admina
await Supabase.initialize(
url: 'https://qyeiobftphsguzkqmrjg.supabase.co',
anonKey: 'sb_publishable_34WqntGUX_3RsOy2_xwoBQ_mOwgbW7M',
);

runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MultiProvider(
Expand All @@ -27,10 +33,10 @@ class MyApp extends StatelessWidget {
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Uber Admin Panel',
theme: ThemeData(primarySwatch: Colors.pink),
title: 'Panel Administratora Taxi',
theme: ThemeData(primarySwatch: Colors.deepPurple),
home: const SideNavigationDrawer(),
),
);
}
}
}
95 changes: 23 additions & 72 deletions uber_drivers_app/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:uber_drivers_app/pages/auth/register_screen.dart';
import 'package:uber_drivers_app/pages/dashboard.dart';
import 'package:uber_drivers_app/providers/auth_provider.dart';
Expand All @@ -12,19 +11,30 @@ import 'package:uber_drivers_app/providers/trips_provider.dart';
import 'package:uber_drivers_app/widgets/blocked_screen.dart';

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();

// Inicjalizacja Twojej bazy danych Supabase
await Supabase.initialize(
url: 'https://qyeiobftphsguzkqmrjg.supabase.co',
anonKey: 'sb_publishable_34WqntGUX_3RsOy2_xwoBQ_mOwgbW7M',
);

// Sprawdzanie uprawnień do lokalizacji
await Permission.locationWhenInUse.isDenied.then((valueOfPermission) {
if (valueOfPermission) {
Permission.locationWhenInUse.request();
}
});

// Sprawdzanie uprawnień do powiadomień
await Permission.notification.isDenied.then((valueOfPermission) {
if (valueOfPermission) {
Permission.notification.request();
}
});

runApp(const MyApp());
}

Expand All @@ -50,7 +60,7 @@ class MyApp extends StatelessWidget {
],
child: MaterialApp(
navigatorKey: navigatorKey,
title: 'Uber Drivers App',
title: 'Moja Taxi App',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
Expand All @@ -67,74 +77,15 @@ class AuthCheck extends StatelessWidget {

@override
Widget build(BuildContext context) {
// Access the AuthenticationProvider via Provider
final authProvider =
Provider.of<AuthenticationProvider>(context, listen: false);

return FutureBuilder<User?>(
future: FirebaseAuth.instance
.authStateChanges()
.first, // Check if Firebase user exists
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(
color: Colors.black,
),
),
); // Show loading indicator
}
// Sprawdzamy czy użytkownik jest zalogowany w Supabase
final session = Supabase.instance.client.auth.currentSession;

// If user is not logged in, navigate to RegisterScreen
if (!snapshot.hasData || snapshot.data == null) {
return const RegisterScreen();
}

// If user is logged in, first check if the driver is blocked
return FutureBuilder<bool>(
future: authProvider
.checkIfDriverIsBlocked(), // Check if the driver is blocked
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(
color: Colors.black,
),
),
);
}

if (snapshot.hasData && snapshot.data == true) {
// If the driver is blocked, show an appropriate message
return const BlockedScreen();
}
// If the driver is not blocked, check for profile completeness
return FutureBuilder<bool>(
future: authProvider
.checkDriverFieldsFilled(), // Check if the profile fields are filled
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(
color: Colors.black,
)));
}
// Jeśli użytkownik nie jest zalogowany, przechodzimy do ekranu rejestracji
if (session == null) {
return const RegisterScreen();
}

if (snapshot.hasData && snapshot.data == true) {
// If profile is complete, navigate to the dashboard
return const Dashboard();
} else {
// If profile is incomplete, navigate to the registration screen
return const RegisterScreen();
}
},
);
},
);
},
);
// Jeśli jest zalogowany, przechodzimy do głównego pulpitu
return const Dashboard();
}
}
}
131 changes: 48 additions & 83 deletions uber_users_app/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,27 +1,40 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:uber_users_app/appInfo/app_info.dart';
import 'package:uber_users_app/appInfo/auth_provider.dart';
import 'package:uber_users_app/authentication/register_screen.dart';
import 'package:uber_users_app/global/global_var.dart';
import 'package:uber_users_app/pages/blocked_screen.dart';
import 'package:uber_users_app/pages/home_page.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:uber_drivers_app/pages/auth/register_screen.dart';
import 'package:uber_drivers_app/pages/dashboard.dart';
import 'package:uber_drivers_app/providers/auth_provider.dart';
import 'package:uber_drivers_app/providers/dashboard_provider.dart';
import 'package:uber_drivers_app/providers/registration_provider.dart';
import 'package:uber_drivers_app/providers/trips_provider.dart';
import 'package:uber_drivers_app/widgets/blocked_screen.dart';

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

late Size mq;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
Stripe.publishableKey = stripePublishedKey;
await Firebase.initializeApp();

// Inicjalizacja Twojej bazy danych Supabase
await Supabase.initialize(
url: 'https://qyeiobftphsguzkqmrjg.supabase.co',
anonKey: 'sb_publishable_34WqntGUX_3RsOy2_xwoBQ_mOwgbW7M',
);

// Sprawdzanie uprawnień do lokalizacji---------
await Permission.locationWhenInUse.isDenied.then((valueOfPermission) {
if (valueOfPermission) {
Permission.locationWhenInUse.request();
}
});

// Sprawdzanie uprawnień do powiadomień
await Permission.notification.isDenied.then((valueOfPermission) {
if (valueOfPermission) {
Permission.notification.request();
}
});

runApp(const MyApp());
}

Expand All @@ -32,11 +45,22 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => AppInfoClass()),
ChangeNotifierProvider(create: (_) => AuthenticationProvider())
ChangeNotifierProvider(
create: (_) => DashboardProvider(),
),
ChangeNotifierProvider(
create: (_) => AuthenticationProvider(),
),
ChangeNotifierProvider(
create: (_) => RegistrationProvider(),
),
ChangeNotifierProvider(
create: (_) => TripProvider(),
),
],
child: MaterialApp(
title: 'Uber User App',
navigatorKey: navigatorKey,
title: 'Moja Taxi App',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
Expand All @@ -53,74 +77,15 @@ class AuthCheck extends StatelessWidget {

@override
Widget build(BuildContext context) {
// Access the AuthenticationProvider via Provider
final authProvider =
Provider.of<AuthenticationProvider>(context, listen: false);

return FutureBuilder<User?>(
future: FirebaseAuth.instance
.authStateChanges()
.first, // Check if Firebase user exists
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
); // Show loading indicator
}

// If user is not logged in, navigate to RegisterScreen
if (!snapshot.hasData || snapshot.data == null) {
return const RegisterScreen();
}
// Sprawdzamy czy użytkownik jest zalogowany w Supabase
final session = Supabase.instance.client.auth.currentSession;

// If user is logged in, first check if the driver is blocked
return FutureBuilder<bool>(
future: authProvider
.checkIfUserIsBlocked(), // Check if the driver is blocked
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const SafeArea(
child: Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
),
);
}

if (snapshot.hasData && snapshot.data == true) {
// If the driver is blocked, show an appropriate message
return const BlockedScreen();
}
// If the driver is not blocked, check for profile completeness
return FutureBuilder<bool>(
future: authProvider
.checkUserFieldsFilled(), // Check if the profile fields are filled
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const SafeArea(
child: Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
),
);
}
// Jeśli użytkownik nie jest zalogowany, przechodzimy do ekranu rejestracji
if (session == null) {
return const RegisterScreen();
}

if (snapshot.hasData && snapshot.data == true) {
// If profile is complete, navigate to the dashboard
return const HomePage();
} else {
// If profile is incomplete, navigate to the registration screen
return const RegisterScreen();
}
},
);
},
);
},
);
// Jeśli jest zalogowany, przechodzimy do głównego pulpitu
return const Dashboard();
}
}
}