From e36e477d9a2c815e815ac1eb069551ab47f74e49 Mon Sep 17 00:00:00 2001 From: Jakob Weisblat Date: Thu, 5 Mar 2020 17:32:18 -0500 Subject: [PATCH] feature team widget on team page (#22917) * feature team widget on team page * stories * eslint * danny feedback --- shared/actions/json/teams.json | 3 + shared/actions/teams-gen.tsx | 10 ++ shared/actions/teams.tsx | 2 +- shared/actions/typed-actions-gen.tsx | 1 + shared/common-adapters/icon.constants-gen.tsx | 9 ++ shared/constants/teams.tsx | 2 + shared/constants/types/teams.tsx | 5 + ...ustration-teams-feature-profile-460-64.png | Bin 0 -> 4717 bytes ...ration-teams-feature-profile-460-64@2x.png | Bin 0 -> 11105 bytes ...ration-teams-feature-profile-460-64@3x.png | Bin 0 -> 18609 bytes shared/reducers/teams.tsx | 3 + .../__snapshots__/Storyshots.test.js.snap | 31 ++++ shared/teams/team/new-header.tsx | 143 +++++++++++++----- shared/teams/team/rows/member-row/index.tsx | 2 +- 14 files changed, 174 insertions(+), 37 deletions(-) create mode 100755 shared/images/icons/icon-illustration-teams-feature-profile-460-64.png create mode 100755 shared/images/icons/icon-illustration-teams-feature-profile-460-64@2x.png create mode 100755 shared/images/icons/icon-illustration-teams-feature-profile-460-64@3x.png diff --git a/shared/actions/json/teams.json b/shared/actions/json/teams.json index 9309c14c17cf..a2fb2c9cac63 100644 --- a/shared/actions/json/teams.json +++ b/shared/actions/json/teams.json @@ -353,6 +353,9 @@ "teamID": "Types.TeamID", "message": "RPCChatTypes.WelcomeMessageDisplay" }, + "setJustFinishedAddMembersWizard": { + "justFinished": "boolean" + }, "setSubteamFilter": { "_description": "Set filtering for the subteams tab.", "filter": "string", diff --git a/shared/actions/teams-gen.tsx b/shared/actions/teams-gen.tsx index 32bbb7971ecf..38a516523f08 100644 --- a/shared/actions/teams-gen.tsx +++ b/shared/actions/teams-gen.tsx @@ -52,6 +52,7 @@ export const setChannelCreationError = 'teams:setChannelCreationError' export const setChannelSelected = 'teams:setChannelSelected' export const setEditDescriptionError = 'teams:setEditDescriptionError' export const setEmailInviteError = 'teams:setEmailInviteError' +export const setJustFinishedAddMembersWizard = 'teams:setJustFinishedAddMembersWizard' export const setMemberPublicity = 'teams:setMemberPublicity' export const setMembers = 'teams:setMembers' export const setNewTeamInfo = 'teams:setNewTeamInfo' @@ -215,6 +216,7 @@ type _SetChannelSelectedPayload = { } type _SetEditDescriptionErrorPayload = {readonly error: string} type _SetEmailInviteErrorPayload = {readonly message: string; readonly malformed: Array} +type _SetJustFinishedAddMembersWizardPayload = {readonly justFinished: boolean} type _SetMemberPublicityPayload = {readonly teamID: Types.TeamID; readonly showcase: boolean} type _SetMembersPayload = {readonly teamID: Types.TeamID; readonly members: Map} type _SetNewTeamInfoPayload = { @@ -549,6 +551,9 @@ export const createSetEditDescriptionError = ( export const createSetEmailInviteError = ( payload: _SetEmailInviteErrorPayload ): SetEmailInviteErrorPayload => ({payload, type: setEmailInviteError}) +export const createSetJustFinishedAddMembersWizard = ( + payload: _SetJustFinishedAddMembersWizardPayload +): SetJustFinishedAddMembersWizardPayload => ({payload, type: setJustFinishedAddMembersWizard}) export const createSetMemberPublicity = (payload: _SetMemberPublicityPayload): SetMemberPublicityPayload => ({ payload, type: setMemberPublicity, @@ -809,6 +814,10 @@ export type SetEmailInviteErrorPayload = { readonly payload: _SetEmailInviteErrorPayload readonly type: typeof setEmailInviteError } +export type SetJustFinishedAddMembersWizardPayload = { + readonly payload: _SetJustFinishedAddMembersWizardPayload + readonly type: typeof setJustFinishedAddMembersWizard +} export type SetMemberPublicityPayload = { readonly payload: _SetMemberPublicityPayload readonly type: typeof setMemberPublicity @@ -995,6 +1004,7 @@ export type Actions = | SetChannelSelectedPayload | SetEditDescriptionErrorPayload | SetEmailInviteErrorPayload + | SetJustFinishedAddMembersWizardPayload | SetMemberPublicityPayload | SetMembersPayload | SetNewTeamInfoPayload diff --git a/shared/actions/teams.tsx b/shared/actions/teams.tsx index 4bc9909640ed..0814c570b1f8 100644 --- a/shared/actions/teams.tsx +++ b/shared/actions/teams.tsx @@ -892,7 +892,7 @@ const setMemberPublicity = async (state: TypedState, action: TeamsGen.SetMemberP isShowcased: showcase, teamID, }, - Constants.teamWaitingKeyByID(teamID, state) + [Constants.teamWaitingKeyByID(teamID, state), Constants.setMemberPublicityWaitingKey(teamID)] ) return } catch (error) { diff --git a/shared/actions/typed-actions-gen.tsx b/shared/actions/typed-actions-gen.tsx index 25a8c5ddb3fa..475256925f6c 100644 --- a/shared/actions/typed-actions-gen.tsx +++ b/shared/actions/typed-actions-gen.tsx @@ -973,6 +973,7 @@ export type TypedActionsMap = { 'teams:setWelcomeMessage': teams.SetWelcomeMessagePayload 'teams:loadWelcomeMessage': teams.LoadWelcomeMessagePayload 'teams:loadedWelcomeMessage': teams.LoadedWelcomeMessagePayload + 'teams:setJustFinishedAddMembersWizard': teams.SetJustFinishedAddMembersWizardPayload 'teams:setSubteamFilter': teams.SetSubteamFilterPayload 'teams:showTeamByName': teams.ShowTeamByNamePayload 'tracker2:load': tracker2.LoadPayload diff --git a/shared/common-adapters/icon.constants-gen.tsx b/shared/common-adapters/icon.constants-gen.tsx index 3b003443d3c8..e16b2f035614 100644 --- a/shared/common-adapters/icon.constants-gen.tsx +++ b/shared/common-adapters/icon.constants-gen.tsx @@ -530,6 +530,7 @@ export type IconType = | 'icon-illustration-teams-216' | 'icon-illustration-teams-80' | 'icon-illustration-teams-channels-460-96' + | 'icon-illustration-teams-feature-profile-460-64' | 'icon-illustration-teams-subteams-460-96' | 'icon-illustration-welcome-96' | 'icon-illustration-zen-240-180' @@ -5736,6 +5737,14 @@ export const iconMeta: {[k in IconType]: IconMeta} = { return require('../images/icons/icon-illustration-teams-channels-460-96.png') }, }, + 'icon-illustration-teams-feature-profile-460-64': { + extension: 'png', + imagesDir: 'icons', + isFont: false, + get require() { + return require('../images/icons/icon-illustration-teams-feature-profile-460-64.png') + }, + }, 'icon-illustration-teams-subteams-460-96': { extension: 'png', imagesDir: 'icons', diff --git a/shared/constants/teams.tsx b/shared/constants/teams.tsx index 0862412ceee0..0ca5a0fa2a7c 100644 --- a/shared/constants/teams.tsx +++ b/shared/constants/teams.tsx @@ -27,6 +27,7 @@ export const teamWaitingKeyByID = (teamID: Types.TeamID, state: TypedState) => { const teamname = getTeamNameFromID(state, teamID) ?? '' return teamWaitingKey(teamname) } +export const setMemberPublicityWaitingKey = (teamID: Types.TeamID) => `teamMemberPub:${teamID}` export const teamGetWaitingKey = (teamID: Types.TeamID) => `teamGet:${teamID}` export const teamTarsWaitingKey = (teamID: Types.TeamID) => `teamTars:${teamID}` export const teamCreationWaitingKey = 'teamCreate' @@ -167,6 +168,7 @@ export const makeRetentionPolicy = (r?: Partial): RetentionPoli }) const emptyState: Types.State = { + addMembersWizard: {justFinished: false}, addUserToTeamsResults: '', addUserToTeamsState: 'notStarted', canPerform: new Map(), diff --git a/shared/constants/types/teams.tsx b/shared/constants/types/teams.tsx index a00d5afe18d6..2021aa13c3a2 100644 --- a/shared/constants/types/teams.tsx +++ b/shared/constants/types/teams.tsx @@ -131,7 +131,12 @@ export type TeamVersion = { latestOffchainSeqno: number } +export type AddMembersWizardState = { + justFinished: boolean +} + export type State = { + readonly addMembersWizard: AddMembersWizardState readonly addUserToTeamsState: AddUserToTeamsState readonly addUserToTeamsResults: string readonly canPerform: Map diff --git a/shared/images/icons/icon-illustration-teams-feature-profile-460-64.png b/shared/images/icons/icon-illustration-teams-feature-profile-460-64.png new file mode 100755 index 0000000000000000000000000000000000000000..ee20285f2f02e9c567862540df6037b6d2ce5d58 GIT binary patch literal 4717 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 literal 0 HcmV?d00001 diff --git a/shared/images/icons/icon-illustration-teams-feature-profile-460-64@3x.png b/shared/images/icons/icon-illustration-teams-feature-profile-460-64@3x.png new file mode 100755 index 0000000000000000000000000000000000000000..0eae3f15bfe26b23fbcc2a64e50624abe583d31e GIT binary patch literal 18609 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 { draftState.errorInEditWelcomeMessage = '' }, + [TeamsGen.setJustFinishedAddMembersWizard]: (draftState, action) => { + draftState.addMembersWizard.justFinished = action.payload.justFinished + }, [EngineGen.chat1NotifyChatChatWelcomeMessageLoaded]: (draftState, action) => { const {teamID, message} = action.payload.params draftState.teamIDToWelcomeMessage.set(teamID, message) diff --git a/shared/stories/__tests__/__snapshots__/Storyshots.test.js.snap b/shared/stories/__tests__/__snapshots__/Storyshots.test.js.snap index b066c0a38faf..fd97f22c6e4c 100644 --- a/shared/stories/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/shared/stories/__tests__/__snapshots__/Storyshots.test.js.snap @@ -117707,6 +117707,37 @@ Array [ /> +
+ + + +
{ const dispatch = Container.useDispatch() @@ -30,6 +32,51 @@ const AddPeopleButton = ({teamID}: {teamID: TeamID}) => { /> ) } +type FeatureTeamCardProps = {teamID: Types.TeamID} +const FeatureTeamCard = ({teamID}: FeatureTeamCardProps) => { + const dispatch = Container.useDispatch() + const onFeature = () => dispatch(TeamsGen.createSetMemberPublicity({showcase: true, teamID})) + const onNoThanks = React.useCallback( + () => dispatch(TeamsGen.createSetJustFinishedAddMembersWizard({justFinished: false})), + [dispatch] + ) + // Automatically dismiss this when the user navigates away + React.useEffect(() => onNoThanks, [onNoThanks]) + const waiting = Container.useAnyWaiting(Constants.setMemberPublicityWaitingKey(teamID)) + return ( + + + + + Feature team on your profile? + So your friends or coworkers know of your team's existence. + + + + + + ) +} type HeaderTitleProps = Kb.PropsWithOverlay<{ teamID: TeamID @@ -48,6 +95,7 @@ const _HeaderTitle = (props: HeaderTitleProps) => { const meta = Container.useSelector(s => Constants.getTeamMeta(s, teamID)) const details = Container.useSelector(s => Constants.getTeamDetails(s, teamID)) const yourOperations = Container.useSelector(s => Constants.getCanPerformByID(s, teamID)) + const justFinishedAddWizard = Container.useSelector(s => s.teams.addMembersWizard.justFinished) const activityLevel = 'active' // TODO plumbing const newMemberCount = 0 // TODO plumbing @@ -167,41 +215,44 @@ const _HeaderTitle = (props: HeaderTitleProps) => { ) - const addInviteAndLinkBox = ( - - - {flags.teamInvites && ( - - {Styles.isMobile ? 'or' : 'or share a link:'} - - )} - {flags.teamInvites && - (Styles.isMobile ? ( - - ) : ( - - - Adds as writer • Expires 10,000 ys - - Manage invite links - - - ))} - - ) + const addInviteAndLinkBox = + justFinishedAddWizard && !meta.showcasing ? ( + + ) : ( + + + {flags.teamInvites && ( + + {Styles.isMobile ? 'or' : 'or share a link:'} + + )} + {flags.teamInvites && + (Styles.isMobile ? ( + + ) : ( + + + Adds as writer • Expires 10,000 ys + + Manage invite links + + + ))} + + ) if (Styles.isMobile) { return ( @@ -317,6 +368,27 @@ const styles = Styles.styleSheetCreate( margin: Styles.globalMargins.tiny, }, }), + addInviteAsFeatureTeamBox: Styles.platformStyles({ + common: { + borderColor: Styles.globalColors.black_10, + borderStyle: 'solid', + borderWidth: 1, + flexShrink: 0, + padding: Styles.globalMargins.tiny, + }, + isElectron: { + borderRadius: 4, + height: 184, + marginBottom: Styles.globalMargins.xsmall, + marginRight: Styles.globalMargins.small, + width: 220, + }, + isMobile: { + borderRadius: 8, + flexGrow: 1, + margin: Styles.globalMargins.tiny, + }, + }), addPeopleButton: { flexGrow: 0, }, @@ -351,6 +423,7 @@ const styles = Styles.styleSheetCreate( header: { flexShrink: 1, }, + illustration: {borderRadius: 4, overflow: 'hidden', width: '100%'}, marginBottomRightTiny: { marginBottom: Styles.globalMargins.tiny, marginRight: Styles.globalMargins.tiny, diff --git a/shared/teams/team/rows/member-row/index.tsx b/shared/teams/team/rows/member-row/index.tsx index 8c1a151a8883..d93404366940 100644 --- a/shared/teams/team/rows/member-row/index.tsx +++ b/shared/teams/team/rows/member-row/index.tsx @@ -210,7 +210,7 @@ export const TeamMemberRow = (props: Props) => { containerStyleOverride={styles.listItemMargin} type="Large" body={body} - firstItem={isOwner} + firstItem={isOwner /*TODO: make this accurate */} style={selected ? styles.selected : undefined} onClick={anySelected ? () => onSelect(!selected) : props.onClick} />