Skip to content

Commit

Permalink
Only show new award images (#88)
Browse files Browse the repository at this point in the history
Only show images when unclaimed awards exist
Commonize on a grid layout for all displays
  • Loading branch information
byronwall committed Sep 25, 2023
1 parent db6013c commit e1b1c3a
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 30 deletions.
58 changes: 31 additions & 27 deletions src/app/awards/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,42 +69,34 @@ export default function AwardsPage() {
<p>Current word count: {currentWordCount}</p>
<p>Next award at: {nextWordAward}</p>

<div className="flex flex-wrap">
{wordCountAwards?.map((award) => (
<AwardCard key={award.id} award={award} />
))}
</div>
<AwardList awards={wordCountAwards} />

<h2>Sentence count awards</h2>

<p>Current sentence count: {currentSentenceCount}</p>
<p>Next award at: {nextSentenceAward}</p>

<div className="flex flex-wrap">
{sentenceCountAwards?.map((award) => (
<AwardCard key={award.id} award={award} />
))}
</div>
<AwardList awards={sentenceCountAwards} />

<h2>Word mastery awards</h2>

<div className="flex flex-wrap">
{wordMasteryAwards?.map((award) => (
<AwardCard key={award.id} award={award} />
))}
</div>

<h2>Award images</h2>

<div className="grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5">
{(allAwardImages ?? []).map((image) => (
<AwardImageChoice
key={image.id}
image={image}
shouldClickToClaim={hasUnclaimedAwards}
/>
))}
</div>
<AwardList awards={wordMasteryAwards} />

{hasUnclaimedAwards && (
<>
<h2>Award images</h2>

<div className="grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5">
{(allAwardImages ?? []).map((image) => (
<AwardImageChoice
key={image.id}
image={image}
shouldClickToClaim={hasUnclaimedAwards}
/>
))}
</div>
</>
)}

<Textarea
value={imageUrls}
Expand Down Expand Up @@ -162,6 +154,8 @@ function AwardImageChoice({
await addImageIdToAward.mutateAsync({
imageId,
});

await utils.awardRouter.getAllAwardsForProfile.invalidate();
};

const deleteImage = trpc.awardRouter.deleteImage.useMutation();
Expand Down Expand Up @@ -193,3 +187,13 @@ function AwardImageChoice({
</div>
);
}

function AwardList({ awards = [] }: { awards?: Award[] }) {
return (
<div className="grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5">
{awards.map((award) => (
<AwardCard key={award.id} award={award} />
))}
</div>
);
}
25 changes: 22 additions & 3 deletions src/server/api/routers/awardRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,32 @@ export const awardRouter = createTRPCRouter({
});
}),

getAllAwardImages: protectedProcedure.query(async () => {
getAllAwardImages: protectedProcedure.query(async ({ ctx }) => {
const profileId = ctx.session.user.activeProfile.id;

const allAwardImages = await prisma.awardImages.findMany();

const profileAwardImages = await prisma.profileAward.findMany({
where: {
profileId,
},
select: {
imageId: true,
},
});

// filter out any images that are already assigned to the profile
const filteredAwardImages = allAwardImages.filter(
(awardImage) =>
!profileAwardImages.find(
(profileAwardImage) => profileAwardImage.imageId === awardImage.id
)
);

// shuffle those
allAwardImages.sort(() => Math.random() - 0.5);
filteredAwardImages.sort(() => Math.random() - 0.5);

return allAwardImages;
return filteredAwardImages;
}),

addImageIdToAward: protectedProcedure
Expand Down

0 comments on commit e1b1c3a

Please sign in to comment.