Skip to content
This repository was archived by the owner on May 1, 2025. It is now read-only.

Commit 655f3c2

Browse files
committed
refactor: Store settings events
1 parent 4710b96 commit 655f3c2

File tree

11 files changed

+237
-270
lines changed

11 files changed

+237
-270
lines changed

Cargo.lock

+51-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

factory/src/lib.rs

+11-40
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ use mintbase_deps::constants::{
1313
YOCTO_PER_BYTE,
1414
};
1515
use mintbase_deps::interfaces::factory_self;
16-
use mintbase_deps::logging::{
17-
NearJsonEvent,
18-
NftStoreCreateLog,
19-
};
16+
use mintbase_deps::logging::MbStoreDeployData;
2017
use mintbase_deps::near_sdk::borsh::{
2118
self,
2219
BorshDeserialize,
@@ -197,22 +194,18 @@ impl MintbaseStoreFactory {
197194
if is_promise_success() {
198195
// pay out self and update contract state
199196
self.stores.insert(&metadata.name);
200-
let nscl = NftStoreCreateLog {
201-
contract_metadata: metadata,
202-
owner_id: owner_id.to_string(),
203-
id: store_account_id.to_string(),
204-
};
205-
let event = NearJsonEvent {
206-
standard: "nep171".to_string(),
207-
version: "1.0.0".to_string(),
208-
event: "nft_store_creation".to_string(),
209-
data: serde_json::to_string(&nscl).unwrap(),
210-
};
211-
env::log_str(event.near_json_event().as_str());
197+
env::log_str(
198+
&MbStoreDeployData {
199+
contract_metadata: metadata,
200+
owner_id: owner_id.to_string(),
201+
store_id: store_account_id.to_string(),
202+
}
203+
.serialize_event(),
204+
);
212205
Promise::new(self.owner_id.to_string().parse().unwrap())
213206
.transfer(attached_deposit - self.store_cost);
214-
#[cfg(feature = "panic-test")]
215-
env::panic_str("event.near_json_event().as_str()");
207+
// #[cfg(feature = "panic-test")]
208+
// env::panic_str("event.near_json_event().as_str()");
216209
} else {
217210
// Refunding store cost creation to the store creator
218211
Promise::new(store_creator_id).transfer(attached_deposit - self.store_cost);
@@ -314,25 +307,3 @@ impl New for NFTContractMetadata {
314307
}
315308
}
316309
}
317-
318-
// --------------------------- logging functions ---------------------------- //
319-
pub fn log_factory_new(
320-
store: &NFTContractMetadata,
321-
store_account_id: &str,
322-
owner_id: &str,
323-
) {
324-
let nscl = NftStoreCreateLog {
325-
contract_metadata: store.clone(),
326-
owner_id: owner_id.to_string(),
327-
id: store_account_id.to_string(),
328-
};
329-
let event = NearJsonEvent {
330-
standard: "nep171".to_string(),
331-
version: "1.0.0".to_string(),
332-
event: "nft_store_creation".to_string(),
333-
data: serde_json::to_string(&nscl).unwrap(),
334-
};
335-
env::log_str(event.near_json_event().as_str());
336-
}
337-
338-
// ---------------------------------- misc ---------------------------------- //

mintbase-deps/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ serde_json = "1.0.81"
1717

1818
[dependencies.near_events]
1919
git = "https://github.com/mintbase/near-events"
20-
rev = "6d5fe6eef75d2ac5d67ce01d7219c91219a0c7b7"
20+
rev = "bd78dcaeaa11f6f6286bbbed97d835370783c30b"
2121

2222
[features]
2323
ser = ["near_events/ser"]

mintbase-deps/src/logging.rs

+2-85
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
1-
// use std::convert::TryFrom;
2-
use std::str::FromStr;
3-
41
use near_sdk::serde::{
52
Deserialize,
63
Serialize,
74
};
85

96
mod market;
7+
mod mb_store_settings;
108
mod nft_approvals;
119
mod nft_core;
12-
mod nft_misc;
1310
mod nft_payouts;
1411
pub use market::*;
12+
pub use mb_store_settings::*;
1513
pub use nft_approvals::*;
1614
pub use nft_core::*;
17-
pub use nft_misc::*;
1815
pub use nft_payouts::*;
1916

2017
// TODO: probably unused -> deprecate?
@@ -25,44 +22,6 @@ pub use nft_composition::*;
2522
pub use nft_loan::*;
2623
pub use nft_move::*;
2724

28-
// ----------------------------- various types ------------------------------ //
29-
30-
// #[derive(Deserialize, Serialize, Clone, Debug)]
31-
// #[serde(untagged)]
32-
// pub enum NftEvent {
33-
// NftCreateStore(NftStoreCreateLog),
34-
// NftStringEvent(NftStringLog),
35-
// NftCreate(Vec<NftMintLog>),
36-
// NftDelete(Vec<NftBurnLog>),
37-
// NftCreateApproval(Vec<NftApproveLog>),
38-
// NftRevoke(NftRevokeLog),
39-
// NftUpdate(Vec<NftTransferLog>),
40-
// NftUpdateSplitOwner(NftSetSplitOwnerLog),
41-
// NftUpdateLoan(NftLoanSetLog),
42-
// NftCreateCompose(NftComposeLog),
43-
// NftDeleteCompose(NftUncomposeLog),
44-
// NftOnCreateCompose(NftOnComposeLog),
45-
// NftOnDeleteCompose(NftOnUncomposeLog),
46-
// NftOnMove(NftOnMoveLog),
47-
// NftMoved(NftMovedLog),
48-
// NftCreateList(Vec<NftListLog>),
49-
// NftCreateOffer(NftOfferLog),
50-
// NftUpdateOffer(NftUpdateOfferLog),
51-
// NftCreateSale(NftSaleLog),
52-
// NftUpdateMarket(NftMarketLog),
53-
// NftUpdateIcon(NftOptionStringLog),
54-
// NftUpdateList(NftUpdateListLog),
55-
// }
56-
57-
// impl TryFrom<&str> for NftEvent {
58-
// type Error = serde_json::error::Error;
59-
60-
// fn try_from(s: &str) -> Result<Self, Self::Error> {
61-
// // ne.map_err(|x|NftEventError(x.to_string()))
62-
// serde_json::from_str::<NftEvent>(s)
63-
// }
64-
// }
65-
6625
// ------------------ general event according to standard ------------------- //
6726

6827
// TODO: deprecate this abomination
@@ -74,51 +33,9 @@ pub struct NearJsonEvent {
7433
pub data: String,
7534
}
7635

77-
impl FromStr for NearJsonEvent {
78-
type Err = serde_json::error::Error;
79-
80-
fn from_str(_s: &str) -> Result<Self, Self::Err> {
81-
todo!()
82-
}
83-
}
84-
85-
// impl From<NftEvent> for NearJsonEvent {
86-
// fn from(ne: NftEvent) -> Self {
87-
// let json = serde_json::to_string(&ne).unwrap();
88-
// Self {
89-
// standard: "nep171".to_string(),
90-
// version: "1.0.0".to_string(),
91-
// event: "".to_string(),
92-
// data: json,
93-
// }
94-
// }
95-
// }
96-
9736
impl NearJsonEvent {
9837
pub fn near_json_event(&self) -> String {
9938
let json = serde_json::to_string(&self).unwrap();
10039
format!("EVENT_JSON: {}", &json)
10140
}
10241
}
103-
104-
#[derive(Clone, Debug, Deserialize, Serialize)]
105-
pub struct NftStringLog {
106-
pub data: String,
107-
}
108-
109-
#[derive(Clone, Debug, Deserialize, Serialize)]
110-
pub struct NftOptionStringLog {
111-
pub data: Option<String>,
112-
}
113-
114-
#[derive(Debug, Clone)]
115-
pub struct NftEventError(pub String);
116-
117-
impl std::fmt::Display for NftEventError {
118-
fn fmt(
119-
&self,
120-
f: &mut std::fmt::Formatter,
121-
) -> std::fmt::Result {
122-
write!(f, "{}", self.0)
123-
}
124-
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
use near_events::near_event_data;
2+
#[cfg(feature = "de")]
3+
use near_sdk::serde::Deserialize;
4+
#[cfg(feature = "ser")]
5+
use near_sdk::serde::Serialize;
6+
use near_sdk::{
7+
env,
8+
AccountId,
9+
};
10+
11+
use crate::common::NFTContractMetadata;
12+
13+
#[near_event_data(standard = "mb_store", version = "0.1.0", event = "deploy")]
14+
pub struct MbStoreDeployData {
15+
pub contract_metadata: NFTContractMetadata,
16+
pub owner_id: String,
17+
pub store_id: String,
18+
}
19+
20+
#[near_event_data(standard = "mb_store", version = "0.1.0", event = "change_setting")]
21+
pub struct MbStoreChangeSettingData {
22+
pub granted_minter: Option<String>,
23+
pub revoked_minter: Option<String>,
24+
pub new_owner: Option<String>,
25+
pub new_icon_base64: Option<String>,
26+
pub new_base_uri: Option<String>,
27+
}
28+
29+
impl MbStoreChangeSettingData {
30+
fn empty() -> Self {
31+
MbStoreChangeSettingData {
32+
granted_minter: None,
33+
revoked_minter: None,
34+
new_owner: None,
35+
new_icon_base64: None,
36+
new_base_uri: None,
37+
}
38+
}
39+
}
40+
41+
pub fn log_grant_minter(account_id: &AccountId) {
42+
env::log_str(
43+
&MbStoreChangeSettingData {
44+
granted_minter: Some(account_id.to_string()),
45+
..MbStoreChangeSettingData::empty()
46+
}
47+
.serialize_event(),
48+
);
49+
}
50+
51+
pub fn log_revoke_minter(account_id: &AccountId) {
52+
env::log_str(
53+
&MbStoreChangeSettingData {
54+
revoked_minter: Some(account_id.to_string()),
55+
..MbStoreChangeSettingData::empty()
56+
}
57+
.serialize_event(),
58+
);
59+
}
60+
61+
pub fn log_transfer_store(account_id: &AccountId) {
62+
env::log_str(
63+
&MbStoreChangeSettingData {
64+
new_owner: Some(account_id.to_string()),
65+
..MbStoreChangeSettingData::empty()
66+
}
67+
.serialize_event(),
68+
);
69+
}
70+
71+
pub fn log_set_icon_base64(base64: &Option<String>) {
72+
// this will not take care of icon deletion -> no accessible via UI
73+
// TODO: document for coders that deletion will happen e.g. by inserting
74+
// empty icon
75+
env::log_str(
76+
&MbStoreChangeSettingData {
77+
new_icon_base64: base64.clone(),
78+
..MbStoreChangeSettingData::empty()
79+
}
80+
.serialize_event(),
81+
);
82+
}
83+
84+
pub fn log_set_base_uri(base_uri: &str) {
85+
// TODO: disallow this setting anyhow -> configurable on deploy only
86+
env::log_str(
87+
&MbStoreChangeSettingData {
88+
new_base_uri: Some(base_uri.to_string()),
89+
..MbStoreChangeSettingData::empty()
90+
}
91+
.serialize_event(),
92+
);
93+
}

0 commit comments

Comments
 (0)