diff --git a/lib/console_ui.dart b/lib/console_ui.dart index a86ced0..5e3a5ef 100644 --- a/lib/console_ui.dart +++ b/lib/console_ui.dart @@ -409,10 +409,16 @@ Future otherMenuUi(Store node) async { case 7: stdout.write("Enter event id to delete: "); String? $tempEventId = stdin.readLineSync(); - String eventId = $tempEventId??""; - if( eventId.length == 64) { - sendDeleteEvent(node, eventId); - } else print("Invalid Event Id entered; should be of 64 byte length. Try again."); + String userInputId = $tempEventId??""; + Set eventIdToDelete = node.getEventEidFromPrefix(userInputId); + + if( eventIdToDelete.length == 1) { + String toDeleteId = eventIdToDelete.first; + print("Going to send a delete event for the following event with id ${toDeleteId}"); + sendDeleteEvent(node, eventIdToDelete.first); + } else { + print("Invalid Event Id(s) entered = {$eventIdToDelete}"); + } break; diff --git a/lib/tree_ds.dart b/lib/tree_ds.dart index 8fde14e..0aa685b 100644 --- a/lib/tree_ds.dart +++ b/lib/tree_ds.dart @@ -1185,6 +1185,22 @@ class Store { }); return deletedEventIds; } // end processDeleteEvents + + Set getEventEidFromPrefix(String eventId) { + if( eventId.length > 64) { + return {}; + } + + Set foundEventIds = {}; + for( String k in allChildEventsMap.keys) { + if( k.length >= eventId.length && k.substring(0, eventId.length) == eventId) { + foundEventIds.add(k); + } + } + + return foundEventIds; + } + } // end Store void addMessageToChannel(String channelId, String messageId, Map tempChildEventsMap, var chatRooms) {