fixing a ton of sloppy mess...

This commit is contained in:
Wowieee4
2026-05-17 18:40:03 +07:00
parent f970f1bac8
commit d2608e0188
37 changed files with 3099 additions and 1795 deletions
@@ -10,23 +10,68 @@ class CallService {
CallService(this._apiClient);
Future<Map<String, dynamic>?> requestToken(String channelName) async {
final res = await _apiClient.dio.post('/shared/call/token', data: {'channelName': channelName});
Future<Map<String, dynamic>?> requestToken({required int receiverId}) async {
final res = await _apiClient.dio.post(
'/shared/call/token',
data: {'receiverId': receiverId},
);
final data = res.data['data'];
return data is Map<String, dynamic> ? data : null;
}
Future<void> notifyIncomingCall({required int receiverId, required String channelName}) async {
Future<int?> getPairedReceiverId() async {
final res = await _apiClient.dio.get('/pairing/status');
final data = res.data['data'];
if (data is! Map<String, dynamic>) return null;
final id = data['pairedWithId'];
return id is num ? id.toInt() : int.tryParse(id?.toString() ?? '');
}
Future<void> notifyIncomingCall({
required int receiverId,
required String channelName,
String? agoraToken,
int receiverUid = 0,
}) async {
await _apiClient.dio.post('/shared/call/notify', data: {
'receiverId': receiverId,
'channelName': channelName,
'agoraToken': agoraToken,
'receiverUid': receiverUid,
});
}
Future<bool> joinChannel({required String channelName, int uid = 0}) async {
Future<bool> callPairedUser({int uid = 0}) async {
final receiverId = await getPairedReceiverId();
if (receiverId == null) return false;
final tokenData = await requestToken(receiverId: receiverId);
final channelName = tokenData?['channelName']?.toString();
final token = tokenData?['token']?.toString();
if (channelName == null || channelName.isEmpty) return false;
final joined = await joinChannel(
channelName: channelName,
token: token,
uid: uid,
);
if (joined) {
await notifyIncomingCall(
receiverId: receiverId,
channelName: channelName,
agoraToken: token,
receiverUid: uid,
);
}
return joined;
}
Future<bool> joinChannel({
required String channelName,
String? token,
int uid = 0,
}) async {
try {
final tokenData = await requestToken(channelName);
final token = tokenData?['token']?.toString();
_engine ??= createAgoraRtcEngine();
await _engine!.initialize(const RtcEngineContext(appId: AppConstants.agoraAppId));
await _engine!.enableAudio();