diff --git a/src/js/common/actions/ChallengeStartActions.js b/src/js/common/actions/ChallengeStartActions.js index 8af8d9328..da9eecee0 100644 --- a/src/js/common/actions/ChallengeStartActions.js +++ b/src/js/common/actions/ChallengeStartActions.js @@ -22,6 +22,7 @@ export default { challengeEditAllSave ( challengeWeVoteId, challengeDescriptionQueuedToSave, challengeDescriptionQueuedToSaveSet, + challengeInviteTextDefaultQueuedToSave, challengeInviteTextDefaultQueuedToSaveSet, challengePhotoQueuedToDelete, challengePhotoQueuedToDeleteSet, challengePhotoQueuedToSave, challengePhotoQueuedToSaveSet, challengePoliticianDeleteListJson, @@ -32,6 +33,8 @@ export default { { challenge_description: challengeDescriptionQueuedToSave, challenge_description_changed: challengeDescriptionQueuedToSaveSet, + challenge_invite_text_default: challengeInviteTextDefaultQueuedToSave, + challenge_invite_text_default_changed: challengeInviteTextDefaultQueuedToSaveSet, challenge_photo_from_file_reader: challengePhotoQueuedToSave, challenge_photo_changed: challengePhotoQueuedToSaveSet, challenge_photo_delete: challengePhotoQueuedToDelete, @@ -45,6 +48,20 @@ export default { }); }, + challengeInviteTextDefaultQueuedToSave (challengeInviteTextDefault) { + Dispatcher.dispatch({ type: 'challengeInviteTextDefaultQueuedToSave', payload: challengeInviteTextDefault }); + }, + + challengeInviteTextDefaultSave (challengeWeVoteId, challengeInviteTextDefault) { + // console.log('challengeInviteTextDefaultSave: ', challengeInviteTextDefault); + Dispatcher.loadEndpoint('challengeStartSave', + { + challenge_invite_text_default: challengeInviteTextDefault, + challenge_invite_text_default_changed: true, + challenge_we_vote_id: challengeWeVoteId, + }); + }, + challengePhotoQueuedToDelete (deleteChallengePhoto = true) { Dispatcher.dispatch({ type: 'challengePhotoQueuedToDelete', payload: deleteChallengePhoto }); }, diff --git a/src/js/common/components/ChallengeInviteeListRoot/ChallengeInviteeListRoot.jsx b/src/js/common/components/ChallengeInviteeListRoot/ChallengeInviteeListRoot.jsx index 9ff0ef0ae..0989195e3 100644 --- a/src/js/common/components/ChallengeInviteeListRoot/ChallengeInviteeListRoot.jsx +++ b/src/js/common/components/ChallengeInviteeListRoot/ChallengeInviteeListRoot.jsx @@ -70,8 +70,9 @@ const styles = () => ({ }); const ChallengeInviteeListRootContainer = styled.div` - max-width: 100vw; - margin: 0 auto; + max-width: 620px; + //margin: 0 auto; + width: 100%; `; const Heading = styled.div` diff --git a/src/js/common/components/ChallengeListRoot/ChallengeListRoot.jsx b/src/js/common/components/ChallengeListRoot/ChallengeListRoot.jsx index dd31aa938..23860cf9b 100644 --- a/src/js/common/components/ChallengeListRoot/ChallengeListRoot.jsx +++ b/src/js/common/components/ChallengeListRoot/ChallengeListRoot.jsx @@ -242,7 +242,18 @@ class ChallengeListRoot extends Component { challengeSearchResults, filteredList, timeStampOfChange: Date.now(), - }); + }, () => { this.handleNumberOfResults(filteredList.length, challengeSearchResults.length); }); + } + + handleNumberOfResults (numberOfFilteredResults, numberOfSearchResults) { + // console.log('RepresentativeListRoot handleNumberOfResults numberOfFilteredResults:', numberOfFilteredResults, ', numberOfSearchResults:', numberOfSearchResults); + if (this.props.handleNumberOfResults) { + // Delay telling the parent component that the number of results has changed + // if (this.timer) clearTimeout(this.timer); + // this.timer = setTimeout(() => { + this.props.handleNumberOfResults(numberOfFilteredResults, numberOfSearchResults); + // }, 500); + } } leftAndRightArrowSetState = (el) => { diff --git a/src/js/common/components/ChallengeStart/ChallengeDescriptionInputField.jsx b/src/js/common/components/ChallengeStart/ChallengeDescriptionInputField.jsx index eff40aa68..83aff0dc7 100755 --- a/src/js/common/components/ChallengeStart/ChallengeDescriptionInputField.jsx +++ b/src/js/common/components/ChallengeStart/ChallengeDescriptionInputField.jsx @@ -97,6 +97,7 @@ class ChallengeDescriptionInputField extends Component { +
{ e.preventDefault(); }}> + + + + + + + +
+ + ); + } +} +ChallengeInviteTextDefaultInputField.propTypes = { + challengeWeVoteId: PropTypes.string, + classes: PropTypes.object, + editExistingChallenge: PropTypes.bool, + externalUniqueId: PropTypes.string, +}; + +const styles = () => ({ + formControl: { + width: '100%', + }, + // TODO: Figure out how to apply to TextField + textField: { + fontSize: '22px', + }, +}); + +const ColumnFullWidth = styled('div')` + padding: 8px 12px; + width: 100%; +`; + +const Wrapper = styled('div')` + display: flex; + justify-content: space-between; + margin-left: -12px; + width: calc(100% + 24px); +`; + +export default withStyles(styles)(ChallengeInviteTextDefaultInputField); diff --git a/src/js/common/components/ChallengeStart/ChallengeTitleInputField.jsx b/src/js/common/components/ChallengeStart/ChallengeTitleInputField.jsx index ddfafa04e..278485893 100755 --- a/src/js/common/components/ChallengeStart/ChallengeTitleInputField.jsx +++ b/src/js/common/components/ChallengeStart/ChallengeTitleInputField.jsx @@ -98,6 +98,7 @@ class ChallengeTitleInputField extends Component { { + // console.log('ChallengesHome handleNumberOfChallengeResults listResults:', listResults, ', searchResults:', searchResults); this.setState({ numberOfChallengeResults: listResults, numberOfChallengeSearchResults: searchResults, @@ -296,6 +300,7 @@ class ChallengesHome extends Component { render () { renderLog('ChallengesHome'); // Set LOG_RENDER_EVENTS to log all renders + const { classes } = this.props; const { challengeList, challengeListTimeStampOfChange, detailsListMode, @@ -310,11 +315,18 @@ class ChallengesHome extends Component { // console.log('detailsListMode TRUE'); return ( - - - Create Challenge + + + - + - - - Create Challenge + + + - - + + + + + + + + + + + + {(isSearching && numberOfSearchResults === 0) && ( }> @@ -390,6 +434,7 @@ class ChallengesHome extends Component { } } ChallengesHome.propTypes = { + classes: PropTypes.object, match: PropTypes.object, }; @@ -397,7 +442,24 @@ const ChallengesHomeWrapper = styled('div')` padding-top: ${isAndroid() ? '30px' : ''}; `; -const StartAChallengeWrapper = styled('div')` +const CreateAndSearchWrapper = styled('div')` + display: flex; + justify-content: space-between; + margin-bottom: 18px; + margin-top: 12px; +`; + +const SearchDesktopWrapper = styled('div')` + margin-left: 15px; + width: 100%; +`; + +const StartAChallengeDesktopWrapper = styled('div')` + margin-bottom: 24px; + margin-top: 20px; +`; + +const StartAChallengeMobileWrapper = styled('div')` margin-bottom: 18px; margin-top: 12px; `; @@ -416,4 +478,4 @@ const WhatIsHappeningSection = styled('div', { -export default ChallengesHome; +export default withStyles(commonMuiStyles)(ChallengesHome); diff --git a/src/js/common/pages/ChallengeInviteFriends/ChallengeInviteFriends.jsx b/src/js/common/pages/ChallengeInviteFriends/ChallengeInviteFriends.jsx index d55495da8..4b09af323 100644 --- a/src/js/common/pages/ChallengeInviteFriends/ChallengeInviteFriends.jsx +++ b/src/js/common/pages/ChallengeInviteFriends/ChallengeInviteFriends.jsx @@ -4,10 +4,6 @@ import PropTypes from 'prop-types'; import React, { Component, Suspense } from 'react'; import { Helmet } from 'react-helmet-async'; import styled from 'styled-components'; -import VoterActions from '../../../actions/VoterActions'; -import webAppConfig from '../../../config'; -import VoterStore from '../../../stores/VoterStore'; -import ChallengeParticipantActions from '../../actions/ChallengeParticipantActions'; import ChallengeHeaderSimple from '../../components/Navigation/ChallengeHeaderSimple'; import { CampaignProcessStepIntroductionText } from '../../components/Style/CampaignProcessStyles'; import { CampaignSupportSection, CampaignSupportSectionWrapper } from '../../components/Style/CampaignSupportStyles'; @@ -15,23 +11,20 @@ import commonMuiStyles from '../../components/Style/commonMuiStyles'; import { ContentInnerWrapperDefault, ContentOuterWrapperDefault, PageWrapperDefault } from '../../components/Style/PageWrapperStyles'; import AppObservableStore, { messageService } from '../../stores/AppObservableStore'; import ChallengeStore from '../../stores/ChallengeStore'; -import ChallengeParticipantStore from '../../stores/ChallengeParticipantStore'; import { getChallengeValuesFromIdentifiers, retrieveChallengeFromIdentifiersIfNeeded } from '../../utils/challengeUtils'; import historyPush from '../../utils/historyPush'; -import initializejQuery from '../../utils/initializejQuery'; import { renderLog } from '../../utils/logging'; import DesignTokenColors from '../../components/Style/DesignTokenColors'; import ChallengeInviteSteps from '../../components/Navigation/ChallengeInviteSteps'; -import ChallengeInvitedFriends from '../../components/ChallengeInviteFriends/ChallengeInvitedFriends'; -import InviteFriendToChallengeInput from '../../components/ChallengeInviteFriends/InviteFriendToChallengeInput'; +import ChallengeInviteeListRoot from '../../components/ChallengeInviteeListRoot/ChallengeInviteeListRoot'; +import InviteFriendToChallengeInput from '../../components/ChallengeInviteeListRoot/InviteFriendToChallengeInput'; import YourRank from '../../components/Challenge/YourRank'; const ChallengeRetrieveController = React.lazy(() => import(/* webpackChunkName: 'ChallengeRetrieveController' */ '../../components/Challenge/ChallengeRetrieveController')); const VoterFirstRetrieveController = loadable(() => import(/* webpackChunkName: 'VoterFirstRetrieveController' */ '../../components/Settings/VoterFirstRetrieveController')); -// TODO SOON: Change name to ChallengeInviteFriends -class ChallengeInviteCopy extends Component { +class ChallengeInviteFriends extends Component { constructor (props) { super(props); this.state = { @@ -40,37 +33,30 @@ class ChallengeInviteCopy extends Component { challengeTitle: '', challengeWeVoteId: '', chosenWebsiteName: '', - linkedPoliticianWeVoteId: '', - payToPromoteStepTurnedOn: true, - weVoteHostedProfileImageUrlLarge: '', }; } componentDidMount () { - // console.log('ChallengeInviteCopy componentDidMount'); + // console.log('ChallengeInviteFriends componentDidMount'); this.props.setShowHeaderFooter(false); this.onAppObservableStoreChange(); this.appStateSubscription = messageService.getMessage().subscribe(() => this.onAppObservableStoreChange()); this.onChallengeStoreChange(); this.challengeStoreListener = ChallengeStore.addListener(this.onChallengeStoreChange.bind(this)); - this.onVoterStoreChange(); - this.voterStoreListener = VoterStore.addListener(this.onVoterStoreChange.bind(this)); const { match: { params } } = this.props; const { challengeSEOFriendlyPath: challengeSEOFriendlyPathFromParams, challengeWeVoteId: challengeWeVoteIdFromParams } = params; // console.log('componentDidMount challengeSEOFriendlyPathFromParams: ', challengeSEOFriendlyPathFromParams, ', challengeWeVoteIdFromParams: ', challengeWeVoteIdFromParams); const { challengePhotoLargeUrl, challengeSEOFriendlyPath, - challengePoliticianList, + // challengePoliticianList, challengeWeVoteId, - linkedPoliticianWeVoteId, - weVoteHostedProfileImageUrlLarge, + // linkedPoliticianWeVoteId, } = getChallengeValuesFromIdentifiers(challengeSEOFriendlyPathFromParams, challengeWeVoteIdFromParams); this.setState({ challengePhotoLargeUrl, - challengePoliticianList, - linkedPoliticianWeVoteId, - weVoteHostedProfileImageUrlLarge, + // challengePoliticianList, + // linkedPoliticianWeVoteId, }); if (challengeSEOFriendlyPath) { this.setState({ @@ -99,17 +85,13 @@ class ChallengeInviteCopy extends Component { this.props.setShowHeaderFooter(true); this.appStateSubscription.unsubscribe(); this.challengeStoreListener.remove(); - this.voterStoreListener.remove(); } onAppObservableStoreChange () { const chosenWebsiteName = AppObservableStore.getChosenWebsiteName(); - const inPrivateLabelMode = AppObservableStore.inPrivateLabelMode(); // For now, we assume that paid sites with chosenSiteLogoUrl will turn off "Chip in" - const payToPromoteStepTurnedOn = !inPrivateLabelMode && webAppConfig.ENABLE_PAY_TO_PROMOTE; this.setState({ chosenWebsiteName, - payToPromoteStepTurnedOn, }); } @@ -121,17 +103,15 @@ class ChallengeInviteCopy extends Component { challengePhotoLargeUrl, challengeSEOFriendlyPath, challengeTitle, - challengePoliticianList, + // challengePoliticianList, challengeWeVoteId, - linkedPoliticianWeVoteId, - weVoteHostedProfileImageUrlLarge, + // linkedPoliticianWeVoteId, } = getChallengeValuesFromIdentifiers(challengeSEOFriendlyPathFromParams, challengeWeVoteIdFromParams); this.setState({ challengePhotoLargeUrl, challengeTitle, - challengePoliticianList, - linkedPoliticianWeVoteId, - weVoteHostedProfileImageUrlLarge, + // challengePoliticianList, + // linkedPoliticianWeVoteId, }); if (challengeSEOFriendlyPath) { this.setState({ @@ -153,13 +133,6 @@ class ChallengeInviteCopy extends Component { } } - onVoterStoreChange () { - const voterPhotoUrlLarge = VoterStore.getVoterPhotoUrlLarge(); - this.setState({ - voterPhotoUrlLarge, - }); - } - getChallengeBasePath = () => { const { challengeSEOFriendlyPath, challengeWeVoteId } = this.state; let challengeBasePath; @@ -171,75 +144,14 @@ class ChallengeInviteCopy extends Component { return challengeBasePath; } - getPoliticianBasePath = () => { - const { politicianSEOFriendlyPath, linkedPoliticianWeVoteId } = this.state; - let politicianBasePath; - if (politicianSEOFriendlyPath) { - politicianBasePath = `/${politicianSEOFriendlyPath}/-/`; - } else if (linkedPoliticianWeVoteId) { - politicianBasePath = `/${linkedPoliticianWeVoteId}/p/`; - } else { - // console.log('ChallengeRecommendedChallenges getPoliticianBasePath, failed to get politicianBasePath'); - politicianBasePath = this.getChallengeBasePath(); - } - return politicianBasePath; - } - - goToNextStep = () => { - const { payToPromoteStepTurnedOn } = this.state; - if (payToPromoteStepTurnedOn) { - historyPush(`${this.getChallengeBasePath()}pay-to-promote`); - } else { - historyPush(`${this.getChallengeBasePath()}share-challenge`); - } - } - goToChallengeHome = () => { historyPush(this.getChallengeBasePath()); } - submitSkipForNow = () => { - initializejQuery(() => { - ChallengeParticipantActions.participantEndorsementQueuedToSave(undefined); - }); - this.goToNextStep(); - } - - joinChallengeNowSubmit = () => { - const { challengeWeVoteId } = this.state; - if (challengeWeVoteId) { - const participantEndorsementQueuedToSave = ChallengeParticipantStore.getSupporterEndorsementQueuedToSave(); - const participantEndorsementQueuedToSaveSet = ChallengeParticipantStore.getSupporterEndorsementQueuedToSaveSet(); - let visibleToPublic = ChallengeParticipantStore.getVisibleToPublic(); - const visibleToPublicChanged = ChallengeParticipantStore.getVisibleToPublicQueuedToSaveSet(); - if (visibleToPublicChanged) { - // If it has changed, use new value - visibleToPublic = ChallengeParticipantStore.getVisibleToPublicQueuedToSave(); - } - if (participantEndorsementQueuedToSaveSet || visibleToPublicChanged) { - // console.log('ChallengeInviteCopy, participantEndorsementQueuedToSave:', participantEndorsementQueuedToSave); - const saveVisibleToPublic = true; - initializejQuery(() => { - ChallengeParticipantActions.participantEndorsementSave(challengeWeVoteId, participantEndorsementQueuedToSave, visibleToPublic, saveVisibleToPublic); // challengeParticipantSave - ChallengeParticipantActions.participantEndorsementQueuedToSave(undefined); - }); - } - const voterPhotoQueuedToSave = VoterStore.getVoterPhotoQueuedToSave(); - const voterPhotoQueuedToSaveSet = VoterStore.getVoterPhotoQueuedToSaveSet(); - if (voterPhotoQueuedToSaveSet) { - initializejQuery(() => { - VoterActions.voterPhotoSave(voterPhotoQueuedToSave, voterPhotoQueuedToSaveSet); - VoterActions.voterPhotoQueuedToSave(undefined); - }); - } - this.goToNextStep(); - } - } - render () { - renderLog('ChallengeInviteCopy'); // Set LOG_RENDER_EVENTS to log all renders + renderLog('ChallengeInviteFriends'); // Set LOG_RENDER_EVENTS to log all renders const { - challengeSEOFriendlyPath, challengeTitle, + challengePhotoLargeUrl, challengeSEOFriendlyPath, challengeTitle, challengeWeVoteId, chosenWebsiteName, } = this.state; const htmlTitle = `Invite your friends - ${chosenWebsiteName}`; @@ -251,10 +163,10 @@ class ChallengeInviteCopy extends Component { - + - - + +  }> @@ -296,7 +208,7 @@ class ChallengeInviteCopy extends Component { ); } } -ChallengeInviteCopy.propTypes = { +ChallengeInviteFriends.propTypes = { match: PropTypes.object, setShowHeaderFooter: PropTypes.func, }; @@ -315,4 +227,4 @@ const InvitedFriendsWrapper = styled('div')` flex-direction: column; `; -export default withStyles(commonMuiStyles)(ChallengeInviteCopy); +export default withStyles(commonMuiStyles)(ChallengeInviteFriends); diff --git a/src/js/common/pages/ChallengeStart/ChallengeStartEditAll.jsx b/src/js/common/pages/ChallengeStart/ChallengeStartEditAll.jsx index ea4bc4345..f8635e43b 100644 --- a/src/js/common/pages/ChallengeStart/ChallengeStartEditAll.jsx +++ b/src/js/common/pages/ChallengeStart/ChallengeStartEditAll.jsx @@ -10,11 +10,10 @@ import { OuterWrapper, PageWrapper } from '../../components/Style/stepDisplaySty import OpenExternalWebSite from '../../components/Widgets/OpenExternalWebSite'; import historyPush from '../../utils/historyPush'; import { renderLog } from '../../utils/logging'; -// import AddCandidateInputField from '../../components/ChallengeStart/AddPoliticianInputField'; import ChallengeDescriptionInputField from '../../components/ChallengeStart/ChallengeDescriptionInputField'; +import ChallengeInviteTextDefaultInputField from '../../components/ChallengeStart/ChallengeInviteTextDefaultInputField'; import ChallengePhotoUpload from '../../components/ChallengeStart/ChallengePhotoUpload'; import ChallengeTitleInputField from '../../components/ChallengeStart/ChallengeTitleInputField'; -// import EditPoliticianList from '../../components/ChallengeStart/EditPoliticianList'; import { BlockedReason } from '../../components/Style/CampaignIndicatorStyles'; import AppObservableStore, { messageService } from '../../stores/AppObservableStore'; import ChallengeStartStore from '../../stores/ChallengeStartStore'; @@ -177,6 +176,8 @@ class ChallengeStartEditAll extends Component { const { challengeWeVoteId, voterIsChallengeOwner } = this.state; const challengeDescriptionQueuedToSave = ChallengeStartStore.getChallengeDescriptionQueuedToSave(); const challengeDescriptionQueuedToSaveSet = ChallengeStartStore.getChallengeDescriptionQueuedToSaveSet(); + const challengeInviteTextDefaultQueuedToSave = ChallengeStartStore.getChallengeInviteTextDefaultQueuedToSave(); + const challengeInviteTextDefaultQueuedToSaveSet = ChallengeStartStore.getChallengeInviteTextDefaultQueuedToSaveSet(); const challengePhotoQueuedToDelete = ChallengeStartStore.getChallengePhotoQueuedToDelete(); const challengePhotoQueuedToDeleteSet = ChallengeStartStore.getChallengePhotoQueuedToDeleteSet(); const challengePhotoQueuedToSave = ChallengeStartStore.getChallengePhotoQueuedToSave(); @@ -187,13 +188,14 @@ class ChallengeStartEditAll extends Component { const challengeTitleQueuedToSave = ChallengeStartStore.getChallengeTitleQueuedToSave(); const challengeTitleQueuedToSaveSet = ChallengeStartStore.getChallengeTitleQueuedToSaveSet(); // console.log('ChallengeStartEditAll challengePoliticianStarterListQueuedToSaveSet:', challengePoliticianStarterListQueuedToSaveSet); - if (voterIsChallengeOwner && (challengeDescriptionQueuedToSaveSet || challengePhotoQueuedToDeleteSet || challengePhotoQueuedToSaveSet || challengePoliticianDeleteList || challengePoliticianStarterListQueuedToSaveSet || challengeTitleQueuedToSaveSet)) { + if (voterIsChallengeOwner && (challengeDescriptionQueuedToSaveSet || challengeInviteTextDefaultQueuedToSaveSet || challengePhotoQueuedToDeleteSet || challengePhotoQueuedToSaveSet || challengePoliticianDeleteList || challengePoliticianStarterListQueuedToSaveSet || challengeTitleQueuedToSaveSet)) { const challengePoliticianDeleteListJson = JSON.stringify(challengePoliticianDeleteList); const challengePoliticianStarterListQueuedToSaveJson = JSON.stringify(challengePoliticianStarterListQueuedToSave); // console.log('ChallengeStartEditAll challengePoliticianStarterListQueuedToSaveJson:', challengePoliticianStarterListQueuedToSaveJson); ChallengeStartActions.challengeEditAllSave( challengeWeVoteId, challengeDescriptionQueuedToSave, challengeDescriptionQueuedToSaveSet, + challengeInviteTextDefaultQueuedToSave, challengeInviteTextDefaultQueuedToSaveSet, challengePhotoQueuedToDelete, challengePhotoQueuedToDeleteSet, challengePhotoQueuedToSave, challengePhotoQueuedToSaveSet, challengePoliticianDeleteListJson, @@ -292,7 +294,6 @@ class ChallengeStartEditAll extends Component { @@ -307,6 +308,10 @@ class ChallengeStartEditAll extends Component { challengeWeVoteId={challengeWeVoteId} editExistingChallenge={editExistingChallenge} /> + diff --git a/src/js/common/stores/ChallengeStartStore.js b/src/js/common/stores/ChallengeStartStore.js index 19c7ade77..f5678cf35 100644 --- a/src/js/common/stores/ChallengeStartStore.js +++ b/src/js/common/stores/ChallengeStartStore.js @@ -83,6 +83,18 @@ class ChallengeStartStore extends ReduceStore { return this.getState().challengeDescriptionQueuedToSaveSet; } + getChallengeInviteTextDefault () { + return this.getState().challengeInviteTextDefault || ''; + } + + getChallengeInviteTextDefaultQueuedToSave () { + return this.getState().challengeInviteTextDefaultQueuedToSave; + } + + getChallengeInviteTextDefaultQueuedToSaveSet () { + return this.getState().challengeInviteTextDefaultQueuedToSaveSet; + } + getChallengePhotoLargeUrl () { return this.getState().challengePhotoLargeUrl || ''; } @@ -172,6 +184,8 @@ class ChallengeStartStore extends ReduceStore { ...state, challengeDescriptionQueuedToSave: '', challengeDescriptionQueuedToSaveSet: false, + challengeInviteTextDefaultQueuedToSave: '', + challengeInviteTextDefaultQueuedToSaveSet: false, challengePhotoQueuedToDelete: false, challengePhotoQueuedToDeleteSet: false, challengePhotoQueuedToSave: '', @@ -182,6 +196,22 @@ class ChallengeStartStore extends ReduceStore { challengeTitleQueuedToSaveSet: false, }; + case 'challengeInviteTextDefaultQueuedToSave': + // console.log('ChallengeStartStore challengeInviteTextDefaultQueuedToSave: ', action.payload); + if (action.payload === undefined) { + return { + ...state, + challengeInviteTextDefaultQueuedToSave: '', + challengeInviteTextDefaultQueuedToSaveSet: false, + }; + } else { + return { + ...state, + challengeInviteTextDefaultQueuedToSave: action.payload, + challengeInviteTextDefaultQueuedToSaveSet: true, + }; + } + case 'challengePhotoQueuedToDelete': console.log('ChallengeStartStore challengePhotoQueuedToDelete: ', action.payload); if (action.payload === undefined) { @@ -258,6 +288,7 @@ class ChallengeStartStore extends ReduceStore { return { ...state, challengeDescription: action.res.challenge_description, + challengeInviteTextDefault: action.res.challenge_invite_text_default, challengePhotoLargeUrl: action.res.we_vote_hosted_challenge_photo_large_url, challengePhotoMediumUrl: action.res.we_vote_hosted_challenge_photo_medium_url, challengePhotoSmallUrl: action.res.we_vote_hosted_challenge_photo_small_url, @@ -276,6 +307,7 @@ class ChallengeStartStore extends ReduceStore { return { ...state, challengeDescription: action.res.challenge_description, + challengeInviteTextDefault: action.res.challenge_invite_text_default, challengePhotoLargeUrl: action.res.we_vote_hosted_challenge_photo_large_url, challengePhotoMediumUrl: action.res.we_vote_hosted_challenge_photo_medium_url, challengePhotoSmallUrl: action.res.we_vote_hosted_challenge_photo_small_url, diff --git a/src/js/common/utils/challengeUtils.js b/src/js/common/utils/challengeUtils.js index f4406cffd..c5c6deb74 100644 --- a/src/js/common/utils/challengeUtils.js +++ b/src/js/common/utils/challengeUtils.js @@ -8,6 +8,7 @@ export function getChallengeValuesFromIdentifiers (challengeSEOFriendlyPath, cha // console.log('getChallengeValuesFromIdentifiers challengeSEOFriendlyPath: ', challengeSEOFriendlyPath, ', challengeWeVoteId: ', challengeWeVoteId); let challenge = {}; let challengeDescription = ''; + let challengeInviteTextDefault = ''; let challengePhotoLargeUrl = ''; let challengePhotoMediumUrl = ''; let challengePhotoSmallUrl = ''; @@ -31,6 +32,7 @@ export function getChallengeValuesFromIdentifiers (challengeSEOFriendlyPath, cha if (challenge.constructor === Object && challenge.challenge_we_vote_id) { ({ challenge_description: challengeDescription, + challenge_invite_text_default: challengeInviteTextDefault, challenge_title: challengeTitle, challenge_we_vote_id: challengeWeVoteIdFromObject, final_election_date_in_past: finalElectionDateInPast, @@ -49,6 +51,7 @@ export function getChallengeValuesFromIdentifiers (challengeSEOFriendlyPath, cha // console.log('getChallengeValuesFromIdentifiers, challenge: ', challenge, ', challengeWeVoteIdFromObject:', challengeWeVoteIdFromObject, ', challengeTitle:', challengeTitle); return { challengeDescription, + challengeInviteTextDefault, challengePhotoLargeUrl, challengePhotoMediumUrl, challengePhotoSmallUrl, diff --git a/src/js/components/Navigation/HeaderBar.jsx b/src/js/components/Navigation/HeaderBar.jsx index a5c9f3931..73af658af 100644 --- a/src/js/components/Navigation/HeaderBar.jsx +++ b/src/js/components/Navigation/HeaderBar.jsx @@ -109,6 +109,9 @@ class HeaderBar extends Component { if (document.getElementById('candidatesTabHeaderBar')) { headerObjects.candidates = document.getElementById('candidatesTabHeaderBar').innerHTML; } + if (document.getElementById('challengesTabHeaderBar')) { + headerObjects.challenges = document.getElementById('challengesTabHeaderBar').innerHTML; + } if (document.getElementById('friendsTabHeaderBar')) { headerObjects.opinions = document.getElementById('friendsTabHeaderBar').innerHTML; } @@ -364,12 +367,14 @@ class HeaderBar extends Component { // console.log('customHighlightSelector called for page: ', normalizedHrefPage()); const ballot = $('#ballotTabHeaderBar'); const candidates = $('#candidatesTabHeaderBar'); + const challenges = $('#challengesTabHeaderBar'); const friends = $('#friendsTabHeaderBar'); const news = $('#discussTabHeaderBar'); const donate = $('#donateTabHeaderBar'); const squads = $('#squadsTabHeaderBar'); ballot.css(normal); candidates.css(normal); // Candidates (not individual candidate page) + challenges.css(normal); // Democracy Challenges friends.css(normal); // Friends news.css(normal); // Discuss donate.css(normal); // Donate @@ -382,6 +387,9 @@ class HeaderBar extends Component { case 'candidatelist': // displays same page as "cs" candidates.css(highlight); break; + case 'challenges': + challenges.css(highlight); + break; case 'friends': friends.css(highlight); break; @@ -571,7 +579,7 @@ class HeaderBar extends Component { classes={isWebApp() ? { root: classes.tabRootDonateDesktop } : { root: classes.tabRootDonate }} value={squadsValue} change={this.handleTabChange} - id="squadsTabHeaderBar" + id="challengesTabHeaderBar" label="Challenges" // Was Squads to="/challenges" // Was "/squads" /> diff --git a/src/js/utils/getHeaderObjects.js b/src/js/utils/getHeaderObjects.js index bb126857c..8bab07599 100644 --- a/src/js/utils/getHeaderObjects.js +++ b/src/js/utils/getHeaderObjects.js @@ -5,6 +5,8 @@ export default function getHeaderObjects () { logo: null, ready: null, ballot: null, + candidates: null, + challenges: null, opinions: null, discuss: null, bell: null,