Skip to content

Commit c46ef10

Browse files
authored
Merge pull request #388 from topcoder-platform/feat/GAME-125
GAME-204 & GAME-206 #comment QA fixes -> gamification
2 parents 8a4f4f1 + 07c7470 commit c46ef10

File tree

3 files changed

+12
-17
lines changed

3 files changed

+12
-17
lines changed

src-ts/tools/gamification-admin/pages/badge-detail/AwardedMembersTab/AwardedMembersTab.tsx

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Dispatch, FC, SetStateAction, useEffect, useState } from 'react'
1+
import { Dispatch, FC, SetStateAction, useState } from 'react'
22

33
import { InfinitePageHandler, Sort, Table, TableColumn, tableGetDefaultSort } from '../../../../../lib'
44
import { GameBadge, MemberBadgeAward } from '../../../game-lib'
@@ -9,7 +9,6 @@ import styles from './AwardedMembersTab.module.scss'
99

1010
export interface AwardedMembersTabProps {
1111
badge: GameBadge
12-
forceRefresh?: boolean
1312
}
1413

1514
const AwardedMembersTab: FC<AwardedMembersTabProps> = (props: AwardedMembersTabProps) => {
@@ -23,15 +22,6 @@ const AwardedMembersTab: FC<AwardedMembersTabProps> = (props: AwardedMembersTabP
2322

2423
const pageHandler: InfinitePageHandler<MemberBadgeAward> = useGetGameBadgeAssigneesPage(props.badge, sort)
2524

26-
useEffect(() => {
27-
if (props.forceRefresh && pageHandler && !pageHandler.isValidating) {
28-
pageHandler.mutate()
29-
}
30-
}, [
31-
props.forceRefresh,
32-
pageHandler,
33-
])
34-
3525
function onSortClick(newSort: Sort): void {
3626
setSort({ ...newSort })
3727
}

src-ts/tools/gamification-admin/pages/badge-detail/BadgeDetailPage.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import ContentEditable from 'react-contenteditable'
55
import { Params, useLocation, useParams } from 'react-router-dom'
66
import { toast } from 'react-toastify'
77
import sanitizeHtml from 'sanitize-html'
8-
import { KeyedMutator } from 'swr'
8+
import { KeyedMutator, useSWRConfig } from 'swr'
9+
// tslint:disable-next-line: no-submodule-imports
10+
import { FullConfiguration } from 'swr/dist/types'
911

1012
import { Breadcrumb, BreadcrumbItemModel, Button, ButtonProps, ContentLayout, IconOutline, IconSolid, LoadingSpinner, PageDivider, Sort, tableGetDefaultSort, TabsNavbar, TabsNavItem } from '../../../../lib'
1113
import { GamificationConfig } from '../../game-config'
@@ -79,8 +81,7 @@ const BadgeDetailPage: FC = () => {
7981

8082
const [showActivatedModal, setShowActivatedModal]: [boolean, Dispatch<SetStateAction<boolean>>] = useState<boolean>(false)
8183

82-
const [forceAwardedMembersTabRefresh, setForceAwardedMembersTabRefresh]: [boolean | undefined, Dispatch<SetStateAction<boolean | undefined>>]
83-
= useState<boolean | undefined>()
84+
const { cache, mutate }: FullConfiguration = useSWRConfig()
8485

8586
useEffect(() => {
8687
if (newImageFile && newImageFile.length) {
@@ -266,15 +267,19 @@ const BadgeDetailPage: FC = () => {
266267

267268
function onAssign(): void {
268269
// refresh awardedMembers data
269-
setForceAwardedMembersTabRefresh(true)
270+
// for all keys in the cache, containing `assignees`
271+
(cache as Map<string, any>).forEach((v, key) => {
272+
if (key.startsWith('https') && key.includes('assignees')) {
273+
mutate(key, undefined)
274+
}
275+
})
270276
setActiveTab(BadgeDetailsTabViews.awardedMembers)
271277
}
272278

273279
// default tab
274280
let activeTabElement: JSX.Element
275281
= <AwardedMembersTab
276282
badge={badgeDetailsHandler.data as GameBadge}
277-
forceRefresh={forceAwardedMembersTabRefresh}
278283
/>
279284
if (activeTab === BadgeDetailsTabViews.manualAward) {
280285
activeTabElement = <ManualAwardTab

src-ts/tools/gamification-admin/pages/badge-detail/BatchAwardTab/BatchAwardTab.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const BatchAwardTab: FC<BatchAwardTabProps> = (props: BatchAwardTabProps) => {
5050
<div className={styles.batchFormWrap}>
5151
<div>
5252
<p>If you would like to assign multiple people to multiple badges, this area is for you. Download the template below, populate the file with your data, and upload that file to the right once completed.</p>
53-
<a target={'_blank'} href='/gamification-admin/bulk.sample.csv' download='bulk.smaple.csv' className={styles.templateLink}>Download template CSV</a>
53+
<a target={'_blank'} href='/gamification-admin/bulk.sample.csv' download='bulk.sample.csv' className={styles.templateLink}>Download template CSV</a>
5454
</div>
5555
<div className={styles.batchForm}>
5656
<InputFilePicker

0 commit comments

Comments
 (0)