stash
This commit is contained in:
parent
7e8f984ee2
commit
a1fd49c5d1
11 changed files with 406 additions and 214 deletions
|
|
@ -2,7 +2,7 @@ import {createStore} from 'vuex';
|
|||
import router from '@/router';
|
||||
import FallBackResolver from "@/dns";
|
||||
import NeighborsCache from "@/neigbors";
|
||||
import {createSignAuth, createTokenAuth, createNullAuth, ServerSet} from "@/federation";
|
||||
import {createSignAuth, createTokenAuth, createNullAuth, ServerSet, ServerSetUnion} from "@/federation";
|
||||
|
||||
|
||||
export default createStore({
|
||||
|
|
@ -50,26 +50,21 @@ export default createStore({
|
|||
localStorage.setItem('remember', remember);
|
||||
},
|
||||
setInventoryItems(state, {url, items}) {
|
||||
console.log('setInventoryItems', url, items)
|
||||
state.item_map[url] = items;
|
||||
},
|
||||
setFriends(state, friends) {
|
||||
state.friends = friends;
|
||||
},
|
||||
setHomeServers(state, home_servers) {
|
||||
console.log('setHomeServer', home_servers)
|
||||
state.home_servers = home_servers;
|
||||
},
|
||||
setAllFriendsServers(state, servers) {
|
||||
console.log('setAllFriendsServers', servers)
|
||||
state.all_friends_servers = servers;
|
||||
},
|
||||
setTags(state, tags) {
|
||||
console.log('setTags', tags)
|
||||
state.tags = tags;
|
||||
},
|
||||
setProperties(state, properties) {
|
||||
console.log('setProperties', properties)
|
||||
state.properties = properties;
|
||||
},
|
||||
logout(state) {
|
||||
|
|
@ -131,7 +126,7 @@ export default createStore({
|
|||
if (domain === 'localhost')
|
||||
return ['127.0.0.1:8000'];
|
||||
if (domain === 'example.com')
|
||||
return ['10.23.42.128:8000'];
|
||||
return ['10.23.42.128:8000','10.23.42.128:8000'];
|
||||
if (domain === 'example.jedi')
|
||||
return ['10.23.42.128:8000'];
|
||||
if (domain === 'example2.com')
|
||||
|
|
@ -149,13 +144,14 @@ export default createStore({
|
|||
return promise
|
||||
},
|
||||
async getAllFriendsServers({state, dispatch, commit}) {
|
||||
const friends = await dispatch('fetchFriends')
|
||||
if (state.all_friends_servers)
|
||||
return state.all_friends_servers
|
||||
const promise = (async () => {
|
||||
const servers = new ServerSet([], state.unreachable_neighbors)
|
||||
for (const friend of state.friends) {
|
||||
const s = await dispatch('lookupServer', {username: friend})
|
||||
servers.add(s)
|
||||
const servers = new ServerSetUnion([])
|
||||
for (const friend of friends) {
|
||||
const s = await dispatch('lookupServer', {username: friend.username})
|
||||
servers.add(new ServerSet(s, state.unreachable_neighbors))
|
||||
}
|
||||
return servers
|
||||
})()
|
||||
|
|
@ -177,31 +173,24 @@ export default createStore({
|
|||
},
|
||||
async createInventoryItem({state, dispatch, getters}, item) {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
const data = {...item, owned_amount: 1, availability_policy: 'friends', category: 'other'}
|
||||
const data = {availability_policy: 'friends', category: 'other', ...item}
|
||||
return await servers.post(getters.signAuth, '/api/inventory_items/', data)
|
||||
},
|
||||
async updateInventoryItem({state, dispatch, getters}, item) {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
return await servers.patch(getters.signAuth, '/api/inventory_items/' + item.id + '/', item)
|
||||
const data = {availability_policy: 'friends', category: 'other', ...item}
|
||||
return await servers.patch(getters.signAuth, '/api/inventory_items/' + item.id + '/', data)
|
||||
},
|
||||
async deleteInventoryItem({state, dispatch, getters}, item) {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
return await servers.delete(getters.signAuth, '/api/inventory_items/' + item.id + '/')
|
||||
const ret = await servers.delete(getters.signAuth, '/api/inventory_items/' + item.id + '/')
|
||||
dispatch('fetchInventoryItems')
|
||||
return ret
|
||||
},
|
||||
async fetchSearchResults({state, dispatch, getters}, {query}) {
|
||||
const servers = await dispatch('getAllFriendsServers')
|
||||
return await servers.get(getters.signAuth, '/api/search/?query=' + query)
|
||||
},
|
||||
/*async searchInventoryItems() {
|
||||
try {
|
||||
const servers = await this.fetchFriends().then(friends => friends.map(friend => this.lookupServer({username: friend.name})))
|
||||
const urls = servers.map(server => server.then(s => {
|
||||
return {host: s, target: "/api/inventory_items/"}
|
||||
}))
|
||||
urls.map(url => url.then(u => this.apiFederatedGet(u).then(items => {
|
||||
this.setInventoryItems({url: u.domain, items})
|
||||
}).catch(e => {
|
||||
}))) // TODO: handle error
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
},*/
|
||||
async fetchFriends({commit, dispatch, getters, state}) {
|
||||
const servers = await dispatch('getHomeServers')
|
||||
const data = await servers.get(getters.signAuth, '/api/friends/')
|
||||
|
|
@ -252,7 +241,7 @@ export default createStore({
|
|||
console.log('declining friend ' + args)
|
||||
},
|
||||
async fetchTags({state, commit, dispatch, getters}) {
|
||||
if(state.last_load.tags > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
if (state.last_load.tags > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
return state.tags
|
||||
}
|
||||
const servers = await dispatch('getHomeServers')
|
||||
|
|
@ -262,7 +251,7 @@ export default createStore({
|
|||
return data
|
||||
},
|
||||
async fetchProperties({state, commit, dispatch, getters}) {
|
||||
if(state.last_load.properties > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
if (state.last_load.properties > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
return state.properties
|
||||
}
|
||||
const servers = await dispatch('getHomeServers')
|
||||
|
|
@ -270,6 +259,47 @@ export default createStore({
|
|||
commit('setProperties', data)
|
||||
state.last_load.properties = Date.now()
|
||||
return data
|
||||
},
|
||||
async fetchCategories({state, commit, dispatch, getters}) {
|
||||
if (state.last_load.categories > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
return state.categories
|
||||
}
|
||||
const servers = await dispatch('getHomeServers')
|
||||
const data = await servers.get(getters.signAuth, '/api/categories/')
|
||||
commit('setCategories', data)
|
||||
state.last_load.categories = Date.now()
|
||||
return data
|
||||
},
|
||||
async fetchAvailabilityPolicies({state, commit, dispatch, getters}) {
|
||||
if (state.last_load.availability_policies > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
return state.availability_policies
|
||||
}
|
||||
const servers = await dispatch('getHomeServers')
|
||||
const data = await servers.get(getters.signAuth, '/api/availability_policies/')
|
||||
commit('setAvailabilityPolicies', data)
|
||||
state.last_load.availability_policies = Date.now()
|
||||
return data
|
||||
},
|
||||
async fetchInfo({state, commit, dispatch, getters}) {
|
||||
const last_load_info = Math.min(
|
||||
state.last_load.tags,
|
||||
state.last_load.properties,
|
||||
state.last_load.categories,
|
||||
state.last_load.availability_policies)
|
||||
if (last_load_info > Date.now() - 1000 * 60 * 60 * 24) {
|
||||
return state.info
|
||||
}
|
||||
const servers = await dispatch('getHomeServers')
|
||||
const data = await servers.get(getters.signAuth, '/api/info/')
|
||||
commit('setTags', data.tags)
|
||||
commit('setProperties', data.properties)
|
||||
commit('setCategories', data.categories)
|
||||
commit('setAvailabilityPolicies', data.availability_policies)
|
||||
state.last_load.tags = Date.now()
|
||||
state.last_load.properties = Date.now()
|
||||
state.last_load.categories = Date.now()
|
||||
state.last_load.availability_policies = Date.now()
|
||||
return data
|
||||
}
|
||||
},
|
||||
getters: {
|
||||
|
|
@ -287,11 +317,9 @@ export default createStore({
|
|||
return state.user !== null && state.token !== null;
|
||||
},
|
||||
signAuth(state) {
|
||||
console.log('signAuth', state.user, state.keypair.signSk)
|
||||
return createSignAuth(state.user, state.keypair.signSk)
|
||||
},
|
||||
tokenAuth(state) {
|
||||
console.log('tokenAuth', state.token)
|
||||
return createTokenAuth(state.token)
|
||||
},
|
||||
nullAuth(state) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue