Skip to content

Commit

Permalink
Merge pull request #3810 from DaleMcGrew/Dale_WebApp_2023-12-22
Browse files Browse the repository at this point in the history
WV-159 Candidate card not displayed for Matt Rosendale (Montana) - Added redirection to the latest Politician SEO Friendly Path.
  • Loading branch information
DaleMcGrew authored Dec 25, 2023
2 parents 454b9c9 + cd00d55 commit 247a12b
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 20 deletions.
70 changes: 52 additions & 18 deletions src/js/common/pages/Politician/PoliticianDetailsPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,14 @@ class PoliticianDetailsPage extends Component {
this.politicianStoreListener = PoliticianStore.addListener(this.onPoliticianStoreChange.bind(this));
this.onRepresentativeStoreChange();
this.representativeStoreListener = RepresentativeStore.addListener(this.onRepresentativeStoreChange.bind(this));
let politicianSEOFriendlyPathFromObject;
let triggerSEOPathRedirect = false;
if (politicianSEOFriendlyPathFromUrl) {
const politician = PoliticianStore.getPoliticianBySEOFriendlyPath(politicianSEOFriendlyPathFromUrl);
politicianSEOFriendlyPathFromObject = politician.seo_friendly_path;
triggerSEOPathRedirect = politicianSEOFriendlyPathFromObject && (politicianSEOFriendlyPathFromUrl !== politicianSEOFriendlyPathFromObject);
// console.log('componentDidMount politicianSEOFriendlyPathFromObject: ', politicianSEOFriendlyPathFromObject);
// Only change politician if the we_vote_id is different
if (politician && politician.politician_we_vote_id) {
this.setState({
linkedCampaignXWeVoteId: politician.linked_campaignx_we_vote_id,
Expand All @@ -125,6 +131,10 @@ class PoliticianDetailsPage extends Component {
}
// Take the "calculated" identifiers and retrieve if missing
retrievePoliticianFromIdentifiersIfNeeded(politicianSEOFriendlyPathFromUrl, politicianWeVoteId);
// console.log('componentDidMount triggerSEOPathRedirect: ', triggerSEOPathRedirect, ', politicianSEOFriendlyPathFromObject: ', politicianSEOFriendlyPathFromObject);
if (triggerSEOPathRedirect && politicianSEOFriendlyPathFromObject) {
historyPush(`/${politicianSEOFriendlyPathFromObject}/-`, true);
}
window.scrollTo(0, 0);
}

Expand All @@ -134,31 +144,47 @@ class PoliticianDetailsPage extends Component {
const { politicianSEOFriendlyPath: prevPoliticianSEOFriendlyPath, politicianWeVoteId: prevPoliticianWeVoteId } = prevParams;
const { match: { params } } = this.props;
const { politicianSEOFriendlyPath: politicianSEOFriendlyPathFromUrl, politicianWeVoteId } = params;
let politicianSEOFriendlyPath = '';
let triggerFreshRetrieve = false;
// console.log('componentDidUpdate politicianSEOFriendlyPathFromUrl: ', politicianSEOFriendlyPathFromUrl, ', politicianWeVoteId: ', politicianWeVoteId);
if (politicianSEOFriendlyPathFromUrl && politicianSEOFriendlyPathFromUrl !== prevPoliticianSEOFriendlyPath) {
let triggerSEOPathRedirect = false;
const politician = PoliticianStore.getPoliticianBySEOFriendlyPath(politicianSEOFriendlyPathFromUrl);
const politicianSEOFriendlyPathFromObject = politician.seo_friendly_path;
// console.log('componentDidUpdate politicianSEOFriendlyPathFromUrl: ', politicianSEOFriendlyPathFromUrl, ', politicianSEOFriendlyPathFromObject: ', politicianSEOFriendlyPathFromObject);
if (politicianSEOFriendlyPathFromObject && (politicianSEOFriendlyPathFromUrl !== politicianSEOFriendlyPathFromObject)) {
politicianSEOFriendlyPath = politicianSEOFriendlyPathFromObject;
triggerSEOPathRedirect = true;
} else if (politicianSEOFriendlyPathFromUrl && politicianSEOFriendlyPathFromUrl !== prevPoliticianSEOFriendlyPath) {
// console.log('componentDidUpdate prevPoliticianSEOFriendlyPath: ', prevPoliticianSEOFriendlyPath);
this.clearPoliticianValues();
const politician = PoliticianStore.getPoliticianBySEOFriendlyPath(politicianSEOFriendlyPathFromUrl);
if (politician && politician.politician_we_vote_id) {
this.setState({
linkedCampaignXWeVoteId: politician.linked_campaignx_we_vote_id,
politicianSEOFriendlyPath: politicianSEOFriendlyPathFromUrl,
politicianSEOFriendlyPathForDisplay: politicianSEOFriendlyPathFromUrl,
politicianWeVoteId: politician.politician_we_vote_id,
politicianWeVoteIdForDisplay: politician.politician_we_vote_id,
}, () => this.onfirstRetrievalOfPoliticianWeVoteId());
const politicianWeVoteIdFromUrl = PoliticianStore.getPoliticianWeVoteIdFromPoliticianSEOFriendlyPath(politicianSEOFriendlyPathFromUrl);
const politicianWeVoteIdFromPreviousUrl = PoliticianStore.getPoliticianWeVoteIdFromPoliticianSEOFriendlyPath(prevPoliticianSEOFriendlyPath);
const isSamePolitician = politicianWeVoteIdFromPreviousUrl && (politicianWeVoteIdFromUrl !== politicianWeVoteIdFromPreviousUrl);
// Only change politician if the we_vote_id is different
if (isSamePolitician) {
// Don't change the politician if the we_vote_id is the same as the previous
// but specify that we want to triggerSEOPathRedirect
politicianSEOFriendlyPath = politician.seo_friendly_path;
triggerSEOPathRedirect = true;
} else {
this.setState({
politicianSEOFriendlyPath: politicianSEOFriendlyPathFromUrl,
politicianSEOFriendlyPathForDisplay: politicianSEOFriendlyPathFromUrl,
}, () => this.onfirstRetrievalOfPoliticianWeVoteId());
this.clearPoliticianValues();
if (politician && politician.politician_we_vote_id) {
this.setState({
linkedCampaignXWeVoteId: politician.linked_campaignx_we_vote_id,
politicianSEOFriendlyPath: politicianSEOFriendlyPathFromUrl,
politicianSEOFriendlyPathForDisplay: politicianSEOFriendlyPathFromUrl,
politicianWeVoteId: politician.politician_we_vote_id,
politicianWeVoteIdForDisplay: politician.politician_we_vote_id,
}, () => this.onfirstRetrievalOfPoliticianWeVoteId());
} else {
this.setState({
politicianSEOFriendlyPath: politicianSEOFriendlyPathFromUrl,
politicianSEOFriendlyPathForDisplay: politicianSEOFriendlyPathFromUrl,
}, () => this.onfirstRetrievalOfPoliticianWeVoteId());
}
triggerFreshRetrieve = true;
}
triggerFreshRetrieve = true;
} else if (politicianWeVoteId && politicianWeVoteId !== prevPoliticianWeVoteId) {
// console.log('componentDidUpdate prevPoliticianWeVoteId: ', prevPoliticianWeVoteId);
this.clearPoliticianValues();
const politician = PoliticianStore.getPoliticianByWeVoteId(politicianWeVoteId);
if (politician && politician.politician_we_vote_id) {
this.setState({
linkedCampaignXWeVoteId: politician.linked_campaignx_we_vote_id,
Expand All @@ -175,9 +201,17 @@ class PoliticianDetailsPage extends Component {
}
triggerFreshRetrieve = true;
}
// console.log('componentDidUpdate triggerSEOPathRedirect: ', triggerSEOPathRedirect, ', politicianSEOFriendlyPath: ', politicianSEOFriendlyPath);
if (triggerSEOPathRedirect && politicianSEOFriendlyPath) {
// Direct to the updated SEO path
historyPush(`/${politicianSEOFriendlyPath}/-`, true);
}
if (triggerFreshRetrieve) {
// Take the "calculated" identifiers and retrieve if missing
retrievePoliticianFromIdentifiersIfNeeded(politicianSEOFriendlyPathFromUrl, politicianWeVoteId);
}
if (triggerFreshRetrieve || triggerSEOPathRedirect) {
// Take the "calculated" identifiers and retrieve if missing
window.scrollTo(0, 0);
}
}
Expand Down
9 changes: 8 additions & 1 deletion src/js/common/stores/PoliticianStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,6 @@ class PoliticianStore extends ReduceStore {
// - latest_politician_supporter_endorsement_list
// - latest_politician_supporter_list
// - voter_politician_supporter

if (!action.res || !action.res.success) {
revisedState = state;
if (action.res && action.res.seo_friendly_path) {
Expand Down Expand Up @@ -383,6 +382,14 @@ class PoliticianStore extends ReduceStore {
if (!(politician.seo_friendly_path in allCachedPoliticianWeVoteIdsBySEOFriendlyPath)) {
allCachedPoliticianWeVoteIdsBySEOFriendlyPath[politician.seo_friendly_path] = politician.politician_we_vote_id;
}
// Link alternate SEOFriendlyPaths to politician_we_vote_id
if (politician.seo_friendly_path_list) {
for (let i = 0; i < politician.seo_friendly_path_list.length; ++i) {
if (!(politician.seo_friendly_path_list[i] in allCachedPoliticianWeVoteIdsBySEOFriendlyPath)) {
allCachedPoliticianWeVoteIdsBySEOFriendlyPath[politician.seo_friendly_path_list[i]] = politician.politician_we_vote_id;
}
}
}
if (action.res.seo_friendly_path) {
const foundIndex = politicianDataNotFoundForSEOFriendlyPathList.indexOf(action.res.seo_friendly_path);
if (foundIndex !== -1) {
Expand Down
2 changes: 1 addition & 1 deletion src/js/common/utils/addressFunctions.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ export function convertStateCodeFilterToStateCode (stateCodeFilter) {
export function isValidStateCode (incomingStateCode) {
if (incomingStateCode) {
// Log incoming State Code
console.log('incomingStateCode:', incomingStateCode);
// console.log('incomingStateCode:', incomingStateCode);
const incomingStateCodeUpper = incomingStateCode.toUpperCase();
const existingStateCodes = Object.keys(stateCodeMap);
return existingStateCodes.indexOf(incomingStateCodeUpper) > -1;
Expand Down

0 comments on commit 247a12b

Please sign in to comment.