Add team to @rondo/comments-client

This commit is contained in:
Jerko Steiner 2019-03-20 16:38:20 +05:00
parent 8ae82c5065
commit 150a02b344
8 changed files with 27 additions and 11 deletions

View File

@ -7,3 +7,4 @@ export * from './middleware'
export * from './redux'
export * from './renderer'
export * from './store'
export * from './team'

View File

@ -7,7 +7,7 @@ import {Redirect} from '../components/Redirect'
export interface ILoginFormProps {
error?: string
onSubmit: () => void
onSubmit: () => Promise<IUser>
onChange: (name: string, value: string) => void
data: ICredentials
user?: IUser

View File

@ -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}),

View File

@ -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')
})
})

View File

@ -11,7 +11,7 @@ export class TeamConnector extends Connector<ITeamState> {
}
connect<State>(getLocalState: IStateSelector<State, ITeamState>) {
return this.wrap(
const Component = this.wrap(
getLocalState,
state => ({
...state,
@ -25,8 +25,12 @@ export class TeamConnector extends Connector<ITeamState> {
fetchMyTeams: bindActionCreators(this.teamActions.fetchMyTeams, d),
fetchUsersInTeam:
bindActionCreators(this.teamActions.fetchUsersInTeam, d),
findUserByEmail:
bindActionCreators(this.teamActions.findUserByEmail, d),
}),
TeamManager,
)
return Component
}
}

View File

@ -5,7 +5,7 @@ export interface ITeamListProps {
teamsById: ReadonlyRecord<number, ITeam>,
teamIds: ReadonlyArray<number>,
onAddTeam: (params: {name: string}) => Promise<void>
onRemoveTeam: (params: {teamId: number}) => Promise<void>
onRemoveTeam: (params: {id: number}) => Promise<void>
onUpdateTeam: (params: {id: number, name: string}) => Promise<void>
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<void>
onRemoveTeam: (params: {id: number}) => Promise<void>
onUpdateTeam: (params: {id: number, name: string}) => Promise<void>
}
@ -68,8 +68,8 @@ export class TeamAdd extends React.PureComponent<IAddTeamProps, IAddTeamState> {
export class TeamRow extends React.PureComponent<ITeamProps> {
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<ITeamListProps> {
const team = teamsById[teamId]
return (
<TeamRow
key={team.id}
editTeamId={editTeamId}
onRemoveTeam={this.props.onRemoveTeam}
onUpdateTeam={this.props.onUpdateTeam}

View File

@ -7,7 +7,7 @@ import {TeamUserList} from './TeamUserList'
export interface ITeamManagerProps {
createTeam: (params: {name: string}) => Promise<void>
updateTeam: (params: {id: number, name: string}) => Promise<void>
removeTeam: (params: {teamId: number}) => Promise<void>
removeTeam: (params: {id: number}) => Promise<void>
addUser: (params: {userId: number, teamId: number}) => Promise<void>
removeUser: (params: {userId: number, teamId: number}) => Promise<void>
@ -44,6 +44,7 @@ export class TeamManager extends React.PureComponent<ITeamManagerProps> {
onRemoveTeam={this.props.removeTeam}
onUpdateTeam={this.props.updateTeam}
/>
<TeamUserList
onAddUser={this.props.addUser}
onRemoveUser={this.props.removeUser}

View File

@ -125,6 +125,7 @@ export class TeamUserList extends React.PureComponent<ITeamUsersProps> {
const user = this.props.usersByKey[key]
return (
<TeamUser
key={key}
user={user}
onRemoveUser={this.props.onRemoveUser}
/>