From 244868348befa7c823a7db0980f9aaa8b16ec578 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Thu, 16 Nov 2023 00:52:03 -0800 Subject: [PATCH] Delete To-do items in a batched single request (#18662) --- src/data/todo.ts | 6 +++--- src/panels/lovelace/cards/hui-todo-list-card.ts | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/data/todo.ts b/src/data/todo.ts index 3117c0918e..209f5ecc7d 100644 --- a/src/data/todo.ts +++ b/src/data/todo.ts @@ -82,16 +82,16 @@ export const createItem = ( { entity_id } ); -export const deleteItem = ( +export const deleteItems = ( hass: HomeAssistant, entity_id: string, - uid: string + uids: string[] ): Promise => hass.callService( "todo", "remove_item", { - item: uid, + item: uids, }, { entity_id } ); diff --git a/src/panels/lovelace/cards/hui-todo-list-card.ts b/src/panels/lovelace/cards/hui-todo-list-card.ts index bf76d939fb..6791ec6686 100644 --- a/src/panels/lovelace/cards/hui-todo-list-card.ts +++ b/src/panels/lovelace/cards/hui-todo-list-card.ts @@ -35,7 +35,7 @@ import { TodoItemStatus, TodoListEntityFeature, createItem, - deleteItem, + deleteItems, fetchItems, moveItem, updateItem, @@ -433,7 +433,7 @@ export class HuiTodoListCard } else if ( this.todoListSupportsFeature(TodoListEntityFeature.DELETE_TODO_ITEM) ) { - deleteItem(this.hass!, this._entityId!, ev.target.itemId).finally(() => + deleteItems(this.hass!, this._entityId!, [ev.target.itemId]).finally(() => this._fetchData() ); } @@ -445,11 +445,11 @@ export class HuiTodoListCard if (!this.hass) { return; } - const deleteActions: Array> = []; - this._getCheckedItems(this._items).forEach((item: TodoItem) => { - deleteActions.push(deleteItem(this.hass!, this._entityId!, item.uid)); - }); - await Promise.all(deleteActions).finally(() => this._fetchData()); + const checkedItems = this._getCheckedItems(this._items); + const uids = checkedItems.map((item: TodoItem) => item.uid); + deleteItems(this.hass!, this._entityId!, uids).finally(() => + this._fetchData() + ); } private get _newItem(): HaTextField { @@ -475,7 +475,7 @@ export class HuiTodoListCard if (!item) { return; } - deleteItem(this.hass!, this._entityId!, item.uid).finally(() => + deleteItems(this.hass!, this._entityId!, [item.uid]).finally(() => this._fetchData() ); }