diff --git a/daikoku/javascript/src/components/backoffice/apis/TeamApiSubscriptions.tsx b/daikoku/javascript/src/components/backoffice/apis/TeamApiSubscriptions.tsx
index 025e64b80..3f866b1b6 100644
--- a/daikoku/javascript/src/components/backoffice/apis/TeamApiSubscriptions.tsx
+++ b/daikoku/javascript/src/components/backoffice/apis/TeamApiSubscriptions.tsx
@@ -77,6 +77,7 @@ interface IApiSubscriptionGql extends ISubscriptionCustomization {
_id: string;
adminCustomName: string;
enabled: boolean;
+ validUntil: string;
api: {
_id: string;
name: string;
@@ -196,7 +197,6 @@ export const TeamApiSubscriptions = ({
tableRef.current?.update();
}
}, [api, subscriptionsQuery.data]);
-
useEffect(() => {
tableRef.current?.update();
}, [filters]);
@@ -211,6 +211,7 @@ export const TeamApiSubscriptions = ({
meta: { style: { textAlign: "left" } },
filterFn: (row, _, value) => {
const sub = row.original;
+
const displayed: string =
sub.team._id === currentTeam._id
? sub.customName || sub.apiKey.clientName
@@ -223,7 +224,7 @@ export const TeamApiSubscriptions = ({
sortingFn: "basic",
cell: (info) => {
const sub = info.row.original;
- const titleDate = `
+ let titleDate = `
${translate("validationDate.apikey.badge.title")} :
${sub.validUntil ? formatDate(sub.validUntil, language) : "N/A"}
`;
@@ -236,6 +237,10 @@ export const TeamApiSubscriptions = ({
${translate("aggregated.apikey.badge.apikey.name")}: ${sub.parent.adminCustomName}
`;
+ titleDate = `
+ ${translate("validationDate.apikey.badge.title")} :
+ ${sub.parent.validUntil ? formatDate(sub.parent.validUntil, language) : "N/A"}
+
`;
return (
{info.getValue()}
@@ -386,8 +391,8 @@ export const TeamApiSubscriptions = ({
}),
];
- const updateMeta = (sub: IApiSubscriptionGql) =>
- openSubMetadataModal({
+ const updateMeta = (sub: IApiSubscriptionGql) => {
+ return openSubMetadataModal({
save: (updates: CustomSubscriptionData) => {
Services.updateSubscription(currentTeam, { ...sub, ...updates }).then(
() => {
@@ -404,6 +409,7 @@ export const TeamApiSubscriptions = ({
(p) => sub.plan._id === p._id
)!,
});
+ };
const regenerateApiKeySecret = useMutation({
mutationFn: (sub: IApiSubscriptionGql) =>
diff --git a/daikoku/javascript/src/contexts/modals/SubscriptionMetadataModal.tsx b/daikoku/javascript/src/contexts/modals/SubscriptionMetadataModal.tsx
index 628ff8546..08ca52573 100644
--- a/daikoku/javascript/src/contexts/modals/SubscriptionMetadataModal.tsx
+++ b/daikoku/javascript/src/contexts/modals/SubscriptionMetadataModal.tsx
@@ -77,7 +77,7 @@ export const SubscriptionMetadataModal = (
}
};
- const schema = {
+ let schema = {
customMetadata: {
type: type.object,
label: translate("Additional metadata"),
@@ -119,12 +119,15 @@ export const SubscriptionMetadataModal = (
label: translate("sub.meta.modal.admin.custom.name.label"),
help: translate("sub.meta.modal.admin.custom.name.help"),
},
- validUntil: {
+ };
+
+ if (!props.subscription?.parent) {
+ schema["validUntil"] = {
type: type.date,
label: translate("sub.meta.modal.valid.until.label"),
help: translate("sub.meta.modal.valid.until.help"),
- },
- };
+ };
+ }
const mandatoryMetadataSchema = (plan?: IUsagePlan) => ({
metadata: {
@@ -218,7 +221,6 @@ export const SubscriptionMetadataModal = (
},
[[], []]
);
-
const value = {
metadata: Object.fromEntries(maybeMetadata),
customMetadata: Object.fromEntries(maybeCustomMetadata),
diff --git a/daikoku/javascript/src/services/index.ts b/daikoku/javascript/src/services/index.ts
index 16fdd1994..a91666290 100644
--- a/daikoku/javascript/src/services/index.ts
+++ b/daikoku/javascript/src/services/index.ts
@@ -1620,6 +1620,7 @@ export const graphql = {
_id
adminCustomName
enabled
+ validUntil
api {
_id
name
diff --git a/daikoku/javascript/src/types/api.ts b/daikoku/javascript/src/types/api.ts
index 723bd68b5..9c89451f9 100644
--- a/daikoku/javascript/src/types/api.ts
+++ b/daikoku/javascript/src/types/api.ts
@@ -378,7 +378,7 @@ export interface IBaseSubscription {
team: string;
api: string;
createdAt: string;
- validUntil: string;
+ validUntil?: string;
by: string;
customName: string | null;
enabled: boolean;
@@ -443,7 +443,8 @@ export interface ISubscriptionCustomization {
customMaxPerDay?: number;
customReadOnly?: boolean;
adminCustomName?: string;
- validUntil: string;
+ validUntil?: string;
+ parent : string | null;
}
export interface ISubscriptionExtended extends ISubscription {