@droppii-org/chat-sdk 0.4.0 → 0.4.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.
Files changed (51) hide show
  1. package/dist/components/conversation-detail/LeaveGroupBlockedModal.d.ts +12 -0
  2. package/dist/components/conversation-detail/LeaveGroupBlockedModal.d.ts.map +1 -0
  3. package/dist/components/conversation-detail/LeaveGroupBlockedModal.js +18 -0
  4. package/dist/components/conversation-detail/LeaveGroupConfirmModal.d.ts +16 -0
  5. package/dist/components/conversation-detail/LeaveGroupConfirmModal.d.ts.map +1 -0
  6. package/dist/components/conversation-detail/LeaveGroupConfirmModal.js +21 -0
  7. package/dist/components/conversation-detail/ThreadProfilePanel.d.ts.map +1 -1
  8. package/dist/components/conversation-detail/ThreadProfilePanel.js +12 -2
  9. package/dist/components/conversation-detail/index.d.ts +4 -0
  10. package/dist/components/conversation-detail/index.d.ts.map +1 -1
  11. package/dist/components/conversation-detail/index.js +2 -0
  12. package/dist/components/search-conversation/SearchAll.d.ts.map +1 -1
  13. package/dist/components/search-conversation/SearchAll.js +9 -3
  14. package/dist/components/search-conversation/SearchConversationAsGroups.d.ts +6 -0
  15. package/dist/components/search-conversation/SearchConversationAsGroups.d.ts.map +1 -0
  16. package/dist/components/search-conversation/SearchConversationAsGroups.js +20 -0
  17. package/dist/components/search-conversation/index.d.ts +2 -1
  18. package/dist/components/search-conversation/index.d.ts.map +1 -1
  19. package/dist/components/search-conversation/index.js +7 -0
  20. package/dist/components/search-conversation/item/SearchItemAsGroup.d.ts +8 -0
  21. package/dist/components/search-conversation/item/SearchItemAsGroup.d.ts.map +1 -0
  22. package/dist/components/search-conversation/item/SearchItemAsGroup.js +34 -0
  23. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  24. package/dist/hooks/global/useGlobalEvent.js +11 -1
  25. package/dist/hooks/group/useConversationGroups.d.ts +5 -1
  26. package/dist/hooks/group/useConversationGroups.d.ts.map +1 -1
  27. package/dist/hooks/group/useConversationGroups.js +3 -3
  28. package/dist/hooks/group/useLeaveGroupAction.d.ts +24 -0
  29. package/dist/hooks/group/useLeaveGroupAction.d.ts.map +1 -0
  30. package/dist/hooks/group/useLeaveGroupAction.js +79 -0
  31. package/dist/hooks/group/useQuitGroup.d.ts +6 -0
  32. package/dist/hooks/group/useQuitGroup.d.ts.map +1 -0
  33. package/dist/hooks/group/useQuitGroup.js +62 -0
  34. package/dist/hooks/search/useSearchGroups.d.ts +16 -0
  35. package/dist/hooks/search/useSearchGroups.d.ts.map +1 -0
  36. package/dist/hooks/search/useSearchGroups.js +65 -0
  37. package/dist/locales/vi/common.json +3 -0
  38. package/dist/locales/vi/conversation-inbox.json +14 -1
  39. package/dist/services/query.d.ts +1 -0
  40. package/dist/services/query.d.ts.map +1 -1
  41. package/dist/services/query.js +1 -0
  42. package/dist/services/routes.d.ts +1 -0
  43. package/dist/services/routes.d.ts.map +1 -1
  44. package/dist/services/routes.js +1 -0
  45. package/dist/store/conversation.d.ts.map +1 -1
  46. package/dist/store/conversation.js +3 -0
  47. package/dist/store/type.d.ts +2 -0
  48. package/dist/store/type.d.ts.map +1 -1
  49. package/dist/types/dto.d.ts +3 -1
  50. package/dist/types/dto.d.ts.map +1 -1
  51. package/package.json +1 -1
@@ -0,0 +1,12 @@
1
+ export interface LeaveGroupBlockedModalProps {
2
+ open: boolean;
3
+ onClose: () => void;
4
+ }
5
+ /**
6
+ * Figma blocking modal shown when a group owner taps "Rời nhóm": centered
7
+ * title and body in one padded block (no divider between them), then a
8
+ * full-width solid primary action.
9
+ */
10
+ declare const LeaveGroupBlockedModal: ({ open, onClose, }: LeaveGroupBlockedModalProps) => import("react/jsx-runtime").JSX.Element;
11
+ export default LeaveGroupBlockedModal;
12
+ //# sourceMappingURL=LeaveGroupBlockedModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeaveGroupBlockedModal.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/LeaveGroupBlockedModal.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,QAAA,MAAM,sBAAsB,GAAI,oBAG7B,2BAA2B,4CA6C7B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Modal, Button } from "antd";
4
+ import { useTranslation } from "react-i18next";
5
+ const MODAL_WIDTH = 400;
6
+ /**
7
+ * Figma blocking modal shown when a group owner taps "Rời nhóm": centered
8
+ * title and body in one padded block (no divider between them), then a
9
+ * full-width solid primary action.
10
+ */
11
+ const LeaveGroupBlockedModal = ({ open, onClose, }) => {
12
+ const { t } = useTranslation("conversation-inbox");
13
+ return (_jsx(Modal, { "data-cp-name": "LeaveGroupBlockedModal", open: open, onCancel: onClose, footer: null, closable: false, centered: true, width: MODAL_WIDTH, styles: {
14
+ content: { padding: 0, overflow: "hidden", borderRadius: 16 },
15
+ body: { padding: 0 },
16
+ }, children: _jsxs("div", { role: "alertdialog", "aria-label": t("thread_detail.leave_group.blocked_title"), className: "flex flex-col bg-white", children: [_jsxs("div", { className: "flex flex-col gap-3 p-4 text-center text-gray-900", children: [_jsx("p", { className: "text-[18px] font-bold leading-[1.6]", children: t("thread_detail.leave_group.blocked_title") }), _jsx("p", { className: "text-[16px] leading-[1.6] tracking-[0.16px]", children: t("thread_detail.leave_group.blocked_desc") })] }), _jsx("div", { className: "border-t border-gray-25" }), _jsx("div", { className: "p-4", children: _jsx(Button, { "data-testid": "leave-group-blocked-confirm", type: "primary", className: "h-12 w-full !rounded-lg !border-primary-400 !bg-primary-400 !text-[16px] !font-medium !text-white hover:!border-primary-300 hover:!bg-primary-300", onClick: onClose, children: t("thread_detail.leave_group.blocked_confirm") }) })] }) }));
17
+ };
18
+ export default LeaveGroupBlockedModal;
@@ -0,0 +1,16 @@
1
+ export interface LeaveGroupConfirmModalProps {
2
+ open: boolean;
3
+ loading: boolean;
4
+ isPublicGroup: boolean;
5
+ onCancel: () => void;
6
+ onConfirm: () => void;
7
+ }
8
+ /**
9
+ * Figma "Rời nhóm" confirmation: centered title over a divider, left-aligned
10
+ * body, then two equal-width actions with a solid danger primary. Kept local
11
+ * to the feature instead of the shared ConfirmModal, whose antd footer puts
12
+ * auto-width buttons on the right.
13
+ */
14
+ declare const LeaveGroupConfirmModal: ({ open, loading, isPublicGroup, onCancel, onConfirm, }: LeaveGroupConfirmModalProps) => import("react/jsx-runtime").JSX.Element;
15
+ export default LeaveGroupConfirmModal;
16
+ //# sourceMappingURL=LeaveGroupConfirmModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeaveGroupConfirmModal.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/LeaveGroupConfirmModal.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;GAKG;AACH,QAAA,MAAM,sBAAsB,GAAI,wDAM7B,2BAA2B,4CAiE7B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Modal, Button } from "antd";
4
+ import { Trans, useTranslation } from "react-i18next";
5
+ const MODAL_WIDTH = 400;
6
+ /**
7
+ * Figma "Rời nhóm" confirmation: centered title over a divider, left-aligned
8
+ * body, then two equal-width actions with a solid danger primary. Kept local
9
+ * to the feature instead of the shared ConfirmModal, whose antd footer puts
10
+ * auto-width buttons on the right.
11
+ */
12
+ const LeaveGroupConfirmModal = ({ open, loading, isPublicGroup, onCancel, onConfirm, }) => {
13
+ const { t } = useTranslation("conversation-inbox");
14
+ return (_jsx(Modal, { "data-cp-name": "LeaveGroupConfirmModal", open: open, onCancel: onCancel, footer: null, closable: false, centered: true, width: MODAL_WIDTH, maskClosable: !loading, keyboard: !loading, styles: {
15
+ content: { padding: 0, overflow: "hidden", borderRadius: 16 },
16
+ body: { padding: 0 },
17
+ }, children: _jsxs("div", { role: "alertdialog", "aria-label": t("thread_detail.leave_group.confirm_title"), className: "flex flex-col bg-white", children: [_jsx("div", { className: "border-b border-gray-25 p-4", children: _jsx("p", { className: "text-center text-[18px] font-bold leading-[1.6] text-gray-900", children: t("thread_detail.leave_group.confirm_title") }) }), _jsx("p", { className: "p-4 text-[16px] leading-[1.6] tracking-[0.16px] text-gray-900", children: _jsx(Trans, { t: t, i18nKey: isPublicGroup
18
+ ? "thread_detail.leave_group.confirm_desc_public"
19
+ : "thread_detail.leave_group.confirm_desc_private", components: { bold: _jsx("strong", { className: "font-bold" }) } }) }), _jsx("div", { className: "border-t border-gray-25" }), _jsxs("div", { className: "flex gap-3 p-4", children: [_jsx(Button, { "data-testid": "leave-group-cancel", className: "h-12 flex-1 !rounded-lg !border-gray-25 !bg-gray-25 !text-[16px] !font-medium !text-gray-900", onClick: onCancel, disabled: loading, children: t("thread_detail.leave_group.confirm_secondary") }), _jsx(Button, { "data-testid": "leave-group-confirm", type: "primary", className: "h-12 flex-1 !rounded-lg !border-danger-400 !bg-danger-400 !text-[16px] !font-medium !text-white hover:!border-danger-300 hover:!bg-danger-300", onClick: onConfirm, loading: loading, children: t("thread_detail.leave_group.confirm_primary") })] })] }) }));
20
+ };
21
+ export default LeaveGroupConfirmModal;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadProfilePanel.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/ThreadProfilePanel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAW7E,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAED,QAAA,MAAM,kBAAkB,GAAI,oDAKzB,uBAAuB,4CAmEzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ThreadProfilePanel.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/ThreadProfilePanel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAc7E,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAED,QAAA,MAAM,kBAAkB,GAAI,oDAKzB,uBAAuB,4CA8GzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -5,8 +5,12 @@ import clsx from "clsx";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { Icon } from "../../components/icon";
7
7
  import MediaEntryCard from "../../components/media-resources/MediaEntryCard";
