Skip to content

Commit d037dac

Browse files
committed
Revamp the whole codebase
1 parent 7e93a0d commit d037dac

12 files changed

+96
-59
lines changed

src/interfaces.cairo

-2
This file was deleted.

src/lib.cairo

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
pub mod weaver;
2-
pub mod interfaces;
3-
pub mod WeaverNFT;
1+
pub mod mods;

src/mods.cairo

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
pub mod types;
2+
pub mod events;
3+
pub mod errors;
4+
5+
pub mod token{
6+
pub mod WeaverNFT;
7+
}
8+
9+
pub mod interfaces{
10+
pub mod IWeaver;
11+
pub mod IWeaverNFT;
12+
}
13+
14+
pub mod weaver_contract{
15+
pub mod weaver;
16+
}

src/mods/errors.cairo

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
pub mod Errors{
2+
pub const USER_ALREADY_REGISTERED: felt252 = 'USER_ALREADY_REGISTERED';
3+
pub const USER_NOT_REGISTERED: felt252 = 'USER_NOT_REGISTERED';
4+
pub const TASK_ALREADY_EXISTS: felt252 = 'TASK_ALREADY_EXISTS';
5+
pub const TASK_NOT_EXISTS: felt252 = 'TASK_NOT_EXISTS';
6+
pub const PROTOCOL_ALREADY_REGISTERED: felt252 = 'PROTOCOL_ALREADY_REGISTERED';
7+
pub const INVALID_PROTOCOL_NAME: felt252 = 'INVALID_PROTOCOL_NAME';
8+
pub const UNAUTHORIZED: felt252 = 'UNAUTHORIZED';
9+
pub const INVALID_ADDRESS: felt252 = 'INVALID_ADDRESS';
10+
pub const CLASS_HASH_CANNOT_BE_ZERO: felt252 = 'CLASS_HASH_CANNOT_BE_ZERO';
11+
}

src/mods/events.cairo

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use starknet::{ClassHash, ContractAddress};
2+
3+
4+
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
5+
pub struct Upgraded {
6+
pub implementation: ClassHash,
7+
}
8+
9+
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
10+
pub struct UserRegistered {
11+
#[key]
12+
pub user: ContractAddress,
13+
}
14+
15+
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
16+
pub struct ProtocolRegistered {
17+
#[key]
18+
pub user: ContractAddress,
19+
}
20+
21+
22+
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
23+
pub struct TaskMinted {
24+
#[key]
25+
pub task_id: u256,
26+
#[key]
27+
pub user: ContractAddress,
28+
}
File renamed without changes.

src/interfaces/IWeaver.cairo src/mods/interfaces/IWeaver.cairo

+1-15
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,8 @@ use starknet::class_hash::ClassHash;
55
// INTERFACE of WEAVER
66
// *************************************************************************
77

8-
#[derive(Drop, Serde, Debug, PartialEq, starknet::Store)]
9-
pub struct User {
10-
pub Details: ByteArray,
11-
}
12-
13-
#[derive(Copy, Drop, Serde, starknet::Store)]
14-
pub struct TaskInfo {
15-
pub task_id: u256,
16-
pub user: ContractAddress,
17-
pub is_completed: bool,
18-
}
198

20-
#[derive(Drop, Serde, Debug, PartialEq, starknet::Store)]
21-
pub struct ProtocolInfo {
22-
pub protocol_name: ByteArray,
23-
}
9+
use crate::mods::types::{ProtocolInfo, TaskInfo, User};
2410

