session-desktop/js/models/messages.d.ts

65 lines
1.6 KiB
TypeScript

type MessageModelType = 'incoming' | 'outgoing';
type MessageDeliveryStatus =
| 'sending'
| 'sent'
| 'delivered'
| 'read'
| 'error';
export type EndSessionType = 'done' | 'ongoing';
interface MessageAttributes {
id: number;
source: string;
endSessionType: EndSessionType;
quote: any;
expireTimer: number;
received_at: number;
sent_at: number;
preview: any;
body: string;
expirationStartTimestamp: any;
read_by: Array<string>;
delivered_to: Array<string>;
decrypted_at: number;
recipients: Array<string>;
delivered: number;
type: MessageModelType;
group_update: any;
groupInvitation: any;
attachments: any;
contact: any;
conversationId: any;
errors: any;
flags: number;
hasAttachments: boolean;
hasFileAttachments: boolean;
hasVisualMediaAttachments: boolean;
schemaVersion: number;
expirationTimerUpdate: any;
unread: boolean;
group: any;
bodyPending: boolean;
timestamp: number;
status: MessageDeliveryStatus;
}
export interface MessageModel extends Backbone.Model<MessageAttributes> {
idForLogging: () => string;
isGroupUpdate: () => boolean;
isExpirationTimerUpdate: () => boolean;
getNotificationText: () => string;
isEndSession: () => boolean;
markRead: () => void;
merge: (other: MessageModel) => void;
saveErrors: (error: any) => void;
sendSyncMessageOnly: (message: any) => void;
isUnread: () => boolean;
propsForMessage?: any;
propsForTimerNotification?: any;
propsForResetSessionNotification?: any;
propsForGroupInvitation?: any;
propsForGroupNotification?: any;
firstMessageOfSeries: boolean;
}