diff --git a/client/js/types.d.ts b/client/js/types.d.ts index c58557b6..a36a0d16 100644 --- a/client/js/types.d.ts +++ b/client/js/types.d.ts @@ -1,9 +1,9 @@ import {defineComponent} from "vue"; -import Chan from "../../server/models/chan"; import Network from "../../server/models/network"; -import User from "../../server/models/user"; import SharedMessage from "../../shared/types/msg"; +import SharedChan from "../../shared/types/chan"; +import SharedUser from "../../shared/models/user"; import {Mention} from "../../server/client"; import {ClientConfiguration} from "../../server/server"; import {LinkPreview} from "../../server/plugins/irc-events/link"; @@ -16,7 +16,7 @@ interface LoungeWindow extends Window { }; } -type ClientUser = User & { +type ClientUser = SharedUser & { // }; @@ -25,7 +25,7 @@ type ClientMessage = Omit & { users: string[]; }; -type ClientChan = Omit & { +type ClientChan = Omit & { moreHistoryAvailable: boolean; editTopic: boolean; users: ClientUser[]; diff --git a/shared/types/chan.ts b/shared/types/chan.ts new file mode 100644 index 00000000..0de5892f --- /dev/null +++ b/shared/types/chan.ts @@ -0,0 +1,43 @@ +import {SharedMsg} from "./msg"; +import {SharedUser} from "./user"; + +export enum ChanType { + CHANNEL = "channel", + LOBBY = "lobby", + QUERY = "query", + SPECIAL = "special", +} + +export enum SpecialChanType { + BANLIST = "list_bans", + INVITELIST = "list_invites", + CHANNELLIST = "list_channels", + IGNORELIST = "list_ignored", +} + +export enum ChanState { + PARTED = 0, + JOINED = 1, +} + +export type SharedChan = { + // TODO: don't force existence, figure out how to make TS infer it. + id: number; + messages: SharedMsg[]; + name: string; + key: string; + topic: string; + firstUnread: number; + unread: number; + highlight: number; + users: Map; + muted: boolean; + type: ChanType; + state: ChanState; + + userAway?: boolean; + special?: SpecialChanType; + data?: any; + closed?: boolean; + num_users?: number; +}; diff --git a/shared/types/user.ts b/shared/types/user.ts new file mode 100644 index 00000000..7f689c24 --- /dev/null +++ b/shared/types/user.ts @@ -0,0 +1,8 @@ +export type SharedUser = { + modes: string[]; + // Users in the channel have only one mode assigned + mode: string; + away: string; + nick: string; + lastMessage: number; +};