Fix local dev config and ALOTTTT OFF FLUTTER, im tired boss..
This commit is contained in:
@@ -2,56 +2,82 @@ import 'package:get_it/get_it.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import '../core/constants/app_constants.dart';
|
||||
import '../core/ai/obstacle_alert_strategy.dart';
|
||||
import '../core/ai/obstacle_analyzer.dart';
|
||||
import '../core/ai/yolo_detector.dart';
|
||||
import '../core/network/api_client.dart';
|
||||
import '../core/services/haptic_service.dart';
|
||||
import '../core/services/call_service.dart';
|
||||
import '../core/services/fcm_service.dart';
|
||||
import '../core/services/hardware_shortcut_listener.dart';
|
||||
import '../core/services/location_reporter_service.dart';
|
||||
import '../core/services/offline_queue_service.dart';
|
||||
import '../core/services/stt_service.dart';
|
||||
import '../core/services/tts_service.dart';
|
||||
import '../core/services/voice_command_handler.dart';
|
||||
import '../core/services/websocket_service.dart';
|
||||
import '../core/storage/local_database.dart';
|
||||
import '../core/storage/secure_storage.dart';
|
||||
import '../core/utils/init_guard.dart';
|
||||
import '../features/notifications/application/notification_cubit.dart';
|
||||
import '../features/notifications/data/repositories/notification_repository_impl.dart';
|
||||
import '../features/notifications/domain/repositories/notification_repository.dart';
|
||||
import '../features/sos/application/sos_cubit.dart';
|
||||
import '../features/sos/data/repositories/sos_repository_impl.dart';
|
||||
import '../features/sos/domain/repositories/sos_repository.dart';
|
||||
import '../features/walk_guide/application/walk_guide_cubit.dart';
|
||||
import '../features/walk_guide/data/repositories/walk_guide_repository_impl.dart';
|
||||
import '../features/walk_guide/domain/repositories/walk_guide_repository.dart';
|
||||
|
||||
final sl = GetIt.instance;
|
||||
|
||||
Future<void> initDependencies() async {
|
||||
sl.registerLazySingleton<SecureStorage>(() => SecureStorage());
|
||||
sl.registerLazySingleton<LocalDatabase>(() => LocalDatabase());
|
||||
sl.registerLazySingleton<ApiClient>(() => ApiClient(sl<SecureStorage>()));
|
||||
sl.registerLazySingleton<TtsService>(() => TtsService());
|
||||
sl.registerLazySingleton<SttService>(() => SttService());
|
||||
sl.registerLazySingleton<HapticService>(() => HapticService());
|
||||
sl.registerLazySingleton<ObstacleAlertStrategy>(
|
||||
() => TtsWithHapticObstacleAlertStrategy(sl<TtsService>(), sl<HapticService>()),
|
||||
);
|
||||
sl.registerLazySingleton<ObstacleAnalyzer>(() => ObstacleAnalyzer());
|
||||
sl.registerLazySingleton<YoloDetector>(() => YoloDetector(sl<ObstacleAnalyzer>()));
|
||||
sl.registerLazySingleton<OfflineQueueService>(() => OfflineQueueService());
|
||||
sl.registerLazySingleton<OfflineQueueService>(
|
||||
() => OfflineQueueService(sl<LocalDatabase>()),
|
||||
);
|
||||
sl.registerLazySingleton<FcmService>(() => FcmService(sl<ApiClient>()));
|
||||
sl.registerLazySingleton<WebSocketService>(() => WebSocketService(sl<SecureStorage>()));
|
||||
sl.registerLazySingleton<LocationReporterService>(() => LocationReporterService(sl<ApiClient>(), sl<OfflineQueueService>()));
|
||||
sl.registerLazySingleton<CallService>(() => CallService(sl<ApiClient>()));
|
||||
sl.registerLazySingleton<HardwareShortcutListener>(
|
||||
() => HardwareShortcutListener(sl<ApiClient>()),
|
||||
);
|
||||
sl.registerLazySingleton<VoiceCommandHandler>(
|
||||
() => VoiceCommandHandler(sl<SttService>(), sl<TtsService>()),
|
||||
);
|
||||
sl.registerLazySingleton<WalkGuideRepository>(
|
||||
() => WalkGuideRepositoryImpl(sl<ApiClient>(), sl<OfflineQueueService>()),
|
||||
);
|
||||
sl.registerFactory<WalkGuideCubit>(() => WalkGuideCubit(sl<WalkGuideRepository>()));
|
||||
sl.registerLazySingleton<SosRepository>(() => SosRepositoryImpl(sl<ApiClient>()));
|
||||
sl.registerFactory<SosCubit>(() => SosCubit(sl<SosRepository>()));
|
||||
sl.registerLazySingleton<NotificationRepository>(
|
||||
() => NotificationRepositoryImpl(sl<ApiClient>(), sl<LocalDatabase>()),
|
||||
);
|
||||
sl.registerFactory<NotificationCubit>(
|
||||
() => NotificationCubit(sl<NotificationRepository>()),
|
||||
);
|
||||
|
||||
final serverUrl = await AppConstants.getServerUrl();
|
||||
if (serverUrl != null && serverUrl.isNotEmpty) {
|
||||
await sl<ApiClient>().init(serverUrl);
|
||||
}
|
||||
|
||||
try {
|
||||
await sl<TtsService>().init();
|
||||
} catch (e) {
|
||||
debugPrint('TTS init skipped: $e');
|
||||
}
|
||||
await ignoreInitFailure(() => sl<TtsService>().init(), label: 'TTS init');
|
||||
await sl<YoloDetector>().init();
|
||||
if (!kIsWeb) {
|
||||
try {
|
||||
await sl<SttService>().init();
|
||||
} catch (e) {
|
||||
debugPrint('STT init skipped: $e');
|
||||
}
|
||||
await ignoreInitFailure(() => sl<SttService>().init(), label: 'STT init');
|
||||
}
|
||||
sl<VoiceCommandHandler>().loadDefaultCommands();
|
||||
if (!kIsWeb) {
|
||||
|
||||
@@ -1,34 +1,42 @@
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../app/injection_container.dart';
|
||||
import '../core/constants/app_constants.dart';
|
||||
import '../features/activity_log/activity_log_screen.dart' as activity;
|
||||
import '../features/ai_benchmark/ai_benchmark_screen.dart' as benchmark;
|
||||
import '../core/storage/secure_storage.dart';
|
||||
import '../features/activity_log/presentation/screens/activity_log_screen.dart'
|
||||
as activity;
|
||||
import '../features/ai_benchmark/presentation/screens/ai_benchmark_screen.dart'
|
||||
as benchmark;
|
||||
import '../features/auth/login_screen.dart' as auth_login;
|
||||
import '../features/auth/register_screen.dart' as auth_register;
|
||||
import '../features/auth/splash_screen.dart' as auth_splash;
|
||||
import '../features/call/call_screen.dart' as call;
|
||||
import '../features/guardian_dashboard/guardian_activity_log_screen.dart'
|
||||
import '../features/call/presentation/screens/call_screen.dart' as call;
|
||||
import '../features/guardian_dashboard/presentation/screens/guardian_activity_log_screen.dart'
|
||||
as guardian_logs;
|
||||
import '../features/guardian_dashboard/guardian_ai_config_screen.dart'
|
||||
import '../features/guardian_dashboard/presentation/screens/guardian_ai_config_screen.dart'
|
||||
as guardian_ai;
|
||||
import '../features/guardian_dashboard/guardian_map_screen.dart'
|
||||
import '../features/guardian_dashboard/presentation/screens/guardian_map_screen.dart'
|
||||
as guardian_map;
|
||||
import '../features/guardian_dashboard/guardian_send_notification_screen.dart'
|
||||
import '../features/guardian_dashboard/presentation/screens/guardian_send_notification_screen.dart'
|
||||
as guardian_send;
|
||||
import '../features/guardian_dashboard/guardian_settings_screen.dart'
|
||||
import '../features/guardian_dashboard/presentation/screens/guardian_settings_screen.dart'
|
||||
as guardian_settings;
|
||||
import '../features/guardian_dashboard/guardian_tools_screen.dart'
|
||||
import '../features/guardian_dashboard/presentation/screens/guardian_tools_screen.dart'
|
||||
as guardian_tools;
|
||||
import '../features/home/presentation/guardian_dashboard_screen.dart'
|
||||
as guardian_home;
|
||||
import '../features/navigation_mode/navigation_mode_screen.dart' as nav;
|
||||
import '../features/notifications/notification_screen.dart' as notifications;
|
||||
import '../features/pairing/pairing_screens.dart' as pairing;
|
||||
import '../features/navigation_mode/presentation/screens/navigation_mode_screen.dart'
|
||||
as nav;
|
||||
import '../features/notifications/presentation/screens/notification_screen.dart'
|
||||
as notifications;
|
||||
import '../features/pairing/presentation/screens/pairing_screens.dart' as pairing;
|
||||
import '../features/server_connect/server_connect_server.dart'
|
||||
as server_connect;
|
||||
import '../features/settings/user_settings_screen.dart' as user_settings;
|
||||
import '../features/sos/sos_screen.dart' as sos;
|
||||
import '../features/walk_guide/walk_guide_screen.dart' as walk_guide;
|
||||
import '../features/settings/presentation/screens/user_settings_screen.dart'
|
||||
as user_settings;
|
||||
import '../features/sos/presentation/screens/sos_screen.dart' as sos;
|
||||
import '../features/walk_guide/presentation/screens/walk_guide_screen.dart'
|
||||
as walk_guide;
|
||||
import '../shared/widgets/app_shells.dart';
|
||||
|
||||
final GoRouter appRouter = GoRouter(
|
||||
@@ -36,6 +44,10 @@ final GoRouter appRouter = GoRouter(
|
||||
redirect: (context, state) async {
|
||||
final path = state.matchedLocation;
|
||||
final serverUrl = await AppConstants.getServerUrl();
|
||||
final isPublicRoute = path == '/server-connect' ||
|
||||
path == '/splash' ||
|
||||
path == '/login' ||
|
||||
path == '/register';
|
||||
|
||||
if ((serverUrl == null || serverUrl.isEmpty) && path != '/server-connect') {
|
||||
return '/server-connect';
|
||||
@@ -45,6 +57,31 @@ final GoRouter appRouter = GoRouter(
|
||||
serverUrl.isNotEmpty) {
|
||||
return '/splash';
|
||||
}
|
||||
if (serverUrl == null || serverUrl.isEmpty) return null;
|
||||
|
||||
final storage = sl<SecureStorage>();
|
||||
final token = await storage.getAccessToken();
|
||||
final role = await storage.getUserRole();
|
||||
|
||||
if ((token == null || token.isEmpty) && !isPublicRoute) {
|
||||
return '/login';
|
||||
}
|
||||
if (token != null && token.isNotEmpty) {
|
||||
final home = role == 'ROLE_GUARDIAN'
|
||||
? '/guardian/dashboard'
|
||||
: role == 'ROLE_USER'
|
||||
? '/user/walkguide'
|
||||
: '/login';
|
||||
if (path == '/splash' || path == '/login' || path == '/register') {
|
||||
return home;
|
||||
}
|
||||
if (path.startsWith('/guardian') && role != 'ROLE_GUARDIAN') {
|
||||
return '/user/walkguide';
|
||||
}
|
||||
if (path.startsWith('/user') && role != 'ROLE_USER') {
|
||||
return '/guardian/dashboard';
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
routes: [
|
||||
|
||||
Reference in New Issue
Block a user