Changeset View
Changeset View
Standalone View
Standalone View
lib/utils/avatar-utils.js
// @flow | // @flow | ||||
import t from 'tcomb'; | import t from 'tcomb'; | ||||
import type { TUnion, TInterface } from 'tcomb'; | import type { TUnion, TInterface } from 'tcomb'; | ||||
import { tRegex, tShape, tString } from './validation-utils.js'; | import { tRegex, tShape, tString } from './validation-utils.js'; | ||||
import { validHexColorRegex } from '../shared/account-utils.js'; | import { validHexColorRegex } from '../shared/account-utils.js'; | ||||
import { onlyOneEmojiRegex } from '../shared/emojis.js'; | import { onlyOneEmojiRegex } from '../shared/emojis.js'; | ||||
import type { | |||||
ENSAvatarDBContent, | |||||
EmojiAvatarDBContent, | |||||
ImageAvatarDBContent, | |||||
UpdateUserAvatarRemoveRequest, | |||||
UpdateUserAvatarRequest, | |||||
} from '../types/avatar-types'; | |||||
const emojiAvatarDBContentValidator: TInterface = tShape({ | const emojiAvatarDBContentValidator: TInterface<EmojiAvatarDBContent> = tShape({ | ||||
type: tString('emoji'), | type: tString('emoji'), | ||||
emoji: tRegex(onlyOneEmojiRegex), | emoji: tRegex(onlyOneEmojiRegex), | ||||
color: tRegex(validHexColorRegex), | color: tRegex(validHexColorRegex), | ||||
}); | }); | ||||
const imageAvatarDBContentValidator: TInterface = tShape({ | const imageAvatarDBContentValidator: TInterface<ImageAvatarDBContent> = tShape({ | ||||
type: tString('image'), | type: tString('image'), | ||||
uploadID: t.String, | uploadID: t.String, | ||||
}); | }); | ||||
const ensAvatarDBContentValidator: TInterface = tShape({ | const ensAvatarDBContentValidator: TInterface<ENSAvatarDBContent> = tShape({ | ||||
type: tString('ens'), | type: tString('ens'), | ||||
}); | }); | ||||
const updateUserAvatarRemoveRequestValidator: TInterface = tShape({ | const updateUserAvatarRemoveRequestValidator: TInterface<UpdateUserAvatarRemoveRequest> = | ||||
tShape({ | |||||
type: tString('remove'), | type: tString('remove'), | ||||
}); | }); | ||||
const updateUserAvatarRequestValidator: TUnion<TInterface> = t.union([ | const updateUserAvatarRequestValidator: TUnion<UpdateUserAvatarRequest> = | ||||
t.union([ | |||||
emojiAvatarDBContentValidator, | emojiAvatarDBContentValidator, | ||||
imageAvatarDBContentValidator, | imageAvatarDBContentValidator, | ||||
ensAvatarDBContentValidator, | ensAvatarDBContentValidator, | ||||
updateUserAvatarRemoveRequestValidator, | updateUserAvatarRemoveRequestValidator, | ||||
]); | ]); | ||||
export { | export { | ||||
emojiAvatarDBContentValidator, | emojiAvatarDBContentValidator, | ||||
imageAvatarDBContentValidator, | imageAvatarDBContentValidator, | ||||
ensAvatarDBContentValidator, | ensAvatarDBContentValidator, | ||||
updateUserAvatarRemoveRequestValidator, | updateUserAvatarRemoveRequestValidator, | ||||
updateUserAvatarRequestValidator, | updateUserAvatarRequestValidator, | ||||
}; | }; |