- 자동 로그인 구현: 앱 시작 시 토큰 확인 후 적절한 화면으로 라우팅 - AuthInterceptor 개선: AuthService와 통합하여 토큰 관리 일원화 - 로그아웃 기능 개선: AuthService를 사용한 API 로그아웃 처리 - 대시보드 API 연동: MockDataService에서 실제 API로 완전 전환 - Dashboard DTO 모델 생성 (OverviewStats, RecentActivity 등) - DashboardRemoteDataSource 및 DashboardService 구현 - OverviewController를 ChangeNotifier 패턴으로 개선 - OverviewScreenRedesign에 Provider 패턴 적용 - API 통합 진행 상황 문서 업데이트
42 lines
1.7 KiB
Dart
42 lines
1.7 KiB
Dart
import 'package:dartz/dartz.dart';
|
|
import 'package:injectable/injectable.dart';
|
|
import 'package:superport/core/errors/failures.dart';
|
|
import 'package:superport/data/datasources/remote/dashboard_remote_datasource.dart';
|
|
import 'package:superport/data/models/dashboard/equipment_status_distribution.dart';
|
|
import 'package:superport/data/models/dashboard/expiring_license.dart';
|
|
import 'package:superport/data/models/dashboard/overview_stats.dart';
|
|
import 'package:superport/data/models/dashboard/recent_activity.dart';
|
|
|
|
abstract class DashboardService {
|
|
Future<Either<Failure, OverviewStats>> getOverviewStats();
|
|
Future<Either<Failure, List<RecentActivity>>> getRecentActivities();
|
|
Future<Either<Failure, EquipmentStatusDistribution>> getEquipmentStatusDistribution();
|
|
Future<Either<Failure, List<ExpiringLicense>>> getExpiringLicenses({int days = 30});
|
|
}
|
|
|
|
@LazySingleton(as: DashboardService)
|
|
class DashboardServiceImpl implements DashboardService {
|
|
final DashboardRemoteDataSource _remoteDataSource;
|
|
|
|
DashboardServiceImpl(this._remoteDataSource);
|
|
|
|
@override
|
|
Future<Either<Failure, OverviewStats>> getOverviewStats() async {
|
|
return await _remoteDataSource.getOverviewStats();
|
|
}
|
|
|
|
@override
|
|
Future<Either<Failure, List<RecentActivity>>> getRecentActivities() async {
|
|
return await _remoteDataSource.getRecentActivities();
|
|
}
|
|
|
|
@override
|
|
Future<Either<Failure, EquipmentStatusDistribution>> getEquipmentStatusDistribution() async {
|
|
return await _remoteDataSource.getEquipmentStatusDistribution();
|
|
}
|
|
|
|
@override
|
|
Future<Either<Failure, List<ExpiringLicense>>> getExpiringLicenses({int days = 30}) async {
|
|
return await _remoteDataSource.getExpiringLicenses(days: days);
|
|
}
|
|
} |