-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathFollowerOnlyReferenceModule.sol
90 lines (83 loc) · 2.63 KB
/
FollowerOnlyReferenceModule.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import {IReferenceModule} from 'contracts/interfaces/IReferenceModule.sol';
import {HubRestricted} from 'contracts/base/HubRestricted.sol';
import {Types} from 'contracts/libraries/constants/Types.sol';
import {FollowValidationLib} from 'contracts/modules/libraries/FollowValidationLib.sol';
/**
* @title FollowerOnlyReferenceModule
* @author Lens Protocol
*
* @notice A simple reference module that validates that comments, quotes or mirrors originate from a profile that
* follows the profile of the original publication.
*/
contract FollowerOnlyReferenceModule is HubRestricted, IReferenceModule {
constructor(address hub) HubRestricted(hub) {}
/**
* @inheritdoc IReferenceModule
*
* @dev There is nothing needed at initialization.
*/
function initializeReferenceModule(
uint256, /* profileId */
uint256, /* pubId */
address, /* transactionExecutor */
bytes calldata /* data */
) external pure returns (bytes memory) {
return '';
}
/**
* @inheritdoc IReferenceModule
*
* @dev Validates that the commenting profile's owner is a follower.
*/
function processComment(Types.ProcessCommentParams calldata processCommentParams)
external
view
override
returns (bytes memory)
{
FollowValidationLib.validateIsFollowing({
hub: HUB,
followerProfileId: processCommentParams.profileId,
followedProfileId: processCommentParams.pointedProfileId
});
return '';
}
/**
* @inheritdoc IReferenceModule
*
* @dev Validates that the quoting profile's owner is a follower.
*/
function processQuote(Types.ProcessQuoteParams calldata processQuoteParams)
external
view
override
returns (bytes memory)
{
FollowValidationLib.validateIsFollowing({
hub: HUB,
followerProfileId: processQuoteParams.profileId,
followedProfileId: processQuoteParams.pointedProfileId
});
return '';
}
/**
* @inheritdoc IReferenceModule
*
* @dev Validates that the mirroring profile's owner is a follower.
*/
function processMirror(Types.ProcessMirrorParams calldata processMirrorParams)
external
view
override
returns (bytes memory)
{
FollowValidationLib.validateIsFollowing({
hub: HUB,
followerProfileId: processMirrorParams.profileId,
followedProfileId: processMirrorParams.pointedProfileId
});
return '';
}
}