Skip to content

Commit 8cbb0a5

Browse files
Merge pull request #13 from StabilityNexus/aaryan-NftDetailPage
NFT Display page
2 parents a59ec7b + 8aaab93 commit 8cbb0a5

8 files changed

Lines changed: 2606 additions & 1717 deletions

File tree

.env.stencil

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,15 @@ API_KEY=<PINATA_API_KEY>
33
API_SECRET=<PINATA_API_SECRET>
44
ALCHEMY_API_KEY=<ALCHEMY_API_KEY>
55
CONTRACT_ADDRESS=<CONTRACT_ADDRESS>
6-
APPLICATION_ID=<APPLICATION_ID>
6+
APPLICATION_ID=<APPLICATION_ID>
7+
8+
9+
//CONTRACT ADDRESSES
10+
11+
12+
TREE_NFT_CONTRACT_ADDRESS=<TREE_NFT_CONTRACT_ADDRESS>
13+
ORGANISATION_FACTORY_CONTRACT_ADDRESS=<ORGANISATION_FACTORY_CONTRACT_ADDRESS>
14+
CARE_TOKEN_CONTRACT_ADDRESS=<CARE_TOKEN_CONTRACT_ADDRESS>
15+
VERIFIER_TOKEN_CONTRACT_ADDRESS=<VERIFIER_TOKEN_CONTRACT_ADDRESS>
16+
LEGACY_TOKEN_CONTRACT_ADDRESS=<LEGACY_TOKEN_CONTRACT_ADDRESS>
17+
PLANTER_TOKEN_CONTRACT_ADDRESS=<PLANTER_TOKEN_CONTRACT_ADDRESS>

lib/models/tree_details.dart

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import 'package:tree_planting_protocol/utils/logger.dart';
2+
3+
class Tree {
4+
final int id;
5+
final int latitude;
6+
final int longitude;
7+
final int planting;
8+
final int death;
9+
final String species;
10+
final String imageUri;
11+
final String qrIpfsHash;
12+
final String metadata;
13+
final List<String> photos;
14+
final String geoHash;
15+
final List<String> ancestors;
16+
final int lastCareTimestamp;
17+
final int careCount;
18+
final List<String> verifiers;
19+
final String owner;
20+
21+
Tree({
22+
required this.id,
23+
required this.latitude,
24+
required this.longitude,
25+
required this.planting,
26+
required this.death,
27+
required this.species,
28+
required this.imageUri,
29+
required this.qrIpfsHash,
30+
required this.metadata,
31+
required this.photos,
32+
required this.geoHash,
33+
required this.ancestors,
34+
required this.lastCareTimestamp,
35+
required this.careCount,
36+
required this.verifiers,
37+
required this.owner,
38+
});
39+
40+
factory Tree.fromContractData(
41+
List<dynamic> userData, List<dynamic> verifiers, String owner) {
42+
logger.d("User data, Verifiers and Owner");
43+
logger.d(userData);
44+
logger.d(verifiers);
45+
logger.d(owner);
46+
try {
47+
return Tree(
48+
id: _toInt(userData[0]),
49+
latitude: _toInt(userData[1]),
50+
longitude: _toInt(userData[2]),
51+
planting: _toInt(userData[3]),
52+
death: _toInt(userData[4]),
53+
species: userData[5]?.toString() ?? '',
54+
imageUri: userData[6]?.toString() ?? '',
55+
qrIpfsHash: userData[7]?.toString() ?? '',
56+
metadata: userData[8]?.toString() ?? '',
57+
photos: userData[9] is List
58+
? List<String>.from(userData[9].map((p) => p.toString()))
59+
: [],
60+
geoHash: userData[10]?.toString() ?? '',
61+
ancestors: userData[11] is List
62+
? List<String>.from(userData[11].map((a) => a.toString()))
63+
: [],
64+
lastCareTimestamp: _toInt(userData[12]),
65+
careCount: _toInt(userData[13]),
66+
verifiers: List<String>.from(verifiers.map((a) => a.toString())),
67+
owner: owner,
68+
);
69+
} catch (e) {
70+
return Tree(
71+
id: 0,
72+
latitude: 0,
73+
longitude: 0,
74+
planting: 0,
75+
death: 0,
76+
species: 'Unknown',
77+
imageUri: '',
78+
qrIpfsHash: '',
79+
metadata: '',
80+
photos: [],
81+
geoHash: '',
82+
ancestors: [],
83+
lastCareTimestamp: 0,
84+
careCount: 0,
85+
verifiers: [],
86+
owner: '',
87+
);
88+
}
89+
}
90+
91+
static int _toInt(dynamic value) {
92+
if (value is BigInt) return value.toInt();
93+
if (value is int) return value;
94+
return int.tryParse(value.toString()) ?? 0;
95+
}
96+
}

0 commit comments

Comments
 (0)