Skip to content

Refactor: Initial base url #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions lib/core/api/auth/repositories/auth_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ import 'package:injectable/injectable.dart';

import 'package:waterbus_sdk/core/api/auth/datasources/auth_local_data_source.dart';
import 'package:waterbus_sdk/core/api/auth/datasources/auth_remote_data_source.dart';
import 'package:waterbus_sdk/types/error/failures.dart';
import 'package:waterbus_sdk/types/externals/models/index.dart';
import 'package:waterbus_sdk/types/result.dart';
import 'package:waterbus_sdk/flutter_waterbus_sdk.dart';

abstract class AuthRepository {
Future<Result<bool>> renewToken();
Expand Down
8 changes: 4 additions & 4 deletions lib/core/api/base/base_remote_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class BaseRemoteData {

Dio dio = Dio(
BaseOptions(
baseUrl: WaterbusSdk.apiUrl,
baseUrl: WaterbusSdk.baseUrl.baseUrlApi,
connectTimeout: 10.seconds,
receiveTimeout: 10.seconds,
sendTimeout: 10.seconds,
Expand Down Expand Up @@ -146,7 +146,7 @@ class BaseRemoteData {
'Connection': 'keep-alive',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'X-API-Key': WaterbusSdk.apiKey,
'X-API-Key': WaterbusSdk.baseUrl.apiKey,
},
);
}
Expand All @@ -167,14 +167,14 @@ class BaseRemoteData {
'Connection': 'keep-alive',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'X-API-Key': WaterbusSdk.apiKey,
'X-API-Key': WaterbusSdk.baseUrl.apiKey,
};
}

initialize() async {
dio = Dio(
BaseOptions(
baseUrl: WaterbusSdk.apiUrl,
baseUrl: WaterbusSdk.baseUrl.baseUrlApi,
connectTimeout: 10.seconds,
receiveTimeout: 10.seconds,
sendTimeout: 10.seconds,
Expand Down
5 changes: 2 additions & 3 deletions lib/core/api/chat/datasources/chat_remote_data_source.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,8 @@ class ChatRemoteDataSourceImpl extends ChatRemoteDataSource {

if ([StatusCode.ok, StatusCode.created].contains(response.statusCode)) {
final Map<String, dynamic> message = {
"conversations": (response.data['rooms'] as List)
.map((room) => Room.fromJson(room))
.toList(),
"conversations":
(response.data as List).map((room) => Room.fromJson(room)).toList(),
"key": WaterbusSdk.messageEncryptionKey,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import 'package:waterbus_sdk/constants/status_code.dart';
import 'package:waterbus_sdk/core/api/base/base_remote_data.dart';
import 'package:waterbus_sdk/types/error/app_exception.dart';
import 'package:waterbus_sdk/types/externals/models/index.dart';
import 'package:waterbus_sdk/types/internals/models/create_room_params.dart';
import 'package:waterbus_sdk/types/result.dart';

abstract class RoomRemoteDataSource {
Expand Down
1 change: 0 additions & 1 deletion lib/core/api/rooms/repositories/room_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'package:injectable/injectable.dart';

import 'package:waterbus_sdk/core/api/rooms/datasources/room_remote_data_source.dart';
import 'package:waterbus_sdk/types/externals/models/index.dart';
import 'package:waterbus_sdk/types/internals/models/create_room_params.dart';
import 'package:waterbus_sdk/types/result.dart';

abstract class RoomRepository {
Expand Down
2 changes: 1 addition & 1 deletion lib/core/websocket/ws_handler_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class WsHandlerImpl extends WsHandler {
},
).build();

_socket = io(WaterbusSdk.wsUrl, options);
_socket = io(WaterbusSdk.baseUrl.url, options);

_socket?.connect();

Expand Down
49 changes: 10 additions & 39 deletions lib/flutter_waterbus_sdk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@ export 'package:flutter_webrtc_plus/flutter_webrtc_plus.dart';
export 'package:rhttp/rhttp.dart';

class WaterbusSdk {
static String apiUrl = '';
static String wsUrl = '';
static BaseUrl baseUrl = BaseUrl(url: "", suffixUrl: "");
static String messageEncryptionKey = '';
static String webrtcE2eeKey = 'waterbus';
static String? apiKey;

static HttpVersionPref httpVersionPref = HttpVersionPref.all;
static WaterbusEventListener listener = WaterbusEventListener();

Expand All @@ -41,18 +40,14 @@ class WaterbusSdk {
}

Future<void> initializeApp({
required String wsUrl,
required String apiUrl,
String? apiKey,
required BaseUrl baseUrl,

/// Encryption message will be disabled if the key is empty
String messageEncryptionKey = '',
String webrtcE2eeKey = '',
HttpVersionPref httpVersionPref = HttpVersionPref.all,
}) async {
WaterbusSdk.wsUrl = wsUrl;
WaterbusSdk.apiUrl = apiUrl;
WaterbusSdk.apiKey = apiKey;
WaterbusSdk.baseUrl = baseUrl;
WaterbusSdk.messageEncryptionKey = messageEncryptionKey;
WaterbusSdk.webrtcE2eeKey = webrtcE2eeKey;
WaterbusSdk.httpVersionPref = httpVersionPref;
Expand All @@ -72,40 +67,16 @@ class WaterbusSdk {
}

// Rooms
Future<Result<Room>> createRoom({
required Room room,
required String password,
required int? userId,
}) async {
return await _sdk.createRoom(
room: room,
password: password,
userId: userId,
);
Future<Result<Room>> createRoom({required RoomParams params}) async {
return await _sdk.createRoom(params: params);
}

Future<Result<Room>> joinRoom({
required Room room,
required String password,
required int? userId,
}) async {
return await _sdk.joinRoom(
room: room,
password: password,
userId: userId,
);
Future<Result<Room>> joinRoom({required RoomParams params}) async {
return await _sdk.joinRoom(params: params);
}

Future<Result<bool>> updateRoom({
required Room room,
required String password,
required int? userId,
}) async {
return await _sdk.updateRoom(
room: room,
password: password,
userId: userId,
);
Future<Result<bool>> updateRoom({required RoomParams params}) async {
return await _sdk.updateRoom(params: params);
}

Future<Result<Room>> getRoomInfo({required String code}) async {
Expand Down
9 changes: 9 additions & 0 deletions lib/types/externals/models/base_url.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class BaseUrl {
final String url;
final String suffixUrl;
String? apiKey;

BaseUrl({required this.url, required this.suffixUrl, this.apiKey});

String get baseUrlApi => url + suffixUrl;
}
2 changes: 2 additions & 0 deletions lib/types/externals/models/index.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ export 'subscribe_payload.dart';
export 'video_config.dart';
export 'video_quality.dart';
export 'presigned_url.dart';
export 'base_url.dart';
export 'room_params.dart';
1 change: 0 additions & 1 deletion lib/types/internals/models/index.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ export 'audio_stats_params.dart';
export 'rtc_participant_stats.dart';
export 'subscribe_response.dart';
export 'video_stats_params.dart';
export 'create_room_params.dart';
export 'publish_ws_emitter_payload.dart';
export 'participant_screen_sharing_config.dart';
export 'participant_e2ee_config.dart';
38 changes: 6 additions & 32 deletions lib/waterbus_sdk_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -60,31 +60,15 @@ class SdkCore extends WaterbusSdkInterface {

// Room
@override
Future<Result<Room>> createRoom({
required Room room,
required String password,
required int? userId,
}) async {
return await _roomRepository.createRoom(
RoomParams(
room: room,
password: password,
userId: userId,
),
);
Future<Result<Room>> createRoom({required RoomParams params}) async {
return await _roomRepository.createRoom(params);
}

@override
Future<Result<Room>> joinRoom({
required Room room,
required String? password,
required int? userId,
}) async {
Future<Result<Room>> joinRoom({required RoomParams params}) async {
if (!_wsHandler.isConnected) return Result.failure(ServerFailure());

final Result<Room> roomCurrent = await _roomRepository.joinRoom(
RoomParams(room: room, password: password ?? "", userId: userId),
);
final Result<Room> roomCurrent = await _roomRepository.joinRoom(params);

if (roomCurrent.isSuccess) {
final Room? room = roomCurrent.value;
Expand Down Expand Up @@ -118,18 +102,8 @@ class SdkCore extends WaterbusSdkInterface {
}

@override
Future<Result<bool>> updateRoom({
required Room room,
required String password,
required int? userId,
}) async {
return await _roomRepository.updateRoom(
RoomParams(
room: room,
password: password,
userId: userId,
),
);
Future<Result<bool>> updateRoom({required RoomParams params}) async {
return await _roomRepository.updateRoom(params);
}

@override
Expand Down
18 changes: 3 additions & 15 deletions lib/waterbus_sdk_interface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,21 +61,9 @@ abstract class WaterbusSdkInterface {
Future<Result<Message>> deleteMessage({required int messageId});

// Room
Future<Result<Room>> createRoom({
required Room room,
required String password,
required int? userId,
});
Future<Result<bool>> updateRoom({
required Room room,
required String password,
required int? userId,
});
Future<Result<Room>> joinRoom({
required Room room,
required String? password,
required int? userId,
});
Future<Result<Room>> createRoom({required RoomParams params});
Future<Result<bool>> updateRoom({required RoomParams params});
Future<Result<Room>> joinRoom({required RoomParams params});
Future<Result<Room>> getRoomInfo(String code);
Future<void> leaveRoom();
void toggleRaiseHand();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
// ignore_for_file: no_leading_underscores_for_library_prefixes

import 'dart:async' as _i4;
import 'dart:typed_data' as _i7;
import 'dart:typed_data' as _i6;

import 'package:mockito/mockito.dart' as _i1;

import 'package:waterbus_sdk/types/externals/models/index.dart' as _i5;
import 'package:waterbus_sdk/types/externals/models/presigned_url.dart' as _i6;
import 'package:waterbus_sdk/types/result.dart' as _i2;

import 'package:waterbus_sdk/core/api/user/datasources/user_remote_data_source.dart'
Expand Down Expand Up @@ -186,36 +185,36 @@ class MockUserRemoteDataSource extends _i1.Mock
) as _i4.Future<_i2.Result<List<_i5.User>>>);

@override
_i4.Future<_i2.Result<_i6.PresignedUrl>> getPresignedUrl() =>
_i4.Future<_i2.Result<_i5.PresignedUrl>> getPresignedUrl() =>
(super.noSuchMethod(
Invocation.method(
#getPresignedUrl,
[],
),
returnValue: _i4.Future<_i2.Result<_i6.PresignedUrl>>.value(
_FakeResult_0<_i6.PresignedUrl>(
returnValue: _i4.Future<_i2.Result<_i5.PresignedUrl>>.value(
_FakeResult_0<_i5.PresignedUrl>(
this,
Invocation.method(
#getPresignedUrl,
[],
),
)),
returnValueForMissingStub:
_i4.Future<_i2.Result<_i6.PresignedUrl>>.value(
_FakeResult_0<_i6.PresignedUrl>(
_i4.Future<_i2.Result<_i5.PresignedUrl>>.value(
_FakeResult_0<_i5.PresignedUrl>(
this,
Invocation.method(
#getPresignedUrl,
[],
),
)),
) as _i4.Future<_i2.Result<_i6.PresignedUrl>>);
) as _i4.Future<_i2.Result<_i5.PresignedUrl>>);

@override
_i4.Future<_i2.Result<String>> uploadAvatarToCloud({
required String? presignedUrl,
required String? sourceUrl,
required _i7.Uint8List? image,
required _i6.Uint8List? image,
}) =>
(super.noSuchMethod(
Invocation.method(
Expand Down
Loading