8
+ import { PeerType } from "../../types/conversation";
8
9
  import { resolveConversationDisplayName, resolvePeerBadgeColor, resolvePeerBadgeLabel, } from "../../utils/conversation";
9
10
  import { useConversationAvatarUrl } from "../../hooks/conversation/useConversationAvatarUrl";
11
+ import { useLeaveGroupAction } from "../../hooks/group/useLeaveGroupAction";
12
+ import LeaveGroupBlockedModal from "./LeaveGroupBlockedModal";
13
+ import LeaveGroupConfirmModal from "./LeaveGroupConfirmModal";
10
14
  const PROFILE_AVATAR_SIZE = 96;
11
15
  const ThreadProfilePanel = ({ open, conversation, onClose, onSelectResource, }) => {
12
16
  const { t } = useTranslation("conversation-inbox");
@@ -14,8 +18,14 @@ const ThreadProfilePanel = ({ open, conversation, onClose, onSelectResource, })
14
18
  const avatarUrl = useConversationAvatarUrl(conversation);
15
19
  const peerType = conversation.peerType;
16
20
  const badgeLabel = resolvePeerBadgeLabel(peerType, t);
17
- return (_jsx(Drawer, { open: open, onClose: onClose, placement: "right", closeIcon: false, width: "100%", "data-cp-name": "ThreadProfilePanel", styles: {
21
+ const { canLeaveGroup, isPublicGroup, isLeaving, isConfirmOpen, isBlockedOpen, openLeaveGroup, confirmLeaveGroup, closeConfirm, closeBlocked, } = useLeaveGroupAction({
22
+ groupID: conversation.groupID,
23
+ conversationID: conversation.conversationID,
24
+ isGroupThread: peerType === PeerType.GROUP,
25
+ onLeft: onClose,
26
+ });
27
+ return (_jsxs(Drawer, { open: open, onClose: onClose, placement: "right", closeIcon: false, width: "100%", "data-cp-name": "ThreadProfilePanel", styles: {
18
28
  body: { padding: 0 },
19
- }, getContainer: false, forceRender: true, destroyOnHidden: true, children: _jsxs("div", { className: "flex h-full flex-col bg-gray-25", children: [_jsxs("div", { className: "flex w-full items-center bg-white p-2", children: [_jsx("button", { type: "button", "data-testid": "thread-profile-back", className: "flex shrink-0 cursor-pointer items-center justify-center p-2 text-primary-400", onClick: onClose, children: _jsx(Icon, { icon: "arrow-left-o", size: 24 }) }), _jsx("p", { className: "min-w-0 flex-1 truncate px-2 text-[18px] font-bold leading-[1.6] text-gray-900", children: t("thread_detail.options_title") })] }), _jsxs("div", { className: "flex flex-col items-center gap-2 bg-white px-0 py-2", children: [_jsxs("div", { className: "relative h-24 w-24 shrink-0", children: [_jsx(Avatar, { size: PROFILE_AVATAR_SIZE, src: avatarUrl || undefined, alt: displayName, className: "uppercase", children: (displayName === null || displayName === void 0 ? void 0 : displayName.charAt(0)) || "A" }), badgeLabel && (_jsx("span", { className: clsx("absolute bottom-1 right-0 flex h-[17px] items-center justify-center rounded-md border border-white px-1 text-[10px] font-semibold leading-3 text-white shadow-badge-inset", resolvePeerBadgeColor(peerType)), children: badgeLabel }))] }), _jsx("p", { className: "w-full truncate text-center text-[18px] font-bold leading-[1.6] text-gray-900", children: displayName })] }), _jsx("div", { className: "flex flex-col px-3 py-1.5", children: _jsx(MediaEntryCard, { onSelect: onSelectResource }) })] }) }));
29
+ }, getContainer: false, forceRender: true, destroyOnHidden: true, children: [_jsxs("div", { className: "flex h-full flex-col bg-gray-25", children: [_jsxs("div", { className: "flex w-full items-center bg-white p-2", children: [_jsx("button", { type: "button", "data-testid": "thread-profile-back", className: "flex shrink-0 cursor-pointer items-center justify-center p-2 text-primary-400", onClick: onClose, children: _jsx(Icon, { icon: "arrow-left-o", size: 24 }) }), _jsx("p", { className: "min-w-0 flex-1 truncate px-2 text-[18px] font-bold leading-[1.6] text-gray-900", children: t("thread_detail.options_title") })] }), _jsxs("div", { className: "flex flex-col items-center gap-2 bg-white px-0 py-2", children: [_jsxs("div", { className: "relative h-24 w-24 shrink-0", children: [_jsx(Avatar, { size: PROFILE_AVATAR_SIZE, src: avatarUrl || undefined, alt: displayName, className: "uppercase", children: (displayName === null || displayName === void 0 ? void 0 : displayName.charAt(0)) || "A" }), badgeLabel && (_jsx("span", { className: clsx("absolute bottom-1 right-0 flex h-[17px] items-center justify-center rounded-md border border-white px-1 text-[10px] font-semibold leading-3 text-white shadow-badge-inset", resolvePeerBadgeColor(peerType)), children: badgeLabel }))] }), _jsx("p", { className: "w-full truncate text-center text-[18px] font-bold leading-[1.6] text-gray-900", children: displayName })] }), _jsx("div", { className: "flex flex-col px-3 py-1.5", children: _jsx(MediaEntryCard, { onSelect: onSelectResource }) }), canLeaveGroup && (_jsx("div", { className: "flex flex-col px-3 py-1.5", children: _jsx("div", { className: "overflow-hidden rounded-xl bg-white", children: _jsxs("button", { type: "button", "data-testid": "thread-profile-leave-group", className: "flex w-full cursor-pointer items-center gap-2 p-4 text-danger-400", onClick: openLeaveGroup, children: [_jsx(Icon, { icon: "logout-o", size: 24 }), _jsx("span", { className: "text-[16px] font-medium leading-[1.6]", children: t("thread_detail.leave_group.action") })] }) }) }))] }), _jsx(LeaveGroupConfirmModal, { open: isConfirmOpen, loading: isLeaving, isPublicGroup: isPublicGroup, onCancel: closeConfirm, onConfirm: confirmLeaveGroup }), _jsx(LeaveGroupBlockedModal, { open: isBlockedOpen, onClose: closeBlocked })] }));
20
30
  };
