From 9eb50ae4fa979cafff0c11529674bf3c212a1ca7 Mon Sep 17 00:00:00 2001 From: donosonaumczuk Date: Fri, 8 Sep 2023 20:06:54 +0100 Subject: [PATCH] feat: Metadata URI added to Mirror Publications --- contracts/libraries/MetaTxLib.sol | 1 + contracts/libraries/PublicationLib.sol | 1 + contracts/libraries/constants/Typehash.sol | 2 +- contracts/libraries/constants/Types.sol | 2 ++ test/base/TestSetup.t.sol | 1 + test/fork/UpgradeForkTest.t.sol | 4 ++++ 6 files changed, 10 insertions(+), 1 deletion(-) diff --git a/contracts/libraries/MetaTxLib.sol b/contracts/libraries/MetaTxLib.sol index 7b38c4e..a8e441b 100644 --- a/contracts/libraries/MetaTxLib.sol +++ b/contracts/libraries/MetaTxLib.sol @@ -196,6 +196,7 @@ library MetaTxLib { abi.encode( Typehash.MIRROR, mirrorParams.profileId, + _encodeUsingEip712Rules(mirrorParams.metadataURI), mirrorParams.pointedProfileId, mirrorParams.pointedPubId, _encodeUsingEip712Rules(mirrorParams.referrerProfileIds), diff --git a/contracts/libraries/PublicationLib.sol b/contracts/libraries/PublicationLib.sol index 7d021db..7bd9a94 100644 --- a/contracts/libraries/PublicationLib.sol +++ b/contracts/libraries/PublicationLib.sol @@ -122,6 +122,7 @@ library PublicationLib { Types.Publication storage _publication = StorageLib.getPublication(mirrorParams.profileId, pubIdAssigned); _publication.pointedProfileId = mirrorParams.pointedProfileId; _publication.pointedPubId = mirrorParams.pointedPubId; + _publication.contentURI = mirrorParams.metadataURI; _publication.pubType = Types.PublicationType.Mirror; _fillRootOfPublicationInStorage(_publication, mirrorParams.pointedProfileId, mirrorParams.pointedPubId); diff --git a/contracts/libraries/constants/Typehash.sol b/contracts/libraries/constants/Typehash.sol index 62f2f3d..2060fef 100644 --- a/contracts/libraries/constants/Typehash.sol +++ b/contracts/libraries/constants/Typehash.sol @@ -16,7 +16,7 @@ library Typehash { bytes32 constant FOLLOW = keccak256('Follow(uint256 followerProfileId,uint256[] idsOfProfilesToFollow,uint256[] followTokenIds,bytes[] datas,uint256 nonce,uint256 deadline)'); - bytes32 constant MIRROR = keccak256('Mirror(uint256 profileId,uint256 pointedProfileId,uint256 pointedPubId,uint256[] referrerProfileIds,uint256[] referrerPubIds,bytes referenceModuleData,uint256 nonce,uint256 deadline)'); + bytes32 constant MIRROR = keccak256('Mirror(uint256 profileId,string metadataURI,uint256 pointedProfileId,uint256 pointedPubId,uint256[] referrerProfileIds,uint256[] referrerPubIds,bytes referenceModuleData,uint256 nonce,uint256 deadline)'); bytes32 constant POST = keccak256('Post(uint256 profileId,string contentURI,address[] actionModules,bytes[] actionModulesInitDatas,address referenceModule,bytes referenceModuleInitData,uint256 nonce,uint256 deadline)'); diff --git a/contracts/libraries/constants/Types.sol b/contracts/libraries/constants/Types.sol index bc99888..3975b1e 100644 --- a/contracts/libraries/constants/Types.sol +++ b/contracts/libraries/constants/Types.sol @@ -273,12 +273,14 @@ library Types { * @notice A struct containing the parameters required for the `mirror()` function. * * @param profileId The token ID of the profile to publish to. + * @param metadataURI the URI containing metadata attributes to attach to this mirror publication. * @param pointedProfileId The profile token ID to point the mirror to. * @param pointedPubId The publication ID to point the mirror to. * @param referenceModuleData The data passed to the reference module. */ struct MirrorParams { uint256 profileId; + string metadataURI; uint256 pointedProfileId; uint256 pointedPubId; uint256[] referrerProfileIds; diff --git a/test/base/TestSetup.t.sol b/test/base/TestSetup.t.sol index 156c9a7..41791d2 100644 --- a/test/base/TestSetup.t.sol +++ b/test/base/TestSetup.t.sol @@ -575,6 +575,7 @@ contract TestSetup is Test, ContractAddressesLoaderDeployer, ArrayHelpers { return Types.MirrorParams({ profileId: defaultAccount.profileId, + metadataURI: '', pointedProfileId: defaultPub.profileId, pointedPubId: defaultPub.pubId, referrerProfileIds: _emptyUint256Array(), diff --git a/test/fork/UpgradeForkTest.t.sol b/test/fork/UpgradeForkTest.t.sol index b076a14..3d7574e 100644 --- a/test/fork/UpgradeForkTest.t.sol +++ b/test/fork/UpgradeForkTest.t.sol @@ -521,6 +521,7 @@ contract UpgradeForkTest is BaseTest { mirror5 = hub.mirror( Types.MirrorParams({ profileId: profileThree.profileId, + metadataURI: '', pointedProfileId: profileThree.profileId, pointedPubId: post3, referrerProfileIds: _emptyUint256Array(), @@ -583,6 +584,7 @@ contract UpgradeForkTest is BaseTest { mirror6 = hub.mirror( Types.MirrorParams({ profileId: profileFour.profileId, + metadataURI: '', pointedProfileId: profileFour.profileId, pointedPubId: post4, referrerProfileIds: _emptyUint256Array(), @@ -633,6 +635,7 @@ contract UpgradeForkTest is BaseTest { mirror7 = hub.mirror( Types.MirrorParams({ profileId: profileThree.profileId, + metadataURI: '', pointedProfileId: profileFour.profileId, pointedPubId: quote2, referrerProfileIds: _emptyUint256Array(), @@ -679,6 +682,7 @@ contract UpgradeForkTest is BaseTest { mirror8 = hub.mirror( Types.MirrorParams({ profileId: profileThree.profileId, + metadataURI: '', pointedProfileId: profileOne.profileId, pointedPubId: post1, referrerProfileIds: _emptyUint256Array(),