owltide/shared/utils/update.ts

15 lines
447 B
TypeScript
Raw Normal View History

import type { ApiEntity, ApiTombstone } from "~/shared/types/api";
export function applyUpdatesToArray<T extends ApiEntity | ApiTombstone>(updates: T[], entities: T[]) {
const idMap = new Map(entities.map((e, i) => [e.id, i]));
for (const update of updates) {
const index = idMap.get(update.id);
if (index !== undefined) {
entities[index] = update;
} else {
idMap.set(update.id, entities.length);
entities.push(update);
}
}
}