@unif/react-native-chat-sdk 0.2.4 → 0.3.0

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.
@@ -28,12 +28,35 @@ function useXChat(config) {
28
28
  store.getState().setError(null);
29
29
  store.getState().setSuggestions([]);
30
30
  const localMessage = provider.transformLocalMessage(input);
31
- store.getState().addMessage(localMessage);
31
+ const localChatMessage = localMessage;
32
+ store.getState().addMessage(localChatMessage);
33
+
34
+ // 注入 loading 占位消息(显示"正在思考"动画)
35
+ const loadingMessageId = `loading-${localChatMessage.id}`;
36
+ const loadingMessage = {
37
+ id: loadingMessageId,
38
+ text: '',
39
+ role: 'assistant',
40
+ createdAt: new Date(),
41
+ messageType: 'text',
42
+ status: 'loading',
43
+ turnId: localChatMessage.turnId
44
+ };
45
+ store.getState().addMessage(loadingMessage);
46
+ let loadingRemoved = false;
47
+ const removeLoading = () => {
48
+ if (!loadingRemoved) {
49
+ loadingRemoved = true;
50
+ store.getState().removeMessage(loadingMessageId);
51
+ }
52
+ };
32
53
  provider.sendMessage(input, {
33
54
  onUpdate: message => {
55
+ removeLoading();
34
56
  store.getState().upsertMessage(message);
35
57
  },
36
58
  onSuccess: message => {
59
+ removeLoading();
37
60
  const m = message;
38
61
  store.getState().upsertMessage({
39
62
  ...m,
@@ -42,6 +65,7 @@ function useXChat(config) {
42
65
  store.getState().setRequesting(false);
43
66
  },
44
67
  onError: error => {
68
+ removeLoading();
45
69
  store.getState().setError(error.message);
46
70
  store.getState().setRequesting(false);
47
71
  if (config.requestFallback) {
@@ -58,6 +82,12 @@ function useXChat(config) {
58
82
  }, [provider, store, config]);
59
83
  const abort = (0, _react.useCallback)(() => {
60
84
  provider.abort();
85
+ // 清理可能存在的 loading 占位消息
86
+ const msgs = store.getState().messages;
87
+ const loadingMsg = msgs.find(m => m.status === 'loading');
88
+ if (loadingMsg) {
89
+ store.getState().removeMessage(loadingMsg.id);
90
+ }
61
91
  store.getState().setRequesting(false);
62
92
  }, [provider, store]);
63
93
  const resetChat = (0, _react.useCallback)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_chatStore","useXChat","config","provider","storeRef","useRef","createChatStore","store","current","state","useSyncExternalStore","subscribe","getState","onRequest","useCallback","input","s","isRequesting","setRequesting","setError","setSuggestions","localMessage","transformLocalMessage","addMessage","sendMessage","onUpdate","message","upsertMessage","onSuccess","m","status","onError","error","requestFallback","fallbackMsg","onSuggestion","items","abort","resetChat","loadSession","messages","clearError","onReload","id","targetIdx","findIndex","setMessages","messagesOrFn","currentInfos","map","extra","next","info","setMessage","partialOrFn","partial","updated","undefined","Object","assign","removeMessage","useEffect","requesting","suggestions"],"sourceRoot":"../../../src","sources":["hooks/useXChat.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_chatStore","useXChat","config","provider","storeRef","useRef","createChatStore","store","current","state","useSyncExternalStore","subscribe","getState","onRequest","useCallback","input","s","isRequesting","setRequesting","setError","setSuggestions","localMessage","transformLocalMessage","localChatMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","status","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","message","upsertMessage","onSuccess","m","onError","error","requestFallback","fallbackMsg","onSuggestion","items","abort","msgs","messages","loadingMsg","find","resetChat","loadSession","clearError","onReload","targetIdx","findIndex","setMessages","messagesOrFn","currentInfos","map","extra","next","info","setMessage","partialOrFn","partial","updated","undefined","Object","assign","useEffect","requesting","suggestions"],"sourceRoot":"../../../src","sources":["hooks/useXChat.ts"],"mappings":"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","ignoreList":[]}
@@ -24,12 +24,35 @@ export function useXChat(config) {
24
24
  store.getState().setError(null);
25
25
  store.getState().setSuggestions([]);
26
26
  const localMessage = provider.transformLocalMessage(input);
27
- store.getState().addMessage(localMessage);
27
+ const localChatMessage = localMessage;
28
+ store.getState().addMessage(localChatMessage);
29
+
30
+ // 注入 loading 占位消息(显示"正在思考"动画)
31
+ const loadingMessageId = `loading-${localChatMessage.id}`;
32
+ const loadingMessage = {
33
+ id: loadingMessageId,
34
+ text: '',
35
+ role: 'assistant',
36
+ createdAt: new Date(),
37
+ messageType: 'text',
38
+ status: 'loading',
39
+ turnId: localChatMessage.turnId
40
+ };
41
+ store.getState().addMessage(loadingMessage);
42
+ let loadingRemoved = false;
43
+ const removeLoading = () => {
44
+ if (!loadingRemoved) {
45
+ loadingRemoved = true;
46
+ store.getState().removeMessage(loadingMessageId);
47
+ }
48
+ };
28
49
  provider.sendMessage(input, {
29
50
  onUpdate: message => {
51
+ removeLoading();
30
52
  store.getState().upsertMessage(message);
31
53
  },
32
54
  onSuccess: message => {
55
+ removeLoading();
33
56
  const m = message;
34
57
  store.getState().upsertMessage({
35
58
  ...m,
@@ -38,6 +61,7 @@ export function useXChat(config) {
38
61
  store.getState().setRequesting(false);
39
62
  },
40
63
  onError: error => {
64
+ removeLoading();
41
65
  store.getState().setError(error.message);
42
66
  store.getState().setRequesting(false);
43
67
  if (config.requestFallback) {
@@ -54,6 +78,12 @@ export function useXChat(config) {
54
78
  }, [provider, store, config]);
55
79
  const abort = useCallback(() => {
56
80
  provider.abort();
81
+ // 清理可能存在的 loading 占位消息
82
+ const msgs = store.getState().messages;
83
+ const loadingMsg = msgs.find(m => m.status === 'loading');
84
+ if (loadingMsg) {
85
+ store.getState().removeMessage(loadingMsg.id);
86
+ }
57
87
  store.getState().setRequesting(false);
58
88
  }, [provider, store]);
59
89
  const resetChat = useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useSyncExternalStore","createChatStore","useXChat","config","provider","storeRef","store","current","state","subscribe","getState","onRequest","input","s","isRequesting","setRequesting","setError","setSuggestions","localMessage","transformLocalMessage","addMessage","sendMessage","onUpdate","message","upsertMessage","onSuccess","m","status","onError","error","requestFallback","fallbackMsg","onSuggestion","items","abort","resetChat","loadSession","messages","clearError","onReload","id","targetIdx","findIndex","setMessages","messagesOrFn","currentInfos","map","extra","next","info","setMessage","partialOrFn","partial","updated","undefined","Object","assign","removeMessage","requesting","suggestions"],"sourceRoot":"../../../src","sources":["hooks/useXChat.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useSyncExternalStore","createChatStore","useXChat","config","provider","storeRef","store","current","state","subscribe","getState","onRequest","input","s","isRequesting","setRequesting","setError","setSuggestions","localMessage","transformLocalMessage","localChatMessage","addMessage","loadingMessageId","id","loadingMessage","text","role","createdAt","Date","messageType","status","turnId","loadingRemoved","removeLoading","removeMessage","sendMessage","onUpdate","message","upsertMessage","onSuccess","m","onError","error","requestFallback","fallbackMsg","onSuggestion","items","abort","msgs","messages","loadingMsg","find","resetChat","loadSession","clearError","onReload","targetIdx","findIndex","setMessages","messagesOrFn","currentInfos","map","extra","next","info","setMessage","partialOrFn","partial","updated","undefined","Object","assign","requesting","suggestions"],"sourceRoot":"../../../src","sources":["hooks/useXChat.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CACX,QAAQ,EACJ,WAAW,CAAC,OAAO,CAAC,EAAE,GACtB,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAC3D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAC7B,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAC/D,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,QAAQ,CACtB,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAElB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7C,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAyNhC"}
1
+ {"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CACX,QAAQ,EACJ,WAAW,CAAC,OAAO,CAAC,EAAE,GACtB,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAC3D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAC7B,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAC/D,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,QAAQ,CACtB,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAElB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7C,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAkPhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CACX,QAAQ,EACJ,WAAW,CAAC,OAAO,CAAC,EAAE,GACtB,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAC3D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAC7B,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAC/D,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,QAAQ,CACtB,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAElB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7C,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAyNhC"}
1
+ {"version":3,"file":"useXChat.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useXChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,WAAW,CAAC,OAAO,GAAG,WAAW;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS;IAElB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAC7B,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,CACX,QAAQ,EACJ,WAAW,CAAC,OAAO,CAAC,EAAE,GACtB,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAC3D,IAAI,CAAC;IACV,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAC7B,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAC/D,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,QAAQ,CACtB,OAAO,GAAG,WAAW,EACrB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,EAC9B,MAAM,GAAG,SAAS,EAElB,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAC7C,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAkPhC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-chat-sdk",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "UNIF React Native Chat SDK — 流式通信、Provider、状态管理",
5
5
  "main": "./lib/commonjs/index.js",
6
6
  "module": "./lib/module/index.js",
@@ -4,12 +4,12 @@
4
4
  * 消费 ChatProvider,输出可渲染的 messages 列表
5
5
  */
6
6
 
7
- import {useCallback, useEffect, useRef, useSyncExternalStore} from 'react';
8
- import {createChatStore} from '../stores/chatStore';
9
- import type {AbstractChatProvider} from '../providers/AbstractChatProvider';
10
- import type {ChatMessage, MessageStatus} from '../types/message';
11
- import type {RequestParams, SSEOutput} from '../types/provider';
12
- import type {SuggestionItem} from '../types/sse';
7
+ import { useCallback, useEffect, useRef, useSyncExternalStore } from 'react';
8
+ import { createChatStore } from '../stores/chatStore';
9
+ import type { AbstractChatProvider } from '../providers/AbstractChatProvider';
10
+ import type { ChatMessage, MessageStatus } from '../types/message';
11
+ import type { RequestParams, SSEOutput } from '../types/provider';
12
+ import type { SuggestionItem } from '../types/sse';
13
13
 
14
14
  export interface MessageInfo<Message = ChatMessage> {
15
15
  id: string;
@@ -21,7 +21,7 @@ export interface MessageInfo<Message = ChatMessage> {
21
21
  export interface UseXChatConfig<
22
22
  Message = ChatMessage,
23
23
  Input = RequestParams<Message>,
24
- Output = SSEOutput,
24
+ Output = SSEOutput
25
25
  > {
26
26
  provider: AbstractChatProvider<Message, Input, Output>;
27
27
  requestPlaceholder?: (input: Input) => Message;
@@ -31,7 +31,7 @@ export interface UseXChatConfig<
31
31
 
32
32
  export interface UseXChatReturn<
33
33
  Message = ChatMessage,
34
- Input = RequestParams<Message>,
34
+ Input = RequestParams<Message>
35
35
  > {
36
36
  messages: MessageInfo<Message>[];
37
37
  requesting: boolean;
@@ -46,13 +46,13 @@ export interface UseXChatReturn<
46
46
  setMessages: (
47
47
  messages:
48
48
  | MessageInfo<Message>[]
49
- | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[]),
49
+ | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[])
50
50
  ) => void;
51
51
  setMessage: (
52
52
  id: string,
53
53
  partial:
54
54
  | Partial<MessageInfo<Message>>
55
- | ((msg: MessageInfo<Message>) => Partial<MessageInfo<Message>>),
55
+ | ((msg: MessageInfo<Message>) => Partial<MessageInfo<Message>>)
56
56
  ) => void;
57
57
  removeMessage: (id: string) => void;
58
58
  }
@@ -60,7 +60,7 @@ export interface UseXChatReturn<
60
60
  export function useXChat<
61
61
  Message = ChatMessage,
62
62
  Input = RequestParams<Message>,
63
- Output = SSEOutput,
63
+ Output = SSEOutput
64
64
  >(
65
65
  config: UseXChatConfig<Message, Input, Output>
66
66
  ): UseXChatReturn<Message, Input> {
@@ -73,7 +73,7 @@ export function useXChat<
73
73
  const state = useSyncExternalStore(
74
74
  store.subscribe,
75
75
  store.getState,
76
- store.getState,
76
+ store.getState
77
77
  );
78
78
 
79
79
  const onRequest = useCallback(
@@ -86,15 +86,37 @@ export function useXChat<
86
86
  store.getState().setSuggestions([]);
87
87
 
88
88
  const localMessage = provider.transformLocalMessage(input);
89
- store.getState().addMessage(localMessage as unknown as ChatMessage);
89
+ const localChatMessage = localMessage as unknown as ChatMessage;
90
+ store.getState().addMessage(localChatMessage);
91
+
92
+ // 注入 loading 占位消息(显示"正在思考"动画)
93
+ const loadingMessageId = `loading-${localChatMessage.id}`;
94
+ const loadingMessage: ChatMessage = {
95
+ id: loadingMessageId,
96
+ text: '',
97
+ role: 'assistant',
98
+ createdAt: new Date(),
99
+ messageType: 'text',
100
+ status: 'loading',
101
+ turnId: localChatMessage.turnId,
102
+ };
103
+ store.getState().addMessage(loadingMessage);
104
+
105
+ let loadingRemoved = false;
106
+ const removeLoading = () => {
107
+ if (!loadingRemoved) {
108
+ loadingRemoved = true;
109
+ store.getState().removeMessage(loadingMessageId);
110
+ }
111
+ };
90
112
 
91
113
  provider.sendMessage(input, {
92
114
  onUpdate: (message) => {
93
- store
94
- .getState()
95
- .upsertMessage(message as unknown as ChatMessage);
115
+ removeLoading();
116
+ store.getState().upsertMessage(message as unknown as ChatMessage);
96
117
  },
97
118
  onSuccess: (message) => {
119
+ removeLoading();
98
120
  const m = message as unknown as ChatMessage;
99
121
  store.getState().upsertMessage({
100
122
  ...m,
@@ -103,14 +125,13 @@ export function useXChat<
103
125
  store.getState().setRequesting(false);
104
126
  },
105
127
  onError: (error) => {
128
+ removeLoading();
106
129
  store.getState().setError(error.message);
107
130
  store.getState().setRequesting(false);
108
131
 
109
132
  if (config.requestFallback) {
110
133
  const fallbackMsg = config.requestFallback(input, { error });
111
- store
112
- .getState()
113
- .addMessage(fallbackMsg as unknown as ChatMessage);
134
+ store.getState().addMessage(fallbackMsg as unknown as ChatMessage);
114
135
  }
115
136
  },
116
137
  onSuggestion: (items) => {
@@ -123,6 +144,12 @@ export function useXChat<
123
144
 
124
145
  const abort = useCallback(() => {
125
146
  provider.abort();
147
+ // 清理可能存在的 loading 占位消息
148
+ const msgs = store.getState().messages;
149
+ const loadingMsg = msgs.find((m) => m.status === 'loading');
150
+ if (loadingMsg) {
151
+ store.getState().removeMessage(loadingMsg.id);
152
+ }
126
153
  store.getState().setRequesting(false);
127
154
  }, [provider, store]);
128
155
 
@@ -156,9 +183,7 @@ export function useXChat<
156
183
 
157
184
  provider.sendMessage(input, {
158
185
  onUpdate: (message) => {
159
- store
160
- .getState()
161
- .upsertMessage(message as unknown as ChatMessage);
186
+ store.getState().upsertMessage(message as unknown as ChatMessage);
162
187
  },
163
188
  onSuccess: (message) => {
164
189
  const m = message as unknown as ChatMessage;
@@ -174,9 +199,7 @@ export function useXChat<
174
199
 
175
200
  if (config.requestFallback) {
176
201
  const fallbackMsg = config.requestFallback(input, { error });
177
- store
178
- .getState()
179
- .addMessage(fallbackMsg as unknown as ChatMessage);
202
+ store.getState().addMessage(fallbackMsg as unknown as ChatMessage);
180
203
  }
181
204
  },
182
205
  onSuggestion: (items) => {
@@ -191,7 +214,7 @@ export function useXChat<
191
214
  (
192
215
  messagesOrFn:
193
216
  | MessageInfo<Message>[]
194
- | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[]),
217
+ | ((prev: MessageInfo<Message>[]) => MessageInfo<Message>[])
195
218
  ) => {
196
219
  if (typeof messagesOrFn === 'function') {
197
220
  const current = store.getState().messages;
@@ -204,12 +227,14 @@ export function useXChat<
204
227
  const next = messagesOrFn(currentInfos);
205
228
  store
206
229
  .getState()
207
- .setMessages(next.map((info) => info.message as unknown as ChatMessage));
230
+ .setMessages(
231
+ next.map((info) => info.message as unknown as ChatMessage)
232
+ );
208
233
  } else {
209
234
  store
210
235
  .getState()
211
236
  .setMessages(
212
- messagesOrFn.map((info) => info.message as unknown as ChatMessage),
237
+ messagesOrFn.map((info) => info.message as unknown as ChatMessage)
213
238
  );
214
239
  }
215
240
  },
@@ -221,7 +246,7 @@ export function useXChat<
221
246
  id: string,
222
247
  partialOrFn:
223
248
  | Partial<MessageInfo<Message>>
224
- | ((msg: MessageInfo<Message>) => Partial<MessageInfo<Message>>),
249
+ | ((msg: MessageInfo<Message>) => Partial<MessageInfo<Message>>)
225
250
  ) => {
226
251
  store.getState().setMessage(id, (m) => {
227
252
  const info: MessageInfo<Message> = {