delete method
- {ServiceOfJournal? serv,
- String? uuid}
override
Delete service serv (or find serv by uuid) from journal.
Also notify listeners and save. Note: since services are deleted by uuid double deletes is not a problem. (Async lock is not needed.)
Implementation
@override
Future<bool> delete({ServiceOfJournal? serv, String? uuid}) async {
//
// find service
//
serv ??= all.firstWhereOrNull((element) => element.uid == uuid);
if (serv == null) {
log.severe('Error: delete: not found by uuid');
return false;
}
//
// delete from DB if needed
//
var allowDelete = false;
if ([ServiceState.finished, ServiceState.outDated].contains(serv.state)) {
final (state, _) = await httpInterface.sendDelete(serv);
if (state == ServiceState.removed) {
allowDelete = true;
}
} else {
allowDelete = true;
}
//
// delete
//
if (allowDelete) {
try {
await hiveRepository.delete(serv);
// ignore: avoid_catching_errors
} on RangeError {
log.info('RangeError double delete of service');
}
}
return allowDelete;
}