stash visibility

This commit is contained in:
j3d1 2026-09-01 02:10:50 +02:00
parent 23164af04f
commit 1853577ff5
26 changed files with 276 additions and 39 deletions

View file

@ -42,6 +42,7 @@ export default createStore({
files: [],
categories: [],
availability_policies: [],
visibility_policies: [],
domains: [],
storage_locations: [],
active_workflows: [],
@ -100,6 +101,9 @@ export default createStore({
setAvailabilityPolicies(state, availability_policies) {
state.availability_policies = availability_policies;
},
setVisibilityPolicies(state, visibility_policies) {
state.visibility_policies = visibility_policies;
},
setDomains(state, domains) {
state.domains = domains;
},
@ -343,7 +347,7 @@ export default createStore({
? await dispatch('getFriendServers', {username: 'x@' + splitGroupHandle(item.owner_group).domain})
: await dispatch('getHomeServers')
const owner = item.owner_group ? encodeHandleForUrl(item.owner_group) : state.user
const data = {availability_policy: 'private', ...item}
const data = {availability_policy: 'private', visibility_policy: 'private', ...item}
delete data.owner_group
const reply = await servers.post(getters.signAuth, '/api/v1/inventory_items/' + owner + '/', data)
state.last_load.files = 0
@ -353,7 +357,7 @@ export default createStore({
const servers = item.owner_group
? await dispatch('getFriendServers', {username: 'x@' + splitGroupHandle(item.owner_group).domain})
: await dispatch('getHomeServers')
const data = {availability_policy: 'friends', ...item}
const data = {availability_policy: 'friends', visibility_policy: 'friends', ...item}
data.files = data.files.map(file => file.id)
// Path is scoped by the owner's handle, not the item's own id domain - see docs/implementation.md#owner-handle-scoped-routes.
const path = '/api/v1/inventory_items/' + encodeHandleForUrl(item.owner_group || item.owner) + '/' + item.id + '/'
@ -661,6 +665,16 @@ export default createStore({
state.last_load.availability_policies = Date.now()
return data
},
async fetchVisibilityPolicies({state, commit, dispatch, getters}) {
if (state.last_load.visibility_policies > Date.now() - 1000 * 60 * 60 * 24) {
return state.visibility_policies
}
const servers = await dispatch('getHomeServers')
const data = await servers.get(getters.signAuth, '/api/v1/visibility_policies/')
commit('setVisibilityPolicies', data.map(policy => ({slug: policy[0], text: policy[1]})))
state.last_load.visibility_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
@ -734,7 +748,8 @@ export default createStore({
state.last_load.tags,
state.last_load.properties,
state.last_load.categories,
state.last_load.availability_policies)
state.last_load.availability_policies,
state.last_load.visibility_policies)
if (last_load_info > Date.now() - 1000 * 60 * 60 * 24) {
return state.info
}
@ -747,11 +762,16 @@ export default createStore({
slug: policy[0],
text: policy[1]
})))
commit('setVisibilityPolicies', data.visibility_policies.map(policy => ({
slug: policy[0],
text: policy[1]
})))
commit('setDomains', data.domains)
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()
state.last_load.visibility_policies = Date.now()
return data
},
async userIdentityRecord({state}, {password}) {