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;