From a27e1342d86f8ea56f8b0c5f4a325ac571c190de Mon Sep 17 00:00:00 2001
From: Jack Reed <phillipjreed@gmail.com>
Date: Tue, 21 Apr 2020 13:07:33 -0600
Subject: [PATCH] Use Theme and Styles provider to just flip all of the styles

---
 __tests__/src/components/App.test.js |  7 ++++---
 package.json                         |  2 ++
 src/components/App.js                | 28 ++++++++++++++++++----------
 3 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/__tests__/src/components/App.test.js b/__tests__/src/components/App.test.js
index 512bbc72b..19b5827ed 100644
--- a/__tests__/src/components/App.test.js
+++ b/__tests__/src/components/App.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import { MuiThemeProvider } from '@material-ui/core/styles';
+import { ThemeProvider, StylesProvider } from '@material-ui/core/styles';
 import Fullscreen from 'react-full-screen';
 import AccessTokenSender from '../../../src/containers/AccessTokenSender';
 import AuthenticationSender from '../../../src/containers/AuthenticationSender';
@@ -27,7 +27,8 @@ function createWrapper(props) {
 describe('App', () => {
   it('should render all needed elements ', () => {
     const wrapper = createWrapper();
-    expect(wrapper.find(MuiThemeProvider).length).toBe(1);
+    expect(wrapper.find(ThemeProvider).length).toBe(1);
+    expect(wrapper.find(StylesProvider).length).toBe(1);
     expect(wrapper.find(Fullscreen).length).toBe(1);
     expect(wrapper.find('Suspense').length).toBe(1);
     expect(wrapper.find(AuthenticationSender).length).toBe(1);
@@ -36,7 +37,7 @@ describe('App', () => {
 
   it('sets up a theme based on the config passed in merged w/ MaterialUI', () => {
     const wrapper = createWrapper();
-    const { theme } = wrapper.find(MuiThemeProvider).props();
+    const { theme } = wrapper.find(ThemeProvider).props();
     expect(theme.palette.type).toEqual('light');
     expect(theme.typography.useNextVariants).toBe(true);
     expect(Object.keys(theme).length).toBeGreaterThan(10);
diff --git a/package.json b/package.json
index ccb4174a4..13f8f2bbb 100644
--- a/package.json
+++ b/package.json
@@ -46,6 +46,8 @@
     "immutable": "^4.0.0-rc.12",
     "intersection-observer": "^0.7.0",
     "isomorphic-unfetch": "^3.0.0",
+    "jss": "^10.1.1",
+    "jss-rtl": "^0.3.0",
     "lodash": "^4.17.11",
     "manifesto.js": "^4.0.1",
     "normalize-url": "^4.2.0",
diff --git a/src/components/App.js b/src/components/App.js
index ca4f0da97..1a125a4c1 100644
--- a/src/components/App.js
+++ b/src/components/App.js
@@ -1,7 +1,11 @@
 import React, { Component, lazy, Suspense } from 'react';
 import PropTypes from 'prop-types';
-import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';
+import {
+  ThemeProvider, StylesProvider, createMuiTheme, jssPreset,
+} from '@material-ui/core/styles';
 import Fullscreen from 'react-full-screen';
+import { create } from 'jss';
+import rtl from 'jss-rtl';
 import { I18nextProvider } from 'react-i18next';
 import { LiveAnnouncer } from 'react-aria-live';
 import createI18nInstance from '../i18n';
@@ -62,15 +66,19 @@ export class App extends Component {
       >
         <I18nextProvider i18n={this.i18n}>
           <LiveAnnouncer>
-            <MuiThemeProvider theme={createMuiTheme(theme)}>
-              <AuthenticationSender />
-              <AccessTokenSender />
-              <Suspense
-                fallback={<div />}
-              >
-                <WorkspaceArea />
-              </Suspense>
-            </MuiThemeProvider>
+            <ThemeProvider
+              theme={createMuiTheme(theme)}
+            >
+              <StylesProvider jss={create({ plugins: [...jssPreset().plugins, rtl()] })}>
+                <AuthenticationSender />
+                <AccessTokenSender />
+                <Suspense
+                  fallback={<div />}
+                >
+                  <WorkspaceArea />
+                </Suspense>
+              </StylesProvider>
+            </ThemeProvider>
           </LiveAnnouncer>
         </I18nextProvider>
       </Fullscreen>
-- 
GitLab