From 214f2505a5b6222552381b5ff593f09c9773bb80 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Thu, 24 May 2018 23:39:17 -0700 Subject: [PATCH] API tokens to standard list item --- app/scenes/Settings/Tokens.js | 46 ++++++------------- app/scenes/Settings/components/ApiToken.js | 43 ----------------- .../Settings/components/TokenListItem.js | 28 +++++++++++ app/types/index.js | 2 +- 4 files changed, 43 insertions(+), 76 deletions(-) delete mode 100644 app/scenes/Settings/components/ApiToken.js create mode 100644 app/scenes/Settings/components/TokenListItem.js diff --git a/app/scenes/Settings/Tokens.js b/app/scenes/Settings/Tokens.js index a3b30afa1..3379b2cb6 100644 --- a/app/scenes/Settings/Tokens.js +++ b/app/scenes/Settings/Tokens.js @@ -3,17 +3,15 @@ import * as React from 'react'; import { observable } from 'mobx'; import { observer, inject } from 'mobx-react'; import { Link } from 'react-router-dom'; -import styled from 'styled-components'; -import ApiToken from './components/ApiToken'; import ApiKeysStore from 'stores/ApiKeysStore'; -import { color } from 'shared/styles/constants'; import Button from 'components/Button'; import Input from 'components/Input'; import CenteredContent from 'components/CenteredContent'; import PageTitle from 'components/PageTitle'; import HelpText from 'components/HelpText'; -import Subheading from 'components/Subheading'; +import List from 'components/List'; +import TokenListItem from './components/TokenListItem'; type Props = { apiKeys: ApiKeysStore, @@ -46,29 +44,23 @@ class Tokens extends React.Component {

API Tokens

- {hasApiKeys && [ - Your tokens, - - - {apiKeys.data.map(key => ( - - ))} - -
, - Create a token, - ]} - You can create unlimited personal API tokens to hack on your wiki. Learn more in the API documentation. + {hasApiKeys && ( + + {apiKeys.data.map(token => ( + + ))} + + )} +
{ } } -const Table = styled.table` - margin-bottom: 30px; - width: 100%; - - td { - margin-right: 20px; - color: ${color.slate}; - } -`; - export default inject('apiKeys')(Tokens); diff --git a/app/scenes/Settings/components/ApiToken.js b/app/scenes/Settings/components/ApiToken.js deleted file mode 100644 index 491a90364..000000000 --- a/app/scenes/Settings/components/ApiToken.js +++ /dev/null @@ -1,43 +0,0 @@ -// @flow -import * as React from 'react'; -import { observable } from 'mobx'; -import { observer } from 'mobx-react'; -import Button from 'components/Button'; - -type Props = { - id: string, - name: ?string, - secret: string, - onDelete: (id: string) => *, -}; - -@observer -class ApiToken extends React.Component { - @observable disabled: boolean; - - onClick = () => { - this.props.onDelete(this.props.id); - this.disabled = true; - }; - - render() { - const { name, secret } = this.props; - const { disabled } = this; - - return ( - - {name} - - {secret} - - - - - - ); - } -} - -export default ApiToken; diff --git a/app/scenes/Settings/components/TokenListItem.js b/app/scenes/Settings/components/TokenListItem.js new file mode 100644 index 000000000..926c43f6c --- /dev/null +++ b/app/scenes/Settings/components/TokenListItem.js @@ -0,0 +1,28 @@ +// @flow +import * as React from 'react'; +import distanceInWordsToNow from 'date-fns/distance_in_words_to_now'; +import Button from 'components/Button'; +import ListItem from 'components/List/Item'; +import type { ApiKey } from '../../../types'; + +type Props = { + token: ApiKey, + onDelete: (tokenId: string) => *, +}; + +const TokenListItem = ({ token, onDelete }: Props) => { + return ( + {token.secret}} + actions={ + + } + /> + ); +}; + +export default TokenListItem; diff --git a/app/types/index.js b/app/types/index.js index 323413a19..2ef769b57 100644 --- a/app/types/index.js +++ b/app/types/index.js @@ -67,6 +67,6 @@ export type PaginationParams = { export type ApiKey = { id: string, - name: ?string, + name: string, secret: string, };