Add team to @rondo/comments-client
This commit is contained in:
parent
8ae82c5065
commit
150a02b344
@ -7,3 +7,4 @@ export * from './middleware'
|
||||
export * from './redux'
|
||||
export * from './renderer'
|
||||
export * from './store'
|
||||
export * from './team'
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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}),
|
||||
|
||||
@ -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')
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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}
|
||||
/>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user