@webiny/webhooks 6.4.0-beta.3 → 6.4.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/WebhookRoutes.js +13 -2
- package/admin/WebhookRoutes.js.map +1 -1
- package/admin/Webhooks.js +0 -3
- package/admin/Webhooks.js.map +1 -1
- package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.js +1 -0
- package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.js.map +1 -1
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js +1 -1
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js.map +1 -1
- package/admin/features/listWebhookDeliveries/abstractions.d.ts +6 -1
- package/admin/features/listWebhookDeliveries/abstractions.js.map +1 -1
- package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.js +1 -0
- package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.js.map +1 -1
- package/admin/features/updateWebhookSettings/abstractions.d.ts +1 -0
- package/admin/features/updateWebhookSettings/abstractions.js.map +1 -1
- package/admin/presentation/{WebhookDeliveries → WebhookDeliveriesPage}/WebhookDeliveriesDataSource.d.ts +1 -2
- package/admin/presentation/{WebhookDeliveries → WebhookDeliveriesPage}/WebhookDeliveriesDataSource.js +5 -7
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesDataSource.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.d.ts +41 -0
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.js +223 -0
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/abstractions.d.ts +42 -0
- package/admin/presentation/WebhookDeliveriesPage/abstractions.js +5 -0
- package/admin/presentation/WebhookDeliveriesPage/abstractions.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.d.ts +11 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js +36 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.d.ts +9 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js +43 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.d.ts +7 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js +76 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.d.ts +9 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js +85 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.d.ts +9 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js +61 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.d.ts +2 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js +16 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.d.ts +2 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js +73 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.d.ts +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.js +13 -0
- package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/feature.d.ts +3 -0
- package/admin/presentation/WebhookDeliveriesPage/feature.js +17 -0
- package/admin/presentation/WebhookDeliveriesPage/feature.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/index.d.ts +5 -0
- package/admin/presentation/WebhookDeliveriesPage/index.js +1 -0
- package/admin/presentation/WebhookForm/WebhookFormPresenter.d.ts +6 -6
- package/admin/presentation/WebhookForm/WebhookFormPresenter.js +83 -72
- package/admin/presentation/WebhookForm/WebhookFormPresenter.js.map +1 -1
- package/admin/presentation/WebhookForm/abstractions.d.ts +2 -9
- package/admin/presentation/WebhookForm/abstractions.js.map +1 -1
- package/admin/presentation/WebhookForm/components/SigningSecret.d.ts +5 -2
- package/admin/presentation/WebhookForm/components/SigningSecret.js +7 -3
- package/admin/presentation/WebhookForm/components/SigningSecret.js.map +1 -1
- package/admin/presentation/WebhookForm/components/WebhookFormView.js +49 -35
- package/admin/presentation/WebhookForm/components/WebhookFormView.js.map +1 -1
- package/admin/presentation/WebhookList/WebhookListPresenter.d.ts +26 -2
- package/admin/presentation/WebhookList/WebhookListPresenter.js +36 -34
- package/admin/presentation/WebhookList/WebhookListPresenter.js.map +1 -1
- package/admin/presentation/WebhookList/abstractions.d.ts +25 -7
- package/admin/presentation/WebhookList/abstractions.js.map +1 -1
- package/admin/presentation/WebhookList/components/CreateWebhookButton.d.ts +2 -0
- package/admin/presentation/WebhookList/components/CreateWebhookButton.js +22 -0
- package/admin/presentation/WebhookList/components/CreateWebhookButton.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.d.ts +2 -0
- package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.js +16 -0
- package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookListContent.d.ts +9 -0
- package/admin/presentation/WebhookList/components/WebhookListContent.js +170 -0
- package/admin/presentation/WebhookList/components/WebhookListContent.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookListView.js +10 -140
- package/admin/presentation/WebhookList/components/WebhookListView.js.map +1 -1
- package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.js +14 -6
- package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.js.map +1 -1
- package/admin/routes.d.ts +4 -1
- package/admin/routes.js +11 -4
- package/admin/routes.js.map +1 -1
- package/admin/shared/types.d.ts +1 -0
- package/api/domain/WebhookDelivery.d.ts +0 -1
- package/api/domain/WebhookSettings.d.ts +1 -0
- package/api/domain/constants.d.ts +1 -1
- package/api/domain/constants.js +2 -2
- package/api/domain/constants.js.map +1 -1
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.d.ts +1 -1
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js +3 -1
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js.map +1 -1
- package/api/features/CreateWebhookDelivery/abstractions.d.ts +1 -1
- package/api/features/CreateWebhookDelivery/abstractions.js.map +1 -1
- package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.js +4 -2
- package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.js.map +1 -1
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +3 -1
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js +9 -4
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -1
- package/api/features/SendWebhookTask/SendWebhookTask.d.ts +1 -1
- package/api/features/SendWebhookTask/SendWebhookTask.js +1 -1
- package/api/features/SendWebhookTask/SendWebhookTask.js.map +1 -1
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.d.ts +3 -1
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.js +9 -4
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.js.map +1 -1
- package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js +4 -2
- package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js.map +1 -1
- package/api/features/UpdateWebhookSettings/abstractions.d.ts +1 -0
- package/api/features/UpdateWebhookSettings/abstractions.js.map +1 -1
- package/api/features/UpdateWebhookSettings/schema.d.ts +1 -0
- package/api/features/UpdateWebhookSettings/schema.js +3 -1
- package/api/features/UpdateWebhookSettings/schema.js.map +1 -1
- package/api/features/WebhookDispatcher/WebhookDispatcher.d.ts +3 -1
- package/api/features/WebhookDispatcher/WebhookDispatcher.js +9 -4
- package/api/features/WebhookDispatcher/WebhookDispatcher.js.map +1 -1
- package/api/graphql/WebhookDeliverySchema.js +12 -8
- package/api/graphql/WebhookDeliverySchema.js.map +1 -1
- package/api/graphql/WebhookEventSchema.js +1 -0
- package/api/graphql/WebhookEventSchema.js.map +1 -1
- package/api/graphql/WebhookSettingsSchema.js +2 -0
- package/api/graphql/WebhookSettingsSchema.js.map +1 -1
- package/api/models/WebhookSettingsModel.js +3 -2
- package/api/models/WebhookSettingsModel.js.map +1 -1
- package/package.json +24 -22
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.d.ts +0 -19
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js +0 -77
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/abstractions.d.ts +0 -22
- package/admin/presentation/WebhookDeliveries/abstractions.js +0 -5
- package/admin/presentation/WebhookDeliveries/abstractions.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.d.ts +0 -11
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js +0 -73
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.d.ts +0 -8
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js +0 -119
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/feature.d.ts +0 -3
- package/admin/presentation/WebhookDeliveries/feature.js +0 -17
- package/admin/presentation/WebhookDeliveries/feature.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/index.d.ts +0 -2
- package/admin/presentation/WebhookDeliveries/index.js +0 -2
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { WebhookDelivery } from "../../../admin/shared/types.js";
|
|
2
|
+
import type { IListViewModel } from "@webiny/app-admin/presentation/listPresenter/abstractions.js";
|
|
3
|
+
export interface IDeliveryPageFilters {
|
|
4
|
+
webhookId: string | null;
|
|
5
|
+
app: string | null;
|
|
6
|
+
entity: string | null;
|
|
7
|
+
eventName: string | null;
|
|
8
|
+
status: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface IDeliveryFilterOption {
|
|
11
|
+
value: string;
|
|
12
|
+
label: string;
|
|
13
|
+
}
|
|
14
|
+
export interface IWebhookDeliveriesPageViewModel {
|
|
15
|
+
availableWebhooks: IDeliveryFilterOption[];
|
|
16
|
+
availableApps: IDeliveryFilterOption[];
|
|
17
|
+
availableEntities: IDeliveryFilterOption[];
|
|
18
|
+
availableEventNames: IDeliveryFilterOption[];
|
|
19
|
+
filters: IDeliveryPageFilters;
|
|
20
|
+
list: IListViewModel<WebhookDelivery>;
|
|
21
|
+
resendingIds: Set<string>;
|
|
22
|
+
hasFilters: boolean;
|
|
23
|
+
loading: boolean;
|
|
24
|
+
error: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface IWebhookDeliveriesPagePresenter {
|
|
27
|
+
vm: IWebhookDeliveriesPageViewModel;
|
|
28
|
+
init(webhookId?: string): Promise<void>;
|
|
29
|
+
setWebhookFilter(webhookId: string | null): void;
|
|
30
|
+
setAppFilter(app: string | null): void;
|
|
31
|
+
setEntityFilter(entity: string | null): void;
|
|
32
|
+
setEventFilter(eventName: string | null): void;
|
|
33
|
+
setStatusFilter(status: string[]): void;
|
|
34
|
+
clearFilters(): void;
|
|
35
|
+
loadMore(): Promise<void>;
|
|
36
|
+
resend(id: string): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export declare const WebhookDeliveriesPagePresenter: import("@webiny/di").Abstraction<IWebhookDeliveriesPagePresenter>;
|
|
39
|
+
export declare namespace WebhookDeliveriesPagePresenter {
|
|
40
|
+
type Interface = IWebhookDeliveriesPagePresenter;
|
|
41
|
+
type ViewModel = IWebhookDeliveriesPageViewModel;
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/abstractions.js","sources":["../../../../src/admin/presentation/WebhookDeliveriesPage/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\nimport type { IListViewModel } from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\n\nexport interface IDeliveryPageFilters {\n webhookId: string | null;\n app: string | null;\n entity: string | null;\n eventName: string | null;\n status: string[];\n}\n\nexport interface IDeliveryFilterOption {\n value: string;\n label: string;\n}\n\nexport interface IWebhookDeliveriesPageViewModel {\n availableWebhooks: IDeliveryFilterOption[];\n availableApps: IDeliveryFilterOption[];\n availableEntities: IDeliveryFilterOption[];\n availableEventNames: IDeliveryFilterOption[];\n filters: IDeliveryPageFilters;\n list: IListViewModel<WebhookDelivery>;\n resendingIds: Set<string>;\n hasFilters: boolean;\n loading: boolean;\n error: string | null;\n}\n\nexport interface IWebhookDeliveriesPagePresenter {\n vm: IWebhookDeliveriesPageViewModel;\n init(webhookId?: string): Promise<void>;\n setWebhookFilter(webhookId: string | null): void;\n setAppFilter(app: string | null): void;\n setEntityFilter(entity: string | null): void;\n setEventFilter(eventName: string | null): void;\n setStatusFilter(status: string[]): void;\n clearFilters(): void;\n loadMore(): Promise<void>;\n resend(id: string): Promise<void>;\n}\n\nexport const WebhookDeliveriesPagePresenter = createAbstraction<IWebhookDeliveriesPagePresenter>(\n \"WebhookDeliveriesPagePresenter\"\n);\n\nexport namespace WebhookDeliveriesPagePresenter {\n export type Interface = IWebhookDeliveriesPagePresenter;\n export type ViewModel = IWebhookDeliveriesPageViewModel;\n}\n"],"names":["WebhookDeliveriesPagePresenter","createAbstraction"],"mappings":";AA2CO,MAAMA,iCAAiCC,kBAC1C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { WebhookDelivery } from "../../../../admin/shared/types.js";
|
|
3
|
+
interface DeliveryAccordionRowProps {
|
|
4
|
+
delivery: WebhookDelivery;
|
|
5
|
+
open: boolean;
|
|
6
|
+
resending: boolean;
|
|
7
|
+
onOpenChange: (open: boolean) => void;
|
|
8
|
+
onResend: (id: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const DeliveryAccordionRow: ({ delivery, open, resending, onOpenChange, onResend }: DeliveryAccordionRowProps) => React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Accordion, Tag, Text, TimeAgo } from "@webiny/admin-ui";
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/replay.svg";
|
|
4
|
+
import { DeliveryDetailContent } from "./DeliveryDetailContent.js";
|
|
5
|
+
import { statusVariant } from "./statusVariant.js";
|
|
6
|
+
const DeliveryAccordionRow = ({ delivery, open, resending, onOpenChange, onResend })=>/*#__PURE__*/ react.createElement(Accordion.Item, {
|
|
7
|
+
open: open,
|
|
8
|
+
onOpenChange: onOpenChange,
|
|
9
|
+
title: delivery.eventType,
|
|
10
|
+
description: /*#__PURE__*/ react.createElement("div", {
|
|
11
|
+
className: "flex items-center gap-sm"
|
|
12
|
+
}, /*#__PURE__*/ react.createElement(Tag, {
|
|
13
|
+
variant: statusVariant(delivery.status),
|
|
14
|
+
content: delivery.status
|
|
15
|
+
}), null !== delivery.responseStatus ? /*#__PURE__*/ react.createElement(Text, {
|
|
16
|
+
size: "sm"
|
|
17
|
+
}, "HTTP ", delivery.responseStatus) : null, delivery.responseTime ? /*#__PURE__*/ react.createElement(Text, {
|
|
18
|
+
size: "sm"
|
|
19
|
+
}, delivery.responseTime, "ms") : null, /*#__PURE__*/ react.createElement(Text, {
|
|
20
|
+
size: "sm",
|
|
21
|
+
className: "text-neutral-strong"
|
|
22
|
+
}, /*#__PURE__*/ react.createElement(TimeAgo, {
|
|
23
|
+
datetime: delivery.createdOn
|
|
24
|
+
}))),
|
|
25
|
+
actions: /*#__PURE__*/ react.createElement(Accordion.Item.Action, {
|
|
26
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
27
|
+
onClick: ()=>onResend(delivery.id),
|
|
28
|
+
"aria-label": "Resend delivery",
|
|
29
|
+
disabled: resending
|
|
30
|
+
})
|
|
31
|
+
}, /*#__PURE__*/ react.createElement(DeliveryDetailContent, {
|
|
32
|
+
delivery: delivery
|
|
33
|
+
}));
|
|
34
|
+
export { DeliveryAccordionRow };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=DeliveryAccordionRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Accordion, Tag, Text, TimeAgo } from \"@webiny/admin-ui\";\nimport { ReactComponent as ReplayIcon } from \"@webiny/icons/replay.svg\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\nimport { DeliveryDetailContent } from \"./DeliveryDetailContent.js\";\nimport { statusVariant } from \"./statusVariant.js\";\n\ninterface DeliveryAccordionRowProps {\n delivery: WebhookDelivery;\n open: boolean;\n resending: boolean;\n onOpenChange: (open: boolean) => void;\n onResend: (id: string) => void;\n}\n\nexport const DeliveryAccordionRow = ({\n delivery,\n open,\n resending,\n onOpenChange,\n onResend\n}: DeliveryAccordionRowProps) => {\n return (\n <Accordion.Item\n open={open}\n onOpenChange={onOpenChange}\n title={delivery.eventType}\n description={\n <div className=\"flex items-center gap-sm\">\n <Tag variant={statusVariant(delivery.status)} content={delivery.status} />\n {delivery.responseStatus !== null ? (\n <Text size=\"sm\">HTTP {delivery.responseStatus}</Text>\n ) : null}\n {delivery.responseTime ? (\n <Text size=\"sm\">{delivery.responseTime}ms</Text>\n ) : null}\n <Text size=\"sm\" className=\"text-neutral-strong\">\n <TimeAgo datetime={delivery.createdOn} />\n </Text>\n </div>\n }\n actions={\n <Accordion.Item.Action\n icon={<ReplayIcon />}\n onClick={() => onResend(delivery.id)}\n aria-label=\"Resend delivery\"\n disabled={resending}\n />\n }\n >\n <DeliveryDetailContent delivery={delivery} />\n </Accordion.Item>\n );\n};\n"],"names":["DeliveryAccordionRow","delivery","open","resending","onOpenChange","onResend","Accordion","Tag","statusVariant","Text","TimeAgo","ReplayIcon","DeliveryDetailContent"],"mappings":";;;;;AAeO,MAAMA,uBAAuB,CAAC,EACjCC,QAAQ,EACRC,IAAI,EACJC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACgB,GACjB,WAAP,GACI,oBAACC,UAAU,IAAI;QACX,MAAMJ;QACN,cAAcE;QACd,OAAOH,SAAS,SAAS;QACzB,2BACI,oBAAC;YAAI,WAAU;yBACX,oBAACM,KAAGA;YAAC,SAASC,cAAcP,SAAS,MAAM;YAAG,SAASA,SAAS,MAAM;YACrEA,AAA4B,SAA5BA,SAAS,cAAc,GAAY,WAAP,GACzB,oBAACQ,MAAIA;YAAC,MAAK;WAAK,SAAMR,SAAS,cAAc,IAC7C,MACHA,SAAS,YAAY,GAAG,WAAH,GAClB,oBAACQ,MAAIA;YAAC,MAAK;WAAMR,SAAS,YAAY,EAAC,QACvC,oBACJ,oBAACQ,MAAIA;YAAC,MAAK;YAAK,WAAU;yBACtB,oBAACC,SAAOA;YAAC,UAAUT,SAAS,SAAS;;QAIjD,uBACI,oBAACK,UAAU,IAAI,CAAC,MAAM;YAClB,oBAAM,oBAACK,gBAAUA;YACjB,SAAS,IAAMN,SAASJ,SAAS,EAAE;YACnC,cAAW;YACX,UAAUE;;qBAIlB,oBAACS,uBAAqBA;QAAC,UAAUX"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { IWebhookDeliveriesPagePresenter } from "../abstractions.js";
|
|
3
|
+
interface DeliveryBottomInfoBarProps {
|
|
4
|
+
presenter: IWebhookDeliveriesPagePresenter;
|
|
5
|
+
}
|
|
6
|
+
export declare const DeliveryBottomInfoBar: (({ presenter }: DeliveryBottomInfoBarProps) => React.JSX.Element | null) & {
|
|
7
|
+
displayName: string;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { Loader, Separator, Text } from "@webiny/admin-ui";
|
|
4
|
+
const DeliveryBottomInfoBar_DeliveryBottomInfoBar = observer(function({ presenter }) {
|
|
5
|
+
const { vm } = presenter;
|
|
6
|
+
const { pagination } = vm.list;
|
|
7
|
+
if (pagination.loading && 0 === vm.list.rows.length) return null;
|
|
8
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
9
|
+
className: "sticky bottom-0 z-5 bg-neutral-base w-full transform translate-z-0 overflow-hidden"
|
|
10
|
+
}, /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
11
|
+
className: "h-xl px-md py-sm flex items-center justify-between"
|
|
12
|
+
}, /*#__PURE__*/ react.createElement(DeliveryMeta, {
|
|
13
|
+
loading: pagination.loading,
|
|
14
|
+
currentCount: pagination.currentCount,
|
|
15
|
+
totalCount: pagination.totalCount
|
|
16
|
+
}), /*#__PURE__*/ react.createElement(DeliveryLoadingStatus, {
|
|
17
|
+
loading: pagination.loadingMore
|
|
18
|
+
})));
|
|
19
|
+
});
|
|
20
|
+
const DeliveryMeta = ({ loading, currentCount, totalCount })=>{
|
|
21
|
+
if (loading) return null;
|
|
22
|
+
const label = 1 === totalCount ? "delivery" : "deliveries";
|
|
23
|
+
return /*#__PURE__*/ react.createElement(Text, {
|
|
24
|
+
size: "sm",
|
|
25
|
+
as: "div",
|
|
26
|
+
className: "text-neutral-strong"
|
|
27
|
+
}, `Showing ${currentCount} out of ${totalCount} ${label}.`);
|
|
28
|
+
};
|
|
29
|
+
const DeliveryLoadingStatus = ({ loading })=>{
|
|
30
|
+
if (!loading) return null;
|
|
31
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
32
|
+
className: "flex items-center gap-sm"
|
|
33
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
34
|
+
size: "sm",
|
|
35
|
+
as: "div",
|
|
36
|
+
className: "text-neutral-strong"
|
|
37
|
+
}, "Loading more deliveries..."), /*#__PURE__*/ react.createElement(Loader, {
|
|
38
|
+
size: "xs"
|
|
39
|
+
}));
|
|
40
|
+
};
|
|
41
|
+
export { DeliveryBottomInfoBar_DeliveryBottomInfoBar as DeliveryBottomInfoBar };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=DeliveryBottomInfoBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Loader, Separator, Text } from \"@webiny/admin-ui\";\nimport type { IWebhookDeliveriesPagePresenter } from \"../abstractions.js\";\n\ninterface DeliveryBottomInfoBarProps {\n presenter: IWebhookDeliveriesPagePresenter;\n}\n\nexport const DeliveryBottomInfoBar = observer(function DeliveryBottomInfoBar({\n presenter\n}: DeliveryBottomInfoBarProps) {\n const { vm } = presenter;\n const { pagination } = vm.list;\n\n if (pagination.loading && vm.list.rows.length === 0) {\n return null;\n }\n\n return (\n <div className=\"sticky bottom-0 z-5 bg-neutral-base w-full transform translate-z-0 overflow-hidden\">\n <Separator />\n <div className=\"h-xl px-md py-sm flex items-center justify-between\">\n <DeliveryMeta\n loading={pagination.loading}\n currentCount={pagination.currentCount}\n totalCount={pagination.totalCount}\n />\n <DeliveryLoadingStatus loading={pagination.loadingMore} />\n </div>\n </div>\n );\n});\n\ninterface DeliveryMetaProps {\n loading: boolean;\n currentCount: number;\n totalCount: number;\n}\n\nconst DeliveryMeta = ({ loading, currentCount, totalCount }: DeliveryMetaProps) => {\n if (loading) {\n return null;\n }\n\n const label = totalCount === 1 ? \"delivery\" : \"deliveries\";\n\n return (\n <Text size=\"sm\" as=\"div\" className=\"text-neutral-strong\">\n {`Showing ${currentCount} out of ${totalCount} ${label}.`}\n </Text>\n );\n};\n\ninterface DeliveryLoadingStatusProps {\n loading: boolean;\n}\n\nconst DeliveryLoadingStatus = ({ loading }: DeliveryLoadingStatusProps) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div className=\"flex items-center gap-sm\">\n <Text size=\"sm\" as=\"div\" className=\"text-neutral-strong\">\n Loading more deliveries...\n </Text>\n <Loader size=\"xs\" />\n </div>\n );\n};\n"],"names":["DeliveryBottomInfoBar","observer","presenter","vm","pagination","Separator","DeliveryMeta","DeliveryLoadingStatus","loading","currentCount","totalCount","label","Text","Loader"],"mappings":";;;AASO,MAAMA,8CAAwBC,SAAS,SAA+B,EACzEC,SAAS,EACgB;IACzB,MAAM,EAAEC,EAAE,EAAE,GAAGD;IACf,MAAM,EAAEE,UAAU,EAAE,GAAGD,GAAG,IAAI;IAE9B,IAAIC,WAAW,OAAO,IAAID,AAAwB,MAAxBA,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EACzC,OAAO;IAGX,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACE,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;qBACX,oBAACC,cAAYA;QACT,SAASF,WAAW,OAAO;QAC3B,cAAcA,WAAW,YAAY;QACrC,YAAYA,WAAW,UAAU;sBAErC,oBAACG,uBAAqBA;QAAC,SAASH,WAAW,WAAW;;AAItE;AAQA,MAAME,eAAe,CAAC,EAAEE,OAAO,EAAEC,YAAY,EAAEC,UAAU,EAAqB;IAC1E,IAAIF,SACA,OAAO;IAGX,MAAMG,QAAQD,AAAe,MAAfA,aAAmB,aAAa;IAE9C,OAAO,WAAP,GACI,oBAACE,MAAIA;QAAC,MAAK;QAAK,IAAG;QAAM,WAAU;OAC9B,CAAC,QAAQ,EAAEH,aAAa,QAAQ,EAAEC,WAAW,CAAC,EAAEC,MAAM,CAAC,CAAC;AAGrE;AAMA,MAAMJ,wBAAwB,CAAC,EAAEC,OAAO,EAA8B;IAClE,IAAI,CAACA,SACD,OAAO;IAGX,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACI,MAAIA;QAAC,MAAK;QAAK,IAAG;QAAM,WAAU;OAAsB,6CAGzD,oBAACC,QAAMA;QAAC,MAAK;;AAGzB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { WebhookDelivery } from "../../../../admin/shared/types.js";
|
|
3
|
+
interface DeliveryDetailContentProps {
|
|
4
|
+
delivery: WebhookDelivery;
|
|
5
|
+
}
|
|
6
|
+
export declare const DeliveryDetailContent: ({ delivery }: DeliveryDetailContentProps) => React.JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Separator, Tabs } from "@webiny/admin-ui";
|
|
3
|
+
const formatJson = (value)=>{
|
|
4
|
+
if (null == value) return "—";
|
|
5
|
+
if ("string" == typeof value) try {
|
|
6
|
+
return JSON.stringify(JSON.parse(value), null, 2);
|
|
7
|
+
} catch {
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
return JSON.stringify(value, null, 2);
|
|
11
|
+
};
|
|
12
|
+
const getContentType = (responseHeaders)=>{
|
|
13
|
+
if (!responseHeaders || "object" != typeof responseHeaders) return null;
|
|
14
|
+
const headers = responseHeaders;
|
|
15
|
+
const key = Object.keys(headers).find((k)=>"content-type" === k.toLowerCase());
|
|
16
|
+
if (!key) return null;
|
|
17
|
+
return headers[key].split(";")[0].trim().toLowerCase();
|
|
18
|
+
};
|
|
19
|
+
const getContentTypeLabel = (contentType)=>{
|
|
20
|
+
if (!contentType) return null;
|
|
21
|
+
if (contentType.includes("json")) return "JSON";
|
|
22
|
+
if (contentType.includes("html")) return "HTML";
|
|
23
|
+
if (contentType.includes("xml")) return "XML";
|
|
24
|
+
if (contentType.includes("plain")) return "TEXT";
|
|
25
|
+
return null;
|
|
26
|
+
};
|
|
27
|
+
const renderResponseBody = (body, contentType)=>{
|
|
28
|
+
if (null === body) return "—";
|
|
29
|
+
if (!contentType || contentType.includes("json")) return formatJson(body);
|
|
30
|
+
return body;
|
|
31
|
+
};
|
|
32
|
+
const DeliveryDetailContent = ({ delivery })=>{
|
|
33
|
+
const contentType = getContentType(delivery.responseHeaders);
|
|
34
|
+
const contentTypeLabel = getContentTypeLabel(contentType);
|
|
35
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
36
|
+
className: "flex flex-col gap-md"
|
|
37
|
+
}, /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement(Tabs, {
|
|
38
|
+
tabs: [
|
|
39
|
+
/*#__PURE__*/ react.createElement(Tabs.Tab, {
|
|
40
|
+
key: "payload",
|
|
41
|
+
value: "payload",
|
|
42
|
+
trigger: "Payload",
|
|
43
|
+
content: /*#__PURE__*/ react.createElement("pre", {
|
|
44
|
+
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[250px]"
|
|
45
|
+
}, formatJson(delivery.payload))
|
|
46
|
+
}),
|
|
47
|
+
/*#__PURE__*/ react.createElement(Tabs.Tab, {
|
|
48
|
+
key: "req-headers",
|
|
49
|
+
value: "req-headers",
|
|
50
|
+
trigger: "Request Headers",
|
|
51
|
+
content: /*#__PURE__*/ react.createElement("pre", {
|
|
52
|
+
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]"
|
|
53
|
+
}, formatJson(delivery.requestHeaders))
|
|
54
|
+
}),
|
|
55
|
+
/*#__PURE__*/ react.createElement(Tabs.Tab, {
|
|
56
|
+
key: "resp-headers",
|
|
57
|
+
value: "resp-headers",
|
|
58
|
+
trigger: "Response Headers",
|
|
59
|
+
content: /*#__PURE__*/ react.createElement("pre", {
|
|
60
|
+
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]"
|
|
61
|
+
}, formatJson(delivery.responseHeaders))
|
|
62
|
+
}),
|
|
63
|
+
/*#__PURE__*/ react.createElement(Tabs.Tab, {
|
|
64
|
+
key: "resp-body",
|
|
65
|
+
value: "resp-body",
|
|
66
|
+
trigger: contentTypeLabel ? `Response Body (${contentTypeLabel})` : "Response Body",
|
|
67
|
+
content: /*#__PURE__*/ react.createElement("pre", {
|
|
68
|
+
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]"
|
|
69
|
+
}, renderResponseBody(delivery.responseBody, contentType))
|
|
70
|
+
})
|
|
71
|
+
]
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
74
|
+
export { DeliveryDetailContent };
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=DeliveryDetailContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.tsx"],"sourcesContent":["import React from \"react\";\nimport { Separator, Tabs } from \"@webiny/admin-ui\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\n\ninterface DeliveryDetailContentProps {\n delivery: WebhookDelivery;\n}\n\nconst formatJson = (value: unknown): string => {\n if (value === null || value === undefined) {\n return \"—\";\n }\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n return JSON.stringify(value, null, 2);\n};\n\nconst getContentType = (responseHeaders: unknown): string | null => {\n if (!responseHeaders || typeof responseHeaders !== \"object\") {\n return null;\n }\n const headers = responseHeaders as Record<string, string>;\n const key = Object.keys(headers).find(k => k.toLowerCase() === \"content-type\");\n if (!key) {\n return null;\n }\n return headers[key].split(\";\")[0].trim().toLowerCase();\n};\n\nconst getContentTypeLabel = (contentType: string | null): string | null => {\n if (!contentType) {\n return null;\n }\n if (contentType.includes(\"json\")) {\n return \"JSON\";\n }\n if (contentType.includes(\"html\")) {\n return \"HTML\";\n }\n if (contentType.includes(\"xml\")) {\n return \"XML\";\n }\n if (contentType.includes(\"plain\")) {\n return \"TEXT\";\n }\n return null;\n};\n\nconst renderResponseBody = (body: string | null, contentType: string | null): string => {\n if (body === null) {\n return \"—\";\n }\n if (!contentType || contentType.includes(\"json\")) {\n return formatJson(body);\n }\n return body;\n};\n\nexport const DeliveryDetailContent = ({ delivery }: DeliveryDetailContentProps) => {\n const contentType = getContentType(delivery.responseHeaders);\n const contentTypeLabel = getContentTypeLabel(contentType);\n\n return (\n <div className=\"flex flex-col gap-md\">\n <Separator />\n <Tabs\n tabs={[\n <Tabs.Tab\n key=\"payload\"\n value=\"payload\"\n trigger=\"Payload\"\n content={\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[250px]\">\n {formatJson(delivery.payload)}\n </pre>\n }\n />,\n <Tabs.Tab\n key=\"req-headers\"\n value=\"req-headers\"\n trigger=\"Request Headers\"\n content={\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]\">\n {formatJson(delivery.requestHeaders)}\n </pre>\n }\n />,\n <Tabs.Tab\n key=\"resp-headers\"\n value=\"resp-headers\"\n trigger=\"Response Headers\"\n content={\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]\">\n {formatJson(delivery.responseHeaders)}\n </pre>\n }\n />,\n <Tabs.Tab\n key=\"resp-body\"\n value=\"resp-body\"\n trigger={\n contentTypeLabel\n ? `Response Body (${contentTypeLabel})`\n : \"Response Body\"\n }\n content={\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]\">\n {renderResponseBody(delivery.responseBody, contentType)}\n </pre>\n }\n />\n ]}\n />\n </div>\n );\n};\n"],"names":["formatJson","value","JSON","getContentType","responseHeaders","headers","key","Object","k","getContentTypeLabel","contentType","renderResponseBody","body","DeliveryDetailContent","delivery","contentTypeLabel","Separator","Tabs"],"mappings":";;AAQA,MAAMA,aAAa,CAACC;IAChB,IAAIA,QAAAA,OACA,OAAO;IAEX,IAAI,AAAiB,YAAjB,OAAOA,OACP,IAAI;QACA,OAAOC,KAAK,SAAS,CAACA,KAAK,KAAK,CAACD,QAAQ,MAAM;IACnD,EAAE,OAAM;QACJ,OAAOA;IACX;IAEJ,OAAOC,KAAK,SAAS,CAACD,OAAO,MAAM;AACvC;AAEA,MAAME,iBAAiB,CAACC;IACpB,IAAI,CAACA,mBAAmB,AAA2B,YAA3B,OAAOA,iBAC3B,OAAO;IAEX,MAAMC,UAAUD;IAChB,MAAME,MAAMC,OAAO,IAAI,CAACF,SAAS,IAAI,CAACG,CAAAA,IAAKA,AAAoB,mBAApBA,EAAE,WAAW;IACxD,IAAI,CAACF,KACD,OAAO;IAEX,OAAOD,OAAO,CAACC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,WAAW;AACxD;AAEA,MAAMG,sBAAsB,CAACC;IACzB,IAAI,CAACA,aACD,OAAO;IAEX,IAAIA,YAAY,QAAQ,CAAC,SACrB,OAAO;IAEX,IAAIA,YAAY,QAAQ,CAAC,SACrB,OAAO;IAEX,IAAIA,YAAY,QAAQ,CAAC,QACrB,OAAO;IAEX,IAAIA,YAAY,QAAQ,CAAC,UACrB,OAAO;IAEX,OAAO;AACX;AAEA,MAAMC,qBAAqB,CAACC,MAAqBF;IAC7C,IAAIE,AAAS,SAATA,MACA,OAAO;IAEX,IAAI,CAACF,eAAeA,YAAY,QAAQ,CAAC,SACrC,OAAOV,WAAWY;IAEtB,OAAOA;AACX;AAEO,MAAMC,wBAAwB,CAAC,EAAEC,QAAQ,EAA8B;IAC1E,MAAMJ,cAAcP,eAAeW,SAAS,eAAe;IAC3D,MAAMC,mBAAmBN,oBAAoBC;IAE7C,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACM,WAASA,OAAAA,WAAAA,GACV,oBAACC,MAAIA;QACD,MAAM;0BACF,oBAACA,KAAK,GAAG;gBACL,KAAI;gBACJ,OAAM;gBACN,SAAQ;gBACR,uBACI,oBAAC;oBAAI,WAAU;mBACVjB,WAAWc,SAAS,OAAO;;0BAIxC,oBAACG,KAAK,GAAG;gBACL,KAAI;gBACJ,OAAM;gBACN,SAAQ;gBACR,uBACI,oBAAC;oBAAI,WAAU;mBACVjB,WAAWc,SAAS,cAAc;;0BAI/C,oBAACG,KAAK,GAAG;gBACL,KAAI;gBACJ,OAAM;gBACN,SAAQ;gBACR,uBACI,oBAAC;oBAAI,WAAU;mBACVjB,WAAWc,SAAS,eAAe;;0BAIhD,oBAACG,KAAK,GAAG;gBACL,KAAI;gBACJ,OAAM;gBACN,SACIF,mBACM,CAAC,eAAe,EAAEA,iBAAiB,CAAC,CAAC,GACrC;gBAEV,uBACI,oBAAC;oBAAI,WAAU;mBACVJ,mBAAmBG,SAAS,YAAY,EAAEJ;;SAI1D;;AAIjB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { IWebhookDeliveriesPagePresenter } from "../abstractions.js";
|
|
3
|
+
interface DeliveryFiltersProps {
|
|
4
|
+
presenter: IWebhookDeliveriesPagePresenter;
|
|
5
|
+
}
|
|
6
|
+
export declare const DeliveryFilters: (({ presenter }: DeliveryFiltersProps) => React.JSX.Element) & {
|
|
7
|
+
displayName: string;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { Button, Grid, MultiSelect, Select } from "@webiny/admin-ui";
|
|
4
|
+
const STATUS_OPTIONS = [
|
|
5
|
+
{
|
|
6
|
+
value: "pending",
|
|
7
|
+
label: "Pending"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
value: "delivering",
|
|
11
|
+
label: "Delivering"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
value: "delivered",
|
|
15
|
+
label: "Delivered"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
value: "failed",
|
|
19
|
+
label: "Failed"
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
const DeliveryFilters = observer(({ presenter })=>{
|
|
23
|
+
const { vm } = presenter;
|
|
24
|
+
return /*#__PURE__*/ react.createElement(Grid, null, /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
25
|
+
span: 2
|
|
26
|
+
}, /*#__PURE__*/ react.createElement(Select, {
|
|
27
|
+
size: "md",
|
|
28
|
+
placeholder: "All webhooks",
|
|
29
|
+
value: vm.filters.webhookId ?? "",
|
|
30
|
+
options: vm.availableWebhooks,
|
|
31
|
+
onChange: (value)=>presenter.setWebhookFilter(value || null),
|
|
32
|
+
displayResetAction: true,
|
|
33
|
+
onValueReset: ()=>presenter.setWebhookFilter(null)
|
|
34
|
+
})), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
35
|
+
span: 2
|
|
36
|
+
}, /*#__PURE__*/ react.createElement(Select, {
|
|
37
|
+
size: "md",
|
|
38
|
+
placeholder: "All apps",
|
|
39
|
+
value: vm.filters.app ?? "",
|
|
40
|
+
options: vm.availableApps,
|
|
41
|
+
onChange: (value)=>presenter.setAppFilter(value || null),
|
|
42
|
+
displayResetAction: true,
|
|
43
|
+
onValueReset: ()=>presenter.setAppFilter(null)
|
|
44
|
+
})), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
45
|
+
span: 2
|
|
46
|
+
}, /*#__PURE__*/ react.createElement(Select, {
|
|
47
|
+
size: "md",
|
|
48
|
+
placeholder: "All entities",
|
|
49
|
+
value: vm.filters.entity ?? "",
|
|
50
|
+
options: vm.availableEntities,
|
|
51
|
+
onChange: (value)=>presenter.setEntityFilter(value || null),
|
|
52
|
+
disabled: !vm.filters.app,
|
|
53
|
+
displayResetAction: true,
|
|
54
|
+
onValueReset: ()=>presenter.setEntityFilter(null)
|
|
55
|
+
})), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
56
|
+
span: 2
|
|
57
|
+
}, /*#__PURE__*/ react.createElement(Select, {
|
|
58
|
+
size: "md",
|
|
59
|
+
placeholder: "All events",
|
|
60
|
+
value: vm.filters.eventName ?? "",
|
|
61
|
+
options: vm.availableEventNames,
|
|
62
|
+
onChange: (value)=>presenter.setEventFilter(value || null),
|
|
63
|
+
disabled: !vm.filters.app,
|
|
64
|
+
displayResetAction: true,
|
|
65
|
+
onValueReset: ()=>presenter.setEventFilter(null)
|
|
66
|
+
})), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
67
|
+
span: 2
|
|
68
|
+
}, /*#__PURE__*/ react.createElement(MultiSelect, {
|
|
69
|
+
size: "md",
|
|
70
|
+
placeholder: "All statuses",
|
|
71
|
+
value: vm.filters.status,
|
|
72
|
+
options: STATUS_OPTIONS,
|
|
73
|
+
onChange: (values)=>presenter.setStatusFilter(values)
|
|
74
|
+
})), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
75
|
+
span: 2
|
|
76
|
+
}, /*#__PURE__*/ react.createElement(Button, {
|
|
77
|
+
variant: "tertiary",
|
|
78
|
+
size: "md",
|
|
79
|
+
onClick: ()=>presenter.clearFilters(),
|
|
80
|
+
disabled: !vm.hasFilters
|
|
81
|
+
}, "Clear filters")));
|
|
82
|
+
});
|
|
83
|
+
export { DeliveryFilters };
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=DeliveryFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Grid, MultiSelect, Select } from \"@webiny/admin-ui\";\nimport type { IWebhookDeliveriesPagePresenter } from \"../abstractions.js\";\nimport { Button } from \"@webiny/admin-ui\";\n\ninterface DeliveryFiltersProps {\n presenter: IWebhookDeliveriesPagePresenter;\n}\n\nconst STATUS_OPTIONS = [\n { value: \"pending\", label: \"Pending\" },\n { value: \"delivering\", label: \"Delivering\" },\n { value: \"delivered\", label: \"Delivered\" },\n { value: \"failed\", label: \"Failed\" }\n];\n\nexport const DeliveryFilters = observer(({ presenter }: DeliveryFiltersProps) => {\n const { vm } = presenter;\n return (\n <Grid>\n <Grid.Column span={2}>\n <Select\n size={\"md\"}\n placeholder=\"All webhooks\"\n value={vm.filters.webhookId ?? \"\"}\n options={vm.availableWebhooks}\n onChange={value => presenter.setWebhookFilter(value || null)}\n displayResetAction={true}\n onValueReset={() => presenter.setWebhookFilter(null)}\n />\n </Grid.Column>\n <Grid.Column span={2}>\n <Select\n size={\"md\"}\n placeholder=\"All apps\"\n value={vm.filters.app ?? \"\"}\n options={vm.availableApps}\n onChange={value => presenter.setAppFilter(value || null)}\n displayResetAction={true}\n onValueReset={() => presenter.setAppFilter(null)}\n />\n </Grid.Column>\n <Grid.Column span={2}>\n <Select\n size={\"md\"}\n placeholder=\"All entities\"\n value={vm.filters.entity ?? \"\"}\n options={vm.availableEntities}\n onChange={value => presenter.setEntityFilter(value || null)}\n disabled={!vm.filters.app}\n displayResetAction={true}\n onValueReset={() => presenter.setEntityFilter(null)}\n />\n </Grid.Column>\n <Grid.Column span={2}>\n <Select\n size={\"md\"}\n placeholder=\"All events\"\n value={vm.filters.eventName ?? \"\"}\n options={vm.availableEventNames}\n onChange={value => presenter.setEventFilter(value || null)}\n disabled={!vm.filters.app}\n displayResetAction={true}\n onValueReset={() => presenter.setEventFilter(null)}\n />\n </Grid.Column>\n <Grid.Column span={2}>\n <MultiSelect\n size={\"md\"}\n placeholder=\"All statuses\"\n value={vm.filters.status}\n options={STATUS_OPTIONS}\n onChange={values => presenter.setStatusFilter(values)}\n />\n </Grid.Column>\n <Grid.Column span={2}>\n <Button\n variant=\"tertiary\"\n size=\"md\"\n onClick={() => presenter.clearFilters()}\n disabled={!vm.hasFilters}\n >\n Clear filters\n </Button>\n </Grid.Column>\n </Grid>\n );\n});\n"],"names":["STATUS_OPTIONS","DeliveryFilters","observer","presenter","vm","Grid","Select","value","MultiSelect","values","Button"],"mappings":";;;AAUA,MAAMA,iBAAiB;IACnB;QAAE,OAAO;QAAW,OAAO;IAAU;IACrC;QAAE,OAAO;QAAc,OAAO;IAAa;IAC3C;QAAE,OAAO;QAAa,OAAO;IAAY;IACzC;QAAE,OAAO;QAAU,OAAO;IAAS;CACtC;AAEM,MAAMC,kBAAkBC,SAAS,CAAC,EAAEC,SAAS,EAAwB;IACxE,MAAM,EAAEC,EAAE,EAAE,GAAGD;IACf,OAAO,WAAP,GACI,oBAACE,MAAIA,MAAAA,WAAAA,GACD,oBAACA,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACC,QAAMA;QACH,MAAM;QACN,aAAY;QACZ,OAAOF,GAAG,OAAO,CAAC,SAAS,IAAI;QAC/B,SAASA,GAAG,iBAAiB;QAC7B,UAAUG,CAAAA,QAASJ,UAAU,gBAAgB,CAACI,SAAS;QACvD,oBAAoB;QACpB,cAAc,IAAMJ,UAAU,gBAAgB,CAAC;uBAGvD,oBAACE,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACC,QAAMA;QACH,MAAM;QACN,aAAY;QACZ,OAAOF,GAAG,OAAO,CAAC,GAAG,IAAI;QACzB,SAASA,GAAG,aAAa;QACzB,UAAUG,CAAAA,QAASJ,UAAU,YAAY,CAACI,SAAS;QACnD,oBAAoB;QACpB,cAAc,IAAMJ,UAAU,YAAY,CAAC;uBAGnD,oBAACE,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACC,QAAMA;QACH,MAAM;QACN,aAAY;QACZ,OAAOF,GAAG,OAAO,CAAC,MAAM,IAAI;QAC5B,SAASA,GAAG,iBAAiB;QAC7B,UAAUG,CAAAA,QAASJ,UAAU,eAAe,CAACI,SAAS;QACtD,UAAU,CAACH,GAAG,OAAO,CAAC,GAAG;QACzB,oBAAoB;QACpB,cAAc,IAAMD,UAAU,eAAe,CAAC;uBAGtD,oBAACE,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACC,QAAMA;QACH,MAAM;QACN,aAAY;QACZ,OAAOF,GAAG,OAAO,CAAC,SAAS,IAAI;QAC/B,SAASA,GAAG,mBAAmB;QAC/B,UAAUG,CAAAA,QAASJ,UAAU,cAAc,CAACI,SAAS;QACrD,UAAU,CAACH,GAAG,OAAO,CAAC,GAAG;QACzB,oBAAoB;QACpB,cAAc,IAAMD,UAAU,cAAc,CAAC;uBAGrD,oBAACE,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACG,aAAWA;QACR,MAAM;QACN,aAAY;QACZ,OAAOJ,GAAG,OAAO,CAAC,MAAM;QACxB,SAASJ;QACT,UAAUS,CAAAA,SAAUN,UAAU,eAAe,CAACM;uBAGtD,oBAACJ,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACK,QAAMA;QACH,SAAQ;QACR,MAAK;QACL,SAAS,IAAMP,UAAU,YAAY;QACrC,UAAU,CAACC,GAAG,UAAU;OAC3B;AAMjB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { IWebhookDeliveriesPagePresenter } from "../abstractions.js";
|
|
3
|
+
interface DeliveryListProps {
|
|
4
|
+
presenter: IWebhookDeliveriesPagePresenter;
|
|
5
|
+
}
|
|
6
|
+
export declare const DeliveryList: (({ presenter }: DeliveryListProps) => React.JSX.Element) & {
|
|
7
|
+
displayName: string;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import react, { useMemo, useState } from "react";
|
|
2
|
+
import debounce from "lodash/debounce.js";
|
|
3
|
+
import { observer } from "mobx-react-lite";
|
|
4
|
+
import { Accordion, Scrollbar, Skeleton, Text } from "@webiny/admin-ui";
|
|
5
|
+
import { useConfirmationDialog } from "@webiny/app-admin/hooks/index.js";
|
|
6
|
+
import { DeliveryAccordionRow } from "./DeliveryAccordionRow.js";
|
|
7
|
+
import { DeliveryBottomInfoBar } from "./DeliveryBottomInfoBar.js";
|
|
8
|
+
function useExpandedState() {
|
|
9
|
+
const [expandedId, setExpandedId] = useState(null);
|
|
10
|
+
return {
|
|
11
|
+
expandedId,
|
|
12
|
+
toggle (id) {
|
|
13
|
+
setExpandedId((prev)=>prev === id ? null : id);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const DeliveryList = observer(({ presenter })=>{
|
|
18
|
+
const { vm } = presenter;
|
|
19
|
+
const expanded = useExpandedState();
|
|
20
|
+
const { showConfirmation: showResendConfirmation } = useConfirmationDialog({
|
|
21
|
+
title: "Resend Delivery",
|
|
22
|
+
message: "Are you sure you want to resend this delivery?"
|
|
23
|
+
});
|
|
24
|
+
const loadMoreOnScroll = useMemo(()=>debounce(async ({ scrollFrame })=>{
|
|
25
|
+
if (scrollFrame.top > 0.8) await presenter.loadMore();
|
|
26
|
+
}, 200), [
|
|
27
|
+
presenter
|
|
28
|
+
]);
|
|
29
|
+
if (0 === vm.list.rows.length && !vm.loading) return /*#__PURE__*/ react.createElement("div", {
|
|
30
|
+
className: "flex justify-center py-xl"
|
|
31
|
+
}, /*#__PURE__*/ react.createElement(Text, {
|
|
32
|
+
className: "text-neutral-strong"
|
|
33
|
+
}, "No deliveries found."));
|
|
34
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
35
|
+
className: "flex-1 overflow-hidden relative"
|
|
36
|
+
}, /*#__PURE__*/ react.createElement(Scrollbar, {
|
|
37
|
+
onScrollFrame: (scrollFrame)=>loadMoreOnScroll({
|
|
38
|
+
scrollFrame
|
|
39
|
+
})
|
|
40
|
+
}, /*#__PURE__*/ react.createElement(Accordion, {
|
|
41
|
+
variant: "underline"
|
|
42
|
+
}, vm.list.rows.map((delivery)=>/*#__PURE__*/ react.createElement(DeliveryAccordionRow, {
|
|
43
|
+
key: delivery.id,
|
|
44
|
+
delivery: delivery,
|
|
45
|
+
open: expanded.expandedId === delivery.id,
|
|
46
|
+
resending: vm.resendingIds.has(delivery.id),
|
|
47
|
+
onOpenChange: ()=>expanded.toggle(delivery.id),
|
|
48
|
+
onResend: (id)=>showResendConfirmation(()=>presenter.resend(id))
|
|
49
|
+
}))), vm.list.pagination.loadingMore ? /*#__PURE__*/ react.createElement("div", {
|
|
50
|
+
className: "flex flex-col gap-sm p-md"
|
|
51
|
+
}, /*#__PURE__*/ react.createElement(Skeleton, {
|
|
52
|
+
className: "h-8 w-full"
|
|
53
|
+
}), /*#__PURE__*/ react.createElement(Skeleton, {
|
|
54
|
+
className: "h-8 w-full"
|
|
55
|
+
})) : null), /*#__PURE__*/ react.createElement(DeliveryBottomInfoBar, {
|
|
56
|
+
presenter: presenter
|
|
57
|
+
}));
|
|
58
|
+
});
|
|
59
|
+
export { DeliveryList };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=DeliveryList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.tsx"],"sourcesContent":["import React, { useMemo, useState } from \"react\";\nimport debounce from \"lodash/debounce.js\";\nimport { observer } from \"mobx-react-lite\";\nimport { Accordion, Scrollbar, Skeleton, Text } from \"@webiny/admin-ui\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/index.js\";\nimport { DeliveryAccordionRow } from \"./DeliveryAccordionRow.js\";\nimport { DeliveryBottomInfoBar } from \"./DeliveryBottomInfoBar.js\";\nimport type { IWebhookDeliveriesPagePresenter } from \"../abstractions.js\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\n\ninterface ExpandedState {\n expandedId: string | null;\n toggle(id: string): void;\n}\n\nfunction useExpandedState(): ExpandedState {\n const [expandedId, setExpandedId] = useState<string | null>(null);\n return {\n expandedId,\n toggle(id: string) {\n setExpandedId(prev => (prev === id ? null : id));\n }\n };\n}\n\ninterface DeliveryListProps {\n presenter: IWebhookDeliveriesPagePresenter;\n}\n\nexport const DeliveryList = observer(({ presenter }: DeliveryListProps) => {\n const { vm } = presenter;\n const expanded = useExpandedState();\n\n const { showConfirmation: showResendConfirmation } = useConfirmationDialog({\n title: \"Resend Delivery\",\n message: \"Are you sure you want to resend this delivery?\"\n });\n\n const loadMoreOnScroll = useMemo(\n () =>\n debounce(async ({ scrollFrame }: { scrollFrame: { top: number } }) => {\n if (scrollFrame.top > 0.8) {\n await presenter.loadMore();\n }\n }, 200),\n [presenter]\n );\n\n if (vm.list.rows.length === 0 && !vm.loading) {\n return (\n <div className=\"flex justify-center py-xl\">\n <Text className=\"text-neutral-strong\">No deliveries found.</Text>\n </div>\n );\n }\n\n return (\n <div className=\"flex-1 overflow-hidden relative\">\n <Scrollbar onScrollFrame={scrollFrame => loadMoreOnScroll({ scrollFrame })}>\n <Accordion variant=\"underline\">\n {vm.list.rows.map((delivery: WebhookDelivery) => (\n <DeliveryAccordionRow\n key={delivery.id}\n delivery={delivery}\n open={expanded.expandedId === delivery.id}\n resending={vm.resendingIds.has(delivery.id)}\n onOpenChange={() => expanded.toggle(delivery.id)}\n onResend={id => showResendConfirmation(() => presenter.resend(id))}\n />\n ))}\n </Accordion>\n {vm.list.pagination.loadingMore ? (\n <div className=\"flex flex-col gap-sm p-md\">\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-8 w-full\" />\n </div>\n ) : null}\n </Scrollbar>\n <DeliveryBottomInfoBar presenter={presenter} />\n </div>\n );\n});\n"],"names":["useExpandedState","expandedId","setExpandedId","useState","id","prev","DeliveryList","observer","presenter","vm","expanded","showResendConfirmation","useConfirmationDialog","loadMoreOnScroll","useMemo","debounce","scrollFrame","Text","Scrollbar","Accordion","delivery","DeliveryAccordionRow","Skeleton","DeliveryBottomInfoBar"],"mappings":";;;;;;;AAeA,SAASA;IACL,MAAM,CAACC,YAAYC,cAAc,GAAGC,SAAwB;IAC5D,OAAO;QACHF;QACA,QAAOG,EAAU;YACbF,cAAcG,CAAAA,OAASA,SAASD,KAAK,OAAOA;QAChD;IACJ;AACJ;AAMO,MAAME,eAAeC,SAAS,CAAC,EAAEC,SAAS,EAAqB;IAClE,MAAM,EAAEC,EAAE,EAAE,GAAGD;IACf,MAAME,WAAWV;IAEjB,MAAM,EAAE,kBAAkBW,sBAAsB,EAAE,GAAGC,sBAAsB;QACvE,OAAO;QACP,SAAS;IACb;IAEA,MAAMC,mBAAmBC,QACrB,IACIC,SAAS,OAAO,EAAEC,WAAW,EAAoC;YAC7D,IAAIA,YAAY,GAAG,GAAG,KAClB,MAAMR,UAAU,QAAQ;QAEhC,GAAG,MACP;QAACA;KAAU;IAGf,IAAIC,AAAwB,MAAxBA,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAU,CAACA,GAAG,OAAO,EACxC,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACQ,MAAIA;QAAC,WAAU;OAAsB;IAKlD,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACC,WAASA;QAAC,eAAeF,CAAAA,cAAeH,iBAAiB;gBAAEG;YAAY;qBACpE,oBAACG,WAASA;QAAC,SAAQ;OACdV,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAACW,WAAAA,WAAAA,GACf,oBAACC,sBAAoBA;YACjB,KAAKD,SAAS,EAAE;YAChB,UAAUA;YACV,MAAMV,SAAS,UAAU,KAAKU,SAAS,EAAE;YACzC,WAAWX,GAAG,YAAY,CAAC,GAAG,CAACW,SAAS,EAAE;YAC1C,cAAc,IAAMV,SAAS,MAAM,CAACU,SAAS,EAAE;YAC/C,UAAUhB,CAAAA,KAAMO,uBAAuB,IAAMH,UAAU,MAAM,CAACJ;cAIzEK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,WAAH,GAC3B,oBAAC;QAAI,WAAU;qBACX,oBAACa,UAAQA;QAAC,WAAU;sBACpB,oBAACA,UAAQA;QAAC,WAAU;UAExB,qBAER,oBAACC,uBAAqBA;QAAC,WAAWf;;AAG9C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { useRouter } from "@webiny/app-admin";
|
|
3
|
+
import { Button } from "@webiny/admin-ui";
|
|
4
|
+
import { ReactComponent } from "@webiny/icons/list.svg";
|
|
5
|
+
import { Routes } from "../../../routes.js";
|
|
6
|
+
const WebhookDefinitionsButton = ()=>{
|
|
7
|
+
const { goToRoute } = useRouter();
|
|
8
|
+
return /*#__PURE__*/ react.createElement(Button, {
|
|
9
|
+
variant: "secondary",
|
|
10
|
+
onClick: ()=>goToRoute(Routes.List),
|
|
11
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
|
|
12
|
+
}, "Webhooks");
|
|
13
|
+
};
|
|
14
|
+
export { WebhookDefinitionsButton };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=WebhookDefinitionsButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { ReactComponent as ListIcon } from \"@webiny/icons/list.svg\";\nimport { Routes } from \"~/admin/routes.js\";\n\nexport const WebhookDefinitionsButton = () => {\n const { goToRoute } = useRouter();\n\n return (\n <Button variant=\"secondary\" onClick={() => goToRoute(Routes.List)} icon={<ListIcon />}>\n Webhooks\n </Button>\n );\n};\n"],"names":["WebhookDefinitionsButton","goToRoute","useRouter","Button","Routes","ListIcon"],"mappings":";;;;;AAMO,MAAMA,2BAA2B;IACpC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAEtB,OAAO,WAAP,GACI,oBAACC,QAAMA;QAAC,SAAQ;QAAY,SAAS,IAAMF,UAAUG,OAAO,IAAI;QAAG,oBAAM,oBAACC,gBAAQA;OAAK;AAI/F"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import react, { useEffect, useMemo } from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { DiContainerProvider, useContainer, useFeature, useRoute } from "@webiny/app";
|
|
4
|
+
import { Button, Heading, Separator, Skeleton, Text } from "@webiny/admin-ui";
|
|
5
|
+
import { ListWebhookDeliveriesFeature } from "../../../features/listWebhookDeliveries/feature.js";
|
|
6
|
+
import { ListAvailableEventsFeature } from "../../../features/listAvailableEvents/feature.js";
|
|
7
|
+
import { ResendWebhookDeliveryFeature } from "../../../features/resendWebhookDelivery/feature.js";
|
|
8
|
+
import { ListWebhooksFeature } from "../../../features/ListWebhooks/feature.js";
|
|
9
|
+
import { WebhookDeliveriesPagePresenterFeature } from "../feature.js";
|
|
10
|
+
import { Routes } from "../../../routes.js";
|
|
11
|
+
import { DeliveryFilters } from "./DeliveryFilters.js";
|
|
12
|
+
import { DeliveryList } from "./DeliveryList.js";
|
|
13
|
+
import { WebhookDefinitionsButton } from "./WebhookDefinitionsButton.js";
|
|
14
|
+
const Loader = ()=>/*#__PURE__*/ react.createElement("div", {
|
|
15
|
+
className: "flex flex-col gap-sm p-md"
|
|
16
|
+
}, /*#__PURE__*/ react.createElement(Skeleton, {
|
|
17
|
+
className: "h-8 w-full"
|
|
18
|
+
}), /*#__PURE__*/ react.createElement(Skeleton, {
|
|
19
|
+
className: "h-8 w-full"
|
|
20
|
+
}), /*#__PURE__*/ react.createElement(Skeleton, {
|
|
21
|
+
className: "h-8 w-full"
|
|
22
|
+
}));
|
|
23
|
+
const WebhookDeliveriesPage_WebhookDeliveriesPageInner = observer(function() {
|
|
24
|
+
const { presenter } = useFeature(WebhookDeliveriesPagePresenterFeature);
|
|
25
|
+
const { route } = useRoute(Routes.Deliveries);
|
|
26
|
+
const webhookId = route?.params?.webhookId;
|
|
27
|
+
useEffect(()=>{
|
|
28
|
+
presenter.init(webhookId);
|
|
29
|
+
}, [
|
|
30
|
+
presenter,
|
|
31
|
+
webhookId
|
|
32
|
+
]);
|
|
33
|
+
const { vm } = presenter;
|
|
34
|
+
if (vm.error) return /*#__PURE__*/ react.createElement("div", {
|
|
35
|
+
className: "flex flex-col items-center gap-sm p-md"
|
|
36
|
+
}, /*#__PURE__*/ react.createElement(Text, null, vm.error), /*#__PURE__*/ react.createElement(Button, {
|
|
37
|
+
variant: "secondary",
|
|
38
|
+
onClick: ()=>void presenter.init()
|
|
39
|
+
}, "Retry"));
|
|
40
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
41
|
+
className: "flex flex-col h-main-content"
|
|
42
|
+
}, /*#__PURE__*/ react.createElement("div", {
|
|
43
|
+
className: "flex items-center justify-between py-sm px-md"
|
|
44
|
+
}, /*#__PURE__*/ react.createElement(Heading, {
|
|
45
|
+
level: 5
|
|
46
|
+
}, "Webhook Deliveries"), /*#__PURE__*/ react.createElement(WebhookDefinitionsButton, null)), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
47
|
+
className: "p-sm"
|
|
48
|
+
}, /*#__PURE__*/ react.createElement(DeliveryFilters, {
|
|
49
|
+
presenter: presenter
|
|
50
|
+
})), /*#__PURE__*/ react.createElement(Separator, null), vm.loading ? /*#__PURE__*/ react.createElement(Loader, null) : /*#__PURE__*/ react.createElement(DeliveryList, {
|
|
51
|
+
presenter: presenter
|
|
52
|
+
}));
|
|
53
|
+
});
|
|
54
|
+
const WebhookDeliveriesPage = ()=>{
|
|
55
|
+
const container = useContainer();
|
|
56
|
+
const scopedContainer = useMemo(()=>{
|
|
57
|
+
const child = container.createChildContainer();
|
|
58
|
+
ListWebhookDeliveriesFeature.register(child);
|
|
59
|
+
ListAvailableEventsFeature.register(child);
|
|
60
|
+
ResendWebhookDeliveryFeature.register(child);
|
|
61
|
+
ListWebhooksFeature.register(child);
|
|
62
|
+
WebhookDeliveriesPagePresenterFeature.register(child);
|
|
63
|
+
return child;
|
|
64
|
+
}, [
|
|
65
|
+
container
|
|
66
|
+
]);
|
|
67
|
+
return /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
68
|
+
container: scopedContainer
|
|
69
|
+
}, /*#__PURE__*/ react.createElement(WebhookDeliveriesPage_WebhookDeliveriesPageInner, null));
|
|
70
|
+
};
|
|
71
|
+
export { WebhookDeliveriesPage };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=WebhookDeliveriesPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.tsx"],"sourcesContent":["import React, { useMemo, useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature, useRoute } from \"@webiny/app\";\nimport { Separator } from \"@webiny/admin-ui\";\nimport { Skeleton } from \"@webiny/admin-ui\";\nimport { Button, Heading, Text } from \"@webiny/admin-ui\";\nimport { ListWebhookDeliveriesFeature } from \"~/admin/features/listWebhookDeliveries/feature.js\";\nimport { ListAvailableEventsFeature } from \"~/admin/features/listAvailableEvents/feature.js\";\nimport { ResendWebhookDeliveryFeature } from \"~/admin/features/resendWebhookDelivery/feature.js\";\nimport { ListWebhooksFeature } from \"~/admin/features/ListWebhooks/feature.js\";\nimport { WebhookDeliveriesPagePresenterFeature } from \"../feature.js\";\nimport { Routes } from \"~/admin/routes.js\";\nimport { DeliveryFilters } from \"./DeliveryFilters.js\";\nimport { DeliveryList } from \"./DeliveryList.js\";\nimport { WebhookDefinitionsButton } from \"~/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js\";\n\nconst Loader = () => {\n return (\n <div className=\"flex flex-col gap-sm p-md\">\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-8 w-full\" />\n <Skeleton className=\"h-8 w-full\" />\n </div>\n );\n};\n\nconst WebhookDeliveriesPageInner = observer(function WebhookDeliveriesPageInner() {\n const { presenter } = useFeature(WebhookDeliveriesPagePresenterFeature);\n const { route } = useRoute(Routes.Deliveries);\n const webhookId = route?.params?.webhookId;\n\n useEffect(() => {\n void presenter.init(webhookId);\n }, [presenter, webhookId]);\n\n const { vm } = presenter;\n\n if (vm.error) {\n return (\n <div className=\"flex flex-col items-center gap-sm p-md\">\n <Text>{vm.error}</Text>\n <Button variant=\"secondary\" onClick={() => void presenter.init()}>\n Retry\n </Button>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>Webhook Deliveries</Heading>\n <WebhookDefinitionsButton />\n </div>\n <Separator />\n <div className={\"p-sm\"}>\n <DeliveryFilters presenter={presenter} />\n </div>\n <Separator />\n {vm.loading ? <Loader /> : <DeliveryList presenter={presenter} />}\n </div>\n );\n});\n\nexport const WebhookDeliveriesPage = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListWebhookDeliveriesFeature.register(child);\n ListAvailableEventsFeature.register(child);\n ResendWebhookDeliveryFeature.register(child);\n ListWebhooksFeature.register(child);\n WebhookDeliveriesPagePresenterFeature.register(child);\n return child;\n }, [container]);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <WebhookDeliveriesPageInner />\n </DiContainerProvider>\n );\n};\n"],"names":["Loader","Skeleton","WebhookDeliveriesPageInner","observer","presenter","useFeature","WebhookDeliveriesPagePresenterFeature","route","useRoute","Routes","webhookId","useEffect","vm","Text","Button","Heading","WebhookDefinitionsButton","Separator","DeliveryFilters","DeliveryList","WebhookDeliveriesPage","container","useContainer","scopedContainer","useMemo","child","ListWebhookDeliveriesFeature","ListAvailableEventsFeature","ResendWebhookDeliveryFeature","ListWebhooksFeature","DiContainerProvider"],"mappings":";;;;;;;;;;;;;AAgBA,MAAMA,SAAS,IACJ,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACC,UAAQA;QAAC,WAAU;sBACpB,oBAACA,UAAQA;QAAC,WAAU;sBACpB,oBAACA,UAAQA;QAAC,WAAU;;AAKhC,MAAMC,mDAA6BC,SAAS;IACxC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASC,OAAO,UAAU;IAC5C,MAAMC,YAAYH,OAAO,QAAQ;IAEjCI,UAAU;QACDP,UAAU,IAAI,CAACM;IACxB,GAAG;QAACN;QAAWM;KAAU;IAEzB,MAAM,EAAEE,EAAE,EAAE,GAAGR;IAEf,IAAIQ,GAAG,KAAK,EACR,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACC,MAAIA,MAAED,GAAG,KAAK,iBACf,oBAACE,QAAMA;QAAC,SAAQ;QAAY,SAAS,IAAM,KAAKV,UAAU,IAAI;OAAI;IAO9E,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACW,SAAOA;QAAC,OAAO;OAAG,qCACnB,oBAACC,0BAAwBA,QAAAA,WAAAA,GAE7B,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAW;qBACZ,oBAACC,iBAAeA;QAAC,WAAWd;uBAEhC,oBAACa,WAASA,OACTL,GAAG,OAAO,GAAG,WAAH,GAAG,oBAACZ,QAAMA,QAAAA,WAAAA,GAAM,oBAACmB,cAAYA;QAAC,WAAWf;;AAGhE;AAEO,MAAMgB,wBAAwB;IACjC,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBC,QAAQ;QAC5B,MAAMC,QAAQJ,UAAU,oBAAoB;QAC5CK,6BAA6B,QAAQ,CAACD;QACtCE,2BAA2B,QAAQ,CAACF;QACpCG,6BAA6B,QAAQ,CAACH;QACtCI,oBAAoB,QAAQ,CAACJ;QAC7BnB,sCAAsC,QAAQ,CAACmB;QAC/C,OAAOA;IACX,GAAG;QAACJ;KAAU;IAEd,OAAO,WAAP,GACI,oBAACS,qBAAmBA;QAAC,WAAWP;qBAC5B,oBAACrB,kDAA0BA;AAGvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const statusVariant: (status: string) => "success" | "warning" | "destructive";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/WebhookDeliveriesPage/components/statusVariant.js","sources":["../../../../../src/admin/presentation/WebhookDeliveriesPage/components/statusVariant.ts"],"sourcesContent":["export const statusVariant = (status: string) => {\n switch (status) {\n case \"delivered\":\n return \"success\" as const;\n case \"failed\":\n return \"destructive\" as const;\n default:\n return \"warning\" as const;\n }\n};\n"],"names":["statusVariant","status"],"mappings":"AAAO,MAAMA,gBAAgB,CAACC;IAC1B,OAAQA;QACJ,KAAK;YACD,OAAO;QACX,KAAK;YACD,OAAO;QACX;YACI,OAAO;IACf;AACJ"}
|