@worldcoin/minikit-js
Version:
minikit-js is our SDK for building mini-apps.
55 lines (54 loc) • 1.45 kB
JavaScript
// src/helpers/address-book.ts
import { createPublicClient, http } from "viem";
import { worldchain } from "viem/chains";
var worldIdAddressBookContractAddress = "0x57b930D551e677CC36e2fA036Ae2fe8FdaE0330D";
var addressVerifiedUntilAbi = [
{
inputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
name: "addressVerifiedUntil",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
}
];
var getIsUserVerified = async (walletAddress, rpcUrl) => {
const publicClient = createPublicClient({
chain: worldchain,
transport: http(
rpcUrl || "https://worldchain-mainnet.g.alchemy.com/public"
)
});
try {
const verifiedUntilResponse = await publicClient.readContract({
address: worldIdAddressBookContractAddress,
abi: addressVerifiedUntilAbi,
functionName: "addressVerifiedUntil",
args: [walletAddress]
});
const verifiedUntil = Number(verifiedUntilResponse.toString());
if (!Number.isFinite(verifiedUntil)) {
console.warn("Invalid verifiedUntil value:", verifiedUntil);
return false;
}
const currentTime = Math.floor(Date.now() / 1e3);
return verifiedUntil > currentTime;
} catch (error) {
console.error("Error verifying user:", error);
return false;
}
};
export {
getIsUserVerified
};