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