Refactor RemoteDeleteSpaceService to use a private HTTPService instance and update URL construction with ApiEndpoints for improved maintainability. Update DeleteSpaceDialog to reflect changes in service initialization.

This commit is contained in:
Faris Armoush
2025-07-15 11:09:04 +03:00
parent b223194950
commit acefe7b355
2 changed files with 10 additions and 7 deletions

View File

@ -4,18 +4,17 @@ import 'package:syncrow_web/pages/space_management_v2/modules/delete_space/domai
import 'package:syncrow_web/pages/space_management_v2/modules/delete_space/domain/services/delete_space_service.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/delete_space/domain/services/delete_space_service.dart';
import 'package:syncrow_web/services/api/api_exception.dart'; import 'package:syncrow_web/services/api/api_exception.dart';
import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/services/api/http_service.dart';
import 'package:syncrow_web/utils/constants/api_const.dart';
final class RemoteDeleteSpaceService implements DeleteSpaceService { final class RemoteDeleteSpaceService implements DeleteSpaceService {
RemoteDeleteSpaceService({ const RemoteDeleteSpaceService(this._httpService);
required this.httpService,
});
final HTTPService httpService; final HTTPService _httpService;
@override @override
Future<void> delete(DeleteSpaceParam param) async { Future<void> delete(DeleteSpaceParam param) async {
try { try {
await httpService.delete( await _httpService.delete(
path: await _makeUrl(param), path: await _makeUrl(param),
expectedResponseModel: (json) { expectedResponseModel: (json) {
final response = json as Map<String, dynamic>; final response = json as Map<String, dynamic>;
@ -56,6 +55,10 @@ final class RemoteDeleteSpaceService implements DeleteSpaceService {
if (param.spaceUuid.isEmpty) { if (param.spaceUuid.isEmpty) {
throw APIException('Space UUID is not set'); throw APIException('Space UUID is not set');
} }
return '/projects/$projectUuid/communities/${param.communityUuid}/spaces/${param.spaceUuid}';
return ApiEndpoints.deleteSpace
.replaceAll('{projectId}', projectUuid)
.replaceAll('{communityId}', param.communityUuid)
.replaceAll('{spaceId}', param.spaceUuid);
} }
} }

View File

@ -27,7 +27,7 @@ class DeleteSpaceDialog extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => DeleteSpaceBloc( create: (context) => DeleteSpaceBloc(
RemoteDeleteSpaceService(httpService: HTTPService()), RemoteDeleteSpaceService(HTTPService()),
), ),
child: Builder( child: Builder(
builder: (context) => Dialog( builder: (context) => Dialog(