frontend: refactor of the new build viewer
extracting the logic into composables
This commit is contained in:
30
frontend/composables/useItemMap.ts
Normal file
30
frontend/composables/useItemMap.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* 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 }
|
||||
}
|
||||
Reference in New Issue
Block a user