teemant-react/src/lib/client-view.types.ts

62 lines
1.2 KiB
TypeScript

import { INicklistNick } from '@icynet/irclib';
import { IRCConnectionWrapper } from './irc-manager';
export type MessageType =
| 'info'
| 'mode'
| 'notice'
| 'privmsg'
| 'join'
| 'leave';
export type BufferType = 'server' | 'channel' | 'user';
export interface ParsedIRCLine {
time: Date;
sender: string;
message: string;
type: MessageType;
highlight?: boolean;
}
export enum BufferActionKind {
AddServerBuffer = 'add-server-buffer',
AddBuffer = 'add-buffer',
AddBufferLine = 'add-buffer-line',
SetActiveBuffer = 'set-active-buffer',
SetTopic = 'set-topic',
UpdateNicklist = 'update-nicklist',
}
export interface BufferActionTarget {
type?: BufferType;
name?: string;
}
export interface BufferActionPayload {
connection?: IRCConnectionWrapper;
toBuffer?: BufferActionTarget;
message?: ParsedIRCLine;
channels?: string[];
topic?: string;
activeIndex?: number;
}
export interface BufferAction {
type: BufferActionKind;
payload: BufferActionPayload;
}
export interface MessageBuffer {
type: BufferType;
name: string;
lines: ParsedIRCLine[];
nicks?: INicklistNick[];
topic?: string;
connection: IRCConnectionWrapper;
}
export interface BufferState {
buffers: MessageBuffer[];
activeIndex: number;
}