const connectionConfig = {
networkId: "mainnet",
keyStore: myKeyStore,
nodeUrl: "https://rpc.mainnet.near.org",
walletUrl: "https://wallet.mainnet.near.org",
helperUrl: "https://helper.mainnet.near.org",
explorerUrl: "https://explorer.mainnet.near.org",
};
// connect to NEAR
const nearConnection = await connect(connectionConfig);
const account = await nearConnection.account();
const contract = new Contract(account, "v1.nadabot.near", {
viewMethods: ["get_providers", "get_users_for_stamp", "is_human"],
});
// get Active Provdiers
const activeProviders = await contract.get_providers({
status: "Active",
});
// get Total Checks
const providers = await contract.get_providers();
let totalStamps = 0;
providers.forEach((provider) => (totalStamps += provider.stamp_count));
// get Humans Verified
// Get All Users
let totalUsers = [];
for (const provider of providers) {
const users = await contract.get_users_for_stamp({
provider_id: provider.provider_id,
});
totalUsers.push(...users);
}
totalUsers = [...new Set(totalUsers)];
// Verify Users
let humanVerified = 0;
for (const user of totalUsers) {
const isHuman = await contract.is_human({
account_id: user,
});
if (isHuman) humanVerified += 1;
}
const statsData = {
verified_providers: activeProviders.length,
total_checks: totalStamps,
verified_humans: humanVerified,
};
setStatsData(statsData);
})();