21
31
  export default ThreadProfilePanel;
@@ -5,6 +5,10 @@ export type { ConversationDetailInputProps } from "./ConversationDetailInput";
5
5
  export { default as ConversationMessageList } from "./ConversationMessageList";
6
6
  export { default as PinnedMessageBar } from "./PinnedMessageBar";
7
7
  export { default as PinLimitModal } from "./PinLimitModal";
8
+ export { default as LeaveGroupConfirmModal } from "./LeaveGroupConfirmModal";
9
+ export type { LeaveGroupConfirmModalProps } from "./LeaveGroupConfirmModal";
10
+ export { default as LeaveGroupBlockedModal } from "./LeaveGroupBlockedModal";
11
+ export type { LeaveGroupBlockedModalProps } from "./LeaveGroupBlockedModal";
8
12
  export { default as ConversationMoreOptionPanel } from "./ConversationMoreOptionPanel";
9
13
  export type { ConversationMoreOptionPanelProps } from "./ConversationMoreOptionPanel";
10
14
  export { default as ConversationMoreOptionItem } from "./ConversationMoreOptionItem";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,YAAY,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACvF,YAAY,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,YAAY,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,YAAY,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,YAAY,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACvF,YAAY,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -3,5 +3,7 @@ export { default as ConversationDetailInput } from "./ConversationDetailInput";
3
3
  export { default as ConversationMessageList } from "./ConversationMessageList";
4
4
  export { default as PinnedMessageBar } from "./PinnedMessageBar";
5
5
  export { default as PinLimitModal } from "./PinLimitModal";
6
+ export { default as LeaveGroupConfirmModal } from "./LeaveGroupConfirmModal";
7
+ export { default as LeaveGroupBlockedModal } from "./LeaveGroupBlockedModal";
6
8
  export { default as ConversationMoreOptionPanel } from "./ConversationMoreOptionPanel";
7
9
  export { default as ConversationMoreOptionItem } from "./ConversationMoreOptionItem";
@@ -1 +1 @@
1
- {"version":3,"file":"SearchAll.d.ts","sourceRoot":"","sources":["../../../src/components/search-conversation/SearchAll.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,GAAG,CAAC;AAG7C,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACvD;AACD,QAAA,MAAM,qBAAqB,GAAI,+BAG5B,0BAA0B,4CAkH5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"SearchAll.d.ts","sourceRoot":"","sources":["../../../src/components/search-conversation/SearchAll.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,wBAAwB,EAAE,MAAM,GAAG,CAAC;AAG7C,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACvD;AACD,QAAA,MAAM,qBAAqB,GAAI,+BAG5B,0BAA0B,4CA2J5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -8,6 +8,8 @@ import { Icon } from "../../components/icon";
8
8
  import SearchItemAsMessage from "./item/SearchItemAsMessage";
9
9
  import { useGetSession } from "../../hooks/session/useGetSession";
10
10
  import SearchItemAsUser from "./item/SearchItemAsUser";
11
+ import SearchItemAsGroup from "./item/SearchItemAsGroup";
12
+ import { useSearchGroups } from "../../hooks/search/useSearchGroups";
11
13
  import { SearchConversationTabKey } from ".";
12
14
  import { PAGE_SIZE } from "../../constants";
13
15
  const SearchConversationAll = ({ searchTerm = "", setActiveKey, }) => {
@@ -25,13 +27,17 @@ const SearchConversationAll = ({ searchTerm = "", setActiveKey, }) => {
25
27
  },
26
28
  options: { pageSize: PAGE_SIZE.xs },
27
29
  });
30
+ const { groups, isLoading: isLoadingGroup, hasNextPage: hasNextPageGroup, } = useSearchGroups({
31
+ searchTerm: searchTerm.trim(),
32
+ pageSize: PAGE_SIZE.xs,
33
+ });
28
34
  if (searchTerm.trim() === "" ||
29
- (messages.length === 0 && sessions.length === 0)) {
35
+ (messages.length === 0 && sessions.length === 0 && groups.length === 0)) {
30
36
  return (_jsx("div", { className: "h-full overflow-auto", children: _jsx(Empty, { description: t("no_conversation") }) }));
31
37
  }
32
- if (isLoadingMessage || isLoadingSession) {
38
+ if (isLoadingMessage || isLoadingSession || isLoadingGroup) {
33
39
  return (_jsx("div", { className: "h-full overflow-auto flex items-center justify-center", children: _jsx(Spin, {}) }));
34
40
  }
35
- return (_jsxs("div", { className: "h-full overflow-auto", "data-cp-name": "SearchConversationAll", children: [sessions.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3 min-h-[32px]", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("users") }), _jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: clsx("p-0 gap-1", !hasNextPageSession && "invisible"), onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Users), children: t("see_more") })] }), _jsx("div", { children: sessions.map((session) => (_jsx(SearchItemAsUser, { session: session, searchTerm: searchTerm }, session.conversationId))) })] })), messages.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3 min-h-[32px]", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("messages") }), _jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: clsx("p-0 gap-1", !hasNextPageMessage && "invisible"), onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Messages), children: t("see_more") })] }), _jsx("div", { children: messages.map((message) => (_jsx(SearchItemAsMessage, { message: message.chatLog, searchTerm: searchTerm, displayTag: message.displayTag }, message.chatLog.clientMsgID))) })] }))] }));
41
+ return (_jsxs("div", { className: "h-full overflow-auto", "data-cp-name": "SearchConversationAll", children: [sessions.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3 min-h-[32px]", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("users") }), _jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: clsx("p-0 gap-1", !hasNextPageSession && "invisible"), onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Users), children: t("see_more") })] }), _jsx("div", { children: sessions.map((session) => (_jsx(SearchItemAsUser, { session: session, searchTerm: searchTerm }, session.conversationId))) })] })), messages.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3 min-h-[32px]", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("messages") }), _jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: clsx("p-0 gap-1", !hasNextPageMessage && "invisible"), onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Messages), children: t("see_more") })] }), _jsx("div", { children: messages.map((message) => (_jsx(SearchItemAsMessage, { message: message.chatLog, searchTerm: searchTerm, displayTag: message.displayTag }, message.chatLog.clientMsgID))) })] })), groups.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3 min-h-[32px]", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("groups") }), _jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: clsx("p-0 gap-1", !hasNextPageGroup && "invisible"), onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Groups), children: t("see_more") })] }), _jsx("div", { children: groups.map((group) => (_jsx(SearchItemAsGroup, { group: group, searchTerm: searchTerm }, group.conversationId))) })] }))] }));
36
42
  };
