@orchestrator-ui/orchestrator-ui-components
Version:
Library of UI Components used to display the workflow orchestrator frontend
60 lines (54 loc) • 1.71 kB
text/typescript
import { SubscriptionListResponse } from '@/rtk/endpoints/subscriptionList';
import { Subscription } from '@/types';
import { parseDate } from '@/utils';
export type SubscriptionListItem = Pick<
Subscription,
'subscriptionId' | 'description' | 'status' | 'insync' | 'note'
> & {
startDate: Date | null;
endDate: Date | null;
productName: string;
tag: string | null;
customerFullname: string;
customerShortcode: string;
metadata: object | null;
};
export const mapGraphQlSubscriptionsResultToPageInfo = (
graphqlResponse: SubscriptionListResponse,
) => graphqlResponse.pageInfo;
export const mapGraphQlSubscriptionsResultToSubscriptionListItems = (
graphqlResponse: SubscriptionListResponse | undefined,
): SubscriptionListItem[] => {
if (!graphqlResponse) return [];
return graphqlResponse.subscriptions.map((subscription) => {
const {
description,
insync,
product,
startDate,
endDate,
status,
subscriptionId,
note,
customer,
metadata,
} = subscription;
const { name: productName, tag } = product;
const { fullname: customerFullname, shortcode: customerShortcode } =
customer;
return {
subscriptionId,
description,
status,
insync,
startDate: parseDate(startDate),
endDate: parseDate(endDate),
note,
productName,
tag,
customerFullname,
customerShortcode,
metadata: Object.keys(metadata).length > 0 ? metadata : null,
};
});
};