Fix: Only assets that are actually deleted call `onAssetDelete` (#510)

pull/516/head
Faraz Shaikh 2022-01-16 14:00:46 +04:00 zatwierdzone przez GitHub
rodzic 7c82fbbb65
commit 89797787e8
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 19 dodań i 2 usunięć

Wyświetl plik

@ -2588,8 +2588,25 @@ export class TldrawApp extends StateManager<TDSnapshot> {
*/
delete = (ids = this.selectedIds): this => {
if (ids.length === 0) return this
ids.forEach((id) => this.getShape(id).assetId && this.callbacks.onAssetDelete?.(id))
return this.setState(Commands.deleteShapes(this, ids))
const drawCommand = Commands.deleteShapes(this, ids)
if (
this.callbacks.onAssetDelete &&
drawCommand.before.document?.assets &&
drawCommand.after.document?.assets
) {
const beforeAssetIds = Object.keys(drawCommand.before.document.assets).filter(
(k) => !!drawCommand.before.document!.assets![k]
)
const afterAssetIds = Object.keys(drawCommand.after.document.assets).filter(
(k) => !!drawCommand.after.document!.assets![k]
)
const intersection = beforeAssetIds.filter((x) => !afterAssetIds.includes(x))
intersection.forEach((id) => this.callbacks.onAssetDelete!(id))
}
return this.setState(drawCommand)
}
/**