Separate broadcast messages from regular messages
This commit is contained in:
parent
f3d3736b12
commit
6b2d49f630
|
@ -174,3 +174,13 @@ export class EventMessage implements Conversation.EventMessage {
|
|||
constructor(readonly text: string, readonly time: Date = new Date()) {
|
||||
}
|
||||
}
|
||||
|
||||
export class BroadcastMessage implements Conversation.BcastMessage {
|
||||
readonly id = ++messageId;
|
||||
readonly type = Conversation.Message.Type.Bcast;
|
||||
|
||||
readonly score = 0;
|
||||
filterMatch = false;
|
||||
|
||||
constructor(readonly text: string, readonly sender: Character, readonly time: Date = new Date()) {}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ import {queuedJoin} from '../fchat/channels';
|
|||
import {decodeHTML} from '../fchat/common';
|
||||
// import { CharacterCacheRecord } from '../learn/profile-cache';
|
||||
import { AdManager } from './ads/ad-manager';
|
||||
import { characterImage, ConversationSettings, EventMessage, Message, messageToString } from './common';
|
||||
import { characterImage, ConversationSettings, EventMessage, BroadcastMessage, Message, messageToString } from './common';
|
||||
import core from './core';
|
||||
import { Channel, Character, Conversation as Interfaces } from './interfaces';
|
||||
import l from './localize';
|
||||
|
@ -944,7 +944,8 @@ export default function(this: any): Interfaces.State {
|
|||
connection.onMessage('BRO', async(data, time) => {
|
||||
if(data.character !== undefined) {
|
||||
const content = decodeHTML(data.message.substr(data.character.length + 24));
|
||||
const message = new EventMessage(l('events.broadcast', `[user]${data.character}[/user]`, content), time);
|
||||
const char = core.characters.get(data.character);
|
||||
const message = new BroadcastMessage(l('events.broadcast', `[user]${data.character}[/user]`, content), char, time);
|
||||
await state.consoleTab.addMessage(message);
|
||||
await core.notifications.notify(state.consoleTab, l('events.broadcast.notification', data.character), content,
|
||||
characterImage(data.character), 'attention');
|
||||
|
|
|
@ -24,12 +24,17 @@ export namespace Conversation {
|
|||
readonly type: Message.Type.Event
|
||||
}
|
||||
|
||||
export interface BcastMessage extends BaseMessage {
|
||||
readonly type: Message.Type.Bcast
|
||||
readonly sender: Character;
|
||||
}
|
||||
|
||||
export interface ChatMessage extends BaseMessage {
|
||||
readonly isHighlight: boolean
|
||||
readonly sender: Character
|
||||
}
|
||||
|
||||
export type Message = EventMessage | ChatMessage;
|
||||
export type Message = BcastMessage | EventMessage | ChatMessage;
|
||||
|
||||
export interface SFCMessage extends EventMessage {
|
||||
sfc: Connection.ServerCommands['SFC'] & {confirmed?: true}
|
||||
|
@ -42,7 +47,8 @@ export namespace Conversation {
|
|||
Ad,
|
||||
Roll,
|
||||
Warn,
|
||||
Event
|
||||
Event,
|
||||
Bcast
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ const userPostfix: {[key: number]: string | undefined} = {
|
|||
createElement(UserView, {props: {character: message.sender, channel: this.channel}}),
|
||||
userPostfix[message.type] !== undefined ? createElement('span', { class: 'message-post' }, userPostfix[message.type]) : ' '
|
||||
);
|
||||
if(message.isHighlight) classes += ' message-highlight';
|
||||
if('isHighlight' in message && message.isHighlight) classes += ' message-highlight';
|
||||
}
|
||||
const isAd = message.type === Conversation.Message.Type.Ad && !this.logs;
|
||||
children.push(createElement(BBCodeView(core.bbCodeParser),
|
||||
|
|
|
@ -26,7 +26,7 @@ function writeFile(p: fs.PathLike | number, data: string | NodeJS.ArrayBufferVie
|
|||
}
|
||||
}
|
||||
|
||||
export type Message = Conversation.EventMessage | {
|
||||
export type Message = Conversation.EventMessage | Conversation.BcastMessage | {
|
||||
readonly sender: {readonly name: string}
|
||||
readonly text: string
|
||||
readonly time: Date
|
||||
|
|
Loading…
Reference in New Issue