diff --git a/lib/types/relationship-types.js b/lib/types/relationship-types.js index 9a1e28efe..35e3b670f 100644 --- a/lib/types/relationship-types.js +++ b/lib/types/relationship-types.js @@ -1,83 +1,96 @@ // @flow import type { TRefinement } from 'tcomb'; import type { AccountUserInfo } from './user-types.js'; import { values } from '../utils/objects.js'; import { tNumEnum } from '../utils/validation-utils.js'; export const undirectedStatus = Object.freeze({ KNOW_OF: 0, FRIEND: 2, }); export type UndirectedStatus = $Values; export const directedStatus = Object.freeze({ PENDING_FRIEND: 1, BLOCKED: 3, }); export type DirectedStatus = $Values; export const userRelationshipStatus = Object.freeze({ REQUEST_SENT: 1, REQUEST_RECEIVED: 2, FRIEND: 3, BLOCKED_BY_VIEWER: 4, BLOCKED_VIEWER: 5, BOTH_BLOCKED: 6, }); export type UserRelationshipStatus = $Values; export const userRelationshipStatusValidator: TRefinement = tNumEnum( values(userRelationshipStatus), ); -export const relationshipActions = Object.freeze({ +const relationshipActionsSansFarcaster = Object.freeze({ FRIEND: 'friend', UNFRIEND: 'unfriend', BLOCK: 'block', UNBLOCK: 'unblock', +}); + +const farcasterRelationshipActions = Object.freeze({ FARCASTER_MUTUAL: 'farcaster', }); + +export const relationshipActions = Object.freeze({ + ...relationshipActionsSansFarcaster, + ...farcasterRelationshipActions, +}); + export type RelationshipAction = $Values; export const relationshipActionsList: $ReadOnlyArray = values(relationshipActions); +export type RelationshipActionSansFarcaster = $Values< + typeof relationshipActionsSansFarcaster, +>; + export const relationshipButtons = Object.freeze({ FRIEND: 'friend', UNFRIEND: 'unfriend', BLOCK: 'block', UNBLOCK: 'unblock', ACCEPT: 'accept', WITHDRAW: 'withdraw', REJECT: 'reject', }); export type RelationshipButton = $Values; export type RelationshipRequest = { action: RelationshipAction, userIDs: $ReadOnlyArray, }; type SharedRelationshipRow = { user1: string, user2: string, }; export type DirectedRelationshipRow = { ...SharedRelationshipRow, status: DirectedStatus, }; export type UndirectedRelationshipRow = { ...SharedRelationshipRow, status: UndirectedStatus, }; export type RelationshipErrors = Partial<{ invalid_user: string[], already_friends: string[], user_blocked: string[], }>; export type UserRelationships = { +friends: $ReadOnlyArray, +blocked: $ReadOnlyArray, };