import React, { useState } from 'react'; // tslint:disable-next-line: no-submodule-imports import useUpdate from 'react-use/lib/useUpdate'; import styled, { CSSProperties } from 'styled-components'; import { useSet } from '../../hooks/useSet'; import { ToastUtils } from '../../session/utils'; import { BlockedNumberController } from '../../util'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; import { SpacerLG } from '../basic/Text'; import { SessionIconButton } from '../icon'; import { MemberListItem } from '../MemberListItem'; import { SettingsTitleAndDescription } from './SessionSettingListItem'; // tslint:disable: use-simple-attributes const BlockedEntriesContainer = styled.div` flex-shrink: 1; overflow: auto; min-height: 40px; max-height: 100%; background: var(--blocked-contact-list-bg); `; const BlockedEntriesRoundedContainer = styled.div` overflow: hidden; border-radius: 16px; padding: var(--margins-lg); background: var(--blocked-contact-list-bg); `; const BlockedContactsSection = styled.div` display: flex; flex-direction: column; min-height: 0; `; const BlockedContactListTitle = styled.div` display: flex; justify-content: space-between; min-height: 45px; align-items: center; `; const BlockedContactListTitleButtons = styled.div` display: flex; align-items: center; `; export const StyledBlockedSettingItem = styled.div<{ clickable: boolean }>` font-size: var(--font-size-md); padding: var(--margins-lg); background: var(--color-cell-background); color: var(--color-text); border-bottom: var(--border-session); cursor: ${props => (props.clickable ? 'pointer' : 'unset')}; `; const BlockedEntries = (props: { blockedNumbers: Array; selectedIds: Array; addToSelected: (id: string) => void; removeFromSelected: (id: string) => void; }) => { const { addToSelected, blockedNumbers, removeFromSelected, selectedIds } = props; return ( {blockedNumbers.map(blockedEntry => { return ( ); })} ); }; const NoBlockedContacts = () => { return
{window.i18n('noBlockedContacts')}
; }; export const BlockedContactsList = () => { const [expanded, setExpanded] = useState(false); const { uniqueValues: selectedIds, addTo: addToSelected, removeFrom: removeFromSelected, empty: emptySelected, } = useSet([]); const forceUpdate = useUpdate(); const hasAtLeastOneSelected = Boolean(selectedIds.length); const blockedNumbers = BlockedNumberController.getBlockedNumbers(); const noBlockedNumbers = !blockedNumbers.length; function toggleUnblockList() { if (blockedNumbers.length) { setExpanded(!expanded); } } async function unBlockThoseUsers() { if (selectedIds.length) { await BlockedNumberController.unblockAll(selectedIds); emptySelected(); ToastUtils.pushToastSuccess('unblocked', window.i18n('unblocked')); forceUpdate(); } } return ( {noBlockedNumbers ? ( ) : ( {hasAtLeastOneSelected && expanded ? ( ) : null} )} {expanded && !noBlockedNumbers ? ( ) : null} ); };