Skip to content

Commit

Permalink
subteam wizard: misc fixes (keybase#23805)
Browse files Browse the repository at this point in the history
  • Loading branch information
aaazalea authored Apr 15, 2020
1 parent bfb267b commit baad69b
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 8 deletions.
3 changes: 3 additions & 0 deletions shared/actions/json/teams.json
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,9 @@
"setTeamWizardSubteams": {
"subteams": "Array<string>"
},
"setTeamWizardSubteamMembers": {
"members": "Array<string>"
},
"setTeamWizardError": {
"error": "string"
},
Expand Down
10 changes: 10 additions & 0 deletions shared/actions/teams-gen.tsx

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions shared/actions/teams.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1476,6 +1476,7 @@ const setTeamWizardAvatar = (state: TypedState) => {
return RouteTreeGen.createNavigateAppend({path: [{selected: 'teamWizard4TeamSize'}]})
}
}
const setTeamWizardSubteamMembers = () => RouteTreeGen.createNavigateAppend({path: ['teamAddToTeamConfirm']})
const setTeamWizardTeamSize = (action: TeamsGen.SetTeamWizardTeamSizePayload) =>
action.payload.isBig
? RouteTreeGen.createNavigateAppend({path: [{selected: 'teamWizard5Channels'}]})
Expand Down Expand Up @@ -1644,6 +1645,7 @@ const teamsSaga = function*() {
yield* Saga.chainAction(TeamsGen.setTeamWizardTeamSize, setTeamWizardTeamSize)
yield* Saga.chainAction(TeamsGen.setTeamWizardChannels, setTeamWizardChannels)
yield* Saga.chainAction(TeamsGen.setTeamWizardSubteams, setTeamWizardSubteams)
yield* Saga.chainAction(TeamsGen.setTeamWizardSubteamMembers, setTeamWizardSubteamMembers)
yield* Saga.chainAction2(TeamsGen.finishNewTeamWizard, finishNewTeamWizard)
yield* Saga.chainAction(TeamsGen.finishedNewTeamWizard, finishedNewTeamWizard)

Expand Down
1 change: 1 addition & 0 deletions shared/actions/typed-actions-gen.tsx

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions shared/reducers/teams.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,14 @@ export default Container.makeReducer<Actions, Types.State>(initialState, {
[TeamsGen.setTeamWizardSubteams]: (draftState, action) => {
draftState.newTeamWizard.subteams = action.payload.subteams
},
[TeamsGen.setTeamWizardSubteamMembers]: (draftState, action) => {
const {members} = action.payload
draftState.addMembersWizard = {
...Constants.addMembersWizardEmptyState,
addingMembers: members.map(m => ({assertion: m, role: 'writer'})),
teamID: Types.newTeamWizardTeamID,
}
},
[TeamsGen.setTeamWizardError]: (draftState, action) => {
draftState.newTeamWizard.error = action.payload.error
},
Expand Down
17 changes: 12 additions & 5 deletions shared/teams/new-team/wizard/add-subteam-members.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,25 @@ import * as Types from '../../../constants/types/teams'
import * as Constants from '../../../constants/teams'
import {pluralize} from '../../../util/string'
import * as RouteTreeGen from '../../../actions/route-tree-gen'
import * as TeamsGen from '../../../actions/teams-gen'
import {useTeamDetailsSubscribe} from '../../subscriber'

const AddSubteamMembers = () => {
const dispatch = Container.useDispatch()
const nav = Container.useSafeNavigation()

const onBack = () => dispatch(nav.safeNavigateUpPayload())
const onClose = () => dispatch(RouteTreeGen.createClearModals())
const onContinue = () => {} // TODO

const [selectedMembers, setSelectedMembers] = React.useState(new Set<string>())
const [filter, setFilter] = React.useState('')
const filterL = filter.toLowerCase()

const onBack = () => dispatch(nav.safeNavigateUpPayload())
const onClose = () => dispatch(RouteTreeGen.createClearModals())
const onContinue = () =>
selectedMembers.size
? dispatch(TeamsGen.createSetTeamWizardSubteamMembers({members: [...selectedMembers]}))
: dispatch(TeamsGen.createStartAddMembersWizard({teamID: Types.newTeamWizardTeamID}))

const yourUsername = Container.useSelector(state => state.config.username)
const parentTeamID = Container.useSelector(
state => state.teams.newTeamWizard.parentTeamID ?? Types.noTeamID
)
Expand All @@ -29,7 +34,9 @@ const AddSubteamMembers = () => {
const parentMembersMap = Container.useSelector(
state => Constants.getTeamDetails(state, parentTeamID).members
)
const parentMembers = [...parentMembersMap.values()].filter(m => !Constants.isBot(m.type))
const parentMembers = [...parentMembersMap.values()].filter(
m => !Constants.isBot(m.type) && m.username !== yourUsername
)
const filteredMembers = filter
? parentMembers.filter(
m => m.username.toLowerCase().includes(filterL) || m.fullName.toLowerCase().includes(filterL)
Expand Down
7 changes: 4 additions & 3 deletions shared/teams/new-team/wizard/new-team-info.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const NewTeamInfo = () => {
? Constants.getTeamNameFromID(state, teamWizardState.parentTeamID)
: undefined
)
const minLength = parentName ? 2 : 3

const [name, _setName] = React.useState(teamWizardState.name)
const teamname = parentName ? `${parentName}.${name}` : name
Expand All @@ -51,7 +52,7 @@ const NewTeamInfo = () => {
[]
)
React.useEffect(() => {
if (name.length >= 3) {
if (name.length >= minLength) {
checkTeamNameTaken(
[{teamName: {parts: teamname.split('.')}}],
({exists, status}) => {
Expand All @@ -64,7 +65,7 @@ const NewTeamInfo = () => {
setTeamNameTaken(false)
setTeamNameTakenStatus(0)
}
}, [teamname, name.length, setTeamNameTaken, checkTeamNameTaken, setTeamNameTakenStatus])
}, [teamname, name.length, setTeamNameTaken, checkTeamNameTaken, setTeamNameTakenStatus, minLength])

const [description, setDescription] = React.useState(teamWizardState.description)
const [openTeam, _setOpenTeam] = React.useState(
Expand All @@ -85,7 +86,7 @@ const NewTeamInfo = () => {
const [selectedRole, setSelectedRole] = React.useState<Types.TeamRoleType>(teamWizardState.openTeamJoinRole)
const [rolePickerIsOpen, setRolePickerIsOpen] = React.useState(false)

const continueDisabled = rolePickerIsOpen || teamNameTaken || name.length < 3
const continueDisabled = rolePickerIsOpen || teamNameTaken || name.length < minLength

const onBack = () => dispatch(nav.safeNavigateUpPayload())
const onClose = () => dispatch(RouteTreeGen.createClearModals())
Expand Down

0 comments on commit baad69b

Please sign in to comment.