2511
#[starknet::interface]
2612
pub trait IWeaver<TContractState> {
File renamed without changes.

src/WeaverNFT.cairo src/mods/token/WeaverNFT.cairo

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub mod WeaverNFT {
1313
Map, StoragePointerWriteAccess, StoragePointerReadAccess, StorageMapReadAccess,
1414
StorageMapWriteAccess
1515
};
16-
use weaver_contract::interfaces::IWeaverNFT;
16+
use crate::mods::interfaces::IWeaverNFT;
1717

1818
// *************************************************************************
1919
// COMPONENTS

src/mods/types.cairo

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use starknet::ContractAddress;
2+
3+
#[derive(Drop, Serde, Debug, PartialEq, starknet::Store)]
4+
pub struct User {
5+
pub Details: ByteArray,
6+
}
7+
8+
#[derive(Copy, Drop, Serde, starknet::Store)]
9+
pub struct TaskInfo {
10+
pub task_id: u256,
11+
pub user: ContractAddress,
12+
pub is_completed: bool,
13+
}
14+
15+
#[derive(Drop, Serde, Debug, PartialEq, starknet::Store)]
16+
pub struct ProtocolInfo {
17+
pub protocol_name: ByteArray,
18+
}

src/weaver.cairo src/mods/weaver_contract/weaver.cairo

+14-33
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ pub mod Weaver {
1616
get_caller_address,
1717
};
1818

19-
use weaver_contract::interfaces::IWeaver::{User, ProtocolInfo, TaskInfo};
20-
use weaver_contract::interfaces::IWeaver::IWeaver;
21-
use weaver_contract::interfaces::IWeaverNFT::{IWeaverNFTDispatcher, IWeaverNFTDispatcherTrait};
19+
use crate::mods::types::{ProtocolInfo, TaskInfo, User};
20+
use crate::mods::events::{ProtocolRegistered, TaskMinted, Upgraded, UserRegistered};
21+
use crate::mods::errors::Errors;
22+
use crate::mods::interfaces::IWeaver::IWeaver;
23+
use crate::mods::interfaces::IWeaverNFT::{IWeaverNFTDispatcher,IWeaverNFTDispatcherTrait};
2224

2325
// *************************************************************************
2426
// STORAGE
@@ -50,27 +52,6 @@ pub mod Weaver {
5052
}
5153

5254

53-
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
54-
pub struct Upgraded {
55-
pub implementation: ClassHash,
56-
}
57-
58-
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
59-
pub struct UserRegistered {
60-
pub user: ContractAddress,
61-
}
62-
63-
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
64-
pub struct ProtocolRegistered {
65-
pub user: ContractAddress,
66-
}
67-
68-
69-
#[derive(Copy, Drop, Debug, PartialEq, starknet::Event)]
70-
pub struct TaskMinted {
71-
pub task_id: u256,
72-
pub user: ContractAddress,
73-
}
7455

7556

7657
#[constructor]
@@ -85,7 +66,7 @@ pub mod Weaver {
8566
#[abi(embed_v0)]
8667
impl WeaverImpl of IWeaver<ContractState> {
8768
fn register_User(ref self: ContractState, Details: ByteArray) {
88-
assert(!self.registered.read(get_caller_address()), 'user already registered');
69+
assert(!self.registered.read(get_caller_address()), Errors::USER_ALREADY_REGISTERED);
8970
self.registered.write(get_caller_address(), true);
9071
self.users.write(get_caller_address(), User { Details });
9172
let total_users = self.user_count.read() + 1;
@@ -102,10 +83,10 @@ pub mod Weaver {
10283
let caller = get_caller_address();
10384

10485
// Verify user is registered
105-
assert(self.registered.read(caller), 'USER_NOT_REGISTERED');
86+
assert(self.registered.read(caller), Errors::USER_NOT_REGISTERED);
10687

10788
// Veriy task does not exist
108-
assert(!self.task_registry.read(task_id).is_completed, 'TASK_ALREADY_EXISTS');
89+
assert(!self.task_registry.read(task_id).is_completed, Errors::TASK_ALREADY_EXISTS);
10990

11091
let task_info = TaskInfo { task_id, user: caller, is_completed: true };
11192
self.task_registry.write(task_id, task_info);
@@ -122,10 +103,10 @@ pub mod Weaver {
122103

123104

124105
fn protocol_register(ref self: ContractState, protocol_name: ByteArray) {
125-
assert(protocol_name.len() > 0, 'INVALID_PROTOCOL_NAME');
106+
assert(protocol_name.len() > 0, Errors::INVALID_PROTOCOL_NAME);
126107

127108
let protocol_info = self.protocol_registrations.read(get_caller_address());
128-
assert(protocol_info.protocol_name.len() == 0, 'PROTOCOL_ALREADY_REGISTERED');
109+
assert(protocol_info.protocol_name.len() == 0, Errors::PROTOCOL_ALREADY_REGISTERED);
129110
self.protocol_registrations.write(get_caller_address(), ProtocolInfo { protocol_name });
130111

131112
// Dispatch the mint_weaver_nft call to the NFT contract
@@ -169,17 +150,17 @@ pub mod Weaver {
169150
}
170151

171152
fn upgrade(ref self: ContractState, Imp_hash: ClassHash) {
172-
assert(Imp_hash.is_non_zero(), 'Clash Hasd Cannot be Zero');
173-
assert(get_caller_address() == self.owner.read(), 'UNAUTHORIZED');
153+
assert(Imp_hash.is_non_zero(), Errors::CLASS_HASH_CANNOT_BE_ZERO);
154+
assert(get_caller_address() == self.owner.read(), Errors::UNAUTHORIZED);
174155
starknet::syscalls::replace_class_syscall(Imp_hash).unwrap_syscall();
175156
self.version.write(self.version.read() + 1);
176157
self.emit(Event::Upgraded(Upgraded { implementation: Imp_hash }));
177158
}
178159

179160

180161
fn set_erc721(ref self: ContractState, address: ContractAddress) {
181-
assert(get_caller_address() == self.owner.read(), 'UNAUTHORIZED');
182-
assert(address.is_non_zero(), 'INVALID_ADDRESS');
162+
assert(get_caller_address() == self.owner.read(), Errors::UNAUTHORIZED);
163+
assert(address.is_non_zero(), Errors::INVALID_ADDRESS);
183164
self.weaver_nft_address.write(address);
184165
}
185166
}

tests/test_weaver_contract.cairo

+6-5
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ use snforge_std::{
1010

1111
use starknet::{ContractAddress, get_block_timestamp};
1212

13-
use weaver_contract::interfaces::IWeaverNFT::{IWeaverNFTDispatcher, IWeaverNFTDispatcherTrait};
14-
use weaver_contract::interfaces::IWeaver::{IWeaverDispatcher, IWeaverDispatcherTrait};
15-
use weaver_contract::weaver::Weaver::{Event};
16-
use weaver_contract::weaver::Weaver::{UserRegistered, ProtocolRegistered, TaskMinted};
13+
use weaver_contract::mods::interfaces::IWeaver::{IWeaverDispatcher, IWeaverDispatcherTrait};
14+
use weaver_contract::mods::interfaces::IWeaverNFT::{IWeaverNFTDispatcher, IWeaverNFTDispatcherTrait};
15+
use weaver_contract::mods::events::{UserRegistered, ProtocolRegistered, TaskMinted};
16+
use weaver_contract::mods::weaver_contract::weaver::Weaver::{Event};
17+
1718

1819

1920
fn OWNER() -> ContractAddress {
@@ -100,7 +101,7 @@ fn test_register_user_emit_event() {
100101

101102

102103
#[test]
103-
#[should_panic(expected: 'user already registered')]
104+
#[should_panic(expected: 'USER_ALREADY_REGISTERED')]
104105
fn test_already_registered_should_panic() {
105106
let weaver_contract_address = __setup__();
106107
let weaver_contract = IWeaverDispatcher { contract_address: weaver_contract_address };

0 commit comments

Comments
 (0)