import styled from '@emotion/styled'; import { useRecoilValue } from 'recoil'; import { CalendarChannel } from '@/accounts/types/CalendarChannel'; import { ConnectedAccount } from '@/accounts/types/ConnectedAccount'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { SettingsAccountsCalendarChannelDetails } from '@/settings/accounts/components/SettingsAccountsCalendarChannelDetails'; import { SettingsAccountsCalendarChannelsGeneral } from '@/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral'; import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard'; import { SETTINGS_ACCOUNT_CALENDAR_CHANNELS_TAB_LIST_COMPONENT_ID } from '@/settings/accounts/constants/SettingsAccountCalendarChannelsTabListComponentId'; import { TabList } from '@/ui/layout/tab/components/TabList'; import { useTabList } from '@/ui/layout/tab/hooks/useTabList'; import React from 'react'; const StyledCalenderContainer = styled.div` padding-bottom: ${({ theme }) => theme.spacing(6)}; `; export const SettingsAccountsCalendarChannelsContainer = () => { const { activeTabIdState } = useTabList( SETTINGS_ACCOUNT_CALENDAR_CHANNELS_TAB_LIST_COMPONENT_ID, ); const activeTabId = useRecoilValue(activeTabIdState); const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState); const { records: accounts } = useFindManyRecords({ objectNameSingular: CoreObjectNameSingular.ConnectedAccount, filter: { accountOwnerId: { eq: currentWorkspaceMember?.id, }, }, }); const { records: calendarChannels } = useFindManyRecords< CalendarChannel & { connectedAccount: ConnectedAccount; } >({ objectNameSingular: CoreObjectNameSingular.CalendarChannel, filter: { connectedAccountId: { in: accounts.map((account) => account.id), }, }, skip: !accounts.length, }); const tabs = [ ...calendarChannels.map((calendarChannel) => ({ id: calendarChannel.id, title: calendarChannel.handle, })), ]; if (!calendarChannels.length) { return ; } return ( <> {tabs.length > 1 && ( )} {calendarChannels.map((calendarChannel) => ( {(calendarChannels.length === 1 || calendarChannel.id === activeTabId) && ( )} ))} {false && activeTabId === 'general' && ( )} ); };