diff --git a/src/App/App.test.tsx b/src/App/App.test.tsx index f197969..931c623 100644 --- a/src/App/App.test.tsx +++ b/src/App/App.test.tsx @@ -4,7 +4,8 @@ import { mount, ReactWrapper } from 'enzyme'; import storage from '../utils/storage'; import { generateTokenWithTimeRange } from '../../jest/unit/components/__mocks__/token'; -import App, { AppStateInterface } from './App'; +import App from './App'; +import { AppProps } from './AppContext'; jest.mock('../utils/storage', () => { class LocalStorageMock { @@ -33,7 +34,7 @@ jest.mock('../utils/api', () => ({ })); describe('App', () => { - let wrapper: ReactWrapper<{}, AppStateInterface, App>; + let wrapper: ReactWrapper<{}, AppProps, App>; beforeEach(() => { wrapper = mount(); diff --git a/src/App/App.tsx b/src/App/App.tsx index fd0e8ba..0612048 100644 --- a/src/App/App.tsx +++ b/src/App/App.tsx @@ -1,5 +1,7 @@ import React, { Component, ReactElement } from 'react'; import isNil from 'lodash/isNil'; +import 'normalize.css'; +import 'typeface-roboto/index.css'; import storage from '../utils/storage'; import { makeLogin, isTokenExpire } from '../utils/login'; @@ -7,41 +9,15 @@ import Loading from '../components/Loading'; import LoginModal from '../components/Login'; import Header from '../components/Header'; import { Container, Content } from '../components/Layout'; -import RouterApp from '../router'; import API from '../utils/api'; -import 'typeface-roboto/index.css'; import '../utils/styles/global'; -import 'normalize.css'; import Footer from '../components/Footer'; -import { FormError } from '../components/Login/Login'; -import { PackageInterface } from '../components/Package/Package'; -interface AppContextData { - logoUrl: string; - scope: string; - isUserLoggedIn: boolean; - packages: PackageInterface[]; - user: { - username?: string; - }; -} -export const AppContext = React.createContext({ - logoUrl: window.VERDACCIO_LOGO, - user: {}, - scope: window.VERDACCIO_SCOPE || '', - isUserLoggedIn: false, - packages: [], -}); -const AppContextProvider = AppContext.Provider; -export const AppContextConsumer = AppContext.Consumer; +import AppRoute from './AppRoute'; +import { AppProps, AppContextProvider } from './AppContext'; -export interface AppStateInterface extends AppContextData { - error?: FormError; - showLoginModal: boolean; - isLoading: boolean; -} -export default class App extends Component<{}, AppStateInterface> { - public state: AppStateInterface = { +export default class App extends Component<{}, AppProps> { + public state: AppProps = { logoUrl: window.VERDACCIO_LOGO, user: {}, scope: window.VERDACCIO_SCOPE || '', @@ -57,7 +33,7 @@ export default class App extends Component<{}, AppStateInterface> { } // eslint-disable-next-line no-unused-vars - public componentDidUpdate(_: AppStateInterface, prevState: AppStateInterface): void { + public componentDidUpdate(_: AppProps, prevState: AppProps): void { const { isUserLoggedIn } = this.state; if (prevState.isUserLoggedIn !== isUserLoggedIn) { this.loadOnHandler(); @@ -94,6 +70,7 @@ export default class App extends Component<{}, AppStateInterface> { public loadOnHandler = async () => { try { const packages = await API.request('packages', 'GET'); + // @ts-ignore: FIX THIS TYPE: Type 'any[]' is not assignable to type '[]' this.setState({ packages, isLoading: false, @@ -176,9 +153,7 @@ export default class App extends Component<{}, AppStateInterface> { return ( <> - - {this.renderHeader()} - + {this.renderHeader()}