58 lines
1.5 KiB
JavaScript
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 = []
|
|
}
|
|
}
|
|
})
|