in src/app/(proper_react)/(redesign)/(authenticated)/admin/feature-flags/page.tsx [27:126]
export default async function FeatureFlagPage() {
const session = await getServerSession();
const monthlySubscriptionUrl = getPremiumSubscriptionUrl({
type: "monthly",
enabledFeatureFlags: [],
});
const yearlySubscriptionUrl = getPremiumSubscriptionUrl({
type: "yearly",
enabledFeatureFlags: [],
});
const fxaSettingsUrl = process.env.FXA_SETTINGS_URL!;
if (!session?.user?.email || !session.user.subscriber?.id) {
return redirect("/");
}
if (!isAdmin(session.user.email)) {
return notFound();
}
const featureFlags =
(await getAllFeatureFlags()).toSorted(
(flagA, flagB) => flagB.updated_at.getTime() - flagA.updated_at.getTime(),
) ?? [];
/**
* Elements in this array are either existing flags that are disabled,
* or names of flags that are not known in the database yet.
*/
const disabledFlags = featureFlagNames
.map((flagName) => {
return featureFlags.find((flag) => flag.name === flagName) ?? flagName;
})
.filter(
(flagOrFlagName) =>
typeof flagOrFlagName === "string" || !flagOrFlagName.is_enabled,
)
.reverse();
return (
<div className={styles.wrapper}>
<nav className={styles.tabBar}>
<div className={styles.end}>
<Toolbar
user={session.user}
monthlySubscriptionUrl={monthlySubscriptionUrl}
yearlySubscriptionUrl={yearlySubscriptionUrl}
subscriptionBillingAmount={getSubscriptionBillingAmount()}
fxaSettingsUrl={fxaSettingsUrl}
// Since this page is only accessed by contributors, no need to load
// their latest scan date from the DB:
lastScanDate={null}
// We're not going to run experiments on the feature flag page (it's
// not user-visible), so no need to fetch experiment data:
experimentData={defaultExperimentData["Features"]}
enabledFeatureFlags={[]}
announcements={null}
/>
</div>
</nav>
<div className={styles.main}>
<h3>Disabled Feature Flags</h3>
<div className={styles.flagList}>
{disabledFlags.map((flagOrFlagName) => {
return typeof flagOrFlagName === "string" ? (
<NewFlagEditor
key={flagOrFlagName}
flagName={flagOrFlagName}
adminOnly={isFeatureFlagAdminOnly(flagOrFlagName)}
/>
) : (
<ExistingFlagEditor
key={flagOrFlagName.name}
flag={flagOrFlagName}
adminOnly={isFeatureFlagAdminOnly(flagOrFlagName.name)}
/>
);
})}
</div>
<h3>Enabled Feature Flags</h3>
<div className={styles.flagList}>
{featureFlags
.filter(
(flag) =>
flag.is_enabled &&
featureFlagNames.includes(flag.name as FeatureFlagName),
)
.map((flag) => (
<ExistingFlagEditor
key={flag.name}
flag={flag}
adminOnly={isFeatureFlagAdminOnly(flag.name)}
/>
))}
</div>
</div>
</div>
);
}