mirror of
https://github.com/the-draupnir-project/Draupnir.git
synced 2026-05-26 02:14:02 +00:00
69 lines
1.5 KiB
TypeScript
69 lines
1.5 KiB
TypeScript
// SPDX-FileCopyrightText: 2024 Gnuxie <Gnuxie@protonmail.com>
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import { DocumentNode } from "@the-draupnir-project/interface-manager";
|
|
import { Capability, DescriptionMeta } from "matrix-protection-suite";
|
|
|
|
export enum MessageType {
|
|
Document = "Document",
|
|
OneLine = "OneLine",
|
|
SingleEffectError = "SingleEffectError",
|
|
}
|
|
|
|
export interface RendererMessageCollector {
|
|
addMessage(
|
|
protection: DescriptionMeta,
|
|
capability: Capability,
|
|
message: DocumentNode
|
|
): void;
|
|
addOneliner(
|
|
protection: DescriptionMeta,
|
|
capability: Capability,
|
|
message: DocumentNode
|
|
): void;
|
|
getMessages(): RendererMessage[];
|
|
}
|
|
|
|
export interface RendererMessage {
|
|
protection: DescriptionMeta;
|
|
capability: Capability;
|
|
message: DocumentNode;
|
|
type: MessageType;
|
|
}
|
|
|
|
/**
|
|
* Used by capabilities to send messages to the users of Draupnir.
|
|
*/
|
|
export class AbstractRendererMessageCollector implements RendererMessageCollector {
|
|
private readonly messages: RendererMessage[] = [];
|
|
public getMessages(): RendererMessage[] {
|
|
return this.messages;
|
|
}
|
|
addMessage(
|
|
protection: DescriptionMeta,
|
|
capability: Capability,
|
|
message: DocumentNode
|
|
): void {
|
|
this.messages.push({
|
|
protection,
|
|
capability,
|
|
message,
|
|
type: MessageType.Document,
|
|
});
|
|
}
|
|
|
|
addOneliner(
|
|
protection: DescriptionMeta,
|
|
capability: Capability,
|
|
message: DocumentNode
|
|
): void {
|
|
this.messages.push({
|
|
protection,
|
|
capability,
|
|
message,
|
|
type: MessageType.OneLine,
|
|
});
|
|
}
|
|
}
|