diff --git a/lib/types/avatar-types.js b/lib/types/avatar-types.js --- a/lib/types/avatar-types.js +++ b/lib/types/avatar-types.js @@ -1,20 +1,23 @@ // @flow -import t, { type TUnion } from 'tcomb'; +import t, { type TUnion, type TInterface } from 'tcomb'; import type { CreateUpdatesResult } from './update-types.js'; -import { tShape, tString } from '../utils/validation-utils.js'; +import { validHexColorRegex } from '../shared/account-utils.js'; +import { onlyOneEmojiRegex } from '../shared/emojis.js'; +import { tRegex, tShape, tString } from '../utils/validation-utils.js'; export type EmojiAvatarDBContent = { +type: 'emoji', +emoji: string, +color: string, // hex, without "#" or "0x" }; -const emojiAvatarDBContentValidator = tShape({ - type: tString('emoji'), - emoji: t.String, - color: t.String, -}); +export const emojiAvatarDBContentValidator: TInterface = + tShape({ + type: tString('emoji'), + emoji: tRegex(onlyOneEmojiRegex), + color: tRegex(validHexColorRegex), + }); export type ImageAvatarDBContent = { +type: 'image', @@ -24,7 +27,8 @@ export type ENSAvatarDBContent = { +type: 'ens', }; -const ensAvatarDBContentValidator = tShape({ type: tString('ens') }); +export const ensAvatarDBContentValidator: TInterface = + tShape({ type: tString('ens') }); export type AvatarDBContent = | EmojiAvatarDBContent diff --git a/lib/utils/avatar-utils.js b/lib/utils/avatar-utils.js --- a/lib/utils/avatar-utils.js +++ b/lib/utils/avatar-utils.js @@ -3,32 +3,20 @@ import t from 'tcomb'; import type { TUnion, TInterface } from 'tcomb'; -import { tRegex, tShape, tString, tID } from './validation-utils.js'; -import { validHexColorRegex } from '../shared/account-utils.js'; -import { onlyOneEmojiRegex } from '../shared/emojis.js'; -import type { - ENSAvatarDBContent, - EmojiAvatarDBContent, - ImageAvatarDBContent, - UpdateUserAvatarRemoveRequest, - UpdateUserAvatarRequest, -} from '../types/avatar-types'; - -const emojiAvatarDBContentValidator: TInterface = tShape({ - type: tString('emoji'), - emoji: tRegex(onlyOneEmojiRegex), - color: tRegex(validHexColorRegex), -}); +import { tShape, tString, tID } from './validation-utils.js'; +import { + type ImageAvatarDBContent, + type UpdateUserAvatarRemoveRequest, + type UpdateUserAvatarRequest, + emojiAvatarDBContentValidator, + ensAvatarDBContentValidator, +} from '../types/avatar-types.js'; const imageAvatarDBContentValidator: TInterface = tShape({ type: tString('image'), uploadID: tID, }); -const ensAvatarDBContentValidator: TInterface = tShape({ - type: tString('ens'), -}); - const updateUserAvatarRemoveRequestValidator: TInterface = tShape({ type: tString('remove'),