Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions components/profile/reward-board/component/reward-board.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,27 @@ export default async function RewardBoard() {
const badges = await getAllBadges();

const academyBadges = badges.filter((badge) => badge.category == "academy")?.sort((a, b) => a.id.localeCompare(b.id));
// COMMENTED OUT: Hackathon badges feature disabled
// const hackathonBadges: Badge[] = badges.filter((badge) => badge.category == "hackathon")?.sort((a, b) => a.id.localeCompare(b.id));
// COMMENTED OUT: Points feature disabled
const hackathonBadges: Badge[] = badges.filter((badge) => badge.category == "hackathon")?.sort((a, b) => a.id.localeCompare(b.id));
// const totalPoints = userBadges.reduce((acc, userBadge) => acc + userBadge.points, 0);
// const hackathonBadgesUnlocked = hackathonBadges.map((badge) => {
// const userBadge = userBadges.find((userBadge) => userBadge.badge_id == badge.id);

// const allRequirementsCompleted = userBadge?.requirements && userBadge.requirements.length > 0 &&
// userBadge.requirements.every((requirement) => requirement.unlocked === true);
// return {
// ...badge,
// is_unlocked: !!userBadge,
// is_unlocked: !!allRequirementsCompleted,
// requirements: userBadge?.requirements || badge.requirements,
// };
// });

const academyBadgesUnlocked = academyBadges.map((badge) => {
const userBadge = userBadges.find((userBadge) => userBadge.badge_id == badge.id);
// Only consider badge unlocked if status is approved (not pending)
const isUnlocked = userBadge?.status === BadgeAwardStatus.approved;
const allRequirementsCompleted = userBadge?.requirements && userBadge.requirements.length > 0 &&
userBadge.requirements.every((requirement) => requirement.unlocked === true);
return {
...badge,
is_unlocked: isUnlocked,
is_unlocked: !!allRequirementsCompleted,
requirements: userBadge?.requirements || badge.requirements,
};

Expand Down
12 changes: 6 additions & 6 deletions components/quizzes/components/BadgeNotification.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,22 @@ export const BadgeNotification = ({
const [isModalOpen, setIsModalOpen] = useState(false);

const [badges, setBadges] = useState<BadgeData[]>([]);

const badgeDefaultImage = "/wolfie/wolfie-hack.png";
useEffect(() => {
if (isCompleted && session) {
awardBadge()
.then((badge) => {

if (
badge.result &&
Array.isArray(badge.result.badges) &&
badge.result.badges.length > 0
) {

setBadges(badge.result.badges);
setShowFireworks(true);
setIsModalOpen(true);

}
})
.catch((error) => {
Expand Down Expand Up @@ -109,7 +109,7 @@ export const BadgeNotification = ({
{badges.map((badge, index) => (
<div key={index} className="flex flex-col items-center px-2 py-2 gap-4 w-[250px]">
<Image
src={badge.image_path}
src={badge.image_path && badge.image_path != '' ? badge.image_path : badgeDefaultImage as string}
alt={badge.name}
width={80}
height={80}
Expand All @@ -136,7 +136,7 @@ export const BadgeNotification = ({
)}
</div>
}
className="z-50 inline-block! w-auto! max-w-[75vw]! border border-red-500"
className="z-50 inline-block! w-auto! max-w-[75vw]! border border-red-500"
/>
</div>
);
Expand Down