Changeset View
Changeset View
Standalone View
Standalone View
web/modals/apps/apps-directory-modal.react.js
// @flow | // @flow | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { useSelector } from 'react-redux'; | |||||
import { useModalContext } from 'lib/components/modal-provider.react.js'; | import { useModalContext } from 'lib/components/modal-provider.react.js'; | ||||
import { useSelector } from '../../redux/redux-utils.js'; | |||||
import AppListing from '../apps/app-listing.react.js'; | import AppListing from '../apps/app-listing.react.js'; | ||||
import css from '../apps/apps.css'; | import css from '../apps/apps.css'; | ||||
import Modal from '../modal.react.js'; | import Modal from '../modal.react.js'; | ||||
const APP_DIRECTORY_DATA = [ | const APP_DIRECTORY_DATA = [ | ||||
{ | { | ||||
id: 'chat', | id: 'chat', | ||||
defaultEnabled: true, | defaultEnabled: true, | ||||
Show All 16 Lines | function AppsModal(): React.Node { | ||||
const { popModal } = useModalContext(); | const { popModal } = useModalContext(); | ||||
const enabledApps = useSelector(state => state.enabledApps); | const enabledApps = useSelector(state => state.enabledApps); | ||||
const appData = React.useMemo( | const appData = React.useMemo( | ||||
() => | () => | ||||
APP_DIRECTORY_DATA.map(app => { | APP_DIRECTORY_DATA.map(app => { | ||||
const { defaultEnabled, ...data } = app; | const { defaultEnabled, ...data } = app; | ||||
if (app.id === 'chat') { | |||||
return { | return { | ||||
...data, | ...data, | ||||
enabled: enabledApps[app.id] ?? defaultEnabled, | enabled: defaultEnabled, | ||||
}; | |||||
} | |||||
return { | |||||
...data, | |||||
enabled: enabledApps[app.id], | |||||
}; | }; | ||||
}), | }), | ||||
[enabledApps], | [enabledApps], | ||||
); | ); | ||||
const appItems = React.useMemo( | const appItems = React.useMemo( | ||||
() => appData.map(item => <AppListing key={item.id} {...item} />), | () => appData.map(item => <AppListing key={item.id} {...item} />), | ||||
[appData], | [appData], | ||||
Show All 12 Lines |