Skip to content

Commit 5355a8d

Browse files
committed
Solved mint function to enable minting from msg.sender
1 parent 518e5fa commit 5355a8d

File tree

4 files changed

+21
-22
lines changed

4 files changed

+21
-22
lines changed

packages/foundry/contracts/KDONft.sol

+5-7
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,9 @@ contract KDONft is ERC721 {
7474

7575
/**
7676
* @notice Mint an NFT if the user has completed enough tasks to reach a milestone.
77-
* @param to Address of the user to mint the NFT for.
7877
* @param numTasksCompleted Number of tasks the user has completed.
7978
*/
8079
function mintNft(
81-
address to,
8280
uint256 numTasksCompleted
8381
) external hasCompletedMinTasks(numTasksCompleted) {
8482
if (numTasksCompleted > kiddoPerks.s_childNumTasksCompleted(msg.sender)) {
@@ -87,15 +85,15 @@ contract KDONft is ERC721 {
8785
);
8886
}
8987
TaskMilestone currentTaskMilestone = _getMilestone(numTasksCompleted);
90-
if (s_childLastNftMinted[to] == currentTaskMilestone) {
91-
revert KDONft__CannotMintNFTMoreThanOnce(to);
88+
if (s_childLastNftMinted[msg.sender] == currentTaskMilestone) {
89+
revert KDONft__CannotMintNFTMoreThanOnce(msg.sender);
9290
}
9391

94-
_safeMint(to, s_nextTokenId);
95-
emit KDONftMinted(to, s_nextTokenId);
92+
_safeMint(msg.sender, s_nextTokenId);
93+
emit KDONftMinted(msg.sender, s_nextTokenId);
9694
s_nextTokenId++;
9795

98-
s_childLastNftMinted[to] = currentTaskMilestone;
96+
s_childLastNftMinted[msg.sender] = currentTaskMilestone;
9997
}
10098

10199
/**

packages/foundry/test/KDONft.t.sol

+12-6
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ contract KDONftTest is Test {
6363
function testMintNftSuccess() public {
6464
uint256 tasksCompleted = 10;
6565

66-
kdoNft.mintNft(CHILD_ONE, tasksCompleted);
66+
vm.prank(CHILD_ONE);
67+
kdoNft.mintNft(tasksCompleted);
6768

6869
assertEq(kdoNft.ownerOf(0), CHILD_ONE);
6970
assertEq(kdoNft.s_nextTokenId(), 1);
@@ -78,31 +79,36 @@ contract KDONftTest is Test {
7879
uint256 tasksCompleted = 4;
7980

8081
vm.expectRevert(KDONft.KDONft__MinimumTasksCompletedRequired.selector);
81-
kdoNft.mintNft(CHILD_ONE, tasksCompleted);
82+
vm.prank(CHILD_ONE);
83+
kdoNft.mintNft(tasksCompleted);
8284
}
8385

8486
function testMintNftRevertIfSameMilestone() public {
8587
uint256 tasksCompleted = 10;
8688

87-
kdoNft.mintNft(CHILD_ONE, tasksCompleted);
89+
vm.prank(CHILD_ONE);
90+
kdoNft.mintNft(tasksCompleted);
8891

8992
vm.expectRevert(
9093
abi.encodeWithSelector(
9194
KDONft.KDONft__CannotMintNFTMoreThanOnce.selector, CHILD_ONE
9295
)
9396
);
94-
kdoNft.mintNft(CHILD_ONE, tasksCompleted);
97+
vm.prank(CHILD_ONE);
98+
kdoNft.mintNft(tasksCompleted);
9599
}
96100

97101
function testMintNftMultipleMilestones() public {
98-
kdoNft.mintNft(CHILD_ONE, 10);
102+
vm.prank(CHILD_ONE);
103+
kdoNft.mintNft(10);
99104
assertEq(kdoNft.ownerOf(0), CHILD_ONE);
100105
assertEq(
101106
uint256(kdoNft.s_childLastNftMinted(CHILD_ONE)),
102107
uint256(KDONft.TaskMilestone.TEN)
103108
);
104109

105-
kdoNft.mintNft(CHILD_ONE, 20);
110+
vm.prank(CHILD_ONE);
111+
kdoNft.mintNft(20);
106112
assertEq(kdoNft.ownerOf(1), CHILD_ONE);
107113
assertEq(
108114
uint256(kdoNft.s_childLastNftMinted(CHILD_ONE)),

packages/nextjs/components/kiddo-perks/ParentDashboard/ChildSummaryCard.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export const ChildSummaryCard = ({ child, totalTasks }: ChildSummaryCardProps) =
2121
</h2>
2222
<p className="text-lg text-right m-0">{formattedTokenBalance} KDO</p>
2323
<p className="m-0">
24-
Tasks completed: {taskByChild.completedTasksNumber}/{totalTasks?.toString()}
24+
Tasks completed: {taskByChild.uniqueCompletedTasksNumber}/{totalTasks?.toString()}
2525
</p>
2626

2727
<div className="card-actions justify-end">

packages/nextjs/contracts/deployedContracts.ts

+3-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract";
77
const deployedContracts = {
88
31337: {
99
KDOToken: {
10-
address: "0xe1da8919f262ee86f9be05059c9280142cf23f48",
10+
address: "0x82dc47734901ee7d4f4232f398752cb9dd5daccc",
1111
abi: [
1212
{
1313
type: "constructor",
@@ -450,7 +450,7 @@ const deployedContracts = {
450450
},
451451
},
452452
KiddoPerks: {
453-
address: "0x0c8e79f3534b00d9a3d4a856b665bf4ebc22f2ba",
453+
address: "0x196dbcbb54b8ec4958c959d8949ebfe87ac2aaaf",
454454
abi: [
455455
{
456456
type: "constructor",
@@ -1451,7 +1451,7 @@ const deployedContracts = {
14511451
},
14521452
},
14531453
KDONft: {
1454-
address: "0xed1db453c3156ff3155a97ad217b3087d5dc5f6e",
1454+
address: "0x82c6d3ed4cd33d8ec1e51d0b5cc1d822eaa0c3dc",
14551455
abi: [
14561456
{
14571457
type: "constructor",
@@ -1592,11 +1592,6 @@ const deployedContracts = {
15921592
type: "function",
15931593
name: "mintNft",
15941594
inputs: [
1595-
{
1596-
name: "to",
1597-
type: "address",
1598-
internalType: "address",
1599-
},
16001595
{
16011596
name: "numTasksCompleted",
16021597
type: "uint256",

0 commit comments

Comments
 (0)