Настройки, авторизация

This commit is contained in:
Халимов Рустам
2026-05-14 12:06:34 +03:00
parent e8161d23d4
commit ccffc5a53c
41 changed files with 2556 additions and 1375 deletions
@@ -3,6 +3,12 @@ import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../core/network/api_client.dart';
import '../../features/auth/data/datasources/auth_local_datasource.dart';
import '../../features/auth/data/datasources/auth_local_datasource_impl.dart';
import '../../features/auth/data/datasources/auth_remote_datasource.dart';
import '../../features/auth/data/datasources/auth_remote_datasource_impl.dart';
import '../../features/auth/data/repositories/auth_repository_impl.dart';
import '../../features/auth/domain/repositories/auth_repository.dart';
import '../../features/auth/presentation/bloc/auth_bloc.dart';
import '../../features/chat/presentation/bloc/chat_bloc.dart';
import '../../features/settings/data/datasources/settings_local_datasource.dart';
@@ -25,7 +31,15 @@ Future<void> initDependencies() async {
// Core - Dio (with dynamic base URL from settings)
sl.registerLazySingleton<Dio>(() {
final apiUrl = prefs.getString('api_url') ?? 'https://api.messenger.app';
final prefs = sl<SharedPreferences>();
var apiUrl = prefs.getString('api_url') ?? 'https://api.messenger.app';
// Нормализуем URL: убираем /api в конце если есть
apiUrl = apiUrl.replaceAll(RegExp(r'/+$'), '');
if (apiUrl.endsWith('/api')) {
apiUrl = apiUrl.substring(0, apiUrl.length - 4).replaceAll(RegExp(r'/+$'), '');
}
return Dio(BaseOptions(
baseUrl: apiUrl,
connectTimeout: const Duration(seconds: 30),
@@ -46,7 +60,19 @@ Future<void> initDependencies() async {
sl.registerFactory<SettingsBloc>(() => SettingsBloc(sl()));
// Auth
sl.registerFactory<AuthBloc>(() => AuthBloc());
sl.registerLazySingleton<AuthLocalDataSource>(
() => AuthLocalDataSourceImpl(sl()),
);
sl.registerLazySingleton<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImpl(sl()),
);
sl.registerLazySingleton<AuthRepository>(
() => AuthRepositoryImpl(
remoteDataSource: sl(),
localDataSource: sl(),
),
);
sl.registerFactory<AuthBloc>(() => AuthBloc(authRepository: sl()));
// Chat
sl.registerFactory<ChatBloc>(() => ChatBloc());