diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/index.js b/packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx similarity index 71% rename from packages/app/src/app/pages/common/Modals/PreferencesModal/index.js rename to packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx index 0bc5aff7014..3eeb4096875 100644 --- a/packages/app/src/app/pages/common/Modals/PreferencesModal/index.js +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { inject, observer } from 'app/componentConnectors'; +import React, { useMemo } from 'react'; +import { useOvermind } from 'app/overmind'; import AppearanceIcon from 'react-icons/lib/md/color-lens'; import CodeIcon from 'react-icons/lib/fa/code'; @@ -25,12 +25,20 @@ import { KeyMapping } from './KeyMapping'; import { Container, ContentContainer } from './elements'; -class PreferencesModal extends React.Component { - getItems = () => { - const hasSubscription = this.props.store.isPatron; - const signedIn = this.props.store.isLoggedIn; +const PreferencesModal: React.FC = () => { + const { + state: { + isPatron, + isLoggedIn, + preferences: { itemId }, + }, + actions: { + preferences: { itemIdChanged }, + }, + } = useOvermind(); - return [ + const items = useMemo( + () => [ { id: 'appearance', title: 'Appearance', @@ -61,19 +69,19 @@ class PreferencesModal extends React.Component { icon: , content: , }, - signedIn && { + isLoggedIn && { id: 'integrations', title: 'Integrations', icon: , content: , }, - hasSubscription && { + isPatron && { id: 'paymentInfo', title: 'Payment Info', icon: , content: , }, - hasSubscription && { + isPatron && { id: 'badges', title: 'Badges', icon: , @@ -85,26 +93,22 @@ class PreferencesModal extends React.Component { icon: , content: , }, - ].filter(x => x); - }; + ], + [isLoggedIn, isPatron] + ); - render() { - const items = this.getItems(); - const item = items.find( - currentItem => currentItem.id === this.props.store.preferences.itemId - ); + const item = items.find(currentItem => currentItem.id === itemId); - return ( - - - {item.content} - - ); - } -} + return ( + + + {item.content} + + ); +}; -export default inject('store', 'signals')(observer(PreferencesModal)); +export default PreferencesModal;