Badge notifications ui changes

This commit is contained in:
Ian Philips 2022-10-10 15:01:18 -06:00
parent f03e5d7af0
commit 4f5c93be96
3 changed files with 19 additions and 14 deletions

View File

@ -1,10 +1,10 @@
import { User } from 'common/user' import { User } from 'common/user'
import { NextRouter } from 'next/router'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { getBadgesByRarity } from 'common/badge' import { getBadgesByRarity } from 'common/badge'
import { Row } from 'web/components/layout/row' import { Row } from 'web/components/layout/row'
import clsx from 'clsx' import clsx from 'clsx'
import { BadgesModal } from 'web/components/profile/badges-modal' import { BadgesModal } from 'web/components/profile/badges-modal'
import { ParsedUrlQuery } from 'querystring'
export const goldClassName = 'text-amber-400' export const goldClassName = 'text-amber-400'
export const silverClassName = 'text-gray-500' export const silverClassName = 'text-gray-500'
@ -12,16 +12,16 @@ export const bronzeClassName = 'text-amber-900'
export function BadgeDisplay(props: { export function BadgeDisplay(props: {
user: User | undefined | null user: User | undefined | null
router?: NextRouter query: ParsedUrlQuery
}) { }) {
const { user, router } = props const { user, query } = props
const [showBadgesModal, setShowBadgesModal] = useState(false) const [showBadgesModal, setShowBadgesModal] = useState(false)
useEffect(() => { useEffect(() => {
if (!router) return const showBadgesModal = query['show'] == 'badges'
const showBadgesModal = router.query['show'] === 'badges'
setShowBadgesModal(showBadgesModal) setShowBadgesModal(showBadgesModal)
}, [router]) // eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
// get number of badges of each rarity type // get number of badges of each rarity type
const badgesByRarity = getBadgesByRarity(user) const badgesByRarity = getBadgesByRarity(user)
const badgesByRarityItems = Object.entries(badgesByRarity).map( const badgesByRarityItems = Object.entries(badgesByRarity).map(

View File

@ -50,8 +50,8 @@ export function UserPage(props: { user: User }) {
setShowConfetti(claimedMana) setShowConfetti(claimedMana)
const query = { ...router.query } const query = { ...router.query }
if (query.claimedMana || query.show) { if (query.claimedMana || query.show) {
delete query['claimed-mana'] const queriesToDelete = ['claimed-mana', 'show', 'badge']
delete query['show'] queriesToDelete.forEach((key) => delete query[key])
router.replace( router.replace(
{ {
pathname: router.pathname, pathname: router.pathname,
@ -102,7 +102,7 @@ export function UserPage(props: { user: User }) {
</span> </span>
<Row className="sm:text-md -mt-1 items-center gap-x-3 text-sm "> <Row className="sm:text-md -mt-1 items-center gap-x-3 text-sm ">
<span className={' text-greyscale-4'}>@{user.username}</span> <span className={' text-greyscale-4'}>@{user.username}</span>
<BadgeDisplay user={user} router={router} /> <BadgeDisplay user={user} query={router.query} />
</Row> </Row>
</Col> </Col>
{isCurrentUser && ( {isCurrentUser && (

View File

@ -826,7 +826,8 @@ function NotificationFrame(props: {
subtitle: string subtitle: string
children: React.ReactNode children: React.ReactNode
isChildOfGroup?: boolean isChildOfGroup?: boolean
showUserName?: boolean hideUserName?: boolean
hideLinkToGroupOrQuestion?: boolean
}) { }) {
const { const {
notification, notification,
@ -834,7 +835,8 @@ function NotificationFrame(props: {
highlighted, highlighted,
subtitle, subtitle,
children, children,
showUserName, hideUserName,
hideLinkToGroupOrQuestion,
} = props } = props
const { const {
sourceType, sourceType,
@ -888,7 +890,7 @@ function NotificationFrame(props: {
} }
> >
<div> <div>
{showUserName && ( {!hideUserName && (
<UserLink <UserLink
name={sourceUserName || ''} name={sourceUserName || ''}
username={sourceUserUsername || ''} username={sourceUserUsername || ''}
@ -900,7 +902,9 @@ function NotificationFrame(props: {
{isChildOfGroup ? ( {isChildOfGroup ? (
<RelativeTimestamp time={notification.createdTime} /> <RelativeTimestamp time={notification.createdTime} />
) : ( ) : (
!hideLinkToGroupOrQuestion && (
<QuestionOrGroupLink notification={notification} /> <QuestionOrGroupLink notification={notification} />
)
)} )}
</div> </div>
</div> </div>
@ -1034,7 +1038,8 @@ function BadgeNotification(props: {
isChildOfGroup={isChildOfGroup} isChildOfGroup={isChildOfGroup}
highlighted={highlighted} highlighted={highlighted}
subtitle={subtitle} subtitle={subtitle}
showUserName={false} hideUserName={true}
hideLinkToGroupOrQuestion={true}
> >
<Row> <Row>
<span>{sourceText} 🎉</span> <span>{sourceText} 🎉</span>