diff --git a/gatsby-node.js b/gatsby-node.js index 2001caad..3a5ae7e5 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -5,6 +5,7 @@ const DirectoryNamedWebpackPlugin = require('directory-named-webpack-plugin'); const WebpackAssetsManifest = require('webpack-assets-manifest'); const makePluginData = require('./src/helpers/plugin-data'); const createRewriteMap = require('./src/helpers/createRewriteMap'); +const CheckUniqueName = require('./src/helpers/CheckUniqueName'); const chinaHelper = require('./src/helpers/chinaHelper'); const { SkillSort } = require('./src/helpers/skillSort'); const { getViewDataFromCRM } = require('./src/helpers/CRMApi'); @@ -394,9 +395,19 @@ exports.createPages = async function ({ actions, graphql }) { }; }); + const personFirstNames = people.map((person) => { + return person.dataCRM?.fullName.split(' ')[0].toLowerCase(); + }); + people.forEach((person) => { + const pathToUse = + person.nicknamePath && + CheckUniqueName(personFirstNames, person.dataCRM.nickname.toLowerCase()) + ? person.nicknamePath + : person.path; + actions.createPage({ - path: person.nicknamePath ? person.nicknamePath : person.path, + path: pathToUse, component: require.resolve('./src/templates/person.js'), context: { slug: person.slug, @@ -470,28 +481,7 @@ exports.onPostBuild = async ({ store, pathPrefix }) => { ]; }); - //Fetch existing URL redirects for previous Nicknames - const existingRewrites = await createRewriteMap.getExistingRewrites(); - const additionalRewrites = Array.from(existingRewrites).map((rewrite) => { - let existingRedirect = rewrites.find( - (r) => r.fromPath === pathPrefix + '/' + rewrite.fullName - ); - if (existingRedirect) { - return { - fromPath: pathPrefix + '/' + rewrite.nickName, - toPath: existingRedirect.toPath, - }; - } else { - return { - fromPath: pathPrefix + '/' + rewrite.nickName, - toPath: pathPrefix + '/' + rewrite.fullName, - }; - } - }); - - const allRewrites = rewrites - .concat(alumniRewrites) - .concat(additionalRewrites); + const allRewrites = rewrites.concat(alumniRewrites); const allRewritesUnique = [ ...new Map(allRewrites.map((item) => [item.fromPath, item])).values(), diff --git a/src/components/profile-box/profile-box.js b/src/components/profile-box/profile-box.js index 3f6bbc8a..7c0bf411 100644 --- a/src/components/profile-box/profile-box.js +++ b/src/components/profile-box/profile-box.js @@ -12,6 +12,7 @@ const ProfileBox = ({ profileImages, sanitisedNickname, profileAudio, + isUniqueName, }) => { const linkRef = useRef(); const [hover, setHover] = useState(false); @@ -96,7 +97,7 @@ const ProfileBox = ({ { const distinctRoles = filteredPeople @@ -13,7 +14,9 @@ const ProfileList = ({ filteredPeople }) => { const getPeopleInRole = (role) => { return filteredPeople.filter((p) => p.role === role); }; - + const firstNameList = filteredPeople.map((person) => { + return person.profile.fullName.split(' ')[0].toLowerCase(); + }); return ( <> {distinctRoles.map((role, i) => { @@ -32,6 +35,10 @@ const ProfileList = ({ filteredPeople }) => { profileImages={person.profileImages} sanitisedNickname={person.sanitisedNickname} profileAudio={person.profileAudio} + isUniqueName={CheckUniqueName( + firstNameList, + person.profile.nickname.toLowerCase() + )} /> ); })} diff --git a/src/helpers/CheckUniqueName.js b/src/helpers/CheckUniqueName.js new file mode 100644 index 00000000..b05d80a1 --- /dev/null +++ b/src/helpers/CheckUniqueName.js @@ -0,0 +1,11 @@ +const CheckUniqueName = (arr, target) => { + let count = 0; + for (let i = 0; i < arr.length; i++) { + if (arr[i] === target) { + count++; + } + } + return count <= 1; +}; + +module.exports = CheckUniqueName;