fix: :bug: Hash banner text for comparison
Tim Izzo tim@octree.ch
Wed, 28 Sep 2022 10:23:27 +0000
5 files changed,
26 insertions(+),
9 deletions(-)
M
frontend/components/Banner/index.tsx
→
frontend/components/Banner/index.tsx
@@ -2,7 +2,7 @@ import {Icon} from '@material-ui/core';
import Button from '@material-ui/core/Button'; import {makeStyles} from '@material-ui/core/styles'; import {useState} from 'react'; -import {setCookie} from '../../lib/cookies'; +import {hashText, setCookie} from '../../lib/cookies'; import Markdown from '../Markdown'; const ANNOUNCEMENT_COOKIE = 'lastAnnouncementSeen';@@ -17,7 +17,8 @@ const classes = useStyles();
const [showBanner, setShowBanner] = useState(!!announcement); const onBannerClear = () => { - setCookie(ANNOUNCEMENT_COOKIE, `${announcement}`); + const hashedMessage = hashText(announcement); + setCookie(ANNOUNCEMENT_COOKIE, hashedMessage); setShowBanner(false); };
M
frontend/lib/pageUtils.ts
→
frontend/lib/pageUtils.ts
@@ -2,7 +2,7 @@ import {ApolloClient} from '@apollo/client';
import {getSession} from 'next-auth/react'; import {ProfileDocument, SettingDocument} from '../generated/graphql'; import {initializeApollo, APOLLO_STATE_PROP_NAME} from './apolloClient'; -import {getCookie} from './cookies'; +import {getCookie, hashText} from './cookies'; type ServerSideExtension = ( context: any,@@ -29,13 +29,18 @@ query: SettingDocument,
variables: {locale}, }); let announcement = setting?.data?.attributes?.announcement || ''; - const lastAnnouncementSeen = getCookie( - 'lastAnnouncementSeen', - context.req.headers.cookie - ); - if (!announcement || announcement === lastAnnouncementSeen) - announcement = null; + if (!announcement) announcement = null; + else { + const lastAnnouncementSeen = getCookie( + 'lastAnnouncementSeen', + context.req.headers.cookie + ); + const hashedAnnouncement = hashText(announcement); + if (hashedAnnouncement === lastAnnouncementSeen) { + announcement = null; + } + } if (session) await apolloClient.query({
M
frontend/package.json
→
frontend/package.json
@@ -16,6 +16,7 @@ "@date-io/dayjs": "1.x",
"@date-io/moment": "1.x", "@material-ui/core": "^4.12.4", "@material-ui/pickers": "^3.3.10", + "crypto-js": "^4.1.1", "deepmerge": "^4.2.2", "graphql": "^16.6.0", "i18next": "^21.9.1",
M
frontend/yarn.lock
→
frontend/yarn.lock
@@ -2685,6 +2685,11 @@ path-key "^3.1.0"
shebang-command "^2.0.0" which "^2.0.1" +crypto-js@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"