Skip to content

Commit

Permalink
metadata creation working - though not being returned.
Browse files Browse the repository at this point in the history
Signed-off-by: Nicholas Bucher <[email protected]>
  • Loading branch information
Charlesthebird committed Sep 26, 2024
1 parent d695e95 commit f5f0a0e
Show file tree
Hide file tree
Showing 7 changed files with 323 additions and 171 deletions.
6 changes: 3 additions & 3 deletions projects/ui/src/Apis/api-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@ export type App = {
deletedAt: string;
updatedAt: string;
id: string;
idpClientId: string;
idpClientName: string;
idpClientSecret: string;
idpClientId?: string;
idpClientName?: string;
idpClientSecret?: string;
name: string;
description: string;
teamId: string;
Expand Down
80 changes: 53 additions & 27 deletions projects/ui/src/Apis/gg_hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -525,95 +525,121 @@ export function useCreateUserMutation() {
// -------------------------------- //
// region (Admin) Create App Metadata

type CreateUpdateAppMetadataParams = MutationWithArgs<{
export type CreateUpdateAppMetadataParams = MutationWithArgs<{
appId: string;
customMetadata: Record<string, string>;
rateLimit: RateLimit;
rateLimit?: RateLimit;
customMetadata?: Record<string, string>;
}>;

export function useCreateAppMetadataMutation(appId: string) {
export function useCreateAppMetadataMutation() {
const { latestAccessToken } = useContext(AuthContext);
const { mutate } = useSWRConfig();
const createAppMetadata = async (
_: string,
{ arg }: CreateUpdateAppMetadataParams
) => {
await fetchJSON(`/apps/${appId}/metadata`, {
const req: Record<string, any> = { appId: arg.appId };
if (arg.customMetadata !== undefined) {
req.customMetadata = arg.customMetadata;
}
if (arg.rateLimit !== undefined) {
req.rateLimit = arg.rateLimit;
}
await fetchJSON(`/apps/${arg.appId}/metadata`, {
method: "POST",
headers: getLatestAuthHeaders(latestAccessToken),
body: JSON.stringify(arg),
body: JSON.stringify(req),
});
mutate(TEAM_APPS_SWR_KEY);
mutate(`/apps/${arg.appId}`);
};
return useSWRMutation(`/apps/${appId}`, createAppMetadata);
return useSWRMutation(`create-app-metadata`, createAppMetadata);
}

// -------------------------------- //
// region (Admin) Update App Metadata

export function useUpdateAppMetadataMutation(appId: string) {
export function useUpdateAppMetadataMutation() {
const { latestAccessToken } = useContext(AuthContext);
const { mutate } = useSWRConfig();
const fetcher = async (_: string, { arg }: CreateUpdateAppMetadataParams) => {
await fetchJSON(`/apps/${appId}/metadata`, {
const req: Record<string, any> = { appId: arg.appId };
if (arg.customMetadata !== undefined) {
req.customMetadata = arg.customMetadata;
}
if (arg.rateLimit !== undefined) {
req.rateLimit = arg.rateLimit;
}
await fetchJSON(`/apps/${arg.appId}/metadata`, {
method: "PUT",
headers: getLatestAuthHeaders(latestAccessToken),
body: JSON.stringify(arg),
body: JSON.stringify(req),
});
mutate(TEAM_APPS_SWR_KEY);
mutate(`/apps/${arg.appId}`);
};
return useSWRMutation(`/apps/${appId}`, fetcher);
return useSWRMutation("update-app-metadata", fetcher);
}

// -------------------------------- //
// region (Admin) Create Subscription Metadata

type CreateUpdateSubscriptionMetadataParams = MutationWithArgs<{
subscriptionId: string;
customMetadata: Record<string, string>;
rateLimit: RateLimit;
export type CreateUpdateSubscriptionMetadataParams = MutationWithArgs<{
subscription: Subscription;
customMetadata?: Record<string, string>;
rateLimit?: RateLimit;
}>;

export function useCreateSubscriptionMetadataMutation(
subscription: Subscription
) {
export function useCreateSubscriptionMetadataMutation() {
const { latestAccessToken } = useContext(AuthContext);
const { mutate } = useSWRConfig();
const fetcher = async (
_: string,
{ arg }: CreateUpdateSubscriptionMetadataParams
) => {
await fetchJSON(`/subscriptions/${subscription.id}/metadata`, {
const req: Record<string, any> = { subscriptionId: arg.subscription.id };
if (arg.customMetadata !== undefined) {
req.customMetadata = arg.customMetadata;
}
if (arg.rateLimit !== undefined) {
req.rateLimit = arg.rateLimit;
}
await fetchJSON(`/subscriptions/${arg.subscription.id}/metadata`, {
method: "POST",
headers: getLatestAuthHeaders(latestAccessToken),
body: JSON.stringify(arg),
});
mutate(`/apps/${subscription.applicationId}/subscriptions`);
mutate(`/apps/${arg.subscription.applicationId}/subscriptions`);
mutate(`/subscriptions?status=${SubscriptionStatus.APPROVED}`);
mutate(`/subscriptions?status=${SubscriptionStatus.PENDING}`);
mutate(APP_SUBS_SWR_KEY);
};
return useSWRMutation(`update-subscription-metadata`, fetcher);
return useSWRMutation(`create-subscription-metadata`, fetcher);
}

// -------------------------------- //
// region (Admin) Update Subscription Metadata

export function useUpdateSubscriptionMetadataMutation(
subscription: Subscription
) {
export function useUpdateSubscriptionMetadataMutation() {
const { latestAccessToken } = useContext(AuthContext);
const { mutate } = useSWRConfig();
const fetcher = async (
_: string,
{ arg }: CreateUpdateSubscriptionMetadataParams
) => {
await fetchJSON(`/subscriptions/${subscription.id}/metadata`, {
const req: Record<string, any> = { subscriptionId: arg.subscription.id };
if (arg.customMetadata !== undefined) {
req.customMetadata = arg.customMetadata;
}
if (arg.rateLimit !== undefined) {
req.rateLimit = arg.rateLimit;
}
await fetchJSON(`/subscriptions/${arg.subscription.id}/metadata`, {
method: "PUT",
headers: getLatestAuthHeaders(latestAccessToken),
body: JSON.stringify(arg),
body: JSON.stringify(req),
});
mutate(`/apps/${subscription.applicationId}/subscriptions`);
mutate(`/apps/${arg.subscription.applicationId}/subscriptions`);
mutate(`/subscriptions?status=${SubscriptionStatus.APPROVED}`);
mutate(`/subscriptions?status=${SubscriptionStatus.PENDING}`);
mutate(APP_SUBS_SWR_KEY);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,10 @@ export function AppSummaryGridCard({ app }: { app: AppWithTeam }) {
</Flex>
<CardStyles.Description>{app.description}</CardStyles.Description>
<MetadataDisplay
itemType="app"
itemId={app.id}
item={app}
customMetadata={app.metadata?.customMetadata}
rateLimitInfo={app.metadata?.rateLimit}
onIsManagingMetadataChange={(value) =>
onIsEditingMetadataChange={(value) =>
setIsManagingMetadata(value)
}
/>
Expand Down
2 changes: 1 addition & 1 deletion projects/ui/src/Components/Common/DataPairPill.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const StyledDataPairPill = styled.div(
`
);

export type KeyValuePair = { pairKey: string; value: string };
export type KeyValuePair = { pairKey: string; value: React.ReactNode };

export function DataPairPill({
pairKey,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,11 +183,10 @@ const SubscriptionInfoCard = ({
item={teamOfAppThatSubscribed}
/>
<MetadataDisplay
itemType="subscription"
itemId={subscription.id}
item={subscription}
customMetadata={subscription.metadata?.customMetadata}
rateLimitInfo={subscription.metadata?.rateLimit}
onIsManagingMetadataChange={(value) => setIsManagingMetadata(value)}
onIsEditingMetadataChange={(value) => setIsManagingMetadata(value)}
/>
</Styles.Content>

Expand Down
Loading

0 comments on commit f5f0a0e

Please sign in to comment.