Skip to content

Commit

Permalink
fix memory leak warning in the Achievement Badge Test (#2511)
Browse files Browse the repository at this point in the history
* fix memory leak warning in the Acheivement Badge

* update AchievementBadge export method and imports

* revert end of file space
  • Loading branch information
CollinBeczak authored Dec 30, 2024
1 parent dbab65f commit 534b18c
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions src/components/AchievementBadge/AchievementBadge.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -321,19 +321,44 @@ const badgeSettings = Object.freeze({
},
})

export const AchievementBadge = props => {
const AchievementBadge = props => {
const [badgeInfo, setBadgeInfo] = useState(null)
const [badgeImage, setBadgeImage] = useState(null)
const { achievement, size } = props

useEffect(() => {
let isMounted = true

const merged = _merge({}, badgeSettings[achievement], badgeSettings[achievement][size])
setBadgeInfo(merged)
if (isMounted) {
setBadgeInfo(merged)
}

return () => {
isMounted = false
}
}, [achievement, size])

useEffect(() => {
if (badgeInfo) {
badgeInfo.image().then(module => setBadgeImage(module.default))
let isMounted = true

const loadImage = async () => {
if (badgeInfo) {
try {
const image = await badgeInfo.image()
if (isMounted) {
setBadgeImage(image.default)
}
} catch (error) {
console.error("Error loading badge image", error)
}
}
}

loadImage()

return () => {
isMounted = false
}
}, [badgeInfo])

Expand Down

0 comments on commit 534b18c

Please sign in to comment.