31 lines
660 B
TypeScript
31 lines
660 B
TypeScript
/**
|
|
* Composable for fetching and managing item data from CDragon API
|
|
* Returns a reactive Map of item ID to item data
|
|
*/
|
|
export const useItemMap = () => {
|
|
const { data: items } = useFetch<Array<Item>>('/api/cdragon/items', {
|
|
lazy: true,
|
|
server: false
|
|
})
|
|
|
|
const itemMap = ref<Map<number, Item>>(new Map())
|
|
|
|
watch(
|
|
items,
|
|
newItems => {
|
|
if (Array.isArray(newItems)) {
|
|
const map = new Map<number, Item>()
|
|
for (const item of newItems) {
|
|
if (item?.id) {
|
|
map.set(item.id, item)
|
|
}
|
|
}
|
|
itemMap.value = map
|
|
}
|
|
},
|
|
{ immediate: true }
|
|
)
|
|
|
|
return { itemMap }
|
|
}
|