Added further types and moved types

This commit is contained in:
Jori Lallo
2017-05-03 22:49:50 -07:00
parent 791bf0a32e
commit fe7b69a4a5
7 changed files with 40 additions and 25 deletions

View File

@ -2,7 +2,7 @@
import React from 'react'; import React from 'react';
import { toJS } from 'mobx'; import { toJS } from 'mobx';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import type { Document as DocumentType } from '../../../types'; import type { Document as DocumentType } from 'types';
import PublishingInfo from '../PublishingInfo'; import PublishingInfo from '../PublishingInfo';
import styles from './Document.scss'; import styles from './Document.scss';
import DocumentHtml from './components/DocumentHtml'; import DocumentHtml from './components/DocumentHtml';

View File

@ -1,6 +1,6 @@
// @flow // @flow
import React from 'react'; import React from 'react';
import type { Document } from '../../../types'; import type { Document } from 'types';
import DocumentPreview from 'components/DocumentPreview'; import DocumentPreview from 'components/DocumentPreview';
import Divider from 'components/Divider'; import Divider from 'components/Divider';

View File

@ -1,7 +1,7 @@
// @flow // @flow
import React from 'react'; import React from 'react';
import { observer, inject } from 'mobx-react'; import { observer, inject } from 'mobx-react';
import type { User } from '../../../types'; import type { User } from 'types';
@inject('user') @inject('user')
@observer @observer

View File

@ -1,25 +1,29 @@
// @flow
import React from 'react'; import React from 'react';
import { observer, inject } from 'mobx-react'; import { observer, inject } from 'mobx-react';
import { withRouter } from 'react-router'; import { withRouter } from 'react-router';
import { Flex } from 'reflexbox';
import DashboardStore from './DashboardStore'; import DashboardStore from './DashboardStore';
import { Flex } from 'reflexbox';
import Layout from 'components/Layout'; import Layout from 'components/Layout';
import AtlasPreview from 'components/AtlasPreview'; import AtlasPreview from 'components/AtlasPreview';
import AtlasPreviewLoading from 'components/AtlasPreviewLoading'; import AtlasPreviewLoading from 'components/AtlasPreviewLoading';
import CenteredContent from 'components/CenteredContent'; import CenteredContent from 'components/CenteredContent';
type Props = {
user: Object,
router: Object,
};
@withRouter @withRouter
@inject('user') @inject('user')
@observer @observer
class Dashboard extends React.Component { class Dashboard extends React.Component {
static propTypes = { props: Props;
user: React.PropTypes.object.isRequired, store: DashboardStore;
router: React.PropTypes.object.isRequired,
};
constructor(props) { constructor(props: Props) {
super(props); super(props);
this.store = new DashboardStore({ this.store = new DashboardStore({

View File

@ -1,11 +1,20 @@
// @flow
import { observable, action, runInAction } from 'mobx'; import { observable, action, runInAction } from 'mobx';
import { client } from 'utils/ApiClient'; import { client } from 'utils/ApiClient';
import type { Pagination, Collection } from 'types';
type Options = {
team: Object,
router: Object,
};
class DashboardStore { class DashboardStore {
@observable collections; team: Object;
@observable pagination; router: Object;
@observable collections: Array<Collection>;
@observable pagination: Pagination;
@observable isFetching = true; @observable isFetching: boolean = true;
/* Actions */ /* Actions */
@ -19,18 +28,13 @@ class DashboardStore {
this.collections = data; this.collections = data;
this.pagination = pagination; this.pagination = pagination;
}); });
// If only one collection, visit it automatically
if (this.collections.length === 1) {
this.router.push(this.collections[0].url);
}
} catch (e) { } catch (e) {
console.error('Something went wrong'); console.error('Something went wrong');
} }
this.isFetching = false; this.isFetching = false;
}; };
constructor(options) { constructor(options: Options) {
this.team = options.team; this.team = options.team;
this.router = options.router; this.router = options.router;
this.fetchCollections(); this.fetchCollections();

View File

@ -3,14 +3,14 @@ import React from 'react';
import { observer } from 'mobx-react'; import { observer } from 'mobx-react';
import styled from 'styled-components'; import styled from 'styled-components';
import { Flex } from 'reflexbox'; 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 Layout, { Title } from 'components/Layout';
import CenteredContent from 'components/CenteredContent'; import CenteredContent from 'components/CenteredContent';
import SlackAuthLink from 'components/SlackAuthLink'; 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 { @observer class Settings extends React.Component {
store = SettingsStore; store = SettingsStore;

View File

@ -1,3 +1,4 @@
// @flow
export type User = { export type User = {
avatarUrl: string, avatarUrl: string,
id: string, id: string,
@ -7,10 +8,10 @@ export type User = {
export type Collection = { export type Collection = {
createdAt: string, createdAt: string,
description: string, description: ?string,
id: string, id: string,
name: string, name: string,
type: string, type: 'atlas' | 'journal',
updatedAt: string, updatedAt: string,
url: string, url: string,
}; };
@ -30,3 +31,9 @@ export type Document = {
updatedBy: string, updatedBy: string,
url: string, url: string,
}; };
export type Pagination = {
limit: number,
nextPath: string,
offset: number,
};