30 lines
750 B
TypeScript
30 lines
750 B
TypeScript
import { IChannel, IUser, SafeUser } from '~/types';
|
|
|
|
export const useDmStore = defineStore('dmStore', {
|
|
state: () => ({
|
|
dms: [] as IChannel[]
|
|
}),
|
|
actions: {
|
|
setDms(dms: IChannel[]) {
|
|
this.dms = dms;
|
|
},
|
|
addDM(dmChannel: IChannel) {
|
|
if (this.dms.find((e) => e.id === dmChannel.id)) {
|
|
const index = this.dms.findIndex((e) => e.id === dmChannel.id);
|
|
this.dms[index] = dmChannel;
|
|
return;
|
|
}
|
|
this.dms.push(dmChannel);
|
|
},
|
|
getById(id: string) {
|
|
return this.dms.find((e) => e.id === id);
|
|
},
|
|
getByPartnerId(id: string) {
|
|
return this.dms.find((e) => e.dmParticipants?.some((e: SafeUser) => e.id === id));
|
|
}
|
|
}
|
|
});
|
|
|
|
if (import.meta.hot) {
|
|
import.meta.hot.accept(acceptHMRUpdate(useDmStore, import.meta.hot));
|
|
} |