Skip to content

Commit

Permalink
feat: [SC-25546] Remove expiryTimestamp field from Registration
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancoAguzzi committed Aug 8, 2024
1 parent f118a91 commit 1d43401
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 41 deletions.
42 changes: 21 additions & 21 deletions packages/ens-utils/src/ethregistrar.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {
ENSName,
MIN_ETH_REGISTRABLE_LABEL_LENGTH,
ETH_TLD,
charCount,
getDomainLabelFromENSName,
MIN_ETH_REGISTRABLE_LABEL_LENGTH,
} from "./ensname";
import { NFTRef, TokenId, buildNFTRef, buildTokenId } from "./nft";
import { namehash, labelhash } from "viem/ens";
Expand Down Expand Up @@ -301,13 +301,16 @@ export const premiumPeriodEndsIn = (
if (!isExpired || !wasRecentlyReleased) return null;

/*
This conditional should always be true because expiryTimestamp will only be null when
This conditional should always be true because expirationTimestamp will only be null when
the domain was never registered before. Considering that the domain is Expired,
it means that it was registered before. It is just a type safety check.
*/
if (!registration.expiryTimestamp) return null;
if (!registration.expirationTimestamp) return null;

const releasedEpoch = addSeconds(registration.expiryTimestamp, GRACE_PERIOD);
const releasedEpoch = addSeconds(
registration.expirationTimestamp,
GRACE_PERIOD,
);
const temporaryPremiumEndTimestamp = addSeconds(
releasedEpoch,
TEMPORARY_PREMIUM_PERIOD,
Expand Down Expand Up @@ -492,7 +495,6 @@ export type Registration = {
// Below timestamps are counted in seconds
registrationTimestamp: Timestamp | null;
expirationTimestamp: Timestamp | null;
expiryTimestamp: Timestamp | null;

primaryStatus: PrimaryRegistrationStatus;
secondaryStatus: SecondaryRegistrationStatus | null;
Expand All @@ -502,56 +504,54 @@ export const getDomainRegistration = (
/*
When null, a domain is considered to be not registered.
*/
expiryTimestamp: Timestamp | null,
expirationTimestamp: Timestamp | null,
): Registration => {
if (!expiryTimestamp) {
if (!expirationTimestamp) {
return {
primaryStatus: PrimaryRegistrationStatus.NeverRegistered,
secondaryStatus: null,
registrationTimestamp: null,
expirationTimestamp: null,
expiryTimestamp: null,
registrationTimestamp: null,
primaryStatus: PrimaryRegistrationStatus.NeverRegistered,
};
}

const primaryStatus = getPrimaryRegistrationStatus(expiryTimestamp);
const secondaryStatus = getSecondaryRegistrationStatus(expiryTimestamp);
const primaryStatus = getPrimaryRegistrationStatus(expirationTimestamp);
const secondaryStatus = getSecondaryRegistrationStatus(expirationTimestamp);
return {
expiryTimestamp,
primaryStatus,
secondaryStatus,
expirationTimestamp,
registrationTimestamp: null,
expirationTimestamp: expiryTimestamp,
};
};

const getPrimaryRegistrationStatus = (
expiryTimestamp: Timestamp,
expirationTimestamp: Timestamp,
): PrimaryRegistrationStatus => {
const nowTime = now();
return nowTime.time < expiryTimestamp.time
return nowTime.time < expirationTimestamp.time
? PrimaryRegistrationStatus.Active
: PrimaryRegistrationStatus.Expired;
};

const getSecondaryRegistrationStatus = (
expiryTimestamp: Timestamp,
expirationTimestamp: Timestamp,
): SecondaryRegistrationStatus | null => {
const nowTime = now();

if (nowTime.time < expiryTimestamp.time) {
return nowTime.time > expiryTimestamp.time - GRACE_PERIOD.seconds
if (nowTime.time < expirationTimestamp.time) {
return nowTime.time > expirationTimestamp.time - GRACE_PERIOD.seconds
? SecondaryRegistrationStatus.ExpiringSoon
: null;
} else {
if (
expiryTimestamp.time +
expirationTimestamp.time +
GRACE_PERIOD.seconds +
TEMPORARY_PREMIUM_PERIOD.seconds <
nowTime.time
)
return SecondaryRegistrationStatus.FullyReleased;
else if (expiryTimestamp.time + GRACE_PERIOD.seconds > nowTime.time)
else if (expirationTimestamp.time + GRACE_PERIOD.seconds > nowTime.time)
return SecondaryRegistrationStatus.GracePeriod;
else return SecondaryRegistrationStatus.RecentlyReleased;
}
Expand Down
60 changes: 40 additions & 20 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1d43401

Please sign in to comment.