Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 37 additions & 15 deletions app/utils/feature-gate/featureGate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,43 @@ export function UpcomingFeatures() {
return null;
}

const filteredFeatures = (FEATURES as FeatureInfoType[]).filter((feature: FeatureInfoType) => {
switch (cluster) {
case Cluster.MainnetBeta:
// Show features activated on devnet and testnet
return feature.devnetActivationEpoch !== null && feature.testnetActivationEpoch !== null;
case Cluster.Devnet:
// Show features activated on testnet, mark if already activated on devnet
return feature.testnetActivationEpoch !== null;
case Cluster.Testnet:
// Only show features not yet activated on testnet
return feature.testnetActivationEpoch === null;
default:
return false;
}
});
const filteredFeatures = (FEATURES as FeatureInfoType[])
.filter((feature: FeatureInfoType) => {
switch (cluster) {
case Cluster.MainnetBeta:
// Show features activated on devnet and testnet
return feature.devnetActivationEpoch !== null && feature.testnetActivationEpoch !== null;
case Cluster.Devnet:
// Show features activated on testnet, mark if already activated on devnet
return feature.testnetActivationEpoch !== null;
case Cluster.Testnet:
// Only show features not yet activated on testnet
return feature.testnetActivationEpoch === null;
default:
return false;
}
})
.sort((a, b) => {
// Helper function to check if a feature is activated on current cluster
const isActivated = (feature: FeatureInfoType) => {
switch (cluster) {
case Cluster.MainnetBeta:
return feature.mainnetActivationEpoch !== null;
case Cluster.Devnet:
return feature.devnetActivationEpoch !== null;
case Cluster.Testnet:
return feature.testnetActivationEpoch !== null;
default:
return false;
}
};

// Sort activated features to end while preserving existing ordering
const aActivated = isActivated(a);
const bActivated = isActivated(b);
if (aActivated === bActivated) return 0;
return aActivated ? 1 : -1;
});

if (filteredFeatures.length === 0) {
return null;
Expand Down