From f76dc29e61aaf7cf5b966d7f3d325bcbb383fcb2 Mon Sep 17 00:00:00 2001 From: zmagod Date: Mon, 23 Oct 2017 15:48:12 +0200 Subject: [PATCH] fix change user role [fixes SCI-1669] --- .../teams/components/LeaveTeamModal.jsx | 45 +++++++------- .../teams/components/TeamsDataTable.jsx | 61 +++++++++---------- .../client_api/teams/team_users.json.jbuilder | 4 +- flow-typed/teams_types.js | 3 +- 4 files changed, 58 insertions(+), 55 deletions(-) diff --git a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx index 78b7f0b56..9c3934f5d 100644 --- a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx +++ b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/LeaveTeamModal.jsx @@ -1,5 +1,6 @@ +// @flow import React, { Component } from "react"; -import PropTypes, { bool, number, string, func } from "prop-types"; +import type { Node } from "react"; import { Modal, Button, Alert, Glyphicon } from "react-bootstrap"; import { FormattedMessage, FormattedHTMLMessage } from "react-intl"; import { connect } from "react-redux"; @@ -10,18 +11,33 @@ import { setCurrentTeam } from "../../../../../components/actions/TeamsActions"; -class LeaveTeamModal extends Component { - constructor(props) { +type Team = { + id: number, + name: string, + user_team_id: number +}; + +type Props = { + updateTeamsState: Function, + showModal: boolean, + team: Team, + addTeamsData: Function, + hideLeaveTeamModel: Function, + setCurrentTeam: Function +}; + +class LeaveTeamModal extends Component { + constructor(props: Props) { super(props); - this.onCloseModal = this.onCloseModal.bind(this); - this.leaveTeam = this.leaveTeam.bind(this); + (this: any).onCloseModal = this.onCloseModal.bind(this); + (this: any).leaveTeam = this.leaveTeam.bind(this); } - onCloseModal() { + onCloseModal(): void { this.props.hideLeaveTeamModel(); } - leaveTeam() { + leaveTeam(): void { const { id, user_team_id } = this.props.team; leaveTeam(id, user_team_id) .then(response => { @@ -36,7 +52,7 @@ class LeaveTeamModal extends Component { this.props.hideLeaveTeamModel(); } - render() { + render(): Node { return ( @@ -83,19 +99,6 @@ class LeaveTeamModal extends Component { } } -LeaveTeamModal.propTypes = { - updateTeamsState: func.isRequired, - showModal: bool.isRequired, - team: PropTypes.shape({ - id: number.isRequired, - name: string.isRequired, - user_team_id: number.isRequired - }).isRequired, - addTeamsData: func.isRequired, - hideLeaveTeamModel: func.isRequired, - setCurrentTeam: func.isRequired -}; - export default connect(null, { addTeamsData, setCurrentTeam diff --git a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx index 2985b3d9a..8f1d53778 100644 --- a/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx +++ b/app/javascript/src/scenes/SettingsPage/scenes/teams/components/TeamsDataTable.jsx @@ -1,5 +1,7 @@ +// @flow import React, { Component } from "react"; -import PropTypes, { func, number, string, bool } from "prop-types"; +import type { Node } from "react"; +import type { Teams$Team } from "flow-typed"; import { Button } from "react-bootstrap"; import { Link } from "react-router-dom"; import { FormattedMessage } from "react-intl"; @@ -16,28 +18,43 @@ const DefaultTeam = { members: 0, can_be_leaved: false }; -class TeamsDataTable extends Component { - constructor(props) { + +type Props = { + updateTeamsState: Function, + teams: Array +} + +type State = { + leaveTeamModalShow: boolean, + team: Teams$Team +} + +class TeamsDataTable extends Component { + constructor(props: Props) { super(props); this.state = { leaveTeamModalShow: false, team: DefaultTeam }; - this.leaveTeamModal = this.leaveTeamModal.bind(this); - this.leaveTeamButton = this.leaveTeamButton.bind(this); - this.linkToTeam = this.linkToTeam.bind(this); - this.hideLeaveTeamModel = this.hideLeaveTeamModel.bind(this); + (this: any).leaveTeamModal = this.leaveTeamModal.bind(this); + (this: any).leaveTeamButton = this.leaveTeamButton.bind(this); + (this: any).linkToTeam = this.linkToTeam.bind(this); + (this: any).hideLeaveTeamModel = this.hideLeaveTeamModel.bind(this); } - leaveTeamModal(e, team) { - this.setState({ leaveTeamModalShow: true, team }); + leaveTeamModal(e: string, team: Teams$Team): void { + (this: any).setState({ leaveTeamModalShow: true, team }); } - hideLeaveTeamModel() { - this.setState({ leaveTeamModalShow: false, team: DefaultTeam }); + hideLeaveTeamModel(): void { + (this: any).setState({ leaveTeamModalShow: false, team: DefaultTeam }); } - leaveTeamButton(id, team) { + linkToTeam(name: string, team: Teams$Team): Node { + return {name}; + } + + leaveTeamButton(id: string, team: Teams$Team): Node { if (team.can_be_leaved) { return (