Skip to content

Commit

Permalink
fix: conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucisokiu committed Feb 8, 2025
2 parents 31f21ef + a1d3c28 commit 989b93f
Show file tree
Hide file tree
Showing 35 changed files with 1,000 additions and 471 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 1.5.3

* [Fix] fix rear camera rotation on android
* [Sdk] refactor return type with exception

## 1.5.2

* [Feat] add white board
Expand Down
20 changes: 13 additions & 7 deletions lib/core/api/auth/datasources/auth_remote_datasource.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import 'package:waterbus_sdk/constants/api_enpoints.dart';
import 'package:waterbus_sdk/constants/http_status_code.dart';
import 'package:waterbus_sdk/core/api/auth/datasources/auth_local_datasource.dart';
import 'package:waterbus_sdk/core/api/base/base_remote_data.dart';
import 'package:waterbus_sdk/types/error/failures.dart';
import 'package:waterbus_sdk/types/models/auth_payload_model.dart';
import 'package:waterbus_sdk/types/models/user_model.dart';
import 'package:waterbus_sdk/types/result.dart';

abstract class AuthRemoteDataSource {
Future<(String?, String?)> refreshToken();
Future<User?> signInWithSocial(AuthPayloadModel authPayload);
Future<bool> logOut();
Future<Result<User>> signInWithSocial(AuthPayloadModel authPayload);
Future<Result<bool>> logOut();
}

