2025-04-16 14:08:26 +05:30
|
|
|
/**
|
|
|
|
|
* Message types for Waku communication
|
|
|
|
|
*/
|
|
|
|
|
export enum MessageType {
|
|
|
|
|
CELL = 'cell',
|
|
|
|
|
POST = 'post',
|
|
|
|
|
COMMENT = 'comment',
|
2025-06-06 16:42:00 +05:30
|
|
|
VOTE = 'vote',
|
|
|
|
|
MODERATE = 'moderate',
|
2025-04-16 14:08:26 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Base interface for all message types
|
|
|
|
|
*/
|
|
|
|
|
export interface BaseMessage {
|
2025-08-29 16:16:20 +05:30
|
|
|
id: string;
|
2025-04-16 14:08:26 +05:30
|
|
|
type: MessageType;
|
2025-08-29 15:29:20 +05:30
|
|
|
timestamp: number | Date;
|
2025-04-16 14:08:26 +05:30
|
|
|
author: string;
|
2025-04-24 16:30:50 +05:30
|
|
|
signature?: string; // Message signature for verification
|
|
|
|
|
browserPubKey?: string; // Public key that signed the message
|
2025-04-16 14:08:26 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Represents a cell message
|
|
|
|
|
*/
|
|
|
|
|
export interface CellMessage extends BaseMessage {
|
|
|
|
|
type: MessageType.CELL;
|
|
|
|
|
name: string;
|
|
|
|
|
description: string;
|
2025-06-28 06:33:52 +05:30
|
|
|
icon?: string;
|
2025-04-16 14:08:26 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Represents a post message
|
|
|
|
|
*/
|
|
|
|
|
export interface PostMessage extends BaseMessage {
|
|
|
|
|
type: MessageType.POST;
|
|
|
|
|
cellId: string;
|
|
|
|
|
title: string;
|
|
|
|
|
content: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Represents a comment message
|
|
|
|
|
*/
|
|
|
|
|
export interface CommentMessage extends BaseMessage {
|
|
|
|
|
type: MessageType.COMMENT;
|
|
|
|
|
postId: string;
|
|
|
|
|
content: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Represents a vote message
|
|
|
|
|
*/
|
|
|
|
|
export interface VoteMessage extends BaseMessage {
|
|
|
|
|
type: MessageType.VOTE;
|
|
|
|
|
targetId: string; // ID of the post or comment being voted on
|
2025-04-16 14:45:27 +05:30
|
|
|
value: 1 | -1;
|
2025-04-16 14:08:26 +05:30
|
|
|
}
|
|
|
|
|
|
2025-06-06 16:42:00 +05:30
|
|
|
/**
|
|
|
|
|
* Represents a moderate message
|
|
|
|
|
*/
|
|
|
|
|
export interface ModerateMessage extends BaseMessage {
|
|
|
|
|
type: MessageType.MODERATE;
|
|
|
|
|
cellId: string;
|
2025-06-06 16:45:14 +05:30
|
|
|
targetType: 'post' | 'comment' | 'user';
|
|
|
|
|
targetId: string; // postId, commentId, or user address (for user moderation)
|
2025-06-06 16:42:00 +05:30
|
|
|
reason?: string;
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-16 14:08:26 +05:30
|
|
|
/**
|
|
|
|
|
* Cache objects for storing messages
|
|
|
|
|
*/
|
|
|
|
|
export interface CellCache {
|
|
|
|
|
[cellId: string]: CellMessage;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface PostCache {
|
|
|
|
|
[postId: string]: PostMessage;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CommentCache {
|
|
|
|
|
[commentId: string]: CommentMessage;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface VoteCache {
|
|
|
|
|
[key: string]: VoteMessage; // key = targetId + authorAddress
|
|
|
|
|
}
|