This commit is contained in:
j3d1 2024-09-02 20:06:49 +02:00
parent 448c166507
commit 17bfb84a94
62 changed files with 62258 additions and 107 deletions

View file

@ -17,6 +17,7 @@ export default createStore({
item_map: {},
home_servers: null,
all_friends_servers: null,
messages: [],
resolver: new FallBackResolver(),
unreachable_neighbors: new NeighborsCache(),
tags: [],
@ -24,6 +25,8 @@ export default createStore({
files: [],
categories: [],
availability_policies: [],
domains: [],
storage_locations: [],
},
mutations: {
setUser(state, user) {
@ -77,6 +80,9 @@ export default createStore({
setDomains(state, domains) {
state.domains = domains;
},
setStorageLocations(state, storage_locations) {
state.storage_locations = storage_locations;
},
setFiles(state, files) {
state.files = files;
},
@ -102,6 +108,7 @@ export default createStore({
if (keypair) {
this.commit('setKey', keypair)
}
router.push('/');
}
state.cache_loaded = true;
}
@ -182,6 +189,13 @@ export default createStore({
dispatch('fetchInventoryItems')
return ret
},
async fetchSearchResults({state, commit, dispatch, getters}, {query}) {
const servers = await dispatch('getAllKnownServers')
const items = await servers.get(getters.signAuth, '/api/search/?query=' + query)
items.map(item => item.files.map(file => file.owner = item.owner))
commit('setInventoryItems', {url: '/search/' + query, items})
return items
},
async fetchFriends({commit, dispatch, getters, state}) {
const servers = await dispatch('getHomeServers')
const data = await servers.get(getters.signAuth, '/api/friends/')
@ -309,6 +323,16 @@ export default createStore({
state.last_load.availability_policies = Date.now()
return data
},
async fetchStorageLocations({state, commit, dispatch, getters}) {
if (state.last_load.storage_locations > Date.now() - 1000 * 60 * 60 * 24) {
return state.storage_locations
}
const servers = await dispatch('getHomeServers')
const data = await servers.get(getters.signAuth, '/api/storage_locations/')
commit('setStorageLocations', data)
state.last_load.storage_locations = Date.now()
return data
},
async fetchInfo({state, commit, dispatch, getters}) {
const last_load_info = Math.min(
state.last_load.tags,
@ -366,5 +390,41 @@ export default createStore({
return acc.concat(items)
}, [])
},
notifications(state) {
// supported types: error, warning, info, login, success, friend
const u = state.unreachable_neighbors.list().map(elem => {
return {
type: 'error',
title: elem.domain + ' unreachable',
msg: 'The neighbor ' + elem.domain + ' is currently unreachable. Please try again later.',
time: elem.time
}
})
return [...u, {
type: 'info',
title: 'Welcome to the Toolshed',
msg: 'This is a federated social network. You can add friends from other servers and share items with them.',
time: Date.now()
}, {
type: 'warning',
title: 'Lorem ipsum',
msg: 'Aliquam ex eros, imperdiet vulputate hendrerit et.',
time: Date.now() - 1000 * 60 * 60 * 2
}, {
type: 'login',
title: 'Login from 192.186.1.8',
time: Date.now() - 1000 * 60 * 60 * 5
}, {
type: 'friend',
title: 'New connection',
msg: 'Christina accepted your request.',
time: Date.now() - 1000 * 60 * 60 * 14
}, {
type: 'success',
title: 'Lorem ipsum',
msg: 'Aliquam ex eros, imperdiet vulputate hendrerit et.',
time: Date.now() - 1000 * 60 * 60 * 24
}]
},
}
})