@LazySingleton(as: AuthRemoteDataSource)
Expand All @@ -22,7 +24,7 @@ class AuthRemoteDataSourceImpl extends AuthRemoteDataSource {
AuthRemoteDataSourceImpl(this._baseRemoteData, this._localDataSource);

@override
Future<User?> signInWithSocial(AuthPayloadModel authPayload) async {
Future<Result<User>> signInWithSocial(AuthPayloadModel authPayload) async {
final Map<String, dynamic> body = authPayload.toMap();

final Response response = await _baseRemoteData.postRoute(
Expand All @@ -39,10 +41,10 @@ class AuthRemoteDataSourceImpl extends AuthRemoteDataSource {
refreshToken: refreshToken,
);

return User.fromMap(response.data['user']);
return Result.success(User.fromMap(response.data['user']));
}

return null;
return Result.failure(ServerFailure());
}

@override
Expand All @@ -61,11 +63,15 @@ class AuthRemoteDataSourceImpl extends AuthRemoteDataSource {
}

@override
Future<bool> logOut() async {
Future<Result<bool>> logOut() async {
final Response response = await _baseRemoteData.deleteRoute(
ApiEndpoints.auth,
);

return response.statusCode == StatusCode.noContent;
if (response.statusCode == StatusCode.noContent) {
return Result.success(true);
}

return Result.failure(ServerFailure());
}
}
29 changes: 17 additions & 12 deletions lib/core/api/auth/repositories/auth_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ import 'package:injectable/injectable.dart';

import 'package:waterbus_sdk/core/api/auth/datasources/auth_local_datasource.dart';
import 'package:waterbus_sdk/core/api/auth/datasources/auth_remote_datasource.dart';
import 'package:waterbus_sdk/types/error/failures.dart';
import 'package:waterbus_sdk/types/models/auth_payload_model.dart';
import 'package:waterbus_sdk/types/models/user_model.dart';
import 'package:waterbus_sdk/types/result.dart';

abstract class AuthRepository {
Future<bool> refreshToken();
Future<User?> loginWithSocial(AuthPayloadModel params);
Future<bool> logOut();
Future<Result<bool>> refreshToken();
Future<Result<User>> loginWithSocial(AuthPayloadModel params);
Future<Result<bool>> logOut();
}

@LazySingleton(as: AuthRepository)
Expand All @@ -19,33 +21,36 @@ class AuthRepositoryImpl extends AuthRepository {
AuthRepositoryImpl(this._localDataSource, this._remoteDataSource);

@override
Future<User?> loginWithSocial(AuthPayloadModel params) async {
final User? response = await _remoteDataSource.signInWithSocial(params);
Future<Result<User>> loginWithSocial(AuthPayloadModel params) async {
final Result<User> result =
await _remoteDataSource.signInWithSocial(params);

return response;
return result;
}

@override
Future<bool> refreshToken() async {
Future<Result<bool>> refreshToken() async {
final (String? accessToken, String? refreshToken) =
await _remoteDataSource.refreshToken();

if (accessToken == null || refreshToken == null) return false;
if (accessToken == null || refreshToken == null) {
return Result.failure(ServerFailure());
}

_localDataSource.saveTokens(
accessToken: accessToken,
refreshToken: refreshToken,
);

return true;
return Result.success(true);
}

@override
Future<bool> logOut() async {
final bool isSignedOut = await _remoteDataSource.logOut();
Future<Result<bool>> logOut() async {
final Result<bool> result = await _remoteDataSource.logOut();

_localDataSource.clearToken();

return isSignedOut;
return result;
}
}
8 changes: 4 additions & 4 deletions lib/core/api/base/dio_configuration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ class DioConfiguration {
await Rhttp.init();
final rhttpAdapter = await RhttpCompatibleClient.create(
settings: ClientSettings(
timeoutSettings:
TimeoutSettings(timeout: 10.seconds, connectTimeout: 10.seconds),
// timeout: 10.seconds,
// connectTimeout: 10.seconds,
timeoutSettings: TimeoutSettings(
timeout: 10.seconds,
connectTimeout: 10.seconds,
),
throwOnStatusCode: false,
),
);
Expand Down
94 changes: 60 additions & 34 deletions lib/core/api/chat/datasources/chat_remote_datasource.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,30 @@ import 'package:waterbus_sdk/constants/api_enpoints.dart';
import 'package:waterbus_sdk/constants/http_status_code.dart';
import 'package:waterbus_sdk/core/api/base/base_remote_data.dart';
import 'package:waterbus_sdk/flutter_waterbus_sdk.dart';
import 'package:waterbus_sdk/types/models/exceptions/exceptions.dart';
import 'package:waterbus_sdk/types/result.dart';
import 'package:waterbus_sdk/utils/encrypt/encrypt.dart';

abstract class ChatRemoteDataSource {
Future<List<Meeting>> getConversations({
Future<Result<List<Meeting>>> getConversations({
required int skip,
required int limit,
required int status,
});
Future<List<Meeting>> getArchivedConversations({
Future<Result<List<Meeting>>> getArchivedConversations({
required int skip,
required int limit,
});
Future<bool> deleteConversation({required int meetingId});
Future<Meeting?> archivedConversation({required int code});
Future<Meeting?> leaveConversation({required int code});
Future<Meeting?> addMember({required int code, required int userId});
Future<Meeting?> deleteMember({required int code, required int userId});
Future<Meeting?> acceptInvite({required int meetingId});
Future<bool> updateConversation({
Future<Result<bool>> deleteConversation({required int meetingId});
Future<Result<Meeting>> archivedConversation({required int code});
Future<Result<Meeting>> leaveConversation({required int code});
Future<Result<Meeting>> addMember({required int code, required int userId});
Future<Result<Meeting>> deleteMember({
required int code,
required int userId,
});
Future<Result<Meeting>> acceptInvite({required int meetingId});
Future<Result<bool>> updateConversation({
required Meeting meeting,
String? password,
});
Expand All @@ -39,7 +44,7 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
);

@override
Future<List<Meeting>> getConversations({
Future<Result<List<Meeting>>> getConversations({
required int skip,
required int limit,
required int status,
Expand All @@ -57,14 +62,14 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return await compute(_handleDecryptLastMessage, message);
return Result.success(await compute(_handleDecryptLastMessage, message));
}

return [];
return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<List<Meeting>> getArchivedConversations({
Future<Result<List<Meeting>>> getArchivedConversations({
required int skip,
required int limit,
}) async {
Expand All @@ -81,10 +86,10 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return await compute(_handleDecryptLastMessage, message);
return Result.success(await compute(_handleDecryptLastMessage, message));
}

return [];
return Result.failure(response.data['message'].toString().meetingException);
}

static Future<List<Meeting>> _handleDecryptLastMessage(
Expand Down Expand Up @@ -115,7 +120,7 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
}

@override
Future<bool> updateConversation({
Future<Result<bool>> updateConversation({
required Meeting meeting,
String? password,
}) async {
Expand All @@ -124,20 +129,28 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
meeting.toMapCreate(password: password),
);

return response.statusCode == StatusCode.ok;
if (response.statusCode == StatusCode.ok) {
return Result.success(true);
}

return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<bool> deleteConversation({required int meetingId}) async {
Future<Result<bool>> deleteConversation({required int meetingId}) async {
final response = await _remoteData.deleteRoute(
"${ApiEndpoints.chatsConversations}/$meetingId",
);

return [StatusCode.ok, StatusCode.created].contains(response.statusCode);
if ([StatusCode.ok, StatusCode.created].contains(response.statusCode)) {
return Result.success(true);
}

return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<Meeting?> leaveConversation({required int code}) async {
Future<Result<Meeting>> leaveConversation({required int code}) async {
final Response response = await _remoteData.deleteRoute(
'${ApiEndpoints.meetings}/$code',
);
Expand All @@ -148,14 +161,16 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return (await compute(_handleDecryptLastMessage, message)).first;
return Result.success(
(await compute(_handleDecryptLastMessage, message)).first,
);
}

return null;
return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<Meeting?> acceptInvite({required int meetingId}) async {
Future<Result<Meeting>> acceptInvite({required int meetingId}) async {
final Response response = await _remoteData.postRoute(
'${ApiEndpoints.acceptInvite}/$meetingId',
);
Expand All @@ -166,14 +181,19 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return (await compute(_handleDecryptLastMessage, message)).first;
return Result.success(
(await compute(_handleDecryptLastMessage, message)).first,
);
}

return null;
return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<Meeting?> addMember({required int code, required int userId}) async {
Future<Result<Meeting>> addMember({
required int code,
required int userId,
}) async {
final Response response = await _remoteData.postRoute(
'${ApiEndpoints.meetingMembers}/$code',
body: {"userId": userId},
Expand All @@ -185,14 +205,16 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return (await compute(_handleDecryptLastMessage, message)).first;
return Result.success(
(await compute(_handleDecryptLastMessage, message)).first,
);
}

return null;
return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<Meeting?> deleteMember({
Future<Result<Meeting>> deleteMember({
required int code,
required int userId,
}) async {
Expand All @@ -207,14 +229,16 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return (await compute(_handleDecryptLastMessage, message)).first;
return Result.success(
(await compute(_handleDecryptLastMessage, message)).first,
);
}

return null;
return Result.failure(response.data['message'].toString().meetingException);
}

@override
Future<Meeting?> archivedConversation({required int code}) async {
Future<Result<Meeting>> archivedConversation({required int code}) async {
final Response response = await _remoteData.postRoute(
'${ApiEndpoints.archivedMeeeting}/$code',
);
Expand All @@ -225,9 +249,11 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {
"key": WaterbusSdk.privateMessageKey,
};

return (await compute(_handleDecryptLastMessage, message)).first;
return Result.success(
(await compute(_handleDecryptLastMessage, message)).first,
);
}

return null;
return Result.failure(response.data['message'].toString().meetingException);
}
}
Loading

0 comments on commit 989b93f

Please sign in to comment.