Add data layer for get Session
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user