37
43
  export default SearchConversationAll;
@@ -0,0 +1,6 @@
1
+ interface SearchConversationAsGroupsProps {
2
+ searchTerm: string;
3
+ }
4
+ declare const SearchConversationAsGroups: (props: SearchConversationAsGroupsProps) => import("react/jsx-runtime").JSX.Element;
5
+ export default SearchConversationAsGroups;
6
+ //# sourceMappingURL=SearchConversationAsGroups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchConversationAsGroups.d.ts","sourceRoot":"","sources":["../../../src/components/search-conversation/SearchConversationAsGroups.tsx"],"names":[],"mappings":"AAQA,UAAU,+BAA+B;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,QAAA,MAAM,0BAA0B,GAAI,OAAO,+BAA+B,4CA0CzE,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Empty, Spin } from "antd";
4
+ import { useTranslation } from "react-i18next";
5
+ import InfiniteScroll from "react-infinite-scroll-component";
6
+ import SearchItemAsGroup from "./item/SearchItemAsGroup";
7
+ import { useSearchGroups } from "../../hooks/search/useSearchGroups";
8
+ const SearchConversationAsGroups = (props) => {
9
+ const { searchTerm = "" } = props;
10
+ const { t } = useTranslation();
11
+ const { groups, hasNextPage, fetchNextPage, isLoading } = useSearchGroups({
12
+ searchTerm,
13
+ });
14
+ if ((groups.length === 0 && !isLoading) || searchTerm.trim() === "")
15
+ return _jsx(Empty, { description: t("no_conversation") });
16
+ if (isLoading)
17
+ return (_jsx("div", { className: "flex items-center justify-center", children: _jsx(Spin, {}) }));
18
+ return (_jsx("div", { id: "scrollableSearchGroupsTab", className: "h-full overflow-auto", "data-cp-name": "SearchConversationAsGroups", children: _jsx(InfiniteScroll, { dataLength: groups.length, next: fetchNextPage, hasMore: hasNextPage, loader: _jsx("div", { className: "flex items-center justify-center py-2", children: _jsx(Spin, {}) }), scrollableTarget: "scrollableSearchGroupsTab", children: groups.map((item) => (_jsx(SearchItemAsGroup, { group: item, searchTerm: searchTerm }, item.conversationId))) }) }));
19
+ };
20
+ export default SearchConversationAsGroups;
@@ -2,7 +2,8 @@ export declare enum SearchConversationTabKey {
2
2
  All = "all",
3
3
  MyInbox = "myInbox",
4
4
  Users = "users",
5
- Messages = "messages"
5
+ Messages = "messages",
6
+ Groups = "groups"
6
7
  }
7
8
  interface SearchConversationProps {
8
9
  searchTerm: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/search-conversation/index.tsx"],"names":[],"mappings":"AAUA,oBAAY,wBAAwB;IAClC,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,QAAA,MAAM,kBAAkB,GAAI,gBAAgB,uBAAuB,4CAgDlE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/search-conversation/index.tsx"],"names":[],"mappings":"AAWA,oBAAY,wBAAwB;IAClC,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,QAAA,MAAM,kBAAkB,GAAI,gBAAgB,uBAAuB,4CAqDlE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -7,12 +7,14 @@ import SearchConversationAll from "./SearchAll";
7
7
  import SearchConversationMyInbox from "./SearchConversationMyInbox";
8
8
  import SearchConversationAsUsers from "./SearchConversationAsUsers";
9
9
  import SearchConversationAsMessages from "./SearchConversationAsMessages";
10
+ import SearchConversationAsGroups from "./SearchConversationAsGroups";
10
11
  export var SearchConversationTabKey;
11
12
  (function (SearchConversationTabKey) {
12
13
  SearchConversationTabKey["All"] = "all";
13
14
  SearchConversationTabKey["MyInbox"] = "myInbox";
14
15
  SearchConversationTabKey["Users"] = "users";
15
16
  SearchConversationTabKey["Messages"] = "messages";
17
+ SearchConversationTabKey["Groups"] = "groups";
16
18
  })(SearchConversationTabKey || (SearchConversationTabKey = {}));
17
19
  const SearchConversation = ({ searchTerm }) => {
18
20
  const { t } = useTranslation();
@@ -39,6 +41,11 @@ const SearchConversation = ({ searchTerm }) => {
39
41
  label: t("messages"),
40
42
  children: _jsx(SearchConversationAsMessages, { searchTerm: searchTerm }),
41
43
  },
44
+ {
45
+ key: SearchConversationTabKey.Groups,
46
+ label: t("groups"),
47
+ children: _jsx(SearchConversationAsGroups, { searchTerm: searchTerm }),
48
+ },
42
49
  ];
43
50
  }, [t, searchTerm]);
44
51
  return (_jsx("div", { className: "h-full", "data-cp-name": "SearchConversation", children: _jsx(Tabs, { defaultActiveKey: SearchConversationTabKey.All, items: items, className: "h-full", activeKey: activeKey, onChange: (key) => setActiveKey(key), destroyOnHidden: true }) }));
