Client purge

This commit is contained in:
Hillel Coren 2022-02-02 17:49:38 +02:00
parent 45bc244e58
commit f67f7a1627
2 changed files with 35 additions and 0 deletions

View File

@ -67,6 +67,14 @@ class ClientRepository {
return clientResponse.data.toList();
}
Future<bool> purge(Credentials credentials, String id) async {
final url = credentials.url + '/clients/$id/purge';
await webClient.post(url, credentials.token);
return true;
}
Future<ClientEntity> saveData(
Credentials credentials, ClientEntity client) async {
client = client.rebuild((b) => b..documents.clear());

View File

@ -1,4 +1,6 @@
// Flutter imports:
import 'dart:async';
import 'package:flutter/material.dart';
// Package imports:
@ -31,6 +33,7 @@ List<Middleware<AppState>> createStoreClientsMiddleware([
final saveClient = _saveClient(repository);
final archiveClient = _archiveClient(repository);
final deleteClient = _deleteClient(repository);
final purgeClient = _purgeClient(repository);
final restoreClient = _restoreClient(repository);
final saveDocument = _saveDocument(repository);
@ -44,6 +47,7 @@ List<Middleware<AppState>> createStoreClientsMiddleware([
TypedMiddleware<AppState, SaveClientRequest>(saveClient),
TypedMiddleware<AppState, ArchiveClientsRequest>(archiveClient),
TypedMiddleware<AppState, DeleteClientsRequest>(deleteClient),
TypedMiddleware<AppState, PurgeClientRequest>(purgeClient),
TypedMiddleware<AppState, RestoreClientsRequest>(restoreClient),
TypedMiddleware<AppState, SaveClientDocumentRequest>(saveDocument),
];
@ -147,6 +151,29 @@ Middleware<AppState> _deleteClient(ClientRepository repository) {
};
}
Middleware<AppState> _purgeClient(ClientRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as PurgeClientRequest;
repository.purge(store.state.credentials, action.clientId).then((_) {
store.dispatch(PurgeClientSuccess());
store.dispatch(RefreshData(
clearData: true,
completer: Completer<Null>()
..future.then((value) {
action.completer.complete(null);
})));
}).catchError((Object error) {
print(error);
store.dispatch(PurgeClientFailure(error));
if (action.completer != null) {
action.completer.completeError(error);
}
});
next(action);
};
}
Middleware<AppState> _restoreClient(ClientRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as RestoreClientsRequest;