import Color from 'color' import { defineStore } from 'pinia' export const useUserStore = defineStore({ id: 'userStore', state: () => ({ users: [ { id: -1, name: 'Mercury', color: Color('#ff4000'), channels: [], self: true } ] }), getters: { getSelf: (state) => { return (self) => state.users.find(user => user.self === true) }, getUserById: (state) => { return (id) => state.users.find(user => user.id === id) }, getUsersByChannelId: (state) => { return (channelId) => state.users.filter(user => { return user.channels.includes(channelId) }) } }, actions: { updateUser(newUser) { var user = this.users.find(user => user.id == newUser.id) if (!user) { user = { id: newUser.id, name: String(newUser.id), color: Color('#000000'), channels: [] } this.users.push(user) } user.lastSeen = new Date() }, setName(id, name) { var user = this.users.find(user => user.id == id) user.name = name }, setColor(id, color) { var user = this.users.find(user => user.id == id) user.color = color }, addChannel(id, channelId) { var user = this.users.find(user => user.id == id) if (!user.channels.includes(channelId)) { user.channels.push(channelId) } } } })