@@ -0,0 +1,8 @@
1
+ import type { ConversationGroupDisplayItem } from "../../../hooks/group/useConversationGroups";
2
+ interface SearchItemAsGroupProps {
3
+ group: ConversationGroupDisplayItem;
4
+ searchTerm: string;
5
+ }
6
+ declare const SearchItemAsGroup: (props: SearchItemAsGroupProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SearchItemAsGroup;
8
+ //# sourceMappingURL=SearchItemAsGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchItemAsGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/search-conversation/item/SearchItemAsGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAOxF,UAAU,sBAAsB;IAC9B,KAAK,EAAE,4BAA4B,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,iBAAiB,GAAI,OAAO,sBAAsB,4CAgEvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useTranslation } from "react-i18next";
4
+ import { GroupVisibility } from "@droppii-org/wasm-client-sdk";
5
+ import useConversationStore from "../../../store/conversation";
6
+ import { useChatContext } from "../../../context/ChatContext";
7
+ import { highlightSearch, sanitizeHtml } from "../../../utils/common";
8
+ import { Icon } from "../../../components/icon";
9
+ import GroupCompositeAvatar from "../../../components/group/GroupCompositeAvatar";
10
+ const SearchItemAsGroup = (props) => {
11
+ const { group, searchTerm = "" } = props;
12
+ const { t } = useTranslation();
13
+ const { onNavigate } = useChatContext();
14
+ const setConversationData = useConversationStore((state) => state.setConversationData);
15
+ const setSelectedConversationId = useConversationStore((state) => state.setSelectedConversationId);
16
+ const { conversation } = group;
17
+ const isPublic = group.visibility === GroupVisibility.Public;
18
+ const onPressItem = () => {
19
+ setConversationData(conversation);
20
+ setSelectedConversationId(conversation.conversationID);
21
+ const newSearchParams = new URLSearchParams(window.location.search);
22
+ newSearchParams.set("threadId", conversation.conversationID);
23
+ newSearchParams.delete("userId");
24
+ newSearchParams.delete("groupId");
25
+ newSearchParams.delete("botId");
26
+ onNavigate === null || onNavigate === void 0 ? void 0 : onNavigate(`${window.location.pathname}?${newSearchParams.toString()}`);
27
+ };
28
+ return (_jsxs("div", { className: "py-3 px-2 flex items-center gap-3 hover:bg-gray-100 hover:rounded-sm cursor-pointer border-b mx-1", onClick: onPressItem, "data-cp-name": "SearchItemAsGroup", children: [_jsx(GroupCompositeAvatar, { groupID: group.groupId, faceURL: conversation.faceURL, groupName: conversation.showName, size: 48 }), _jsxs("div", { className: "flex flex-col flex-1 min-w-0 gap-0.5", children: [_jsx("p", { className: "text-sm font-semibold truncate", dangerouslySetInnerHTML: {
29
+ __html: sanitizeHtml(highlightSearch(conversation.showName || "", searchTerm)),
30
+ } }), _jsxs("div", { className: "flex items-center gap-1.5 text-xs text-gray-500", children: [_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Icon, { icon: isPublic ? "globe-o" : "lock-o", size: 12 }), isPublic
31
+ ? t("group_visibility_public")
32
+ : t("group_visibility_private")] }), typeof group.memberCount === "number" && (_jsxs(_Fragment, { children: [_jsx("span", { children: "\u00B7" }), _jsx("span", { children: t("member_count", { count: group.memberCount }) })] }))] })] })] }));
33
+ };
34
+ export default SearchItemAsGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"useGlobalEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/global/useGlobalEvent.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,cAAc,YAmhB1B,CAAC"}
1
+ {"version":3,"file":"useGlobalEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/global/useGlobalEvent.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,cAAc,YA6hB1B,CAAC"}
@@ -252,7 +252,13 @@ export const useGlobalEvent = () => {
252
252
  const leftGroupHandler = (data, reason) => {
253
253
  const currentConversation = useConversationStore.getState().currentConversation;
254
254
  const isCurrentGroupOpen = (currentConversation === null || currentConversation === void 0 ? void 0 : currentConversation.groupID) === data.groupID;
255
- const staysViewOnly = reason === "kicked" && data.visibility === GroupVisibility.Public;
255
+ // A voluntary leave arrives as OnJoinedGroupDeleted on the leaver's own
256
+ // client too. It must not fall into the public-group view-only branch —
257
+ // AC-6 requires navigating to My Inbox regardless of visibility.
258
+ const isSelfLeave = useConversationStore.getState().selfLeftGroupID === data.groupID;
259
+ const staysViewOnly = !isSelfLeave &&
260
+ reason === "kicked" &&
261
+ data.visibility === GroupVisibility.Public;
256
262
  // The kicked/disbanded group's own cached membership is stale the
257
263
  // instant this event fires, whether or not it's currently open —
258
264
  // nonMemberGroupID guards against a still-in-flight fetch resurrecting
@@ -275,6 +281,10 @@ export const useGlobalEvent = () => {
275
281
  if (selfDisbandedGroupID === data.groupID) {
276
282
  useConversationStore.getState().setSelfDisbandedGroupID(null);
277
283
  }
284
+ else if (isSelfLeave) {
285
+ // The leaver chose this — useQuitGroup already navigates and toasts.
286
+ useConversationStore.getState().setSelfLeftGroupID(null);
287
+ }
278
288
  else {
279
289
  useConversationStore.getState().showRemovedFromGroupModal();
280
290
  }
@@ -1,4 +1,4 @@
1
- import { ConversationItem } from "@droppii-org/wasm-client-sdk";
1
+ import { ConversationItem, GroupVisibility } from "@droppii-org/wasm-client-sdk";
2
2
  import { BaseResponse, IConversationGroupItem } from "../../types/dto";
3
3
  interface UseConversationGroupsParams {
4
4
  enabled?: boolean;
@@ -8,7 +8,11 @@ export interface ConversationGroupDisplayItem {
8
8
  groupId: string;
9
9
  conversationId: string;
10
10
  conversation: ConversationItem;
11
+ visibility?: GroupVisibility;
12
+ memberCount?: number;
11
13
  }
14
+ export declare const buildFallbackConversation: (group: IConversationGroupItem) => ConversationItem;
15
+ export declare const syncGroupConversationsToStore: (groups: IConversationGroupItem[]) => Promise<void>;
12
16
  export declare const useConversationGroups: ({ enabled, pageSize, }?: UseConversationGroupsParams) => {
13
17
  groups: ConversationGroupDisplayItem[];
14
18
  fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<BaseResponse<IConversationGroupItem[]>, unknown>, Error>>;
@@ -1 +1 @@
1
- {"version":3,"file":"useConversationGroups.d.ts","sourceRoot":"","sources":["../../../src/hooks/group/useConversationGroups.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAe,MAAM,8BAA8B,CAAC;AAK7E,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAKnE,UAAU,2BAA2B;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAiED,eAAO,MAAM,qBAAqB,GAAI,yBAGnC,2BAAgC;;;;;;CAoElC,CAAC"}
1
+ {"version":3,"file":"useConversationGroups.d.ts","sourceRoot":"","sources":["../../../src/hooks/group/useConversationGroups.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,eAAe,EAEhB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAKnE,UAAU,2BAA2B;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;IAG/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,eAAO,MAAM,yBAAyB,GACpC,OAAO,sBAAsB,KAC5B,gBAyBD,CAAC;AAMH,eAAO,MAAM,6BAA6B,GACxC,QAAQ,sBAAsB,EAAE,kBAuBjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,yBAGnC,2BAAgC;;;;;;CAoElC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { useMemo } from "react";
3
3
  import { useInfiniteQuery } from "@tanstack/react-query";
4
- import { SessionType } from "@droppii-org/wasm-client-sdk";
4
+ import { SessionType, } from "@droppii-org/wasm-client-sdk";
5
5
  import { apiInstance } from "../../services/api";
6
6
  import { ENDPOINTS } from "../../services/routes";
7
7
  import { QUERY_KEYS } from "../../services/query";
@@ -13,7 +13,7 @@ import { DChatSDK } from "../../constants/sdk";
13
13
  // a brand new group (e.g. right after create-group, or first time this list
14
14
  // loads) — carries just enough for ConversationByGroupItem to render
15
15
  // something instead of the row disappearing while the sync is in flight.
16
- const buildFallbackConversation = (group) => ({
16
+ export const buildFallbackConversation = (group) => ({
17
17
  conversationID: group.conversationId,
18
18
  conversationType: SessionType.Group,
19
19
  userID: "",
@@ -43,7 +43,7 @@ const buildFallbackConversation = (group) => ({
43
43
  // metadata (no latestMsg) — sync each group's full ConversationItem (which
44
44
  // carries latestMsg/latestMsgSendTime/unreadCount) into the shared
45
45
  // conversationList store via the SDK, then join on conversationId.
46
- const syncGroupConversationsToStore = async (groups) => {
46
+ export const syncGroupConversationsToStore = async (groups) => {
47
47
  const currentList = useConversationStore.getState().conversationList;
48
48
  const newGroups = groups.filter((group) => !currentList.some((conversation) => conversation.conversationID === group.conversationId));
49
49
  if (!newGroups.length)
@@ -0,0 +1,24 @@
1
+ interface UseLeaveGroupActionParams {
2
+ groupID?: string;
3
+ conversationID?: string;
4
+ isGroupThread: boolean;
5
+ onLeft?: () => void;
6
+ }
7
+ /**
8
+ * Owns the "Rời nhóm" flow: who may leave, which modal opens, and the
9
+ * quitGroup call itself. Kept out of the panel so the panel stays
10
+ * presentational as more group-info rows land from sibling tickets.
11
+ */
12
+ export declare const useLeaveGroupAction: ({ groupID, conversationID, isGroupThread, onLeft, }: UseLeaveGroupActionParams) => {
13
+ canLeaveGroup: boolean;
14
+ isPublicGroup: boolean;
15
+ isLeaving: boolean;
16
+ isConfirmOpen: boolean;
17
+ isBlockedOpen: boolean;
18
+ openLeaveGroup: () => void;
19
+ confirmLeaveGroup: () => Promise<void>;
20
+ closeConfirm: () => void;
21
+ closeBlocked: () => void;
22
+ };
23
+ export {};
24
+ //# sourceMappingURL=useLeaveGroupAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLeaveGroupAction.d.ts","sourceRoot":"","sources":["../../../src/hooks/group/useLeaveGroupAction.ts"],"names":[],"mappings":"AAUA,UAAU,yBAAyB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,qDAKjC,yBAAyB;;;;;;;;;;CA+E3B,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { useState } from "react";
3
+ import { message } from "antd";
4
+ import { useTranslation } from "react-i18next";
5
+ import { GroupMemberRole, GroupVisibility } from "@droppii-org/wasm-client-sdk";
6
+ import useConversationStore from "../../store/conversation";
7
+ import useAuthStore from "../../store/auth";
8
+ import { useQuitGroup } from "./useQuitGroup";
9
+ /**
10
+ * Owns the "Rời nhóm" flow: who may leave, which modal opens, and the
11
+ * quitGroup call itself. Kept out of the panel so the panel stays
12
+ * presentational as more group-info rows land from sibling tickets.
13
+ */
14
+ export const useLeaveGroupAction = ({ groupID, conversationID, isGroupThread, onLeft, }) => {
15
+ const { t } = useTranslation("conversation-inbox");
16
+ const currentGroupInfo = useConversationStore((state) => groupID ? state.currentGroupInfo.get(groupID) : undefined);
17
+ const currentMemberInGroup = useConversationStore((state) => groupID ? state.currentMemberInGroup.get(groupID) : undefined);
18
+ const isViewOnlyMember = useConversationStore((state) => state.isViewOnlyMember);
19
+ // useAuthStore.userID is the canonical self ID here (ChatContext populates
20
+ // it on init). useUserStore.selfInfo is never filled in this host, so its
21
+ // `id` is undefined — which is also why roleLevel below stays undefined.
22
+ const selfUserID = useAuthStore((state) => state.userID);
23
+ const { mutateAsync: quitGroup, isPending: isLeaving } = useQuitGroup();
24
+ const [isConfirmOpen, setIsConfirmOpen] = useState(false);
25
+ const [isBlockedOpen, setIsBlockedOpen] = useState(false);
26
+ // Only a current member of a group thread can leave it. A view-only member
27
+ // of a public group already left / was removed, so the row stays hidden.
28
+ // currentGroupInfo is required too: without it we can classify neither the
29
+ // owner (who must be blocked) nor the visibility (which picks the copy), and
30
+ // guessing either way is worse than waiting for the fetch.
31
+ const canLeaveGroup = isGroupThread &&
32
+ !!groupID &&
33
+ !!currentMemberInGroup &&
34
+ !!currentGroupInfo &&
35
+ !isViewOnlyMember;
36
+ // ownerUserID is the reliable source. roleLevel is not: it comes only from
37
+ // getCurrentMemberInGroupByReq, which queries by useUserStore.selfInfo.id —
38
+ // undefined in this host — so the member entry is written by
39
+ // getSelfGroupPermissionByReq instead and carries no roleLevel at all.
40
+ // Kept as a fallback for hosts that do populate selfInfo.
41
+ const isGroupOwner = (currentGroupInfo === null || currentGroupInfo === void 0 ? void 0 : currentGroupInfo.ownerUserID) && selfUserID
42
+ ? currentGroupInfo.ownerUserID === selfUserID
43
+ : (currentMemberInGroup === null || currentMemberInGroup === void 0 ? void 0 : currentMemberInGroup.roleLevel) === GroupMemberRole.Owner;
44
+ const isPublicGroup = (currentGroupInfo === null || currentGroupInfo === void 0 ? void 0 : currentGroupInfo.visibility) === GroupVisibility.Public;
45
+ // The owner must transfer ownership first (BR-002) — they get the blocking
46
+ // modal instead of the confirmation one, and nothing changes.
47
+ const openLeaveGroup = () => {
48
+ if (isGroupOwner) {
49
+ setIsBlockedOpen(true);
50
+ return;
51
+ }
52
+ setIsConfirmOpen(true);
53
+ };
54
+ const confirmLeaveGroup = async () => {
55
+ if (!groupID) {
56
+ return;
57
+ }
58
+ try {
59
+ await quitGroup({ groupID, conversationID, isPublicGroup });
60
+ setIsConfirmOpen(false);
61
+ onLeft === null || onLeft === void 0 ? void 0 : onLeft();
62
+ message.success(t("thread_detail.leave_group.success"));
63
+ }
64
+ catch (_error) {
65
+ message.error(t("thread_detail.leave_group.failed"));
66
+ }
67
+ };
68
+ return {
69
+ canLeaveGroup,
70
+ isPublicGroup,
71
+ isLeaving,
72
+ isConfirmOpen,
73
+ isBlockedOpen,
74
+ openLeaveGroup,
75
+ confirmLeaveGroup,
76
+ closeConfirm: () => setIsConfirmOpen(false),
77
+ closeBlocked: () => setIsBlockedOpen(false),
78
+ };
79
+ };
@@ -0,0 +1,6 @@
1
+ export declare const useQuitGroup: () => import("@tanstack/react-query").UseMutationResult<unknown, Error, {
2
+ groupID: string;
3
+ conversationID?: string;
4
+ isPublicGroup?: boolean;
5
+ }, unknown>;
6
+ //# sourceMappingURL=useQuitGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQuitGroup.d.ts","sourceRoot":"","sources":["../../../src/hooks/group/useQuitGroup.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY;aASV,MAAM;qBACE,MAAM;oBACP,OAAO;WA6D5B,CAAC"}
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ import { useMutation } from "@tanstack/react-query";
3
+ import { DChatSDK } from "../../constants/sdk";
4
+ import useConversationStore from "../../store/conversation";
5
+ import emitter from "../../utils/events";
6
+ import { useChatContext } from "../../context/ChatContext";
7
+ export const useQuitGroup = () => {
8
+ const { onNavigate } = useChatContext();
9
+ return useMutation({
10
+ mutationFn: async ({ groupID, conversationID, isPublicGroup, }) => {
11
+ // Set before the request — OnJoinedGroupDeleted also fires on our own
12
+ // client, with no ordering guarantee vs. this promise resolving. Without
13
+ // the flag leftGroupHandler would show the "removed from group" modal.
14
+ useConversationStore.getState().setSelfLeftGroupID(groupID);
15
+ const { data } = await DChatSDK.quitGroup(groupID);
16
+ // A public group stays in My Inbox after leaving — the user keeps
17
+ // view-only access to it, same as leftGroupHandler's staysViewOnly path.
18
+ //
19
+ // A private one must disappear, and that needs an explicit local
20
+ // cleanup: the server drops the membership but the wasm SDK keeps the
21
+ // row in its local DB, and My Inbox reads from there
22
+ // (getConversationListSplit), so the group returns on the next reload.
23
+ // hideConversation is the only SDK call that drops the row from that
24
+ // list — deleteConversationAndDeleteAllMsg just wipes the messages and
25
+ // leaves the conversation behind. Best-effort: the leave already
26
+ // succeeded server-side, and OnJoinedGroupDeleted may have cleaned up
27
+ // first, which makes this reject with RecordNotFound.
28
+ if (conversationID && !isPublicGroup) {
29
+ try {
30
+ await DChatSDK.hideConversation(conversationID);
31
+ }
32
+ catch (error) {
33
+ console.error("Failed to hide the local conversation after leaving the group:", error);
34
+ }
35
+ }
36
+ emitter.emit("GROUP_MEMBERS_CHANGED");
37
+ return data;
38
+ },
39
+ onSuccess: (_data, variables) => {
40
+ useConversationStore.getState().clearSelectedConversation();
41
+ // Same rule as above: only a private group leaves the inbox.
42
+ if (!variables.isPublicGroup) {
43
+ useConversationStore.setState((state) => ({
44
+ conversationList: state.conversationList.filter((conversation) => conversation.groupID !== variables.groupID),
45
+ }));
46
+ }
47
+ // Clearing the store alone won't navigate away — URL threadId must
48
+ // also clear, or DeskConversationList re-selects it (see PR #226).
49
+ const newSearchParams = new URLSearchParams(window.location.search);
50
+ newSearchParams.delete("threadId");
51
+ newSearchParams.delete("userId");
52
+ newSearchParams.delete("groupId");
53
+ newSearchParams.delete("botId");
54
+ const query = newSearchParams.toString();
55
+ const pathname = window.location.pathname;
56
+ onNavigate === null || onNavigate === void 0 ? void 0 : onNavigate(query ? `${pathname}?${query}` : pathname);
57
+ },
58
+ onError: () => {
59
+ useConversationStore.getState().setSelfLeftGroupID(null);
60
+ },
61
+ });
62
+ };
@@ -0,0 +1,16 @@
1
+ import { BaseResponse, IConversationGroupItem } from "../../types/dto";
2
+ import { type ConversationGroupDisplayItem } from "../../hooks/group/useConversationGroups";
3
+ interface UseSearchGroupsParams {
4
+ searchTerm: string;
5
+ enabled?: boolean;
6
+ pageSize?: number;
7
+ }
8
+ export declare const useSearchGroups: ({ searchTerm, enabled, pageSize, }: UseSearchGroupsParams) => {
9
+ groups: ConversationGroupDisplayItem[];
10
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<BaseResponse<IConversationGroupItem[]>, unknown>, Error>>;
11
+ hasNextPage: boolean;
12
+ isFetchingNextPage: boolean;
13
+ isLoading: boolean;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=useSearchGroups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSearchGroups.d.ts","sourceRoot":"","sources":["../../../src/hooks/search/useSearchGroups.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,qCAAqC,CAAC;AAE7C,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,GAAI,oCAI7B,qBAAqB;;;;;;CAmEvB,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ import { useInfiniteQuery } from "@tanstack/react-query";
4
+ import { apiInstance } from "../../services/api";
5
+ import { ENDPOINTS } from "../../services/routes";
6
+ import { QUERY_KEYS } from "../../services/query";
7
+ import { PAGE_SIZE } from "../../constants";
8
+ import useAuthStore from "../../store/auth";
9
+ import useConversationStore from "../../store/conversation";
10
+ import { buildFallbackConversation, syncGroupConversationsToStore, } from "../../hooks/group/useConversationGroups";
11
+ export const useSearchGroups = ({ searchTerm, enabled = true, pageSize = PAGE_SIZE.medium, }) => {
12
+ const trimmedSearchTerm = searchTerm.trim();
13
+ const conversationList = useConversationStore((state) => state.conversationList);
14
+ const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading } = useInfiniteQuery({
15
+ initialPageParam: 1,
16
+ queryKey: [QUERY_KEYS.SEARCH_CONVERSATION_GROUPS, trimmedSearchTerm, pageSize],
17
+ queryFn: async ({ pageParam = 1 }) => {
18
+ var _a, _b;
19
+ const applicationType = useAuthStore.getState().applicationType;
20
+ const res = await apiInstance.get(ENDPOINTS.chatService.searchConversationGroups, {
21
+ params: {
22
+ page: pageParam,
23
+ pageSize,
24
+ applicationType,
25
+ searchTerm: trimmedSearchTerm,
26
+ },
27
+ });
28
+ if ((_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.length) {
29
+ void syncGroupConversationsToStore(res.data.data).catch((error) => {
30
+ console.error("syncGroupConversationsToStore", error);
31
+ });
32
+ }
33
+ return res.data;
34
+ },
35
+ getNextPageParam: (lastPage) => {
36
+ var _a, _b;
37
+ const dataLength = ((_a = lastPage === null || lastPage === void 0 ? void 0 : lastPage.data) === null || _a === void 0 ? void 0 : _a.length) || 0;
38
+ const currentPage = ((_b = lastPage === null || lastPage === void 0 ? void 0 : lastPage.pageable) === null || _b === void 0 ? void 0 : _b.pageNumber) || 1;
39
+ return dataLength < pageSize ? undefined : currentPage + 1;
40
+ },
41
+ enabled: enabled && trimmedSearchTerm !== "",
42
+ });
43
+ const groups = useMemo(() => {
44
+ if (!data)
45
+ return [];
46
+ const allItems = data.pages.flatMap((page) => page.data);
47
+ return allItems.map((group) => {
48
+ const syncedConversation = conversationList === null || conversationList === void 0 ? void 0 : conversationList.find((conversation) => conversation.conversationID === group.conversationId);
49
+ return {
50
+ groupId: group.groupId,
51
+ conversationId: group.conversationId,
52
+ conversation: syncedConversation !== null && syncedConversation !== void 0 ? syncedConversation : buildFallbackConversation(group),
53
+ visibility: group.visibility,
54
+ memberCount: group.memberCount,
55
+ };
56
+ });
57
+ }, [data, conversationList]);
58
+ return {
59
+ groups,
60
+ fetchNextPage,
61
+ hasNextPage,
62
+ isFetchingNextPage,
63
+ isLoading,
64
+ };
65
+ };
@@ -17,6 +17,9 @@
17
17
  "all": "Tất cả",
18
18
  "users": "Người dùng",
19
19
  "messages": "Tin nhắn",
20
+ "groups": "Nhóm",
21
+ "group_visibility_private": "Riêng tư",
22
+ "group_visibility_public": "Công khai",
20
23
  "no_conversation": "Không tìm thấy cuộc trò chuyện",
21
24
  "download": "Tải xuống",
22
25
  "active_sessions": "Đang mở",
@@ -99,6 +99,19 @@
99
99
  "cancel": "Tiếp tục",
100
100
  "close_failed": "Không thể kết thúc phiên hỗ trợ. Vui lòng thử lại."
101
101
  }
102
+ },
103
+ "leave_group": {
104
+ "action": "Rời nhóm",
105
+ "confirm_title": "Rời nhóm?",
106
+ "confirm_desc_private": "Sau khi rời nhóm, bạn sẽ không thể xem tin nhắn từ cuộc trò chuyện này nữa. Bạn có chắc chắn muốn <bold>rời khỏi nhóm</bold>?",
107
+ "confirm_desc_public": "Sau khi rời nhóm, bạn sẽ không thể nhắn tin hay nhận thông báo từ cuộc trò chuyện này nữa. Bạn có chắc chắn muốn <bold>rời khỏi nhóm</bold>?",
108
+ "confirm_primary": "Rời nhóm",
109
+ "confirm_secondary": "Ở lại nhóm",
110
+ "blocked_title": "Không thể rời nhóm",
111
+ "blocked_desc": "Bạn không thể rời nhóm khi đang là chủ nhóm, vui lòng chuyển quyền chủ nhóm cho thành viên khác và thử lại!",
112
+ "blocked_confirm": "Đã hiểu",
113
+ "success": "Bạn đã rời khỏi nhóm",
114
+ "failed": "Không thể rời nhóm. Vui lòng thử lại."
102
115
  }
103
116
  },
104
117
  "link_preview": {
@@ -106,4 +119,4 @@
106
119
  "remove": "Xóa xem trước liên kết"
107
120
  },
108
121
  "link_open_error": "Không thể mở liên kết. Vui lòng thử lại."
109
- }
122
+ }
@@ -39,6 +39,7 @@ export declare const QUERY_KEYS: {
39
39
  GET_MESSAGE_RESOURCES: string;
40
40
  GET_GROUP_CANDIDATES: string;
41
41
  GET_CONVERSATION_GROUPS: string;
42
+ SEARCH_CONVERSATION_GROUPS: string;
42
43
  GET_BLACK_LIST: string;
43
44
  DELETE_CONVERSATION: string;
44
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/services/query.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CtB,CAAC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/services/query.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CtB,CAAC"}
@@ -39,6 +39,7 @@ export const QUERY_KEYS = {
39
39
  GET_MESSAGE_RESOURCES: "GET_MESSAGE_RESOURCES",
40
40
  GET_GROUP_CANDIDATES: "GET_GROUP_CANDIDATES",
41
41
  GET_CONVERSATION_GROUPS: "GET_CONVERSATION_GROUPS",
42
+ SEARCH_CONVERSATION_GROUPS: "SEARCH_CONVERSATION_GROUPS",
42
43
  GET_BLACK_LIST: "GET_BLACK_LIST",
43
44
  DELETE_CONVERSATION: "DELETE_CONVERSATION",
44
45
  };
@@ -28,6 +28,7 @@ export declare const ENDPOINTS: {
28
28
  leaveConversation: (conversationId: string) => string;
29
29
  getConversationsImDetail: string;
30
30
  getConversationGroups: string;
31
+ searchConversationGroups: string;
31
32
  createConversation: string;
32
33
  getConversationDetail: (conversationId: string) => string;
33
34
  runBotFlow: (conversationId: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/services/routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;mCAMS,MAAM;;0CAGC,MAAM,UAAU,MAAM;6BAEnC,MAAM;;oDAEiB,MAAM;uCAEnB,MAAM;kCAEX,MAAM;;oCAGJ,MAAM;mCAEP,MAAM;uCAEF,MAAM;;;;;;;;;iCAUZ,MAAM;4CAEK,MAAM;;;;gDAKF,MAAM;qCAEjB,MAAM;uCAEJ,MAAM;0CAEH,MAAM;yCAEP,MAAM;8BAEjB,MAAM;wCACI,MAAM;;;;;;;;;;;;;CAczC,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/services/routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;mCAMS,MAAM;;0CAGC,MAAM,UAAU,MAAM;6BAEnC,MAAM;;oDAEiB,MAAM;uCAEnB,MAAM;kCAEX,MAAM;;oCAGJ,MAAM;mCAEP,MAAM;uCAEF,MAAM;;;;;;;;;iCAUZ,MAAM;4CAEK,MAAM;;;;;gDAOF,MAAM;qCAEjB,MAAM;uCAEJ,MAAM;0CAEH,MAAM;yCAEP,MAAM;8BAEjB,MAAM;wCACI,MAAM;;;;;;;;;;;;;CAczC,CAAC"}
@@ -28,6 +28,7 @@ export const ENDPOINTS = {
28
28
  leaveConversation: (conversationId) => `chat-service/v1/crm/conversations/${conversationId}/leave`,
29
29
  getConversationsImDetail: "/chat-service/v1/crm/conversations/im-detail",
30
30
  getConversationGroups: "/chat-service/v1/crm/conversations/groups",
31
+ searchConversationGroups: "/chat-service/v1/crm/conversations/groups/search",
31
32
  createConversation: "/chat-service/v1/app/conversations",
32
33
  getConversationDetail: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}`,
33
34
  runBotFlow: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}/bot-flows/run`,
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAM3C,QAAA,MAAM,oBAAoB,gFAgWvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAM3C,QAAA,MAAM,oBAAoB,gFAmWvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
@@ -260,6 +260,7 @@ const useConversationStore = create((set, get) => ({
260
260
  currentMemberInGroup: new Map(),
261
261
  removedFromGroupModalOpen: false,
262
262
  selfDisbandedGroupID: null,
263
+ selfLeftGroupID: null,
263
264
  isViewOnlyMember: false,
264
265
  });
265
266
  },
@@ -297,6 +298,8 @@ const useConversationStore = create((set, get) => ({
297
298
  hideRemovedFromGroupModal: () => set({ removedFromGroupModalOpen: false }),
298
299
  selfDisbandedGroupID: null,
299
300
  setSelfDisbandedGroupID: (groupID) => set({ selfDisbandedGroupID: groupID }),
301
+ selfLeftGroupID: null,
302
+ setSelfLeftGroupID: (groupID) => set({ selfLeftGroupID: groupID }),
300
303
  isViewOnlyMember: false,
301
304
  setIsViewOnlyMember: (value) => set({ isViewOnlyMember: value }),
302
305
  nonMemberGroupID: null,
@@ -78,6 +78,8 @@ export interface ConversationStore {
78
78
  hideRemovedFromGroupModal: () => void;
79
79
  selfDisbandedGroupID: string | null;
80
80
  setSelfDisbandedGroupID: (groupID: string | null) => void;
81
+ selfLeftGroupID: string | null;
82
+ setSelfLeftGroupID: (groupID: string | null) => void;
81
83
  isViewOnlyMember: boolean;
82
84
  setIsViewOnlyMember: (value: boolean) => void;
83
85
  nonMemberGroupID: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/store/type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/store/type.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MessageItem, MessageType } from "@droppii-org/wasm-client-sdk";
1
+ import { GroupVisibility, MessageItem, MessageType } from "@droppii-org/wasm-client-sdk";
2
2
  import { SessionStatusItem, TagItem } from "../store/type";
3
3
  import { BusinessNotificationType, CannedResponseVisibleScope, DChatApplicationType, SessionStatus, SessionTag } from "./chat";
4
4
  import type { DChatPlatform } from "./chat";
@@ -224,6 +224,8 @@ export interface IConversationGroupItem {
224
224
  groupAvatar: string | null;
225
225
  applicationType: DChatApplicationType;
226
226
  latestMessageAt: string | null;
227
+ visibility?: GroupVisibility;
228
+ memberCount?: number;
227
229
  }
228
230
  export interface ICannedResponseItem {
229
231
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/types/dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/types/dto.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-sdk",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Droppii React Chat SDK",
5
5
  "repository": {
6
6
  "type": "git",