From 150a02b34419bc55a59a2cfcd1369cb9f50041f4 Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Wed, 20 Mar 2019 16:38:20 +0500 Subject: [PATCH] Add team to @rondo/comments-client --- packages/client/src/index.ts | 1 + packages/client/src/login/LoginForm.tsx | 2 +- packages/client/src/team/TeamActions.ts | 2 +- packages/client/src/team/TeamConnector.test.ts | 14 +++++++++++--- packages/client/src/team/TeamConnector.ts | 6 +++++- packages/client/src/team/TeamList.tsx | 9 +++++---- packages/client/src/team/TeamManager.tsx | 3 ++- packages/client/src/team/TeamUserList.tsx | 1 + 8 files changed, 27 insertions(+), 11 deletions(-) diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index d3cac30..e5c6efa 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -7,3 +7,4 @@ export * from './middleware' export * from './redux' export * from './renderer' export * from './store' +export * from './team' diff --git a/packages/client/src/login/LoginForm.tsx b/packages/client/src/login/LoginForm.tsx index b06d300..076c9b0 100644 --- a/packages/client/src/login/LoginForm.tsx +++ b/packages/client/src/login/LoginForm.tsx @@ -7,7 +7,7 @@ import {Redirect} from '../components/Redirect' export interface ILoginFormProps { error?: string - onSubmit: () => void + onSubmit: () => Promise onChange: (name: string, value: string) => void data: ICredentials user?: IUser diff --git a/packages/client/src/team/TeamActions.ts b/packages/client/src/team/TeamActions.ts index 6420371..3494fca 100644 --- a/packages/client/src/team/TeamActions.ts +++ b/packages/client/src/team/TeamActions.ts @@ -87,7 +87,7 @@ export class TeamActions { } } - removeTeam = ({id, name}: {id: number, name: string}) + removeTeam = ({id}: {id: number}) : IAction<{}, TeamActionKeys.TEAM_REMOVE> => { return { payload: this.http.delete('/teams/:id', {}, {id}), diff --git a/packages/client/src/team/TeamConnector.test.ts b/packages/client/src/team/TeamConnector.test.ts index 620d46f..5d7c951 100644 --- a/packages/client/src/team/TeamConnector.test.ts +++ b/packages/client/src/team/TeamConnector.test.ts @@ -2,7 +2,7 @@ import * as Feature from './' // export ReactDOM from 'react-dom' // import T from 'react-dom/test-utils' import {HTTPClientMock, TestUtils/*, getError*/} from '../test-utils' -import {IAPIDef} from '@rondo/common' +import {IAPIDef, ITeam} from '@rondo/common' const test = new TestUtils() @@ -17,8 +17,16 @@ describe('TeamConnector', () => { select: state => state.Team, }) - it('should render', () => { - createTestProvider().render() + const teams: ITeam[] = [{id: 100, name: 'my-team', userId: 1}] + + it('it fetches user teams on render', async () => { + http.mockAdd({ + method: 'get', + url: '/my/teams', + }, teams) + const {node} = createTestProvider().render() + await http.wait() + expect(node.innerHTML).toContain('my-team') }) }) diff --git a/packages/client/src/team/TeamConnector.ts b/packages/client/src/team/TeamConnector.ts index e5a4bd0..423214d 100644 --- a/packages/client/src/team/TeamConnector.ts +++ b/packages/client/src/team/TeamConnector.ts @@ -11,7 +11,7 @@ export class TeamConnector extends Connector { } connect(getLocalState: IStateSelector) { - return this.wrap( + const Component = this.wrap( getLocalState, state => ({ ...state, @@ -25,8 +25,12 @@ export class TeamConnector extends Connector { fetchMyTeams: bindActionCreators(this.teamActions.fetchMyTeams, d), fetchUsersInTeam: bindActionCreators(this.teamActions.fetchUsersInTeam, d), + findUserByEmail: + bindActionCreators(this.teamActions.findUserByEmail, d), }), TeamManager, ) + + return Component } } diff --git a/packages/client/src/team/TeamList.tsx b/packages/client/src/team/TeamList.tsx index e9aac11..8a0523d 100644 --- a/packages/client/src/team/TeamList.tsx +++ b/packages/client/src/team/TeamList.tsx @@ -5,7 +5,7 @@ export interface ITeamListProps { teamsById: ReadonlyRecord, teamIds: ReadonlyArray, onAddTeam: (params: {name: string}) => Promise - onRemoveTeam: (params: {teamId: number}) => Promise + onRemoveTeam: (params: {id: number}) => Promise onUpdateTeam: (params: {id: number, name: string}) => Promise editTeamId: number } @@ -13,7 +13,7 @@ export interface ITeamListProps { export interface ITeamProps { team: ITeam editTeamId: number // TODO handle edits via react-router params - onRemoveTeam: (params: {teamId: number}) => Promise + onRemoveTeam: (params: {id: number}) => Promise onUpdateTeam: (params: {id: number, name: string}) => Promise } @@ -68,8 +68,8 @@ export class TeamAdd extends React.PureComponent { export class TeamRow extends React.PureComponent { handleRemove = async () => { - const {onRemoveTeam, team: {id: teamId}} = this.props - await onRemoveTeam({teamId}) + const {onRemoveTeam, team: {id}} = this.props + await onRemoveTeam({id}) } render() { const {team} = this.props @@ -100,6 +100,7 @@ export class TeamList extends React.PureComponent { const team = teamsById[teamId] return ( Promise updateTeam: (params: {id: number, name: string}) => Promise - removeTeam: (params: {teamId: number}) => Promise + removeTeam: (params: {id: number}) => Promise addUser: (params: {userId: number, teamId: number}) => Promise removeUser: (params: {userId: number, teamId: number}) => Promise @@ -44,6 +44,7 @@ export class TeamManager extends React.PureComponent { onRemoveTeam={this.props.removeTeam} onUpdateTeam={this.props.updateTeam} /> + { const user = this.props.usersByKey[key] return (