@hiver/connector-agent 4.22.0-slackM2-beta.0 → 4.22.0-slackM2-beta.2
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/features/slack/api/index.d.ts +1 -1
- package/features/slack/api/index.d.ts.map +1 -1
- package/features/slack/api/links.d.ts +20 -14
- package/features/slack/api/links.d.ts.map +1 -1
- package/features/slack/components/LinkExistingModal/ChannelPicker.d.ts +25 -0
- package/features/slack/components/LinkExistingModal/ChannelPicker.d.ts.map +1 -0
- package/features/slack/components/LinkExistingModal/index.d.ts +4 -2
- package/features/slack/components/LinkExistingModal/index.d.ts.map +1 -1
- package/features/slack/components/LinkExistingModal/style.d.ts +21 -0
- package/features/slack/components/LinkExistingModal/style.d.ts.map +1 -0
- package/features/slack/components/style.d.ts.map +1 -1
- package/features/slack/constants/api.d.ts +1 -1
- package/features/slack/constants/api.d.ts.map +1 -1
- package/features/slack/types/wire.d.ts +34 -7
- package/features/slack/types/wire.d.ts.map +1 -1
- package/features/slack/utils/slack-thread-url.d.ts +7 -4
- package/features/slack/utils/slack-thread-url.d.ts.map +1 -1
- package/index.es.js +6367 -6131
- package/index.umd.js +633 -617
- package/package.json +1 -1
- package/testing/mocks/handlers/slack.d.ts +2 -2
- package/testing/mocks/handlers/slack.d.ts.map +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { getExternalConversation, getExternalConversationPage, getExternalConversationsByTarget, getThreadPage, startExistingChannel, startNewChannel } from './conversations';
|
|
2
2
|
export { postMessage } from './messages';
|
|
3
3
|
export { getChannelMembers } from './members';
|
|
4
|
-
export {
|
|
4
|
+
export { getLinkPreview, getLinks, linkExistingChannel, linkExistingThread, markLinkRead, unlinkConversation } from './links';
|
|
5
5
|
export { parseSlackError } from './errors';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,aAAa,EACb,oBAAoB,EACpB,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,aAAa,EACb,oBAAoB,EACpB,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LinkExistingChannelRequest, LinkExistingThreadRequest, SlackLink,
|
|
1
|
+
import { LinkExistingChannelRequest, LinkExistingResponse, LinkExistingThreadRequest, SlackLink, SlackLinkPreview, SlackLinksResponse } from '../types/wire';
|
|
2
2
|
/**
|
|
3
3
|
* Poll cadence for the links list (the switcher payload). The endpoint is
|
|
4
4
|
* declared safe to poll — it never mutates read state — and it's the ONLY
|
|
@@ -68,23 +68,29 @@ export declare const unlinkConversation: (hiverConvId: string, linkId: string) =
|
|
|
68
68
|
*/
|
|
69
69
|
export declare const markLinkRead: (hiverConvId: string, linkId: string, lastReadTs?: string) => Promise<void>;
|
|
70
70
|
/**
|
|
71
|
-
* Attach an existing Slack thread
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* `
|
|
71
|
+
* Attach an existing Slack thread; `externalConversationId` in the
|
|
72
|
+
* response IS the new linkId. `messageText` is posted into the thread
|
|
73
|
+
* only when non-empty — the link modal sends '' (D2), so the live
|
|
74
|
+
* response's `postedMessage` is null (silent attach). Normalisation
|
|
75
|
+
* must therefore be null-safe: a 200 with a null postedMessage is the
|
|
76
|
+
* SUCCESS path, not an error.
|
|
75
77
|
*/
|
|
76
|
-
export declare const linkExistingThread: (payload: LinkExistingThreadRequest) => Promise<
|
|
78
|
+
export declare const linkExistingThread: (payload: LinkExistingThreadRequest) => Promise<LinkExistingResponse>;
|
|
77
79
|
/**
|
|
78
|
-
* Attach an existing Slack channel (
|
|
79
|
-
*
|
|
80
|
+
* Attach an existing Slack channel (renders in channel mode like a
|
|
81
|
+
* started one). Same posting rule as linkExistingThread: empty
|
|
82
|
+
* `messageText` ⇒ silent attach, `postedMessage: null` on success.
|
|
80
83
|
*/
|
|
81
|
-
export declare const linkExistingChannel: (payload: LinkExistingChannelRequest) => Promise<
|
|
84
|
+
export declare const linkExistingChannel: (payload: LinkExistingChannelRequest) => Promise<LinkExistingResponse>;
|
|
82
85
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
86
|
+
* Fetch preview meta for a pasted thread permalink before linking
|
|
87
|
+
* (GET /link-preview — the real endpoint that closed the D1 gap). The
|
|
88
|
+
* RAW URL travels as `preview_link` (snake_case query, per the casing
|
|
89
|
+
* rule); the BACKEND parses it and returns canonical channelId/threadTs
|
|
90
|
+
* — those, not any client-side parse, feed /link/existing-thread. The
|
|
91
|
+
* client-side parser remains only as a pre-flight validity gate so
|
|
92
|
+
* obviously-invalid input never hits the network.
|
|
87
93
|
*/
|
|
88
|
-
export declare const
|
|
94
|
+
export declare const getLinkPreview: (previewLink: string) => Promise<SlackLinkPreview>;
|
|
89
95
|
export {};
|
|
90
96
|
//# sourceMappingURL=links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/links.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/links.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;wEACwE;AACxE,eAAO,MAAM,aAAa,gBAAiB,MAAM,wCAA6C,CAAC;AAE/F,UAAU,YACR,SAAQ,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,kBAAkB,GAAG,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAAC;IAC3G,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,eAAO,MAAM,sBAAsB,SAAU,gBAAgB,GAAG,SAAS,KAAG,kBAS3E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,SAAU,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,YAAY,CAAC,KAAG,MACC,CAAC;AAExF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,UAAW,SAAS,EAAE,KAAG,SAAS,GAAG,IAShE,CAAC;AAEF,eAAO,MAAM,QAAQ,gBAAuB,MAAM,KAAG,OAAO,CAAC,kBAAkB,CAM9E,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,UAAO,EAAE,iBAAiB,GAAE,MAA+B,6EAW/G;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,gBAAuB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAK1F,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,gBAAuB,MAAM,UAAU,MAAM,eAAe,MAAM,KAAG,OAAO,CAAC,IAAI,CAMzG,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,YAAmB,yBAAyB,KAAG,OAAO,CAAC,oBAAoB,CAQzG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,YAAmB,0BAA0B,KAAG,OAAO,CAAC,oBAAoB,CAQ3G,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,gBAAuB,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAOlF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { SlackChannel } from '../../types/wire';
|
|
3
|
+
interface ChannelPickerProps {
|
|
4
|
+
channels: SlackChannel[];
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
isWarming: boolean;
|
|
7
|
+
value: string | null;
|
|
8
|
+
/** null clears the selection (the input's × resets the picker). */
|
|
9
|
+
onChange: (channelId: string | null) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Channel tab — Figma M2 1719:109242 (searching) / 1719:109964 (selected).
|
|
13
|
+
* A search input that behaves like a select-with-search: the results
|
|
14
|
+
* list is a FLOATING dropdown that opens only while the input is
|
|
15
|
+
* focused (it overlays, never pushes, the content below). Picking a
|
|
16
|
+
* channel closes it and renders the selected-channel box (name +
|
|
17
|
+
* "N Members") under the input; focusing the input again reopens the
|
|
18
|
+
* dropdown; the input's × clears both the query and the selection.
|
|
19
|
+
*
|
|
20
|
+
* `memberCount` is optional on the /channels wire — the members line is
|
|
21
|
+
* hidden when it's absent, never fabricated.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ChannelPicker: FC<ChannelPickerProps>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=ChannelPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelPicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkExistingModal/ChannelPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAqB,MAAM,OAAO,CAAC;AAS9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mEAAmE;IACnE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAwQhD,CAAC"}
|
|
@@ -21,8 +21,10 @@ interface LinkExistingModalProps {
|
|
|
21
21
|
*
|
|
22
22
|
* Both link endpoints ALWAYS post before linking; per product decision
|
|
23
23
|
* D2 the modal has no compose box and sends `messageText: ''`.
|
|
24
|
-
* Preview rides
|
|
25
|
-
* the
|
|
24
|
+
* Preview rides GET /link-preview (the real endpoint that closed the D1
|
|
25
|
+
* gap): the raw pasted URL goes up as `preview_link`, the response's
|
|
26
|
+
* canonical channelId/threadTs feed /link/existing-thread, and
|
|
27
|
+
* `viewerCanAccess: false` blocks linking with an access error.
|
|
26
28
|
*/
|
|
27
29
|
export declare const LinkExistingModal: FC<LinkExistingModalProps>;
|
|
28
30
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkExistingModal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkExistingModal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyB,MAAM,OAAO,CAAC;AAsClD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;4CACwC;IACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;uDACmD;IACnD,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD;4DACwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CA0UxD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BoxProps, StackProps } from '@hiver/hiver-ui-kit';
|
|
2
|
+
import { StyledComponent } from '@emotion/styled';
|
|
3
|
+
/**
|
|
4
|
+
* LinkExistingModal-only chrome (Figma 1705:92605 not-fetched /
|
|
5
|
+
* 1705:86410 fetched). The shared StartModal primitives stay untouched —
|
|
6
|
+
* these three exist because the link modal's layout differs from the
|
|
7
|
+
* start modal's: the field group sits inside its own bordered card, the
|
|
8
|
+
* footer carries a hairline divider, and the content area keeps a fixed
|
|
9
|
+
* minimum height so the not-yet-fetched state doesn't collapse.
|
|
10
|
+
*/
|
|
11
|
+
/** Bordered rounded card wrapping the tab's field group (label + URL
|
|
12
|
+
* input + fetched preview on the Thread tab). Radius matches the
|
|
13
|
+
* TabTrack's 12px rather than any t.radius step. */
|
|
14
|
+
export declare const FieldGroupCard: StyledComponent<BoxProps>;
|
|
15
|
+
/** Gives the tab content a stable, ample footprint: before a preview is
|
|
16
|
+
* fetched the card is short, and without this the modal collapses to
|
|
17
|
+
* hug it. The card grows into this space once a preview loads. */
|
|
18
|
+
export declare const TabPanel: StyledComponent<BoxProps>;
|
|
19
|
+
/** ModalFooter + the hairline divider above the actions. */
|
|
20
|
+
export declare const DividedFooter: StyledComponent<StackProps>;
|
|
21
|
+
//# sourceMappingURL=style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkExistingModal/style.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD;;;;;;;GAOG;AAEH;;qDAEqD;AACrD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,QAAQ,CAMpD,CAAC;AAEF;;mEAEmE;AACnE,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAI9C,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,UAAU,CAGrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/components/style.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,QAAQ,CAOpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAAC,UAAU,CAO3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAAe,CAAC,QAAQ,CAM7D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,QAAQ,CAQrD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,UAAU,CAatD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,WAAW,CAqBtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,WAAW,CA4B3D,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/components/style.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,QAAQ,CAOpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAAC,UAAU,CAO3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAAe,CAAC,QAAQ,CAM7D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,QAAQ,CAQrD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,UAAU,CAatD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,WAAW,CAqBtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,WAAW,CA4B3D,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,CAkBxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,QAAQ,CASnD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,QAAQ,CAa/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,QAAQ,CASpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,eAAe,CAiB7D,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAIhF,CAAC"}
|
|
@@ -12,7 +12,7 @@ export declare const SLACK_LINK_BY_ID_API: string;
|
|
|
12
12
|
export declare const SLACK_LINK_READ_API: string;
|
|
13
13
|
export declare const SLACK_LINK_EXISTING_THREAD_API: string;
|
|
14
14
|
export declare const SLACK_LINK_EXISTING_CHANNEL_API: string;
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const SLACK_LINK_PREVIEW_API: string;
|
|
16
16
|
export declare const SLACK_CHANNEL_MEMBERS_API: string;
|
|
17
17
|
export declare const SLACK_CHANNELS_API: string;
|
|
18
18
|
export declare const SLACK_WORKSPACE_USERS_API: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/constants/api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,gBAAgB,+BAA4B,CAAC;AAE1D,eAAO,MAAM,gCAAgC,EAAE,MAAqD,CAAC;AACrG,eAAO,MAAM,2BAA2B,EAAE,MAAgD,CAAC;AAE3F,eAAO,MAAM,kBAAkB,EAAE,MAAuC,CAAC;AAGzE,eAAO,MAAM,uBAAuB,EAAE,MAA0D,CAAC;AAEjG,eAAO,MAAM,+BAA+B,EAAE,MAAiE,CAAC;AAGhH,eAAO,MAAM,gBAAgB,EAAE,MAAmF,CAAC;AACnH,eAAO,MAAM,0CAA0C,EAAE,MAA+D,CAAC;AAKzH,eAAO,MAAM,eAAe,EAAE,MAAwE,CAAC;AAEvG,eAAO,MAAM,oBAAoB,EAAE,MAAgF,CAAC;AAGpH,eAAO,MAAM,mBAAmB,EAAE,MAAqF,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/constants/api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,gBAAgB,+BAA4B,CAAC;AAE1D,eAAO,MAAM,gCAAgC,EAAE,MAAqD,CAAC;AACrG,eAAO,MAAM,2BAA2B,EAAE,MAAgD,CAAC;AAE3F,eAAO,MAAM,kBAAkB,EAAE,MAAuC,CAAC;AAGzE,eAAO,MAAM,uBAAuB,EAAE,MAA0D,CAAC;AAEjG,eAAO,MAAM,+BAA+B,EAAE,MAAiE,CAAC;AAGhH,eAAO,MAAM,gBAAgB,EAAE,MAAmF,CAAC;AACnH,eAAO,MAAM,0CAA0C,EAAE,MAA+D,CAAC;AAKzH,eAAO,MAAM,eAAe,EAAE,MAAwE,CAAC;AAEvG,eAAO,MAAM,oBAAoB,EAAE,MAAgF,CAAC;AAGpH,eAAO,MAAM,mBAAmB,EAAE,MAAqF,CAAC;AAIxH,eAAO,MAAM,8BAA8B,EAAE,MAAmD,CAAC;AACjG,eAAO,MAAM,+BAA+B,EAAE,MAAoD,CAAC;AAMnG,eAAO,MAAM,sBAAsB,EAAE,MAA2C,CAAC;AAEjF,eAAO,MAAM,yBAAyB,EAAE,MAA8C,CAAC;AAMvF,eAAO,MAAM,kBAAkB,EAAE,MAAuC,CAAC;AASzE,eAAO,MAAM,yBAAyB,EAAE,MAAoC,CAAC"}
|
|
@@ -202,16 +202,40 @@ export interface LinkExistingChannelRequest {
|
|
|
202
202
|
messageText: string;
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
205
|
+
* Response of both /link/existing-* endpoints. Leaner than StartResponse
|
|
206
|
+
* (no channelId/externalThreadTs on the wire), and `postedMessage` is
|
|
207
|
+
* null when nothing was posted — which is the NORMAL case: the link
|
|
208
|
+
* modal sends `messageText: ''` (D2) and the backend then attaches
|
|
209
|
+
* silently instead of posting.
|
|
208
210
|
*/
|
|
209
|
-
export interface
|
|
210
|
-
/**
|
|
211
|
-
|
|
211
|
+
export interface LinkExistingResponse {
|
|
212
|
+
/** The new link's id — what the switcher/selection addresses. */
|
|
213
|
+
externalConversationId: string;
|
|
214
|
+
postedMessage: SlackMessage | null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Response of GET /link-preview?preview_link=<pasted URL> — renders the
|
|
218
|
+
* link-a-thread preview card before the rep confirms. The backend parses
|
|
219
|
+
* the URL; `channelId`/`threadTs` here are CANONICAL (it resolves a
|
|
220
|
+
* reply permalink to the thread root) and are what the subsequent
|
|
221
|
+
* /link/existing-thread call must send.
|
|
222
|
+
*/
|
|
223
|
+
export interface SlackLinkPreview {
|
|
224
|
+
channelId: string;
|
|
212
225
|
channelName: string;
|
|
226
|
+
isPrivate: boolean;
|
|
213
227
|
memberCount: number;
|
|
214
|
-
|
|
228
|
+
/** Root ts of the thread the pasted link resolves to. */
|
|
229
|
+
threadTs: string;
|
|
230
|
+
/** Snippet of the thread's first (root) message. */
|
|
231
|
+
previewText: string;
|
|
232
|
+
previewAuthor: string;
|
|
233
|
+
/** Slack ts of the previewed message. */
|
|
234
|
+
previewPostedAt: string;
|
|
235
|
+
/** false ⇒ the viewer can't see the target (e.g. private channel they
|
|
236
|
+
* aren't in) — the UI must block linking, not just hide the preview. */
|
|
237
|
+
viewerCanAccess: boolean;
|
|
238
|
+
viewerBlockReason: string | null;
|
|
215
239
|
}
|
|
216
240
|
export interface MemberResolutionReport {
|
|
217
241
|
added: Array<{
|
|
@@ -276,6 +300,9 @@ export interface SlackChannel {
|
|
|
276
300
|
name: string;
|
|
277
301
|
isPrivate: boolean;
|
|
278
302
|
isMember: boolean;
|
|
303
|
+
/** Optional on the wire — hide the "N Members" line when absent,
|
|
304
|
+
* never fabricate a count. */
|
|
305
|
+
memberCount?: number;
|
|
279
306
|
}
|
|
280
307
|
/**
|
|
281
308
|
* GET /channels response. The backend serves the picker from a pre-warmed Redis
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/types/wire.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/types/wire.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB;;uDAEmD;IACnD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;6EAEyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd;kCAC8B;IAC9B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAIzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;6BAGyB;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;yCAEqC;IACrC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B;;oCAEgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;sEACsE;AACtE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD;0EAC0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB;;;iDAG6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;gEAE4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;+CAS+C;AAC/C,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,WAAW,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAElH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;yDACqD;IACrD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB;6CACyC;IACzC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAK7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;0EACsE;IACtE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;6DACyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD;;;;gFAI4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;2DAI2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B;mDAC+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;uEAEuE;AACvE,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,mBAAmB,GACnB,sBAAsB,GACtB,uBAAuB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;2CACuC;IACvC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,SAAS,EAAE,cAAc,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB;yCACqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB;oEACgE;IAChE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;yEACqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;4CAC4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;4EACwE;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB;6EACyE;IACzE,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB;2DACuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,YAAY,CAAC;IAC5B,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb;sEACkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;kDAE8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB;mCAC+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;CACxC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Parse a pasted Slack thread permalink into
|
|
3
|
-
* pair
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Parse a pasted Slack thread permalink into a {channelId, threadTs}
|
|
3
|
+
* pair. Since GET /link-preview landed (closing the D1 gap), the BACKEND
|
|
4
|
+
* is the authority on parsing — it receives the raw URL as
|
|
5
|
+
* `preview_link` and returns the canonical ids, which are what
|
|
6
|
+
* /link/existing-thread is called with. This client-side parse survives
|
|
7
|
+
* as a pre-flight validity gate: obviously-invalid input is rejected
|
|
8
|
+
* with an inline error before any network call (TC-010).
|
|
6
9
|
*
|
|
7
10
|
* Permalink shapes Slack produces ("Copy link" on a message):
|
|
8
11
|
* https://<ws>.slack.com/archives/C0A21B3CD/p1727123456123456
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-thread-url.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/slack-thread-url.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slack-thread-url.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/slack-thread-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,oBAAoB,GAAG,IAuBxE,CAAC"}
|