2024-04-19 13:37:58 +04:00

40 lines
1.2 KiB
TypeScript

import type { ApiInputPrivacyRules, PrivacyVisibility } from '../../types';
import type { GlobalState } from '../types';
import { partition } from '../../util/iteratees';
import { isUserId } from './chats';
export function buildApiInputPrivacyRules(global: GlobalState, {
visibility,
isUnspecified,
allowedIds,
blockedIds,
shouldAllowPremium,
}: {
visibility: PrivacyVisibility;
isUnspecified?: boolean;
allowedIds: string[];
blockedIds: string[];
shouldAllowPremium?: true;
}): ApiInputPrivacyRules {
const {
users: { byId: usersById },
chats: { byId: chatsById },
} = global;
const [allowedUserIds, allowedChatIds] = partition(allowedIds, isUserId);
const [blockedUserIds, blockedChatIds] = partition(blockedIds, isUserId);
const rules: ApiInputPrivacyRules = {
visibility,
isUnspecified,
allowedUsers: allowedUserIds.map((userId) => usersById[userId]).filter(Boolean),
allowedChats: allowedChatIds.map((chatId) => chatsById[chatId]).filter(Boolean),
blockedUsers: blockedUserIds.map((userId) => usersById[userId]).filter(Boolean),
blockedChats: blockedChatIds.map((chatId) => chatsById[chatId]).filter(Boolean),
shouldAllowPremium,
};
return rules;
}