import * as React from 'react'; import IconButton from '@material-ui/core/IconButton'; import Tab from '@material-ui/core/Tab'; import Tabs from '@material-ui/core/Tabs'; import { Theme, withTheme } from '@material-ui/core/styles'; import IconEdit from '@material-ui/icons/Edit'; import IconMembers from '@material-ui/icons/People'; import SearchableAddressBook from '../components/SearchableAddressBook'; import Contact from '../components/Contact'; import Calendar from '../components/Calendar'; import Event from '../components/Event'; import TaskList from '../components/TaskList'; import AppBarOverride from '../widgets/AppBarOverride'; import Container from '../widgets/Container'; import JournalEntries from '../components/JournalEntries'; import journalView from './journalView'; import { syncEntriesToItemMap, syncEntriesToEventItemMap, syncEntriesToTaskItemMap } from '../journal-processors'; import { SyncInfo, SyncInfoJournal } from '../SyncGate'; import { Link } from 'react-router-dom'; import { routeResolver } from '../App'; import { historyPersistor } from '../persist-state-history'; interface PropsType { syncInfo: SyncInfo; syncJournal: SyncInfoJournal; isOwner: boolean; } interface PropsTypeInner extends PropsType { theme: Theme; } const JournalAddressBook = journalView(SearchableAddressBook, Contact); const PersistCalendar = historyPersistor('Calendar')(Calendar); const JournalCalendar = journalView(PersistCalendar, Event); const JournalTaskList = journalView(TaskList, Event); class Journal extends React.Component { state: { tab: number, }; constructor(props: PropsTypeInner) { super(props); this.state = { tab: 0, }; } render() { const { theme, isOwner, syncJournal } = this.props; let currentTab = this.state.tab; let journalOnly = false; const journal = syncJournal.journal; const collectionInfo = syncJournal.collection; const syncEntries = syncJournal.entries; let itemsTitle: string; let itemsView: JSX.Element; if (collectionInfo.type === 'CALENDAR') { itemsView = ( ); itemsTitle = 'Events'; } else if (collectionInfo.type === 'ADDRESS_BOOK') { itemsView = ; itemsTitle = 'Contacts'; } else if (collectionInfo.type === 'TASKS') { itemsView = ( ); itemsTitle = 'Tasks'; } else { itemsView =
Preview is not supported for this journal type
; itemsTitle = 'Items'; journalOnly = true; } currentTab = journalOnly ? 1 : currentTab; return ( { isOwner && <> } this.setState({ tab })} > { currentTab === 0 && {itemsView} } { currentTab === 1 && } ); } } export default withTheme()(Journal);