From 5460e06ffed13bec1b796db525de7f8f5fe7ee17 Mon Sep 17 00:00:00 2001 From: Jori Lallo Date: Thu, 28 Dec 2017 12:59:36 +0200 Subject: [PATCH] added members view --- app/scenes/Settings/Members.js | 95 ++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 app/scenes/Settings/Members.js diff --git a/app/scenes/Settings/Members.js b/app/scenes/Settings/Members.js new file mode 100644 index 000000000..6224156b2 --- /dev/null +++ b/app/scenes/Settings/Members.js @@ -0,0 +1,95 @@ +// @flow +import React, { Component } from 'react'; +import { observable, runInAction } from 'mobx'; +import { observer } from 'mobx-react'; +import invariant from 'invariant'; +import styled from 'styled-components'; +import Flex from 'shared/components/Flex'; +import Avatar from 'components/Avatar'; +import { color, layout } from 'shared/styles/constants'; + +import { client } from 'utils/ApiClient'; +import CenteredContent from 'components/CenteredContent'; +import PageTitle from 'components/PageTitle'; +import HelpText from 'components/HelpText'; + +@observer +class Members extends Component { + @observable members; + @observable isLoaded: boolean = false; + + componentDidMount() { + this.fetchMembers(); + } + + async fetchMembers() { + try { + const res = await client.post(`/team.users`); + invariant(res && res.data, 'Unable '); + const { data } = res; + runInAction('Members#fetchMembers', () => { + this.members = data; + }); + } catch (e) { + // show error + } + } + + render() { + return ( + + +

Members

+ {this.members && ( + + {this.members.map(member => ( + + + + + {member.name} · {member.email} + {member.isAdmin && Admin} + + + + { }}>Make admin + + + ))} + + )} +
+ ); + } +} + +const MemberList = styled(Flex) ` + border: 1px solid ${color.smoke}; + border-radius: 4px; +`; + +const Member = styled(Flex) ` + padding: 4px 10px; + border-bottom: 1px solid ${color.smoke}; + font-size: 15px; + + &:last-child { + border-bottom: none; + } +`; + +const UserName = styled.span` + padding-left: 8px; +`; + +const AdminBadge = styled.span` + margin-left: 10px; + color: #777; + font-size: 13px; + text-transform: uppercase; + font-weight: normal; +`; + +const Action = styled.span``; + +export default Members;