-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add survey popup for survey monkey (#3116)
* add survey popup for survey monkey * update useEffect and add 24 hour window * upate % logic * update logic to show after duration * update timestamp conditional * small changes
- Loading branch information
Showing
6 changed files
with
145 additions
and
2 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
import { Trans } from '@lingui/macro' | ||
import { AutoColumn } from 'components/Column' | ||
import { RowFixed } from 'components/Row' | ||
import useCurrentBlockTimestamp from 'hooks/useCurrentBlockTimestamp' | ||
import { useEffect } from 'react' | ||
import { MessageCircle, X } from 'react-feather' | ||
import ReactGA from 'react-ga' | ||
import { useShowSurveyPopup } from 'state/user/hooks' | ||
import styled from 'styled-components/macro' | ||
import { ExternalLink, ThemedText, Z_INDEX } from 'theme' | ||
|
||
import BGImage from '../../assets/images/survey-orb.svg' | ||
import useTheme from '../../hooks/useTheme' | ||
|
||
const Wrapper = styled(AutoColumn)` | ||
background: #edeef2; | ||
position: relative; | ||
border-radius: 12px; | ||
padding: 18px; | ||
max-width: 360px; | ||
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); | ||
color: ${({ theme }) => theme.text1}; | ||
overflow: hidden; | ||
${({ theme }) => theme.mediaWidth.upToSmall` | ||
max-width: 100%; | ||
`} | ||
` | ||
|
||
const BGOrb = styled.img` | ||
position: absolute; | ||
right: -64px; | ||
top: -64px; | ||
width: 180px; | ||
z-index: ${Z_INDEX.sticky}; | ||
` | ||
|
||
const WrappedCloseIcon = styled(X)` | ||
position: absolute; | ||
top: 10px; | ||
right: 10px; | ||
width: 20px; | ||
height: 20px; | ||
stroke: #7c7c80; | ||
z-index: ${Z_INDEX.fixed}; | ||
:hover { | ||
cursor: pointer; | ||
opacity: 0.8; | ||
} | ||
` | ||
|
||
const END_TIMESTAMP = 1642215971 // Jan 15th | ||
|
||
export default function SurveyPopup() { | ||
const theme = useTheme() | ||
const [showPopup, setShowSurveyPopup] = useShowSurveyPopup() | ||
|
||
// show popup to 1% of users | ||
useEffect(() => { | ||
// has not visited page during A/B testing if undefined | ||
if (showPopup === undefined) { | ||
if (Math.random() < 0.01) { | ||
setShowSurveyPopup(true) | ||
// log a case of succesful view | ||
ReactGA.event({ | ||
category: 'Survey', | ||
action: 'Saw Survey', | ||
}) | ||
} | ||
} | ||
}, [setShowSurveyPopup, showPopup]) | ||
|
||
// limit survey to 24 hours based on timestamps | ||
const timestamp = useCurrentBlockTimestamp() | ||
const durationOver = timestamp ? timestamp.toNumber() > END_TIMESTAMP : false | ||
|
||
return ( | ||
<> | ||
{!showPopup || durationOver ? null : ( | ||
<Wrapper gap="10px"> | ||
<WrappedCloseIcon | ||
onClick={() => { | ||
ReactGA.event({ | ||
category: 'Survey', | ||
action: 'Clicked Survey Link', | ||
}) | ||
setShowSurveyPopup(false) | ||
}} | ||
/> | ||
<BGOrb src={BGImage} /> | ||
<ExternalLink href="https://www.surveymonkey.com/r/YGWV9VD"> | ||
<RowFixed> | ||
<MessageCircle stroke={theme.black} size="20px" strokeWidth="1px" /> | ||
<ThemedText.White fontWeight={600} color={theme.black} ml="6px"> | ||
<Trans>Tell us what you think ↗</Trans> | ||
</ThemedText.White> | ||
</RowFixed> | ||
</ExternalLink> | ||
<ThemedText.Black style={{ zIndex: Z_INDEX.fixed }} fontWeight={400} fontSize="12px" color={theme.black}> | ||
<Trans>Take a 10 minute survey to help us improve your experience in the Uniswap app.</Trans> | ||
</ThemedText.Black> | ||
</Wrapper> | ||
)} | ||
</> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters