@burdenoff/microfe-channel 2026.1013.2 → 2026.1107.1
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/dist/channel/ChannelRoot.d.ts +0 -2
- package/dist/channel/ChannelRoot.js +9 -6
- package/dist/channel/ChannelRoot.js.map +1 -1
- package/dist/channel/ChannelRoutes.d.ts +1 -2
- package/dist/channel/ChannelRoutes.js +5 -6
- package/dist/channel/ChannelRoutes.js.map +1 -1
- package/dist/channel/components/AdapterCredentialsForm.d.ts +2 -4
- package/dist/channel/components/AdapterCredentialsForm.js +1 -2
- package/dist/channel/components/AdapterCredentialsForm.js.map +1 -1
- package/dist/channel/components/FeatureNotEnabled.d.ts +1 -2
- package/dist/channel/components/FeatureNotEnabled.js +1 -2
- package/dist/channel/components/FeatureNotEnabled.js.map +1 -1
- package/dist/channel/components/MarkdownEditor.d.ts +1 -2
- package/dist/channel/components/MarkdownEditor.js +2 -5
- package/dist/channel/components/MarkdownEditor.js.map +1 -1
- package/dist/channel/components/PermissionGuard.d.ts +0 -2
- package/dist/channel/components/PermissionGuard.js +1 -2
- package/dist/channel/components/PermissionGuard.js.map +1 -1
- package/dist/channel/config/adapterCredentials.d.ts +0 -2
- package/dist/channel/config/adapterCredentials.js +3 -7
- package/dist/channel/config/adapterCredentials.js.map +1 -1
- package/dist/channel/constants/permissions.d.ts +0 -1
- package/dist/channel/constants/permissions.js +1 -2
- package/dist/channel/constants/permissions.js.map +1 -1
- package/dist/channel/graphql/global-client.d.ts +0 -2
- package/dist/channel/graphql/global-client.js +5 -6
- package/dist/channel/graphql/global-client.js.map +1 -1
- package/dist/channel/hooks/useChannelOrgSettings.d.ts +0 -2
- package/dist/channel/hooks/useChannelOrgSettings.js +20 -21
- package/dist/channel/hooks/useChannelOrgSettings.js.map +1 -1
- package/dist/channel/hooks/useChannelSubscription.d.ts +0 -1
- package/dist/channel/hooks/useChannelSubscription.js +7 -12
- package/dist/channel/hooks/useChannelSubscription.js.map +1 -1
- package/dist/channel/hooks/useChannels.d.ts +20 -30
- package/dist/channel/hooks/useChannels.js +100 -101
- package/dist/channel/hooks/useChannels.js.map +1 -1
- package/dist/channel/hooks/useTr.d.ts +0 -1
- package/dist/channel/hooks/useTr.js +1 -2
- package/dist/channel/hooks/useTr.js.map +1 -1
- package/dist/channel/index.d.ts +0 -1
- package/dist/channel/index.js +3 -2
- package/dist/channel/modules/channels/hooks/useExport.d.ts +0 -2
- package/dist/channel/modules/channels/hooks/useExport.js +77 -80
- package/dist/channel/modules/channels/hooks/useExport.js.map +1 -1
- package/dist/channel/modules/channels/i18n.d.ts +0 -2
- package/dist/channel/modules/channels/i18n.js +1 -2
- package/dist/channel/modules/channels/i18n.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js +10 -11
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js +400 -401
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js +8 -7
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelUsersPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js +5 -10
- package/dist/channel/modules/channels/pages/ChannelUsersPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ChannelsListPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ChannelsListPage.js +287 -288
- package/dist/channel/modules/channels/pages/ChannelsListPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js +11 -12
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/ConnectionsListPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js +1 -2
- package/dist/channel/modules/channels/pages/ConnectionsListPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/CreateChannelPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/CreateChannelPage.js +4 -5
- package/dist/channel/modules/channels/pages/CreateChannelPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/CreateConnectionPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js +37 -38
- package/dist/channel/modules/channels/pages/CreateConnectionPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js +7 -12
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/EditChannelPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/EditChannelPage.js +105 -103
- package/dist/channel/modules/channels/pages/EditChannelPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/EditConnectionPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/EditConnectionPage.js +22 -23
- package/dist/channel/modules/channels/pages/EditConnectionPage.js.map +1 -1
- package/dist/channel/modules/channels/pages/SendMessagePage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/SendMessagePage.js +180 -187
- package/dist/channel/modules/channels/pages/SendMessagePage.js.map +1 -1
- package/dist/channel/modules/channels/pages/WebhookEventsPage.d.ts +1 -2
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js +144 -149
- package/dist/channel/modules/channels/pages/WebhookEventsPage.js.map +1 -1
- package/dist/channel/pages/ChannelLandingPage.d.ts +1 -2
- package/dist/channel/pages/ChannelLandingPage.js +20 -21
- package/dist/channel/pages/ChannelLandingPage.js.map +1 -1
- package/dist/channel/providers/ChannelProvider.d.ts +0 -2
- package/dist/channel/providers/ChannelProvider.js +1 -2
- package/dist/channel/providers/ChannelProvider.js.map +1 -1
- package/dist/channel/types/index.d.ts +0 -2
- package/dist/channel/utils/shellBridge.d.ts +0 -1
- package/dist/channel/utils/shellBridge.js +1 -2
- package/dist/channel/utils/shellBridge.js.map +1 -1
- package/dist/dev/App.d.ts +1 -2
- package/dist/dev/main.d.ts +0 -2
- package/dist/generated/global-operations.d.ts +885 -336
- package/dist/generated/global-operations.js +2 -3
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +2 -22
- package/dist/generated/global-types.js +1 -2
- package/dist/generated/global-types.js.map +1 -1
- package/dist/generated/wspace-operations.d.ts +4 -2
- package/dist/generated/wspace-types.d.ts +4 -24
- package/dist/index.d.ts +0 -1
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +1 -2
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -1
- package/dist/node_modules/@apollo/client/errors/utils.js +1 -2
- package/dist/node_modules/@apollo/client/errors/utils.js.map +1 -1
- package/dist/translations/en.d.ts +0 -1
- package/dist/utils/nativeBridge.d.ts +0 -1
- package/dist/utils/nativeBridge.js +1 -2
- package/package.json +65 -43
- package/dist/channel/ChannelRoot.d.ts.map +0 -1
- package/dist/channel/ChannelRoutes.d.ts.map +0 -1
- package/dist/channel/components/AdapterCredentialsForm.d.ts.map +0 -1
- package/dist/channel/components/FeatureNotEnabled.d.ts.map +0 -1
- package/dist/channel/components/MarkdownEditor.d.ts.map +0 -1
- package/dist/channel/components/PermissionGuard.d.ts.map +0 -1
- package/dist/channel/config/adapterCredentials.d.ts.map +0 -1
- package/dist/channel/constants/permissions.d.ts.map +0 -1
- package/dist/channel/graphql/global-client.d.ts.map +0 -1
- package/dist/channel/hooks/useChannelOrgSettings.d.ts.map +0 -1
- package/dist/channel/hooks/useChannelSubscription.d.ts.map +0 -1
- package/dist/channel/hooks/useChannels.d.ts.map +0 -1
- package/dist/channel/hooks/useTr.d.ts.map +0 -1
- package/dist/channel/index.d.ts.map +0 -1
- package/dist/channel/modules/channels/hooks/useExport.d.ts.map +0 -1
- package/dist/channel/modules/channels/i18n.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ChannelDashboardPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ChannelDetailsPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ChannelSettingsPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ChannelUsersPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ChannelsListPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ConnectionDetailsPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/ConnectionsListPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/CreateChannelPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/CreateConnectionPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/DeliveryHistoryPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/EditChannelPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/EditConnectionPage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/SendMessagePage.d.ts.map +0 -1
- package/dist/channel/modules/channels/pages/WebhookEventsPage.d.ts.map +0 -1
- package/dist/channel/pages/ChannelLandingPage.d.ts.map +0 -1
- package/dist/channel/providers/ChannelProvider.d.ts.map +0 -1
- package/dist/channel/types/index.d.ts.map +0 -1
- package/dist/channel/utils/shellBridge.d.ts.map +0 -1
- package/dist/dev/App.d.ts.map +0 -1
- package/dist/dev/main.d.ts.map +0 -1
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/translations/en.d.ts.map +0 -1
- package/dist/utils/nativeBridge.d.ts.map +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { useChannel as e } from "../../../providers/ChannelProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { getGlobalChannelClient as t } from "../../../graphql/global-client.js";
|
|
3
|
+
import { GetConnectionDocument as n, UpdateConnectionDocument as r } from "../../../../generated/global-operations.js";
|
|
4
|
+
import { PermissionGuard as i } from "../../../components/PermissionGuard.js";
|
|
5
|
+
import { CHANNEL_PERMISSIONS as a } from "../../../constants/permissions.js";
|
|
6
|
+
import { emitShellEvent as o, reportShellError as s } from "../../../utils/shellBridge.js";
|
|
7
7
|
import { useEffect as c, useState as l } from "react";
|
|
8
8
|
import { useI18n as u } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
9
9
|
import { AlertCircle as d, ArrowLeft as f, Loader2 as p, Save as m, Shield as h } from "lucide-react";
|
|
10
10
|
import { useNavigate as g, useParams as _ } from "react-router";
|
|
11
11
|
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
12
12
|
import { EmphasisPanel as b, PagePurpose as x } from "@burdenoff/fe-libs/ui";
|
|
13
|
-
|
|
13
|
+
// src/channel/modules/channels/pages/EditConnectionPage.tsx
|
|
14
14
|
function S() {
|
|
15
15
|
let S = g(), { connectionId: C } = _(), { authToken: w, apiGatewayUrl: T, organizationId: E } = e(), { t: D } = u(), O = (e, t) => {
|
|
16
16
|
let n = D(e);
|
|
@@ -22,14 +22,14 @@ function S() {
|
|
|
22
22
|
return (async () => {
|
|
23
23
|
M(!0), P(null);
|
|
24
24
|
try {
|
|
25
|
-
let
|
|
26
|
-
query:
|
|
25
|
+
let r = await t(T, w, E).query({
|
|
26
|
+
query: n,
|
|
27
27
|
variables: { id: C },
|
|
28
28
|
fetchPolicy: "network-only"
|
|
29
29
|
});
|
|
30
30
|
if (e) return;
|
|
31
|
-
let
|
|
32
|
-
A(
|
|
31
|
+
let i = r.data?.getConnection ?? null;
|
|
32
|
+
A(i), I(i?.isActive ?? !0);
|
|
33
33
|
} catch (t) {
|
|
34
34
|
if (e) return;
|
|
35
35
|
P(t instanceof Error ? t.message : O("connection.loadFailed", "Failed to load connection"));
|
|
@@ -48,8 +48,8 @@ function S() {
|
|
|
48
48
|
]), j ? /* @__PURE__ */ v("div", {
|
|
49
49
|
className: "container mx-auto p-6 flex items-center justify-center min-h-64",
|
|
50
50
|
children: /* @__PURE__ */ v(p, { className: "size-6 animate-spin text-fg-muted" })
|
|
51
|
-
}) : k ? /* @__PURE__ */ v(
|
|
52
|
-
permission:
|
|
51
|
+
}) : k ? /* @__PURE__ */ v(i, {
|
|
52
|
+
permission: a.CHANNEL_CONNECTION_UPDATE,
|
|
53
53
|
children: /* @__PURE__ */ y("div", {
|
|
54
54
|
className: "container mx-auto p-6 max-w-2xl",
|
|
55
55
|
children: [
|
|
@@ -90,35 +90,35 @@ function S() {
|
|
|
90
90
|
onSubmit: async (e) => {
|
|
91
91
|
if (e.preventDefault(), !C) return;
|
|
92
92
|
P(null);
|
|
93
|
-
let
|
|
93
|
+
let n;
|
|
94
94
|
if (L.trim()) try {
|
|
95
|
-
|
|
95
|
+
n = JSON.parse(L);
|
|
96
96
|
} catch {
|
|
97
97
|
P(O("connection.validation.credentialsJson", "Credentials must be valid JSON"));
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
|
-
let
|
|
100
|
+
let i;
|
|
101
101
|
if (z.trim()) try {
|
|
102
|
-
|
|
102
|
+
i = JSON.parse(z);
|
|
103
103
|
} catch {
|
|
104
104
|
P(O("connection.validation.metadataJson", "Platform metadata must be valid JSON"));
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
107
|
H(!0);
|
|
108
108
|
try {
|
|
109
|
-
await
|
|
110
|
-
mutation:
|
|
109
|
+
await t(T, w, E).mutate({
|
|
110
|
+
mutation: r,
|
|
111
111
|
variables: {
|
|
112
112
|
id: C,
|
|
113
113
|
input: {
|
|
114
114
|
isActive: F,
|
|
115
|
-
credentials:
|
|
116
|
-
platformMetadata:
|
|
115
|
+
credentials: n,
|
|
116
|
+
platformMetadata: i
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
}),
|
|
119
|
+
}), o("connection.updated", { id: C }), S(`../${C}`);
|
|
120
120
|
} catch (e) {
|
|
121
|
-
|
|
121
|
+
s(e, {
|
|
122
122
|
module: "channel",
|
|
123
123
|
context: {
|
|
124
124
|
action: "EditConnectionPage.submit",
|
|
@@ -210,7 +210,6 @@ function S() {
|
|
|
210
210
|
})
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
|
-
//#endregion
|
|
214
213
|
export { S as EditConnectionPage };
|
|
215
214
|
|
|
216
215
|
//# sourceMappingURL=EditConnectionPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditConnectionPage.js","names":[],"sources":["../../../../../src/channel/modules/channels/pages/EditConnectionPage.tsx"],"sourcesContent":["/**\n * Edit Connection Page\n *\n * Standalone page mounted at /channels/connections/:connectionId/edit.\n * Fetches the connection directly via getConnection (no channelId required in URL).\n *\n * Form fields match UpdateConnectionInput exactly.\n */\n\nimport { useEffect, useState } from 'react';\nimport { useNavigate, useParams } from 'react-router';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ArrowLeft, Loader2, AlertCircle, Save, Shield } from 'lucide-react';\nimport { EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useChannel as useChannelContext } from '../../../providers/ChannelProvider';\nimport { getGlobalChannelClient } from '../../../graphql/global-client';\nimport {\n GetConnectionDocument,\n UpdateConnectionDocument,\n type GetConnectionQuery,\n type UpdateConnectionMutation,\n} from '../../../../generated/global-operations';\nimport { PermissionGuard } from '../../../components/PermissionGuard';\nimport { CHANNEL_PERMISSIONS } from '../../../constants/permissions';\nimport { emitShellEvent, reportShellError } from '../../../utils/shellBridge';\n\ntype Connection = NonNullable<GetConnectionQuery['getConnection']>;\n\nexport function EditConnectionPage() {\n const navigate = useNavigate();\n const { connectionId } = useParams<{ connectionId: string }>();\n const { authToken, apiGatewayUrl, organizationId } = useChannelContext();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n const [connection, setConnection] = useState<Connection | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const [isActive, setIsActive] = useState(true);\n const [credentials, setCredentials] = useState('');\n const [platformMetadata, setPlatformMetadata] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n useEffect(() => {\n if (!connectionId) return;\n let cancelled = false;\n void (async () => {\n setIsLoading(true);\n setError(null);\n try {\n const client = getGlobalChannelClient(apiGatewayUrl, authToken, organizationId);\n const result = await client.query<GetConnectionQuery>({\n query: GetConnectionDocument,\n variables: { id: connectionId },\n fetchPolicy: 'network-only',\n });\n if (cancelled) return;\n const conn = result.data?.getConnection ?? null;\n setConnection(conn);\n setIsActive(conn?.isActive ?? true);\n } catch (err: unknown) {\n if (cancelled) return;\n setError(\n err instanceof Error\n ? err.message\n : tr('connection.loadFailed', 'Failed to load connection')\n );\n } finally {\n if (!cancelled) setIsLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [connectionId, apiGatewayUrl, authToken, organizationId, tr]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!connectionId) return;\n setError(null);\n\n let parsedCredentials: Record<string, unknown> | undefined;\n if (credentials.trim()) {\n try {\n parsedCredentials = JSON.parse(credentials);\n } catch {\n setError(tr('connection.validation.credentialsJson', 'Credentials must be valid JSON'));\n return;\n }\n }\n\n let parsedMetadata: Record<string, unknown> | undefined;\n if (platformMetadata.trim()) {\n try {\n parsedMetadata = JSON.parse(platformMetadata);\n } catch {\n setError(tr('connection.validation.metadataJson', 'Platform metadata must be valid JSON'));\n return;\n }\n }\n\n setIsSubmitting(true);\n try {\n const client = getGlobalChannelClient(apiGatewayUrl, authToken, organizationId);\n await client.mutate<UpdateConnectionMutation>({\n mutation: UpdateConnectionDocument,\n variables: {\n id: connectionId,\n input: {\n isActive,\n credentials: parsedCredentials,\n platformMetadata: parsedMetadata,\n },\n },\n });\n emitShellEvent('connection.updated', { id: connectionId });\n navigate(`../${connectionId}`);\n } catch (err: unknown) {\n reportShellError(\n err,\n { module: 'channel', context: { action: 'EditConnectionPage.submit', connectionId } },\n '[channel] Failed to update connection'\n );\n setError(\n err instanceof Error\n ? err.message\n : tr('connection.updateFailed', 'Failed to update connection')\n );\n } finally {\n setIsSubmitting(false);\n }\n };\n\n if (isLoading) {\n return (\n <div className=\"container mx-auto p-6 flex items-center justify-center min-h-64\">\n <Loader2 className=\"size-6 animate-spin text-fg-muted\" />\n </div>\n );\n }\n\n if (!connection) {\n return (\n <div className=\"container mx-auto p-6 max-w-2xl\">\n <div className=\"bg-status-error-bg-subtle border border-status-error-bg-subtle rounded-lg p-4 flex gap-3\">\n <AlertCircle className=\"size-5 text-status-error-text shrink-0\" />\n <p className=\"text-sm text-status-error-text\">\n {error ?? tr('connection.notFound', 'Connection not found')}\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <PermissionGuard permission={CHANNEL_PERMISSIONS.CHANNEL_CONNECTION_UPDATE}>\n <div className=\"container mx-auto p-6 max-w-2xl\">\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n className=\"flex items-center gap-2 text-fg-muted hover:text-fg mb-6\"\n >\n <ArrowLeft className=\"size-4 \" />\n {tr('common.back', 'Back')}\n </button>\n\n <div className=\"flex items-center gap-3 mb-6\">\n <Shield className=\"size-7 text-accent-blue\" />\n <div>\n <h1 className=\"text-2xl font-bold text-fg\">\n {tr('connection.edit.title', 'Edit Connection')}\n </h1>\n <p className=\"text-sm text-fg-muted\">\n {tr('connection.edit.subtitle', 'Update credentials, status, or platform metadata.')}\n </p>\n </div>\n </div>\n\n <PagePurpose icon={<Shield size={15} aria-hidden=\"true\" />} className=\"mb-6\">\n {tr(\n 'connection.edit.purpose',\n 'Update an existing connection — rotate credentials, toggle it active or inactive, or refresh platform metadata. Use this when a token has expired, secrets have rotated, or you need to temporarily disable the link without removing it. Saved secrets are stored encrypted and never displayed back.'\n )}\n </PagePurpose>\n\n {error && (\n <div className=\"bg-status-error-bg-subtle border border-status-error-bg-subtle rounded-lg p-4 mb-6 flex gap-3\">\n <AlertCircle className=\"size-5 text-status-error-text shrink-0\" />\n <p className=\"text-sm text-status-error-text\">{error}</p>\n </div>\n )}\n\n <EmphasisPanel className=\"p-6\">\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n <div className=\"text-sm text-fg-muted\">\n <span className=\"font-medium text-fg\">ID:</span> {connection.id}\n <br />\n <span className=\"font-medium text-fg\">\n {tr('connection.field.authType', 'Auth Type')}:\n </span>{' '}\n {connection.authType}\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-sm font-medium text-fg\">\n <input\n type=\"checkbox\"\n checked={isActive}\n onChange={(e) => setIsActive(e.target.checked)}\n />\n {tr('connection.field.isActive', 'Active')}\n </label>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium text-fg mb-2\">\n {tr('connection.field.credentials', 'Credentials (JSON)')}\n </label>\n <textarea\n aria-label={tr(\n 'connection.field.credentialsLeaveBlank',\n 'Leave blank to keep existing credentials'\n )}\n value={credentials}\n onChange={(e) => setCredentials(e.target.value)}\n rows={6}\n className=\"w-full px-3 py-2 bg-bg border border-border-subtle rounded-md font-mono text-sm text-fg\"\n placeholder={tr(\n 'connection.field.credentialsLeaveBlank',\n 'Leave blank to keep existing credentials'\n )}\n />\n </div>\n\n <div>\n <label\n htmlFor=\"edit-conn-platform-metadata\"\n className=\"block text-sm font-medium text-fg mb-2\"\n >\n {tr('connection.field.platformMetadata', 'Platform Metadata (JSON)')}\n </label>\n <textarea\n id=\"edit-conn-platform-metadata\"\n aria-label={tr('connection.field.platformMetadata', 'Platform Metadata (JSON)')}\n value={platformMetadata}\n onChange={(e) => setPlatformMetadata(e.target.value)}\n rows={4}\n className=\"w-full px-3 py-2 bg-bg border border-border-subtle rounded-md font-mono text-sm text-fg\"\n />\n </div>\n\n <div className=\"flex gap-3 pt-2\">\n <button\n type=\"submit\"\n disabled={isSubmitting}\n className=\"flex items-center gap-2 px-4 py-2 bg-accent-blue text-fg-on-accent rounded-md disabled:opacity-50\"\n >\n {isSubmitting ? (\n <Loader2 className=\"size-4 animate-spin\" />\n ) : (\n <Save className=\"size-4 \" />\n )}\n {tr('common.save', 'Save')}\n </button>\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n className=\"px-4 py-2 text-fg border border-border-subtle rounded-md\"\n >\n {tr('common.cancel', 'Cancel')}\n </button>\n </div>\n </form>\n </EmphasisPanel>\n </div>\n </PermissionGuard>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditConnectionPage.js","names":["useChannelContext","EditConnectionPage","navigate","useNavigate","useParams","useChannel","useI18n","tr","value","t","key","fallback","connection","setConnection","useState","isLoading","setIsLoading","error","setError","isActive","setIsActive","credentials","setCredentials","platformMetadata","setPlatformMetadata","isSubmitting","setIsSubmitting","useEffect","connectionId","cancelled","result","getGlobalChannelClient","apiGatewayUrl","authToken","organizationId","GetConnectionDocument","conn","err","Loader2","PermissionGuard","CHANNEL_PERMISSIONS","ArrowLeft","Shield","PagePurpose","AlertCircle","EmphasisPanel","parsedCredentials","parsedMetadata","UpdateConnectionDocument","emitShellEvent","reportShellError","Save"],"sources":["../../../../../src/channel/modules/channels/pages/EditConnectionPage.tsx"],"sourcesContent":["/**\n * Edit Connection Page\n *\n * Standalone page mounted at /channels/connections/:connectionId/edit.\n * Fetches the connection directly via getConnection (no channelId required in URL).\n *\n * Form fields match UpdateConnectionInput exactly.\n */\n\nimport { useEffect, useState } from 'react';\nimport { useNavigate, useParams } from 'react-router';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ArrowLeft, Loader2, AlertCircle, Save, Shield } from 'lucide-react';\nimport { EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { useChannel as useChannelContext } from '../../../providers/ChannelProvider';\nimport { getGlobalChannelClient } from '../../../graphql/global-client';\nimport {\n GetConnectionDocument,\n UpdateConnectionDocument,\n type GetConnectionQuery,\n type UpdateConnectionMutation,\n} from '../../../../generated/global-operations';\nimport { PermissionGuard } from '../../../components/PermissionGuard';\nimport { CHANNEL_PERMISSIONS } from '../../../constants/permissions';\nimport { emitShellEvent, reportShellError } from '../../../utils/shellBridge';\n\ntype Connection = NonNullable<GetConnectionQuery['getConnection']>;\n\nexport function EditConnectionPage() {\n const navigate = useNavigate();\n const { connectionId } = useParams<{ connectionId: string }>();\n const { authToken, apiGatewayUrl, organizationId } = useChannelContext();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n const [connection, setConnection] = useState<Connection | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const [isActive, setIsActive] = useState(true);\n const [credentials, setCredentials] = useState('');\n const [platformMetadata, setPlatformMetadata] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n useEffect(() => {\n if (!connectionId) return;\n let cancelled = false;\n void (async () => {\n setIsLoading(true);\n setError(null);\n try {\n const client = getGlobalChannelClient(apiGatewayUrl, authToken, organizationId);\n const result = await client.query<GetConnectionQuery>({\n query: GetConnectionDocument,\n variables: { id: connectionId },\n fetchPolicy: 'network-only',\n });\n if (cancelled) return;\n const conn = result.data?.getConnection ?? null;\n setConnection(conn);\n setIsActive(conn?.isActive ?? true);\n } catch (err: unknown) {\n if (cancelled) return;\n setError(\n err instanceof Error\n ? err.message\n : tr('connection.loadFailed', 'Failed to load connection')\n );\n } finally {\n if (!cancelled) setIsLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [connectionId, apiGatewayUrl, authToken, organizationId, tr]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!connectionId) return;\n setError(null);\n\n let parsedCredentials: Record<string, unknown> | undefined;\n if (credentials.trim()) {\n try {\n parsedCredentials = JSON.parse(credentials);\n } catch {\n setError(tr('connection.validation.credentialsJson', 'Credentials must be valid JSON'));\n return;\n }\n }\n\n let parsedMetadata: Record<string, unknown> | undefined;\n if (platformMetadata.trim()) {\n try {\n parsedMetadata = JSON.parse(platformMetadata);\n } catch {\n setError(tr('connection.validation.metadataJson', 'Platform metadata must be valid JSON'));\n return;\n }\n }\n\n setIsSubmitting(true);\n try {\n const client = getGlobalChannelClient(apiGatewayUrl, authToken, organizationId);\n await client.mutate<UpdateConnectionMutation>({\n mutation: UpdateConnectionDocument,\n variables: {\n id: connectionId,\n input: {\n isActive,\n credentials: parsedCredentials,\n platformMetadata: parsedMetadata,\n },\n },\n });\n emitShellEvent('connection.updated', { id: connectionId });\n navigate(`../${connectionId}`);\n } catch (err: unknown) {\n reportShellError(\n err,\n { module: 'channel', context: { action: 'EditConnectionPage.submit', connectionId } },\n '[channel] Failed to update connection'\n );\n setError(\n err instanceof Error\n ? err.message\n : tr('connection.updateFailed', 'Failed to update connection')\n );\n } finally {\n setIsSubmitting(false);\n }\n };\n\n if (isLoading) {\n return (\n <div className=\"container mx-auto p-6 flex items-center justify-center min-h-64\">\n <Loader2 className=\"size-6 animate-spin text-fg-muted\" />\n </div>\n );\n }\n\n if (!connection) {\n return (\n <div className=\"container mx-auto p-6 max-w-2xl\">\n <div className=\"bg-status-error-bg-subtle border border-status-error-bg-subtle rounded-lg p-4 flex gap-3\">\n <AlertCircle className=\"size-5 text-status-error-text shrink-0\" />\n <p className=\"text-sm text-status-error-text\">\n {error ?? tr('connection.notFound', 'Connection not found')}\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <PermissionGuard permission={CHANNEL_PERMISSIONS.CHANNEL_CONNECTION_UPDATE}>\n <div className=\"container mx-auto p-6 max-w-2xl\">\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n className=\"flex items-center gap-2 text-fg-muted hover:text-fg mb-6\"\n >\n <ArrowLeft className=\"size-4 \" />\n {tr('common.back', 'Back')}\n </button>\n\n <div className=\"flex items-center gap-3 mb-6\">\n <Shield className=\"size-7 text-accent-blue\" />\n <div>\n <h1 className=\"text-2xl font-bold text-fg\">\n {tr('connection.edit.title', 'Edit Connection')}\n </h1>\n <p className=\"text-sm text-fg-muted\">\n {tr('connection.edit.subtitle', 'Update credentials, status, or platform metadata.')}\n </p>\n </div>\n </div>\n\n <PagePurpose icon={<Shield size={15} aria-hidden=\"true\" />} className=\"mb-6\">\n {tr(\n 'connection.edit.purpose',\n 'Update an existing connection — rotate credentials, toggle it active or inactive, or refresh platform metadata. Use this when a token has expired, secrets have rotated, or you need to temporarily disable the link without removing it. Saved secrets are stored encrypted and never displayed back.'\n )}\n </PagePurpose>\n\n {error && (\n <div className=\"bg-status-error-bg-subtle border border-status-error-bg-subtle rounded-lg p-4 mb-6 flex gap-3\">\n <AlertCircle className=\"size-5 text-status-error-text shrink-0\" />\n <p className=\"text-sm text-status-error-text\">{error}</p>\n </div>\n )}\n\n <EmphasisPanel className=\"p-6\">\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n <div className=\"text-sm text-fg-muted\">\n <span className=\"font-medium text-fg\">ID:</span> {connection.id}\n <br />\n <span className=\"font-medium text-fg\">\n {tr('connection.field.authType', 'Auth Type')}:\n </span>{' '}\n {connection.authType}\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-sm font-medium text-fg\">\n <input\n type=\"checkbox\"\n checked={isActive}\n onChange={(e) => setIsActive(e.target.checked)}\n />\n {tr('connection.field.isActive', 'Active')}\n </label>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium text-fg mb-2\">\n {tr('connection.field.credentials', 'Credentials (JSON)')}\n </label>\n <textarea\n aria-label={tr(\n 'connection.field.credentialsLeaveBlank',\n 'Leave blank to keep existing credentials'\n )}\n value={credentials}\n onChange={(e) => setCredentials(e.target.value)}\n rows={6}\n className=\"w-full px-3 py-2 bg-bg border border-border-subtle rounded-md font-mono text-sm text-fg\"\n placeholder={tr(\n 'connection.field.credentialsLeaveBlank',\n 'Leave blank to keep existing credentials'\n )}\n />\n </div>\n\n <div>\n <label\n htmlFor=\"edit-conn-platform-metadata\"\n className=\"block text-sm font-medium text-fg mb-2\"\n >\n {tr('connection.field.platformMetadata', 'Platform Metadata (JSON)')}\n </label>\n <textarea\n id=\"edit-conn-platform-metadata\"\n aria-label={tr('connection.field.platformMetadata', 'Platform Metadata (JSON)')}\n value={platformMetadata}\n onChange={(e) => setPlatformMetadata(e.target.value)}\n rows={4}\n className=\"w-full px-3 py-2 bg-bg border border-border-subtle rounded-md font-mono text-sm text-fg\"\n />\n </div>\n\n <div className=\"flex gap-3 pt-2\">\n <button\n type=\"submit\"\n disabled={isSubmitting}\n className=\"flex items-center gap-2 px-4 py-2 bg-accent-blue text-fg-on-accent rounded-md disabled:opacity-50\"\n >\n {isSubmitting ? (\n <Loader2 className=\"size-4 animate-spin\" />\n ) : (\n <Save className=\"size-4 \" />\n )}\n {tr('common.save', 'Save')}\n </button>\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n className=\"px-4 py-2 text-fg border border-border-subtle rounded-md\"\n >\n {tr('common.cancel', 'Cancel')}\n </button>\n </div>\n </form>\n </EmphasisPanel>\n </div>\n </PermissionGuard>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4,5 +4,4 @@
|
|
|
4
4
|
* UI for sending notifications/messages through channels.
|
|
5
5
|
* Supports single and bulk delivery with recipient management.
|
|
6
6
|
*/
|
|
7
|
-
export declare function SendMessagePage(): import(
|
|
8
|
-
//# sourceMappingURL=SendMessagePage.d.ts.map
|
|
7
|
+
export declare function SendMessagePage(): import('react').JSX.Element;
|