From 4ca873e794aeea052dd42ceaecfc12041d5db3c2 Mon Sep 17 00:00:00 2001 From: Inex Code Date: Mon, 20 Dec 2021 15:25:31 +0000 Subject: [PATCH] Add user deletion (for real) --- assets/translations/en.json | 3 ++- assets/translations/ru.json | 3 ++- lib/logic/api_maps/server.dart | 22 ++++++++++++++++++++++ lib/logic/cubit/jobs/jobs_cubit.dart | 7 ++++++- lib/logic/models/job.dart | 11 +++++++++++ lib/ui/pages/users/user_details.dart | 4 ++-- 6 files changed, 45 insertions(+), 5 deletions(-) diff --git a/assets/translations/en.json b/assets/translations/en.json index 76ee8bb9..e86ffa84 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -248,7 +248,8 @@ "title": "Jobs list", "start": "Start", "empty": "No jobs", - "createUser": "Create", + "createUser": "Create user", + "deleteUser": "Delete user", "serviceTurnOff": "Turn off", "serviceTurnOn": "Turn on", "jobAdded": "Job added", diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 192d3164..fce1a125 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -249,7 +249,8 @@ "title": "Задачи", "start": "Начать выполенение", "empty": "Пусто.", - "createUser": "Создать запись", + "createUser": "Создать пользователя", + "deleteUser": "Удалить пользователя", "serviceTurnOff": "Остановить", "serviceTurnOn": "Запустить", "jobAdded": "Задача добавленна", diff --git a/lib/logic/api_maps/server.dart b/lib/logic/api_maps/server.dart index 7705dcc4..1792e2c1 100644 --- a/lib/logic/api_maps/server.dart +++ b/lib/logic/api_maps/server.dart @@ -74,6 +74,28 @@ class ServerApi extends ApiMap { return res; } + Future deleteUser(User user) async { + bool res; + Response response; + + var client = await getClient(); + try { + response = await client.delete( + '/users/${user.login}', + options: Options( + contentType: 'application/json', + ), + ); + res = response.statusCode == HttpStatus.ok; + } catch (e) { + print(e); + res = false; + } + + close(client); + return res; + } + String get rootAddress => throw UnimplementedError('not used in with implementation'); diff --git a/lib/logic/cubit/jobs/jobs_cubit.dart b/lib/logic/cubit/jobs/jobs_cubit.dart index 6d90aeeb..a2c1b414 100644 --- a/lib/logic/cubit/jobs/jobs_cubit.dart +++ b/lib/logic/cubit/jobs/jobs_cubit.dart @@ -105,7 +105,12 @@ class JobsCubit extends Cubit { if (job is CreateUserJob) { newUsers.add(job.user); await api.createUser(job.user); - } else if (job is ServiceToggleJob) { + } + if (job is DeleteUserJob) { + final deleted = await api.deleteUser(job.user); + if (deleted) usersCubit.remove(job.user); + } + if (job is ServiceToggleJob) { hasServiceJobs = true; await api.switchService(job.type, job.needToTurnOn); } diff --git a/lib/logic/models/job.dart b/lib/logic/models/job.dart index c06d4ebd..e9767803 100644 --- a/lib/logic/models/job.dart +++ b/lib/logic/models/job.dart @@ -31,6 +31,17 @@ class CreateUserJob extends Job { List get props => [id, title, user]; } +class DeleteUserJob extends Job { + DeleteUserJob({ + required this.user, + }) : super(title: '${"jobs.deleteUser".tr()} ${user.login}'); + + final User user; + + @override + List get props => [id, title, user]; +} + class ServiceToggleJob extends Job { ServiceToggleJob({ required this.type, diff --git a/lib/ui/pages/users/user_details.dart b/lib/ui/pages/users/user_details.dart index 869a9004..52b22687 100644 --- a/lib/ui/pages/users/user_details.dart +++ b/lib/ui/pages/users/user_details.dart @@ -76,8 +76,8 @@ class _UserDetails extends StatelessWidget { ), onPressed: () { context - .read() - .remove(user); + .read() + .addJob(DeleteUserJob(user: user)); Navigator.of(context) ..pop() ..pop();