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 './redux'
|
||||||
export * from './renderer'
|
export * from './renderer'
|
||||||
export * from './store'
|
export * from './store'
|
||||||
|
export * from './team'
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import {Redirect} from '../components/Redirect'
|
|||||||
|
|
||||||
export interface ILoginFormProps {
|
export interface ILoginFormProps {
|
||||||
error?: string
|
error?: string
|
||||||
onSubmit: () => void
|
onSubmit: () => Promise<IUser>
|
||||||
onChange: (name: string, value: string) => void
|
onChange: (name: string, value: string) => void
|
||||||
data: ICredentials
|
data: ICredentials
|
||||||
user?: IUser
|
user?: IUser
|
||||||
|
|||||||
@ -87,7 +87,7 @@ export class TeamActions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
removeTeam = ({id, name}: {id: number, name: string})
|
removeTeam = ({id}: {id: number})
|
||||||
: IAction<{}, TeamActionKeys.TEAM_REMOVE> => {
|
: IAction<{}, TeamActionKeys.TEAM_REMOVE> => {
|
||||||
return {
|
return {
|
||||||
payload: this.http.delete('/teams/:id', {}, {id}),
|
payload: this.http.delete('/teams/:id', {}, {id}),
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import * as Feature from './'
|
|||||||
// export ReactDOM from 'react-dom'
|
// export ReactDOM from 'react-dom'
|
||||||
// import T from 'react-dom/test-utils'
|
// import T from 'react-dom/test-utils'
|
||||||
import {HTTPClientMock, TestUtils/*, getError*/} from '../test-utils'
|
import {HTTPClientMock, TestUtils/*, getError*/} from '../test-utils'
|
||||||
import {IAPIDef} from '@rondo/common'
|
import {IAPIDef, ITeam} from '@rondo/common'
|
||||||
|
|
||||||
const test = new TestUtils()
|
const test = new TestUtils()
|
||||||
|
|
||||||
@ -17,8 +17,16 @@ describe('TeamConnector', () => {
|
|||||||
select: state => state.Team,
|
select: state => state.Team,
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should render', () => {
|
const teams: ITeam[] = [{id: 100, name: 'my-team', userId: 1}]
|
||||||
createTestProvider().render()
|
|
||||||
|
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>) {
|
connect<State>(getLocalState: IStateSelector<State, ITeamState>) {
|
||||||
return this.wrap(
|
const Component = this.wrap(
|
||||||
getLocalState,
|
getLocalState,
|
||||||
state => ({
|
state => ({
|
||||||
...state,
|
...state,
|
||||||
@ -25,8 +25,12 @@ export class TeamConnector extends Connector<ITeamState> {
|
|||||||
fetchMyTeams: bindActionCreators(this.teamActions.fetchMyTeams, d),
|
fetchMyTeams: bindActionCreators(this.teamActions.fetchMyTeams, d),
|
||||||
fetchUsersInTeam:
|
fetchUsersInTeam:
|
||||||
bindActionCreators(this.teamActions.fetchUsersInTeam, d),
|
bindActionCreators(this.teamActions.fetchUsersInTeam, d),
|
||||||
|
findUserByEmail:
|
||||||
|
bindActionCreators(this.teamActions.findUserByEmail, d),
|
||||||
}),
|
}),
|
||||||
TeamManager,
|
TeamManager,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return Component
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ export interface ITeamListProps {
|
|||||||
teamsById: ReadonlyRecord<number, ITeam>,
|
teamsById: ReadonlyRecord<number, ITeam>,
|
||||||
teamIds: ReadonlyArray<number>,
|
teamIds: ReadonlyArray<number>,
|
||||||
onAddTeam: (params: {name: string}) => Promise<void>
|
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>
|
onUpdateTeam: (params: {id: number, name: string}) => Promise<void>
|
||||||
editTeamId: number
|
editTeamId: number
|
||||||
}
|
}
|
||||||
@ -13,7 +13,7 @@ export interface ITeamListProps {
|
|||||||
export interface ITeamProps {
|
export interface ITeamProps {
|
||||||
team: ITeam
|
team: ITeam
|
||||||
editTeamId: number // TODO handle edits via react-router params
|
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>
|
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> {
|
export class TeamRow extends React.PureComponent<ITeamProps> {
|
||||||
handleRemove = async () => {
|
handleRemove = async () => {
|
||||||
const {onRemoveTeam, team: {id: teamId}} = this.props
|
const {onRemoveTeam, team: {id}} = this.props
|
||||||
await onRemoveTeam({teamId})
|
await onRemoveTeam({id})
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
const {team} = this.props
|
const {team} = this.props
|
||||||
@ -100,6 +100,7 @@ export class TeamList extends React.PureComponent<ITeamListProps> {
|
|||||||
const team = teamsById[teamId]
|
const team = teamsById[teamId]
|
||||||
return (
|
return (
|
||||||
<TeamRow
|
<TeamRow
|
||||||
|
key={team.id}
|
||||||
editTeamId={editTeamId}
|
editTeamId={editTeamId}
|
||||||
onRemoveTeam={this.props.onRemoveTeam}
|
onRemoveTeam={this.props.onRemoveTeam}
|
||||||
onUpdateTeam={this.props.onUpdateTeam}
|
onUpdateTeam={this.props.onUpdateTeam}
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import {TeamUserList} from './TeamUserList'
|
|||||||
export interface ITeamManagerProps {
|
export interface ITeamManagerProps {
|
||||||
createTeam: (params: {name: string}) => Promise<void>
|
createTeam: (params: {name: string}) => Promise<void>
|
||||||
updateTeam: (params: {id: number, 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>
|
addUser: (params: {userId: number, teamId: number}) => Promise<void>
|
||||||
removeUser: (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}
|
onRemoveTeam={this.props.removeTeam}
|
||||||
onUpdateTeam={this.props.updateTeam}
|
onUpdateTeam={this.props.updateTeam}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TeamUserList
|
<TeamUserList
|
||||||
onAddUser={this.props.addUser}
|
onAddUser={this.props.addUser}
|
||||||
onRemoveUser={this.props.removeUser}
|
onRemoveUser={this.props.removeUser}
|
||||||
|
|||||||
@ -125,6 +125,7 @@ export class TeamUserList extends React.PureComponent<ITeamUsersProps> {
|
|||||||
const user = this.props.usersByKey[key]
|
const user = this.props.usersByKey[key]
|
||||||
return (
|
return (
|
||||||
<TeamUser
|
<TeamUser
|
||||||
|
key={key}
|
||||||
user={user}
|
user={user}
|
||||||
onRemoveUser={this.props.onRemoveUser}
|
onRemoveUser={this.props.onRemoveUser}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user