k2-im 0.1.16 → 0.1.17

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/browser.js CHANGED
@@ -1 +1 @@
1
- export{A as createLazyBrowserApiProtocolClient}from'./chunk-KBKZ27GY.js';import'./chunk-KZM3GLRL.js';import'./chunk-WOT6VMZA.js';
1
+ export{A as createLazyBrowserApiProtocolClient}from'./chunk-K6P5ZYHG.js';import'./chunk-KTWXKQ4J.js';import'./chunk-WOT6VMZA.js';
@@ -1313,6 +1313,13 @@ interface ImLoginContext {
1313
1313
  interface ImAuthIssue {
1314
1314
  code: number;
1315
1315
  reason: 'token_expired' | 'kicked' | 'banned' | 'unknown';
1316
+ /**
1317
+ * 服务端记录的账号上次登录时间(毫秒时间戳),用于宿主提示「你的账号于某时在其他设备登录」。
1318
+ *
1319
+ * 只有登录被拒的被踢路径(CMLoginAck.nLastLoginTime)能拿到该时间;运行期收到
1320
+ * CM_KICKOUT_NOTIFICATION 时协议不带时间,此处为 undefined,由宿主自行决定如何展示。
1321
+ */
1322
+ lastLoginTime?: number;
1316
1323
  }
1317
1324
  interface ImAuthProvider {
1318
1325
  /** 返回登录上下文;返回 null 表示当前不可登录(缺凭据)。 */
@@ -1645,6 +1652,45 @@ interface ImProfilePort {
1645
1652
  clearCache?: () => void;
1646
1653
  }
1647
1654
 
1655
+ /** 会话收藏可展示的内容类型;与 iOS `isSupportCollectionMsgType` 对齐。 */
1656
+ type ImSessionFavoriteKind = 'text' | 'image' | 'video' | 'voice' | 'location' | 'file';
1657
+ /** 服务端一条会话收藏快照;列表以 HTTP 为准,不回写原消息。 */
1658
+ interface ImSessionFavoriteItem$1 {
1659
+ readonly collectId: string;
1660
+ readonly msgId: string;
1661
+ readonly kind: ImSessionFavoriteKind;
1662
+ readonly senderId: string;
1663
+ readonly senderName: string;
1664
+ readonly avatarUrl: string;
1665
+ readonly createdAt: string;
1666
+ readonly text: string;
1667
+ readonly imageUrl: string;
1668
+ readonly fileName: string;
1669
+ readonly body: Readonly<Record<string, unknown>>;
1670
+ readonly conversation: ConversationRef | null;
1671
+ }
1672
+ /** 把一条会话消息写成收藏快照时所需的已校验字段。 */
1673
+ interface ImSessionFavoriteWriteInput {
1674
+ readonly messageId: string;
1675
+ readonly conversation: ConversationRef;
1676
+ readonly senderId: string;
1677
+ readonly createdAt: number;
1678
+ readonly kind: ImSessionFavoriteKind;
1679
+ readonly plainBody: Readonly<Record<string, unknown>>;
1680
+ readonly peerId: string;
1681
+ readonly hide?: boolean;
1682
+ }
1683
+ /**
1684
+ * 会话收藏 HTTP 端口。
1685
+ *
1686
+ * Browser adapter 负责 `/user/favorite/*`、收藏 TEA 和 DTO 映射;Core 不持有收藏列表副本。
1687
+ */
1688
+ interface ImSessionFavoritePort {
1689
+ list: () => Promise<readonly ImSessionFavoriteItem$1[]>;
1690
+ add: (input: ImSessionFavoriteWriteInput) => Promise<ImSessionFavoriteItem$1>;
1691
+ delete: (collectIds: readonly string[]) => Promise<void>;
1692
+ }
1693
+
1648
1694
  /** 迁移期存储会话入参;新代码使用 ref,string 仅兼容唯一命中的旧调用。 */
1649
1695
  type ImStorageConversation = ConversationRef | string;
1650
1696
  /** 打开账号库的选项。namespace = 账号隔离键(登录 userId)。 */
@@ -2063,6 +2109,10 @@ type ImEvent = {
2063
2109
  | {
2064
2110
  type: 'application:updated';
2065
2111
  application: ApplicationUpdate;
2112
+ }
2113
+ /** 其它端改了会话收藏;权威列表必须重新拉 HTTP,不携带收藏正文。 */
2114
+ | {
2115
+ type: 'session-favorites:changed';
2066
2116
  } | {
2067
2117
  type: 'sync:complete';
2068
2118
  conversations: ConversationRef[];
@@ -4719,12 +4769,16 @@ interface ImProductEventMap {
4719
4769
  'application:updated': Readonly<{
4720
4770
  application: ImProductApplicationUpdate;
4721
4771
  }>;
4772
+ /** 其它端改了会话收藏;权威列表必须重新拉 HTTP。 */
4773
+ 'session-favorites:changed': Readonly<Record<never, never>>;
4722
4774
  'sync:complete': Readonly<{
4723
4775
  conversations: readonly ConversationRef<ProductConversationListType>[];
4724
4776
  }>;
4777
+ /** `lastLoginTime` 为服务端记录的上次登录时间(毫秒),仅被踢且走登录 ACK 的路径才有值。 */
4725
4778
  'auth:invalid': Readonly<{
4726
4779
  code: string;
4727
4780
  reason: ImProductAuthInvalidReason;
4781
+ lastLoginTime?: number;
4728
4782
  }>;
4729
4783
  'error': Readonly<{
4730
4784
  error: ImProductEventError;
@@ -5010,6 +5064,25 @@ interface ImSearchApi {
5010
5064
  readonly messages: ImMessageSearchApi;
5011
5065
  }
5012
5066
 
5067
+ /**
5068
+ * 会话收藏稳定产品门面。
5069
+ *
5070
+ * 本模块不缓存服务端列表;每次 list/add/delete 都以当前账号 provider 为准。
5071
+ * 收藏快照与原聊天消息解耦:原消息删除、撤回或编辑不会回写收藏。
5072
+ */
5073
+
5074
+ type ImSessionFavoriteItem = Readonly<ImSessionFavoriteItem$1>;
5075
+ /** 产品层会话收藏 API。 */
5076
+ interface ImSessionFavoritesApi {
5077
+ list: () => Promise<readonly ImSessionFavoriteItem[]>;
5078
+ addFromMessage: (input: {
5079
+ message: ImMessageView;
5080
+ conversation: ConversationRef;
5081
+ selfId: string;
5082
+ }) => Promise<ImSessionFavoriteItem>;
5083
+ delete: (collectIds: readonly string[]) => Promise<void>;
5084
+ }
5085
+
5013
5086
  /**
5014
5087
  * 当前账号的 IM 本地偏好产品域。
5015
5088
  *
@@ -5235,6 +5308,8 @@ interface ImAdvancedClientOptions extends ImClientOptions {
5235
5308
  coreClient?: ApiProtocolClient;
5236
5309
  /** 高级/测试入口可注入端口替身;default 始终使用 Browser adapter。 */
5237
5310
  expressionProvider?: ImExpressionPort;
5311
+ /** 高级/测试入口可注入会话收藏端口替身;default 始终使用 Browser adapter。 */
5312
+ sessionFavoriteProvider?: ImSessionFavoritePort;
5238
5313
  }
5239
5314
  /** 产品级账号与连接生命周期;adapter、transport 和连接状态机原子不进入该接口。 */
5240
5315
  interface ImSessionApi {
@@ -5510,6 +5585,7 @@ interface ImProductClient {
5510
5585
  readonly channels: ImChannelsApi;
5511
5586
  readonly applications: ImApplicationsApi;
5512
5587
  readonly expressions: ImExpressionsApi;
5588
+ readonly sessionFavorites: ImSessionFavoritesApi;
5513
5589
  readonly outbox: ImOutboxApi;
5514
5590
  readonly drafts: ImDraftsApi;
5515
5591
  readonly search: ImSearchApi;
@@ -6086,7 +6162,7 @@ type ImPinnedMessageActionResult = Readonly<{
6086
6162
  }>;
6087
6163
 
6088
6164
  type ConversationCapabilityAction = 'conversation.openProfile' | 'conversation.readHistory' | 'conversation.listPreferences' | 'composer.send' | 'composer.mentionAll' | 'profile.edit' | 'relationship.manage' | 'members.view' | 'members.manage' | 'members.invite' | 'members.remove' | 'members.setAdmin' | 'ownership.transfer' | 'conversation.leave' | 'channel.manageMute' | 'channel.setMemberPrivateChat' | 'channel.dismiss';
6089
- type MessageCapabilityAction = 'message.reply' | 'message.recall' | 'message.edit' | 'message.pin' | 'message.unpin' | 'message.deleteLocal' | 'message.deleteForEveryone' | 'message.forward' | 'message.multiSelect';
6165
+ type MessageCapabilityAction = 'message.reply' | 'message.recall' | 'message.edit' | 'message.pin' | 'message.unpin' | 'message.deleteLocal' | 'message.deleteForEveryone' | 'message.forward' | 'message.favorite' | 'message.multiSelect';
6090
6166
  type MemberTargetCapabilityAction = 'members.removeTarget' | 'members.editNicknameTarget' | 'members.setAdminTarget' | 'members.unsetAdminTarget';
6091
6167
  interface MemberTargetCapabilityInput {
6092
6168
  snapshot: ConversationCapabilitySnapshot;
@@ -7945,6 +8021,47 @@ type ImSearchOperationResult = Readonly<{
7945
8021
  /** 取得当前 Vue setup 或显式 Pinia 的搜索 Store;不同宿主实例不会共享查询或定位状态。 */
7946
8022
  declare function useImSearchStore(pinia?: Pinia): any;
7947
8023
 
8024
+ /**
8025
+ * 为 PC/H5 提供同一套会话收藏列表和已收藏标记。
8026
+ *
8027
+ * 【状态来源】
8028
+ * `items` 始终来自 SDK `client.sessionFavorites.list()`。4633 产品事件只唤醒重拉,不从通知拼造条目。
8029
+ * 已收藏标记由当前列表按 `msgId → collectId` 派生,不写回 ImMessage。
8030
+ *
8031
+ * 【明确不负责】
8032
+ * 页面、预览、Toast、路由和 i18n 属于宿主;HTTP、收藏 TEA 和协议通知属于 SDK。
8033
+ */
8034
+
8035
+ type ImSessionFavoritesStoreError = Readonly<Pick<ImSdkErrorShape, 'code' | 'category' | 'operation' | 'retryable'>>;
8036
+ type ImSessionFavoritesReloadResult = Readonly<{
8037
+ ok: true;
8038
+ operation: 'reload';
8039
+ } | {
8040
+ ok: false;
8041
+ operation: 'reload';
8042
+ reason: 'stale';
8043
+ } | {
8044
+ ok: false;
8045
+ operation: 'reload';
8046
+ reason: 'failed';
8047
+ error: ImSessionFavoritesStoreError;
8048
+ }>;
8049
+ type ImSessionFavoritesWriteResult = Readonly<{
8050
+ ok: true;
8051
+ operation: 'add' | 'delete';
8052
+ collectId: string;
8053
+ } | {
8054
+ ok: false;
8055
+ operation: 'add' | 'delete';
8056
+ reason: 'stale';
8057
+ } | {
8058
+ ok: false;
8059
+ operation: 'add' | 'delete';
8060
+ reason: 'failed';
8061
+ error: ImSessionFavoritesStoreError;
8062
+ }>;
8063
+ declare function useImSessionFavoritesStore(pinia?: Pinia): any;
8064
+
7948
8065
  /** 页面可展示的 IM 启动阶段:空闲、恢复本机数据、联网、可用、失败或永久销毁。 */
7949
8066
  type ImSessionPhase = 'idle' | 'preparing' | 'connecting' | 'ready' | 'error' | 'disposed';
7950
8067
  /** 宿主每次登录、退出或切账号时交给 `applySession` 的完整输入。 */
@@ -8146,5 +8263,5 @@ type ImThreadStore = Store<'k2-im-thread', ImThreadStoreState, Record<string, ne
8146
8263
  /** 取得当前 Vue setup 或显式 Pinia 的消息线程 Store;每个实例只管理一个当前会话。 */
8147
8264
  declare function useImThreadStore(pinia?: Pinia): ImThreadStore;
8148
8265
 
8149
- export { applicationKey, createAndInstallImChatKit, createImChatKitContext, disposeImChatKit, ensureImChatKitSelfProfile, getImChatKitContext, installImChatKit, useImApplicationsStore, useImCapabilitiesStore, useImComposerStore, useImConversationActivationCoordinator, useImConversationDeletionCoordinator, useImConversationListStore, useImExpressionStore, useImHistoryReturnAfterSendCoordinator, useImMediaStore, useImMessageOperationsStore, useImProfileDirectoryStore, useImQuotedMessageStore, useImReactionStore, useImSearchStore, useImSessionStore, useImThreadPagingStore, useImThreadReturnToLatestCoordinator, useImThreadStore };
8150
- export type { ApplyImSessionInput, ChatRuntimeFactories, ChatRuntimeHostDeps, ImApplicationDomainCounts, ImApplicationReviewOperation, ImApplicationReviewResult, ImApplicationsReloadResult, ImApplicationsStoreError, ImCapabilitiesStore, ImChannelManagementMemberTarget, ImChannelMemberManagementOperation, ImChannelMemberManagementResult, ImChannelMemberManagementResultFor, ImChannelProfileActionResult, ImChannelProfileActionResultFor, ImChannelProfileOperation, ImChatKitContext, ImChatKitInstallation, ImComposerStore, ImComposerStoreActions, ImComposerStoreState, ImComposerSubmitResult, ImConversationActivationCoordinator, ImConversationActivationError, ImConversationActivationResult, ImConversationDeletionCoordinator, ImConversationDeletionError, ImConversationDeletionResult, ImConversationListActionError, ImConversationListMutationOperation, ImConversationListMutationResult, ImConversationListRefreshResult, ImConversationListStore, ImDirectContactActionResult, ImDirectContactActionResultFor, ImDirectContactOperation, ImDirectoryState, ImEmojiPanelRecentEntry, ImEmojiRecentEntry, ImExpressionLoadStatus, ImExpressionOperation, ImExpressionOperationResult, ImExpressionRecentPersistencePort, ImExpressionRecentPersistenceSnapshot, ImExpressionRecentViewItem, ImExpressionResetOptions, ImExpressionSendResult, ImExpressionStore, ImExpressionStoreActions, ImExpressionStoreError, ImExpressionStoreGetters, ImExpressionStoreState, ImForwardPreparationResult, ImGameRecentEntry, ImGroupMemberManagementOperation, ImGroupMemberManagementResult, ImGroupMemberManagementResultFor, ImGroupProfileActionResult, ImGroupProfileActionResultFor, ImGroupProfileOperation, ImHistoryReturnAfterSendCoordinator, ImHistoryReturnError, ImHistoryReturnExecution, ImHistoryReturnResult, ImMediaOperationResult, ImMediaReplacementRequest, ImMediaStoreError, ImMediaTaskPresentation, ImMembershipJoinActionResult, ImMembershipJoinOperation, ImMessageOperationsStore, ImMessageOperationsStoreActions, ImMessageOperationsStoreState, ImMessageSelectionResult, ImPersistedEmojiPanelRecentEntry, ImPersistedEmojiRecentEntry, ImPersistedExpressionAssetRecentEntry, ImPersistedGameRecentEntry, ImProfileAccessDestination, ImProfileAccessResult, ImProfileDirectoryResult, ImQuotedMessageState, ImQuotedMessageStore, ImQuotedMessageStoreActions, ImQuotedMessageStoreState, ImReactionOperationResult, ImReactionStore, ImReactionStoreActions, ImReactionStoreError, ImReactionStoreState, ImSearchOperationResult, ImSessionPhase, ImSessionStore, ImThreadPagingActions, ImThreadPagingState, ImThreadPagingStore, ImThreadReturnToLatestCoordinator, ImThreadStore, ImThreadStoreActions, ImThreadStoreState };
8266
+ export { applicationKey, createAndInstallImChatKit, createImChatKitContext, disposeImChatKit, ensureImChatKitSelfProfile, getImChatKitContext, installImChatKit, useImApplicationsStore, useImCapabilitiesStore, useImComposerStore, useImConversationActivationCoordinator, useImConversationDeletionCoordinator, useImConversationListStore, useImExpressionStore, useImHistoryReturnAfterSendCoordinator, useImMediaStore, useImMessageOperationsStore, useImProfileDirectoryStore, useImQuotedMessageStore, useImReactionStore, useImSearchStore, useImSessionFavoritesStore, useImSessionStore, useImThreadPagingStore, useImThreadReturnToLatestCoordinator, useImThreadStore };
8267
+ export type { ApplyImSessionInput, ChatRuntimeFactories, ChatRuntimeHostDeps, ImApplicationDomainCounts, ImApplicationReviewOperation, ImApplicationReviewResult, ImApplicationsReloadResult, ImApplicationsStoreError, ImCapabilitiesStore, ImChannelManagementMemberTarget, ImChannelMemberManagementOperation, ImChannelMemberManagementResult, ImChannelMemberManagementResultFor, ImChannelProfileActionResult, ImChannelProfileActionResultFor, ImChannelProfileOperation, ImChatKitContext, ImChatKitInstallation, ImComposerStore, ImComposerStoreActions, ImComposerStoreState, ImComposerSubmitResult, ImConversationActivationCoordinator, ImConversationActivationError, ImConversationActivationResult, ImConversationDeletionCoordinator, ImConversationDeletionError, ImConversationDeletionResult, ImConversationListActionError, ImConversationListMutationOperation, ImConversationListMutationResult, ImConversationListRefreshResult, ImConversationListStore, ImDirectContactActionResult, ImDirectContactActionResultFor, ImDirectContactOperation, ImDirectoryState, ImEmojiPanelRecentEntry, ImEmojiRecentEntry, ImExpressionLoadStatus, ImExpressionOperation, ImExpressionOperationResult, ImExpressionRecentPersistencePort, ImExpressionRecentPersistenceSnapshot, ImExpressionRecentViewItem, ImExpressionResetOptions, ImExpressionSendResult, ImExpressionStore, ImExpressionStoreActions, ImExpressionStoreError, ImExpressionStoreGetters, ImExpressionStoreState, ImForwardPreparationResult, ImGameRecentEntry, ImGroupMemberManagementOperation, ImGroupMemberManagementResult, ImGroupMemberManagementResultFor, ImGroupProfileActionResult, ImGroupProfileActionResultFor, ImGroupProfileOperation, ImHistoryReturnAfterSendCoordinator, ImHistoryReturnError, ImHistoryReturnExecution, ImHistoryReturnResult, ImMediaOperationResult, ImMediaReplacementRequest, ImMediaStoreError, ImMediaTaskPresentation, ImMembershipJoinActionResult, ImMembershipJoinOperation, ImMessageOperationsStore, ImMessageOperationsStoreActions, ImMessageOperationsStoreState, ImMessageSelectionResult, ImPersistedEmojiPanelRecentEntry, ImPersistedEmojiRecentEntry, ImPersistedExpressionAssetRecentEntry, ImPersistedGameRecentEntry, ImProfileAccessDestination, ImProfileAccessResult, ImProfileDirectoryResult, ImQuotedMessageState, ImQuotedMessageStore, ImQuotedMessageStoreActions, ImQuotedMessageStoreState, ImReactionOperationResult, ImReactionStore, ImReactionStoreActions, ImReactionStoreError, ImReactionStoreState, ImSearchOperationResult, ImSessionFavoritesReloadResult, ImSessionFavoritesStoreError, ImSessionFavoritesWriteResult, ImSessionPhase, ImSessionStore, ImThreadPagingActions, ImThreadPagingState, ImThreadPagingStore, ImThreadReturnToLatestCoordinator, ImThreadStore, ImThreadStoreActions, ImThreadStoreState };