From b16a49e80f7dfd0035356f38d1c89dcc5508986e Mon Sep 17 00:00:00 2001 From: Danish Arora Date: Thu, 15 May 2025 16:28:47 +0530 Subject: [PATCH] chore: add `getMembershipStatus` method --- packages/rln/src/contract/rln_base_contract.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/rln/src/contract/rln_base_contract.ts b/packages/rln/src/contract/rln_base_contract.ts index 929c9acbba..17065d2a26 100644 --- a/packages/rln/src/contract/rln_base_contract.ts +++ b/packages/rln/src/contract/rln_base_contract.ts @@ -1,5 +1,5 @@ import { Logger } from "@waku/utils"; -import { ethers } from "ethers"; +import { Contract, ethers } from "ethers"; import { IdentityCredential } from "../identity.js"; import { DecryptedCredentials } from "../keystore/types.js"; @@ -719,6 +719,19 @@ export class RLNBaseContract { } } + public async getMembershipStatus( + idCommitment: bigint + ): Promise<"expired" | "grace" | "active"> { + const [isExpired, isInGrace] = await Promise.all([ + this.contract.isExpired(idCommitment), + this.contract.isInGracePeriod(idCommitment) + ]); + + if (isExpired) return "expired"; + if (isInGrace) return "grace"; + return "active"; + } + /** * Checks if a membership is expired for the given idCommitment * @param idCommitmentBigInt The idCommitment as bigint