48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import React, { useContext } from "react";
|
|
|
|
import { AppEnv, DBConnection, Feature, FeatureType } from "@autumn/shared";
|
|
import CreateCreditSystem from "./CreateCreditSystem";
|
|
import { useFeaturesContext } from "../features/FeaturesContext";
|
|
import { useAxiosSWR } from "@/services/useAxiosSwr";
|
|
import LoadingScreen from "../general/LoadingScreen";
|
|
import { CreditsContext } from "./CreditsContext";
|
|
import { CreditSystemsTable } from "./CreditSystemsTable";
|
|
import { CustomToaster } from "@/components/general/CustomToaster";
|
|
|
|
function CreditSystemsView({ env }: { env: AppEnv }) {
|
|
const { data, isLoading, error, mutate } = useAxiosSWR({
|
|
url: "/features",
|
|
env: env,
|
|
});
|
|
|
|
if (isLoading) return <LoadingScreen />;
|
|
|
|
const creditSystems = data?.features.filter(
|
|
(feature) => feature.type === FeatureType.CreditSystem
|
|
);
|
|
|
|
return (
|
|
<CreditsContext.Provider
|
|
value={{
|
|
features: data?.features,
|
|
env: env,
|
|
mutate,
|
|
}}
|
|
>
|
|
<CustomToaster />
|
|
<div>
|
|
<h1 className="text-xl font-medium">Credits</h1>
|
|
<p className="text-sm text-t2">
|
|
Define the credit systems your users are entitled to
|
|
</p>
|
|
</div>
|
|
<CreditSystemsTable creditSystems={creditSystems} />
|
|
<CreateCreditSystem />
|
|
</CreditsContext.Provider>
|
|
);
|
|
}
|
|
|
|
export default CreditSystemsView;
|