Files
nosys_libs/noSys/vue/stores/noSysStore.js
2026-01-25 13:55:46 +10:00

58 lines
1.5 KiB
JavaScript

import { defineStore } from 'pinia'
export const useNoSysStore = defineStore('noSysStore', {
state: () => ({
users: [], // [{ publicKey }]
connections: [], // [{ publicKey, connectedAt, network }]
networks: [],
}),
getters: {
getUserByKey: (state) => (key) => {
return state.users.find(u => u.publicKey === key)
},
getConnectionsByNetwork: (state) => (network) => {
return state.connections.filter(c => c.network === network)
}
},
actions: {
addUser(user) {
if (!this.users.find(u => u.publicKey === user.publicKey)) {
this.users.push(user)
}
},
removeUser(publicKey) {
this.users = this.users.filter(u => u.publicKey !== publicKey)
},
updateUser(updated) {
const index = this.users.findIndex(u => u.publicKey === updated.publicKey)
if (index !== -1) this.users[index] = { ...this.users[index], ...updated }
},
addConnection(conn) {
const exists = this.connections.find(
c => c.publicKey === conn.publicKey && c.network === conn.network
)
if (!exists) {
this.connections.push({
...conn,
connectedAt: conn.connectedAt || new Date().toISOString(),
})
}
},
removeConnection(publicKey, network = null) {
this.connections = this.connections.filter(
c => c.publicKey !== publicKey || (network && c.network !== network)
)
},
clearConnections() {
this.connections = []
}
}
})