Add data layer for get Session

This commit is contained in:
dab246
2021-07-29 18:26:06 +07:00
committed by Dat H. Pham
parent c8dee51927
commit 59da162655
4 changed files with 61 additions and 0 deletions
@@ -0,0 +1,5 @@
import 'package:jmap_dart_client/jmap/core/session/session.dart';
abstract class SessionDataSource {
Future<Session> getSession();
}
@@ -0,0 +1,19 @@
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/features/session/data/datasource/session_datasource.dart';
import 'package:tmail_ui_user/features/session/data/network/session_api.dart';
class SessionDataSourceImpl extends SessionDataSource {
final SessionAPI sessionAPI;
SessionDataSourceImpl(this.sessionAPI);
@override
Future<Session> getSession() {
return Future.sync(() async {
return await sessionAPI.getSession();
}).catchError((error) {
throw error;
});
}
}
@@ -0,0 +1,22 @@
import 'dart:async';
import 'package:jmap_dart_client/http/http_client.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
import 'package:jmap_dart_client/jmap/core/session/get_session.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
class SessionAPI {
final HttpClient httpClient;
SessionAPI(this.httpClient);
Future<Session> getSession({Map<CapabilityIdentifier, CapabilityProperties Function(Map<String, dynamic>)>? converters}) async {
final getSessionBuilder = GetSessionBuilder(httpClient);
final result = await getSessionBuilder.build().execute();
return result;
}
}
@@ -0,0 +1,15 @@
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/features/session/data/datasource/session_datasource.dart';
import 'package:tmail_ui_user/features/session/domain/repository/session_repository.dart';
class SessionRepositoryImpl extends SessionRepository {
final SessionDataSource sessionDataSource;
SessionRepositoryImpl(this.sessionDataSource);
@override
Future<Session> getSession() {
return sessionDataSource.getSession();
}
}