add /inventory page

This commit is contained in:
j3d1 2024-04-11 21:21:14 +02:00
parent 9770ca861a
commit 8716d3f692
8 changed files with 329 additions and 5 deletions

View file

@ -13,10 +13,13 @@ export default createStore({
token: null,
keypair: null,
remember: false,
friends: [],
item_map: {},
home_servers: null,
all_friends_servers: null,
resolver: new FallBackResolver(),
unreachable_neighbors: new NeighborsCache(),
availability_policies: [],
},
mutations: {
setUser(state, user) {
@ -43,6 +46,9 @@ export default createStore({
}
localStorage.setItem('remember', remember);
},
setInventoryItems(state, {url, items}) {
state.item_map[url] = items;
},
setFriends(state, friends) {
state.friends = friends;
},
@ -52,6 +58,9 @@ export default createStore({
setAllFriendsServers(state, servers) {
state.all_friends_servers = servers;
},
setAvailabilityPolicies(state, availability_policies) {
state.availability_policies = availability_policies;
},
logout(state) {
state.user = null;
state.token = null;
@ -128,6 +137,13 @@ export default createStore({
async getFriendServers({state, dispatch, commit}, {username}) {
return dispatch('lookupServer', {username}).then(servers => new ServerSet(servers, state.unreachable_neighbors))
},
async fetchInventoryItems({commit, dispatch, getters}) {
const servers = await dispatch('getHomeServers')
const items = await servers.get(getters.signAuth, '/api/inventory_items/')
items.map(item => item.files.map(file => file.owner = item.owner))
commit('setInventoryItems', {url: '/', items})
return items
},
async fetchFriends({commit, dispatch, getters, state}) {
const servers = await dispatch('getHomeServers')
const data = await servers.get(getters.signAuth, '/api/friends/')
@ -205,5 +221,13 @@ export default createStore({
nullAuth(state) {
return createNullAuth({})
},
inventory_items(state) {
return state.item_map['/'] || []
},
loaded_items(state) {
return Object.entries(state.item_map).reduce((acc, [url, items]) => {
return acc.concat(items)
}, [])
},
}
})