export enum ActivityType { PAGE_VIEW = 'PAGE_VIEW', MESSAGE = 'MESSAGE', CLICK = 'CLICK', OPEN = 'OPEN', } export interface IFetchActivityAction { email?: string } export interface IFetchActivitiesOptions { accessToken: string, size?: number, email?: string } export interface IActivity { id: string, type: ActivityType, at: number, email: string, name?: string, } export interface IClickTrackActivity extends IActivity { click: { clickId: string, url: string, linkText?: string, // everything here and below is optional emailUUID?: string, emailSubject?: string, gmailId?: string, } } export interface IOpenTrackActivity extends IActivity { open: { emailUUID?: string, emailSubject?: string, gmailId?: string, } } export interface IPageViewActivity extends IActivity { event?: { attributes: { title: string, url: string, }, }, eventAttributes: { title: string, url: string, }, eventContext?: { // TODO } } export interface IMessageActivity extends IActivity { message: { inboxId: number, conversationId: number, messageId: number, body: string, attachments: number[], attributes: { preview?: string, }, } } export interface IGroupedActivities { at: number, date: string, email: string, activities: IActivity[], unseen: boolean, firstOfDate?: boolean, } export interface IActivityState { loading: boolean, loaded: boolean, activitiesById: { [id: string]: IActivity } activities: IActivity[] activitiesByEmail: IActivity[] }