createRoom method
POST /new_room_v2 — V2 success: status_code == 9999.
body is the full request payload built by the caller (LiveTalkSdk).
Implementation
Future<String?> createRoom({required Map<String, dynamic> body}) async {
try {
final response = await http.post(
Uri.parse('$_base${LiveTalkEndpoints.createRoom}'),
headers: {'Content-Type': 'application/json'},
body: json.encode(body),
);
if (response.statusCode != 200) {
throw _httpError(response.statusCode, response.reasonPhrase);
}
final jsonData = json.decode(response.body) as Map<String, dynamic>;
if (jsonData['status_code'] == -9999) throw _apiBodyError(jsonData);
// V2 uses 9999 for success; tolerate legacy 0 as well
if (jsonData['status_code'] != 9999 && jsonData['status_code'] != 0) {
throw _apiBodyError(jsonData);
}
final payload = jsonData['payload'] as Map<String, dynamic>;
final conversation = payload['conversation'] as Map<String, dynamic>;
final loginToken = payload['login_token'] as Map<String, dynamic>;
_sdkInfo ??= {};
_sdkInfo!['tenant_id'] = body['tenant_id'] as String;
_sdkInfo!['uuid'] = conversation['uuid'] as String;
_sdkInfo!['room_id'] = conversation['_id'] as String;
_sdkInfo!['access_token'] = loginToken['access_token'] as String;
_sdkInfo!['refresh_token'] = loginToken['refresh_token'] as String;
return conversation['_id'] as String?;
} catch (_) {
rethrow;
}
}