Changeset View
Changeset View
Standalone View
Standalone View
lib/types/messages/images.js
// @flow | // @flow | ||||
import type { Image } from '../media-types.js'; | import t, { type TInterface } from 'tcomb'; | ||||
import { tID, tNumber, tShape } from '../../utils/validation-utils.js'; | |||||
import { imageValidator, type Image } from '../media-types.js'; | |||||
import { messageTypes } from '../message-types-enum.js'; | |||||
import type { RelativeUserInfo } from '../user-types.js'; | import type { RelativeUserInfo } from '../user-types.js'; | ||||
type ImagesSharedBase = { | type ImagesSharedBase = { | ||||
+type: 14, | +type: 14, | ||||
+localID?: string, // for optimistic creations. included by new clients | +localID?: string, // for optimistic creations. included by new clients | ||||
+threadID: string, | +threadID: string, | ||||
+creatorID: string, | +creatorID: string, | ||||
+time: number, | +time: number, | ||||
+media: $ReadOnlyArray<Image>, | +media: $ReadOnlyArray<Image>, | ||||
}; | }; | ||||
export type ImagesMessageData = { | export type ImagesMessageData = { | ||||
...ImagesSharedBase, | ...ImagesSharedBase, | ||||
+sidebarCreation?: boolean, | +sidebarCreation?: boolean, | ||||
}; | }; | ||||
export type RawImagesMessageInfo = { | export type RawImagesMessageInfo = { | ||||
...ImagesSharedBase, | ...ImagesSharedBase, | ||||
+id?: string, // null if local copy without ID yet | +id?: string, // null if local copy without ID yet | ||||
}; | }; | ||||
export const rawImagesMessageInfoValidator: TInterface<RawImagesMessageInfo> = | |||||
tShape<RawImagesMessageInfo>({ | |||||
type: tNumber(messageTypes.IMAGES), | |||||
localID: t.maybe(t.String), | |||||
threadID: tID, | |||||
creatorID: t.String, | |||||
time: t.Number, | |||||
media: t.list(imageValidator), | |||||
id: t.maybe(tID), | |||||
}); | |||||
export type ImagesMessageInfo = { | export type ImagesMessageInfo = { | ||||
+type: 14, | +type: 14, | ||||
+id?: string, // null if local copy without ID yet | +id?: string, // null if local copy without ID yet | ||||
+localID?: string, // for optimistic creations | +localID?: string, // for optimistic creations | ||||
+threadID: string, | +threadID: string, | ||||
+creator: RelativeUserInfo, | +creator: RelativeUserInfo, | ||||
+time: number, // millisecond timestamp | +time: number, // millisecond timestamp | ||||
+media: $ReadOnlyArray<Image>, | +media: $ReadOnlyArray<Image>, | ||||
}; | }; |