@@ -18,46 +18,45 @@ pub trait NonFungibleTokenCore {
18
18
19
19
#[ near_bindgen]
20
20
impl NonFungibleTokenCore for Contract {
21
-
22
21
//calculates the payout for a token given the passed in balance. This is a view method
23
22
fn nft_payout ( & self , token_id : TokenId , balance : U128 , max_len_payout : u32 ) -> Payout {
24
23
//get the token object
25
- let token = self . tokens_by_id . get ( & token_id) . expect ( "No token" ) ;
24
+ let token = self . tokens_by_id . get ( & token_id) . expect ( "No token" ) ;
26
25
27
26
//get the owner of the token
28
27
let owner_id = token. owner_id ;
29
28
//keep track of the total perpetual royalties
30
29
let mut total_perpetual = 0 ;
31
30
//get the u128 version of the passed in balance (which was U128 before)
32
31
let balance_u128 = u128:: from ( balance) ;
33
- //keep track of the payout object to send back
32
+ //keep track of the payout object to send back
34
33
let mut payout_object = Payout {
35
34
payout : HashMap :: new ( )
36
35
} ;
37
36
//get the royalty object from token
38
- let royalty = token. royalty ;
37
+ let royalty = token. royalty ;
39
38
40
39
//make sure we're not paying out to too many people (GAS limits this)
41
- assert ! ( royalty. len( ) as u32 <= max_len_payout, "Market cannot payout to that many receivers" ) ;
40
+ assert ! ( royalty. len( ) as u32 <= max_len_payout, "Market cannot payout to that many receivers" ) ;
42
41
43
- //go through each key and value in the royalty object
44
- for ( k, v) in royalty. iter ( ) {
42
+ //go through each key and value in the royalty object
43
+ for ( k, v) in royalty. iter ( ) {
45
44
//get the key
46
- let key = k. clone ( ) ;
45
+ let key = k. clone ( ) ;
46
+
47
47
//only insert into the payout if the key isn't the token owner (we add their payout at the end)
48
- if key != owner_id {
49
- //
50
- payout_object. payout . insert ( key, royalty_to_payout ( * v, balance_u128) ) ;
51
- total_perpetual += * v;
52
- }
53
- }
48
+ if key != owner_id {
49
+ payout_object. payout . insert ( key, royalty_to_payout ( * v, balance_u128) ) ;
50
+ total_perpetual += * v;
51
+ }
52
+ }
54
53
55
- // payout to previous owner who gets 100% - total perpetual royalties
56
- payout_object. payout . insert ( owner_id, royalty_to_payout ( 10000 - total_perpetual, balance_u128) ) ;
54
+ // payout to previous owner who gets 100% - total perpetual royalties
55
+ payout_object. payout . insert ( owner_id, royalty_to_payout ( 10000 - total_perpetual, balance_u128) ) ;
57
56
58
57
//return the payout object
59
- payout_object
60
- }
58
+ payout_object
59
+ }
61
60
62
61
//transfers the token to the receiver ID and returns the payout object that should be payed given the passed in balance.
63
62
#[ payable]
@@ -95,32 +94,32 @@ impl NonFungibleTokenCore for Contract {
95
94
let mut total_perpetual = 0 ;
96
95
//get the u128 version of the passed in balance (which was U128 before)
97
96
let balance_u128 = u128:: from ( balance) ;
98
- //keep track of the payout object to send back
97
+ //keep track of the payout object to send back
99
98
let mut payout_object = Payout {
100
99
payout : HashMap :: new ( )
101
100
} ;
102
101
//get the royalty object from token
103
- let royalty = previous_token. royalty ;
102
+ let royalty = previous_token. royalty ;
104
103
105
104
//make sure we're not paying out to too many people (GAS limits this)
106
- assert ! ( royalty. len( ) as u32 <= max_len_payout, "Market cannot payout to that many receivers" ) ;
105
+ assert ! ( royalty. len( ) as u32 <= max_len_payout, "Market cannot payout to that many receivers" ) ;
107
106
108
107
//go through each key and value in the royalty object
109
- for ( k, v) in royalty. iter ( ) {
108
+ for ( k, v) in royalty. iter ( ) {
110
109
//get the key
111
- let key = k. clone ( ) ;
110
+ let key = k. clone ( ) ;
111
+
112
112
//only insert into the payout if the key isn't the token owner (we add their payout at the end)
113
- if key != owner_id {
114
- //
115
- payout_object. payout . insert ( key, royalty_to_payout ( * v, balance_u128) ) ;
116
- total_perpetual += * v;
117
- }
118
- }
113
+ if key != owner_id {
114
+ payout_object. payout . insert ( key, royalty_to_payout ( * v, balance_u128) ) ;
115
+ total_perpetual += * v;
116
+ }
117
+ }
119
118
120
- // payout to previous owner who gets 100% - total perpetual royalties
121
- payout_object. payout . insert ( owner_id, royalty_to_payout ( 10000 - total_perpetual, balance_u128) ) ;
119
+ // payout to previous owner who gets 100% - total perpetual royalties
120
+ payout_object. payout . insert ( owner_id, royalty_to_payout ( 10000 - total_perpetual, balance_u128) ) ;
122
121
123
122
//return the payout object
124
- payout_object
123
+ payout_object
125
124
}
126
125
}
0 commit comments