From fe7b69a4a5091142b6e1454fa0f50f4e20c8c5a0 Mon Sep 17 00:00:00 2001 From: Jori Lallo Date: Wed, 3 May 2017 22:49:50 -0700 Subject: [PATCH] Added further types and moved types --- frontend/components/Document/Document.js | 2 +- .../components/DocumentList/DocumentList.js | 2 +- .../components/SlackAuthLink/SlackAuthLink.js | 2 +- frontend/scenes/Dashboard/Dashboard.js | 16 +++++++++----- frontend/scenes/Dashboard/DashboardStore.js | 22 +++++++++++-------- frontend/scenes/Settings/Settings.js | 10 ++++----- types.js => frontend/types/index.js | 11 ++++++++-- 7 files changed, 40 insertions(+), 25 deletions(-) rename types.js => frontend/types/index.js (77%) diff --git a/frontend/components/Document/Document.js b/frontend/components/Document/Document.js index 13649a39..fbe505d8 100644 --- a/frontend/components/Document/Document.js +++ b/frontend/components/Document/Document.js @@ -2,7 +2,7 @@ import React from 'react'; import { toJS } from 'mobx'; import { observer } from 'mobx-react'; -import type { Document as DocumentType } from '../../../types'; +import type { Document as DocumentType } from 'types'; import PublishingInfo from '../PublishingInfo'; import styles from './Document.scss'; import DocumentHtml from './components/DocumentHtml'; diff --git a/frontend/components/DocumentList/DocumentList.js b/frontend/components/DocumentList/DocumentList.js index e914711c..583c0c66 100644 --- a/frontend/components/DocumentList/DocumentList.js +++ b/frontend/components/DocumentList/DocumentList.js @@ -1,6 +1,6 @@ // @flow import React from 'react'; -import type { Document } from '../../../types'; +import type { Document } from 'types'; import DocumentPreview from 'components/DocumentPreview'; import Divider from 'components/Divider'; diff --git a/frontend/components/SlackAuthLink/SlackAuthLink.js b/frontend/components/SlackAuthLink/SlackAuthLink.js index 9b6d8edb..c5edb4f3 100644 --- a/frontend/components/SlackAuthLink/SlackAuthLink.js +++ b/frontend/components/SlackAuthLink/SlackAuthLink.js @@ -1,7 +1,7 @@ // @flow import React from 'react'; import { observer, inject } from 'mobx-react'; -import type { User } from '../../../types'; +import type { User } from 'types'; @inject('user') @observer diff --git a/frontend/scenes/Dashboard/Dashboard.js b/frontend/scenes/Dashboard/Dashboard.js index d0e3ab02..0a3af592 100644 --- a/frontend/scenes/Dashboard/Dashboard.js +++ b/frontend/scenes/Dashboard/Dashboard.js @@ -1,25 +1,29 @@ +// @flow import React from 'react'; import { observer, inject } from 'mobx-react'; import { withRouter } from 'react-router'; +import { Flex } from 'reflexbox'; import DashboardStore from './DashboardStore'; -import { Flex } from 'reflexbox'; import Layout from 'components/Layout'; import AtlasPreview from 'components/AtlasPreview'; import AtlasPreviewLoading from 'components/AtlasPreviewLoading'; import CenteredContent from 'components/CenteredContent'; +type Props = { + user: Object, + router: Object, +}; + @withRouter @inject('user') @observer class Dashboard extends React.Component { - static propTypes = { - user: React.PropTypes.object.isRequired, - router: React.PropTypes.object.isRequired, - }; + props: Props; + store: DashboardStore; - constructor(props) { + constructor(props: Props) { super(props); this.store = new DashboardStore({ diff --git a/frontend/scenes/Dashboard/DashboardStore.js b/frontend/scenes/Dashboard/DashboardStore.js index aaf67601..474816a4 100644 --- a/frontend/scenes/Dashboard/DashboardStore.js +++ b/frontend/scenes/Dashboard/DashboardStore.js @@ -1,11 +1,20 @@ +// @flow import { observable, action, runInAction } from 'mobx'; import { client } from 'utils/ApiClient'; +import type { Pagination, Collection } from 'types'; + +type Options = { + team: Object, + router: Object, +}; class DashboardStore { - @observable collections; - @observable pagination; + team: Object; + router: Object; + @observable collections: Array; + @observable pagination: Pagination; - @observable isFetching = true; + @observable isFetching: boolean = true; /* Actions */ @@ -19,18 +28,13 @@ class DashboardStore { this.collections = data; this.pagination = pagination; }); - - // If only one collection, visit it automatically - if (this.collections.length === 1) { - this.router.push(this.collections[0].url); - } } catch (e) { console.error('Something went wrong'); } this.isFetching = false; }; - constructor(options) { + constructor(options: Options) { this.team = options.team; this.router = options.router; this.fetchCollections(); diff --git a/frontend/scenes/Settings/Settings.js b/frontend/scenes/Settings/Settings.js index 31c4b6e0..a1a19500 100644 --- a/frontend/scenes/Settings/Settings.js +++ b/frontend/scenes/Settings/Settings.js @@ -3,14 +3,14 @@ import React from 'react'; import { observer } from 'mobx-react'; import styled from 'styled-components'; import { Flex } from 'reflexbox'; + +import ApiKeyRow from './components/ApiKeyRow'; +import styles from './Settings.scss'; +import SettingsStore from './SettingsStore'; + import Layout, { Title } from 'components/Layout'; import CenteredContent from 'components/CenteredContent'; import SlackAuthLink from 'components/SlackAuthLink'; -import ApiKeyRow from './components/ApiKeyRow'; - -import styles from './Settings.scss'; - -import SettingsStore from './SettingsStore'; @observer class Settings extends React.Component { store = SettingsStore; diff --git a/types.js b/frontend/types/index.js similarity index 77% rename from types.js rename to frontend/types/index.js index 7fea471e..3ac30e74 100644 --- a/types.js +++ b/frontend/types/index.js @@ -1,3 +1,4 @@ +// @flow export type User = { avatarUrl: string, id: string, @@ -7,10 +8,10 @@ export type User = { export type Collection = { createdAt: string, - description: string, + description: ?string, id: string, name: string, - type: string, + type: 'atlas' | 'journal', updatedAt: string, url: string, }; @@ -30,3 +31,9 @@ export type Document = { updatedBy: string, url: string, }; + +export type Pagination = { + limit: number, + nextPath: string, + offset: number, +};