@sudobility/wildduck_client 2.2.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/dist/components/WebSocketStatus.d.ts +26 -0
- package/dist/components/WebSocketStatus.d.ts.map +1 -0
- package/dist/components/WebSocketStatus.js +187 -0
- package/dist/components/WebSocketStatus.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/hooks/useWildduckAutoReply.d.ts +5 -2
- package/dist/hooks/useWildduckAutoReply.d.ts.map +1 -1
- package/dist/hooks/useWildduckAutoReply.js +84 -3
- package/dist/hooks/useWildduckAutoReply.js.map +1 -1
- package/dist/hooks/useWildduckFilters.d.ts +5 -2
- package/dist/hooks/useWildduckFilters.d.ts.map +1 -1
- package/dist/hooks/useWildduckFilters.js +100 -3
- package/dist/hooks/useWildduckFilters.js.map +1 -1
- package/dist/hooks/useWildduckMessages.d.ts +4 -1
- package/dist/hooks/useWildduckMessages.d.ts.map +1 -1
- package/dist/hooks/useWildduckMessages.js +148 -3
- package/dist/hooks/useWildduckMessages.js.map +1 -1
- package/dist/hooks/useWildduckSettings.d.ts +10 -7
- package/dist/hooks/useWildduckSettings.d.ts.map +1 -1
- package/dist/hooks/useWildduckSettings.js +105 -34
- package/dist/hooks/useWildduckSettings.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/network/wildduck-client.d.ts +3 -3
- package/dist/network/wildduck-client.d.ts.map +1 -1
- package/dist/network/wildduck-client.js +12 -6
- package/dist/network/wildduck-client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,8 +9,10 @@ TypeScript client library for the WildDuck email API with React and React Native
|
|
|
9
9
|
|
|
10
10
|
- ✅ **Complete Type Safety** - Full TypeScript support with comprehensive type definitions
|
|
11
11
|
- ✅ **React Integration** - Built-in hooks using @tanstack/react-query for optimal data fetching
|
|
12
|
+
- ✅ **Real-time WebSocket Support** - Optional WebSocket connections for instant updates (v2.3.0+)
|
|
12
13
|
- ✅ **Crypto Authentication** - SIWE (Sign-in with Ethereum) and traditional password authentication
|
|
13
14
|
- ✅ **Comprehensive API** - User, mailbox, message, address, filter, and autoreply management
|
|
15
|
+
- ✅ **React Native Compatible** - Works seamlessly in both React JS and React Native (0.64+)
|
|
14
16
|
- ✅ **Development Mode** - Mock data for testing without a live server
|
|
15
17
|
- ✅ **Integration Tests** - Full test coverage with real WildDuck server testing
|
|
16
18
|
- ✅ **Cloudflare Worker Support** - Optional worker URL configuration for proxying requests
|
|
@@ -216,6 +218,50 @@ See [docs/GAP_ANALYSIS.md](./docs/GAP_ANALYSIS.md) for a comprehensive breakdown
|
|
|
216
218
|
|
|
217
219
|
For detailed documentation on all hooks, see [docs/HOOKS_DOCUMENTATION.md](./docs/HOOKS_DOCUMENTATION.md).
|
|
218
220
|
|
|
221
|
+
## WebSocket Real-time Support
|
|
222
|
+
|
|
223
|
+
Since v2.3.0, all hooks support optional WebSocket connections for real-time updates.
|
|
224
|
+
|
|
225
|
+
### Quick Start
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import { WebSocketProvider } from '@sudobility/wildduck_client';
|
|
229
|
+
|
|
230
|
+
function App() {
|
|
231
|
+
return (
|
|
232
|
+
<WebSocketProvider
|
|
233
|
+
enabled={true}
|
|
234
|
+
config={{ url: 'ws://your-server.com/ws' }}
|
|
235
|
+
>
|
|
236
|
+
<YourApp />
|
|
237
|
+
</WebSocketProvider>
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Enable WebSocket in any hook
|
|
242
|
+
const { mailboxes } = useWildduckMailboxes(
|
|
243
|
+
networkClient,
|
|
244
|
+
config,
|
|
245
|
+
wildduckUserAuth,
|
|
246
|
+
false,
|
|
247
|
+
{ enableWebSocket: true } // ← Enable real-time updates
|
|
248
|
+
);
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Features
|
|
252
|
+
|
|
253
|
+
- **Automatic reconnection** with exponential backoff
|
|
254
|
+
- **Per-user connections** - one WebSocket per authenticated user
|
|
255
|
+
- **Seamless fallback** to REST API if WebSocket unavailable
|
|
256
|
+
- **React Query integration** - automatic cache updates
|
|
257
|
+
- **Event-driven updates** - mailboxes, messages, filters, settings, autoreply
|
|
258
|
+
|
|
259
|
+
### Documentation
|
|
260
|
+
|
|
261
|
+
- **[Complete WebSocket Guide](./docs/WEBSOCKET.md)** - Setup, configuration, API reference
|
|
262
|
+
- **[Usage Examples](./docs/examples/WEBSOCKET_EXAMPLES.md)** - Real-world code examples
|
|
263
|
+
- **[React Native Compatibility](./docs/REACT_NATIVE_COMPATIBILITY.md)** - Mobile support guide
|
|
264
|
+
|
|
219
265
|
## Development
|
|
220
266
|
|
|
221
267
|
### Setup
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { WildduckUserAuth } from "@sudobility/types";
|
|
3
|
+
import type { ConnectionState } from "../websocket/types";
|
|
4
|
+
export interface WebSocketStatusProps {
|
|
5
|
+
wildduckUserAuth: WildduckUserAuth | null;
|
|
6
|
+
showReconnectCount?: boolean;
|
|
7
|
+
showDetails?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
renderStatus?: (state: ConnectionState, reconnectAttempt: number) => React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare function WebSocketStatus({ wildduckUserAuth, showReconnectCount, showDetails, className, style, renderStatus, }: WebSocketStatusProps): React.ReactElement | null;
|
|
13
|
+
export interface WebSocketStatusBadgeProps {
|
|
14
|
+
wildduckUserAuth: WildduckUserAuth | null;
|
|
15
|
+
size?: number;
|
|
16
|
+
className?: string;
|
|
17
|
+
style?: React.CSSProperties;
|
|
18
|
+
}
|
|
19
|
+
export declare function WebSocketStatusBadge({ wildduckUserAuth, size, className, style, }: WebSocketStatusBadgeProps): React.ReactElement | null;
|
|
20
|
+
export interface WebSocketStatsProps {
|
|
21
|
+
wildduckUserAuth: WildduckUserAuth | null;
|
|
22
|
+
className?: string;
|
|
23
|
+
style?: React.CSSProperties;
|
|
24
|
+
}
|
|
25
|
+
export declare function WebSocketStats({ wildduckUserAuth, className, style, }: WebSocketStatsProps): React.ReactElement | null;
|
|
26
|
+
//# sourceMappingURL=WebSocketStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketStatus.d.ts","sourceRoot":"","sources":["../../src/components/WebSocketStatus.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAG1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAG7B,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAG5B,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,eAAe,EACtB,gBAAgB,EAAE,MAAM,KACrB,KAAK,CAAC,SAAS,CAAC;CACtB;AAUD,wBAAgB,eAAe,CAAC,EAC9B,gBAAgB,EAChB,kBAAyB,EACzB,WAAmB,EACnB,SAAc,EACd,KAAK,EACL,YAAY,GACb,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAwJlD;AAKD,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,IAAQ,EACR,SAAc,EACd,KAAK,GACN,EAAE,yBAAyB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAyDvD;AAKD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,EAC7B,gBAAgB,EAChB,SAAc,EACd,KAAK,GACN,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA+DjD"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { useWebSocket } from "../websocket/useWebSocket";
|
|
3
|
+
export function WebSocketStatus({ wildduckUserAuth, showReconnectCount = true, showDetails = false, className = "", style, renderStatus, }) {
|
|
4
|
+
const wsContext = useWebSocket();
|
|
5
|
+
const [connectionState, setConnectionState] = useState("disconnected");
|
|
6
|
+
const [reconnectAttempt, setReconnectAttempt] = useState(0);
|
|
7
|
+
const [reconnectDelay, setReconnectDelay] = useState(0);
|
|
8
|
+
const [lastError, setLastError] = useState(null);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
14
|
+
if (!client) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
setConnectionState(client.state);
|
|
18
|
+
setReconnectAttempt(client.reconnectAttempt);
|
|
19
|
+
const handleStateChange = (_oldState, newState) => {
|
|
20
|
+
setConnectionState(newState);
|
|
21
|
+
if (newState === "connected") {
|
|
22
|
+
setLastError(null);
|
|
23
|
+
setReconnectAttempt(0);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const handleReconnecting = (attempt, delay) => {
|
|
27
|
+
setReconnectAttempt(attempt);
|
|
28
|
+
setReconnectDelay(delay);
|
|
29
|
+
};
|
|
30
|
+
const handleError = (error) => {
|
|
31
|
+
setLastError(error.message);
|
|
32
|
+
};
|
|
33
|
+
client.on("stateChange", handleStateChange);
|
|
34
|
+
client.on("reconnecting", handleReconnecting);
|
|
35
|
+
client.on("error", handleError);
|
|
36
|
+
return () => {
|
|
37
|
+
client.off("stateChange", handleStateChange);
|
|
38
|
+
client.off("reconnecting", handleReconnecting);
|
|
39
|
+
client.off("error", handleError);
|
|
40
|
+
};
|
|
41
|
+
}, [wsContext, wildduckUserAuth]);
|
|
42
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (renderStatus) {
|
|
46
|
+
return React.createElement(React.Fragment, null, renderStatus(connectionState, reconnectAttempt));
|
|
47
|
+
}
|
|
48
|
+
const statusConfig = {
|
|
49
|
+
disconnected: { color: "#6c757d", text: "Offline", emoji: "⚫" },
|
|
50
|
+
connecting: { color: "#ffc107", text: "Connecting...", emoji: "🟡" },
|
|
51
|
+
connected: { color: "#28a745", text: "Live", emoji: "🟢" },
|
|
52
|
+
reconnecting: {
|
|
53
|
+
color: "#fd7e14",
|
|
54
|
+
text: "Reconnecting...",
|
|
55
|
+
emoji: "🟠",
|
|
56
|
+
},
|
|
57
|
+
disconnecting: { color: "#dc3545", text: "Disconnecting...", emoji: "🔴" },
|
|
58
|
+
};
|
|
59
|
+
const { color, text } = statusConfig[connectionState];
|
|
60
|
+
return (React.createElement("div", { className: `websocket-status ${className}`, style: {
|
|
61
|
+
display: "flex",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
gap: "8px",
|
|
64
|
+
padding: "4px 12px",
|
|
65
|
+
borderRadius: "16px",
|
|
66
|
+
backgroundColor: "rgba(0, 0, 0, 0.05)",
|
|
67
|
+
fontSize: "14px",
|
|
68
|
+
...style,
|
|
69
|
+
} },
|
|
70
|
+
React.createElement("span", { className: "status-dot", style: {
|
|
71
|
+
display: "inline-block",
|
|
72
|
+
width: "8px",
|
|
73
|
+
height: "8px",
|
|
74
|
+
borderRadius: "50%",
|
|
75
|
+
backgroundColor: color,
|
|
76
|
+
}, title: text }),
|
|
77
|
+
React.createElement("span", { className: "status-text", style: { fontWeight: 500 } }, text),
|
|
78
|
+
showReconnectCount &&
|
|
79
|
+
connectionState === "reconnecting" &&
|
|
80
|
+
reconnectAttempt > 0 && (React.createElement("span", { className: "reconnect-info", style: { fontSize: "12px", color: "#6c757d" } },
|
|
81
|
+
"(attempt ",
|
|
82
|
+
reconnectAttempt,
|
|
83
|
+
")")),
|
|
84
|
+
showDetails && (React.createElement("div", { className: "status-details", style: {
|
|
85
|
+
fontSize: "12px",
|
|
86
|
+
color: "#6c757d",
|
|
87
|
+
marginLeft: "8px",
|
|
88
|
+
} },
|
|
89
|
+
connectionState === "reconnecting" && reconnectDelay > 0 && (React.createElement("span", null,
|
|
90
|
+
"Retry in ",
|
|
91
|
+
Math.round(reconnectDelay / 1000),
|
|
92
|
+
"s")),
|
|
93
|
+
lastError && connectionState !== "connected" && (React.createElement("span", { title: lastError }, " | Error"))))));
|
|
94
|
+
}
|
|
95
|
+
export function WebSocketStatusBadge({ wildduckUserAuth, size = 8, className = "", style, }) {
|
|
96
|
+
const wsContext = useWebSocket();
|
|
97
|
+
const [connectionState, setConnectionState] = useState("disconnected");
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
103
|
+
if (!client) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
setConnectionState(client.state);
|
|
107
|
+
const handleStateChange = (_oldState, newState) => {
|
|
108
|
+
setConnectionState(newState);
|
|
109
|
+
};
|
|
110
|
+
client.on("stateChange", handleStateChange);
|
|
111
|
+
return () => {
|
|
112
|
+
client.off("stateChange", handleStateChange);
|
|
113
|
+
};
|
|
114
|
+
}, [wsContext, wildduckUserAuth]);
|
|
115
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
const colorMap = {
|
|
119
|
+
disconnected: "#6c757d",
|
|
120
|
+
connecting: "#ffc107",
|
|
121
|
+
connected: "#28a745",
|
|
122
|
+
reconnecting: "#fd7e14",
|
|
123
|
+
disconnecting: "#dc3545",
|
|
124
|
+
};
|
|
125
|
+
return (React.createElement("span", { className: `websocket-status-badge ${className}`, style: {
|
|
126
|
+
display: "inline-block",
|
|
127
|
+
width: `${size}px`,
|
|
128
|
+
height: `${size}px`,
|
|
129
|
+
borderRadius: "50%",
|
|
130
|
+
backgroundColor: colorMap[connectionState],
|
|
131
|
+
...style,
|
|
132
|
+
}, title: connectionState }));
|
|
133
|
+
}
|
|
134
|
+
export function WebSocketStats({ wildduckUserAuth, className = "", style, }) {
|
|
135
|
+
const wsContext = useWebSocket();
|
|
136
|
+
const [stats, setStats] = useState({
|
|
137
|
+
state: "disconnected",
|
|
138
|
+
reconnectAttempt: 0,
|
|
139
|
+
subscriptions: 0,
|
|
140
|
+
});
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
146
|
+
if (!client) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const updateStats = () => {
|
|
150
|
+
setStats({
|
|
151
|
+
state: client.state,
|
|
152
|
+
reconnectAttempt: client.reconnectAttempt,
|
|
153
|
+
subscriptions: client.subscriptions.size,
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
updateStats();
|
|
157
|
+
const handleStateChange = () => updateStats();
|
|
158
|
+
const handleReconnecting = () => updateStats();
|
|
159
|
+
client.on("stateChange", handleStateChange);
|
|
160
|
+
client.on("reconnecting", handleReconnecting);
|
|
161
|
+
return () => {
|
|
162
|
+
client.off("stateChange", handleStateChange);
|
|
163
|
+
client.off("reconnecting", handleReconnecting);
|
|
164
|
+
};
|
|
165
|
+
}, [wsContext, wildduckUserAuth]);
|
|
166
|
+
if (!wsContext || !wildduckUserAuth) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
return (React.createElement("div", { className: `websocket-stats ${className}`, style: {
|
|
170
|
+
padding: "8px",
|
|
171
|
+
fontSize: "12px",
|
|
172
|
+
fontFamily: "monospace",
|
|
173
|
+
backgroundColor: "rgba(0, 0, 0, 0.05)",
|
|
174
|
+
borderRadius: "4px",
|
|
175
|
+
...style,
|
|
176
|
+
} },
|
|
177
|
+
React.createElement("div", null,
|
|
178
|
+
"State: ",
|
|
179
|
+
stats.state),
|
|
180
|
+
React.createElement("div", null,
|
|
181
|
+
"Subscriptions: ",
|
|
182
|
+
stats.subscriptions),
|
|
183
|
+
stats.reconnectAttempt > 0 && (React.createElement("div", null,
|
|
184
|
+
"Reconnect attempts: ",
|
|
185
|
+
stats.reconnectAttempt))));
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=WebSocketStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketStatus.js","sourceRoot":"","sources":["../../src/components/WebSocketStatus.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,GAIf,MAAM,mBAAmB,CAAC"}
|
|
@@ -18,6 +18,9 @@ interface UseWildduckAutoReplyReturn {
|
|
|
18
18
|
deleteError: Optional<Error>;
|
|
19
19
|
clearError: () => void;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
interface UseWildduckAutoReplyOptions {
|
|
22
|
+
enableWebSocket?: boolean;
|
|
23
|
+
}
|
|
24
|
+
declare const useWildduckAutoReply: (networkClient: NetworkClient, config: WildduckConfig, wildduckUserAuth: Optional<WildduckUserAuth>, _devMode?: boolean, options?: UseWildduckAutoReplyOptions) => UseWildduckAutoReplyReturn;
|
|
25
|
+
export { useWildduckAutoReply, type UseWildduckAutoReplyReturn, type UseWildduckAutoReplyOptions, };
|
|
23
26
|
//# sourceMappingURL=useWildduckAutoReply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWildduckAutoReply.d.ts","sourceRoot":"","sources":["../../src/hooks/useWildduckAutoReply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useWildduckAutoReply.d.ts","sourceRoot":"","sources":["../../src/hooks/useWildduckAutoReply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAK3B,UAAU,0BAA0B;IAElC,SAAS,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGxB,YAAY,EAAE,CACZ,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7B,eAAe,EAAE,CACf,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,wBAAwB,KAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7B,eAAe,EAAE,CACf,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAG7B,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAKD,UAAU,2BAA2B;IAEnC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,QAAA,MAAM,oBAAoB,GACxB,eAAe,aAAa,EAC5B,QAAQ,cAAc,EACtB,kBAAkB,QAAQ,CAAC,gBAAgB,CAAC,EAC5C,WAAU,OAAe,EACzB,UAAU,2BAA2B,KACpC,0BAiTF,CAAC;AAEF,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,CAAC"}
|
|
@@ -1,10 +1,91 @@
|
|
|
1
1
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
2
|
-
import { useCallback, useMemo } from "react";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
3
3
|
import { WildduckClient } from "../network/wildduck-client";
|
|
4
|
-
|
|
4
|
+
import { useWebSocket } from "../websocket/useWebSocket";
|
|
5
|
+
const useWildduckAutoReply = (networkClient, config, wildduckUserAuth, _devMode = false, options) => {
|
|
5
6
|
const queryClient = useQueryClient();
|
|
7
|
+
const wsSubscribedRef = useRef(false);
|
|
8
|
+
let wsContext;
|
|
9
|
+
try {
|
|
10
|
+
wsContext = useWebSocket();
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
wsContext = null;
|
|
14
|
+
}
|
|
6
15
|
const userId = wildduckUserAuth?.userId || null;
|
|
7
16
|
const api = useMemo(() => new WildduckClient(networkClient, config), [networkClient, config]);
|
|
17
|
+
const shouldUseWebSocket = options?.enableWebSocket &&
|
|
18
|
+
wsContext?.isEnabled &&
|
|
19
|
+
wildduckUserAuth !== null;
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!shouldUseWebSocket || !wildduckUserAuth || !wsContext) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
25
|
+
if (!client) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
wsContext.connect(wildduckUserAuth).catch((error) => {
|
|
29
|
+
console.error("Failed to connect WebSocket:", error);
|
|
30
|
+
});
|
|
31
|
+
const handleData = (channel, data) => {
|
|
32
|
+
if (channel !== "autoreply" || !data.success) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const autoreplyData = data;
|
|
36
|
+
const autoreply = autoreplyData.autoreply;
|
|
37
|
+
queryClient.setQueryData(["wildduck-autoreply", wildduckUserAuth.userId], autoreply);
|
|
38
|
+
};
|
|
39
|
+
const handleUpdate = (channel, data) => {
|
|
40
|
+
if (channel !== "autoreply" || !data.success) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const updateData = data;
|
|
44
|
+
const event = updateData.event;
|
|
45
|
+
const autoreply = updateData.autoreply;
|
|
46
|
+
if (!event) {
|
|
47
|
+
queryClient.invalidateQueries({
|
|
48
|
+
queryKey: ["wildduck-autoreply", wildduckUserAuth.userId],
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
switch (event) {
|
|
53
|
+
case "updated":
|
|
54
|
+
if (autoreply) {
|
|
55
|
+
queryClient.setQueryData(["wildduck-autoreply", wildduckUserAuth.userId], autoreply);
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
case "deleted":
|
|
59
|
+
queryClient.setQueryData(["wildduck-autoreply", wildduckUserAuth.userId], null);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
client.on("data", handleData);
|
|
64
|
+
client.on("update", handleUpdate);
|
|
65
|
+
if (!wsSubscribedRef.current) {
|
|
66
|
+
wsSubscribedRef.current = true;
|
|
67
|
+
client
|
|
68
|
+
.subscribe("autoreply", {
|
|
69
|
+
userId: wildduckUserAuth.userId,
|
|
70
|
+
token: wildduckUserAuth.accessToken,
|
|
71
|
+
})
|
|
72
|
+
.catch((error) => {
|
|
73
|
+
console.error("Failed to subscribe to autoreply channel:", error);
|
|
74
|
+
wsSubscribedRef.current = false;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return () => {
|
|
78
|
+
client.off("data", handleData);
|
|
79
|
+
client.off("update", handleUpdate);
|
|
80
|
+
if (wsSubscribedRef.current) {
|
|
81
|
+
client.unsubscribe("autoreply").catch((error) => {
|
|
82
|
+
console.error("Failed to unsubscribe from autoreply:", error);
|
|
83
|
+
});
|
|
84
|
+
wsSubscribedRef.current = false;
|
|
85
|
+
}
|
|
86
|
+
wsContext.disconnect(wildduckUserAuth.userId);
|
|
87
|
+
};
|
|
88
|
+
}, [shouldUseWebSocket, wildduckUserAuth, wsContext, queryClient]);
|
|
8
89
|
const getAutoreply = useCallback(async (wildduckUserAuth) => {
|
|
9
90
|
try {
|
|
10
91
|
const autoreplyData = await api.getAutoreply(wildduckUserAuth);
|
|
@@ -106,5 +187,5 @@ const useWildduckAutoReply = (networkClient, config, wildduckUserAuth, _devMode
|
|
|
106
187
|
clearError,
|
|
107
188
|
]);
|
|
108
189
|
};
|
|
109
|
-
export { useWildduckAutoReply };
|
|
190
|
+
export { useWildduckAutoReply, };
|
|
110
191
|
//# sourceMappingURL=useWildduckAutoReply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWildduckAutoReply.js","sourceRoot":"","sources":["../../src/hooks/useWildduckAutoReply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useWildduckAutoReply.js","sourceRoot":"","sources":["../../src/hooks/useWildduckAutoReply.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,9 @@ interface UseWildduckFiltersReturn {
|
|
|
18
18
|
clearError: () => void;
|
|
19
19
|
refresh: (wildduckUserAuth: WildduckUserAuth) => Promise<void>;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
interface UseWildduckFiltersOptions {
|
|
22
|
+
enableWebSocket?: boolean;
|
|
23
|
+
}
|
|
24
|
+
declare const useWildduckFilters: (networkClient: NetworkClient, config: WildduckConfig, wildduckUserAuth: Optional<WildduckUserAuth>, devMode?: boolean, options?: UseWildduckFiltersOptions) => UseWildduckFiltersReturn;
|
|
25
|
+
export { useWildduckFilters, type UseWildduckFiltersReturn, type UseWildduckFiltersOptions, };
|
|
23
26
|
//# sourceMappingURL=useWildduckFilters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWildduckFilters.d.ts","sourceRoot":"","sources":["../../src/hooks/useWildduckFilters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useWildduckFilters.d.ts","sourceRoot":"","sources":["../../src/hooks/useWildduckFilters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAO3B,UAAU,wBAAwB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,UAAU,EAAE,CACV,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACvC,SAAS,EAAE,CACT,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;IACjD,YAAY,EAAE,CACZ,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,2BAA2B,KAChC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,YAAY,EAAE,CACZ,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,2BAA2B,KAChC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnC,YAAY,EAAE,CACZ,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAKD,UAAU,yBAAyB;IAEjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAWD,QAAA,MAAM,kBAAkB,GACtB,eAAe,aAAa,EAC5B,QAAQ,cAAc,EACtB,kBAAkB,QAAQ,CAAC,gBAAgB,CAAC,EAC5C,UAAS,OAAe,EACxB,UAAU,yBAAyB,KAClC,wBAgWF,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,CAAC"}
|
|
@@ -1,11 +1,108 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react";
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
2
|
import { WildduckMockData } from "./mocks";
|
|
3
3
|
import { WildduckClient } from "../network/wildduck-client";
|
|
4
|
-
|
|
4
|
+
import { useWebSocket } from "../websocket/useWebSocket";
|
|
5
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
const useWildduckFilters = (networkClient, config, wildduckUserAuth, devMode = false, options) => {
|
|
5
7
|
const [isLoading, setIsLoading] = useState(false);
|
|
6
8
|
const [error, setError] = useState(null);
|
|
7
9
|
const [filters, setFilters] = useState([]);
|
|
10
|
+
const queryClient = useQueryClient();
|
|
11
|
+
const wsSubscribedRef = useRef(false);
|
|
12
|
+
let wsContext;
|
|
13
|
+
try {
|
|
14
|
+
wsContext = useWebSocket();
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
wsContext = null;
|
|
18
|
+
}
|
|
8
19
|
const api = useMemo(() => new WildduckClient(networkClient, config), [networkClient, config]);
|
|
20
|
+
const shouldUseWebSocket = options?.enableWebSocket &&
|
|
21
|
+
wsContext?.isEnabled &&
|
|
22
|
+
wildduckUserAuth !== null;
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!shouldUseWebSocket || !wildduckUserAuth || !wsContext) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const client = wsContext.getClient(wildduckUserAuth);
|
|
28
|
+
if (!client) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
wsContext.connect(wildduckUserAuth).catch((error) => {
|
|
32
|
+
console.error("Failed to connect WebSocket:", error);
|
|
33
|
+
});
|
|
34
|
+
const handleData = (channel, data) => {
|
|
35
|
+
if (channel !== "filters" || !data.success) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const filtersData = data;
|
|
39
|
+
const filterList = filtersData.filters || [];
|
|
40
|
+
setFilters(filterList);
|
|
41
|
+
queryClient.setQueryData(["wildduck-filters", wildduckUserAuth.userId], filterList);
|
|
42
|
+
};
|
|
43
|
+
const handleUpdate = (channel, data) => {
|
|
44
|
+
if (channel !== "filters" || !data.success) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const updateData = data;
|
|
48
|
+
const event = updateData.event;
|
|
49
|
+
const filter = updateData.filter;
|
|
50
|
+
if (!event || !filter) {
|
|
51
|
+
queryClient.invalidateQueries({
|
|
52
|
+
queryKey: ["wildduck-filters", wildduckUserAuth.userId],
|
|
53
|
+
});
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setFilters((currentFilters) => {
|
|
57
|
+
let updatedFilters;
|
|
58
|
+
switch (event) {
|
|
59
|
+
case "created":
|
|
60
|
+
if (!currentFilters.find((f) => f.id === filter.id)) {
|
|
61
|
+
updatedFilters = [...currentFilters, filter];
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
updatedFilters = currentFilters;
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
case "updated":
|
|
68
|
+
updatedFilters = currentFilters.map((f) => f.id === filter.id ? { ...f, ...filter } : f);
|
|
69
|
+
break;
|
|
70
|
+
case "deleted":
|
|
71
|
+
updatedFilters = currentFilters.filter((f) => f.id !== filter.id);
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
updatedFilters = currentFilters;
|
|
75
|
+
}
|
|
76
|
+
queryClient.setQueryData(["wildduck-filters", wildduckUserAuth.userId], updatedFilters);
|
|
77
|
+
return updatedFilters;
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
client.on("data", handleData);
|
|
81
|
+
client.on("update", handleUpdate);
|
|
82
|
+
if (!wsSubscribedRef.current) {
|
|
83
|
+
wsSubscribedRef.current = true;
|
|
84
|
+
client
|
|
85
|
+
.subscribe("filters", {
|
|
86
|
+
userId: wildduckUserAuth.userId,
|
|
87
|
+
token: wildduckUserAuth.accessToken,
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
console.error("Failed to subscribe to filters channel:", error);
|
|
91
|
+
wsSubscribedRef.current = false;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return () => {
|
|
95
|
+
client.off("data", handleData);
|
|
96
|
+
client.off("update", handleUpdate);
|
|
97
|
+
if (wsSubscribedRef.current) {
|
|
98
|
+
client.unsubscribe("filters").catch((error) => {
|
|
99
|
+
console.error("Failed to unsubscribe from filters:", error);
|
|
100
|
+
});
|
|
101
|
+
wsSubscribedRef.current = false;
|
|
102
|
+
}
|
|
103
|
+
wsContext.disconnect(wildduckUserAuth.userId);
|
|
104
|
+
};
|
|
105
|
+
}, [shouldUseWebSocket, wildduckUserAuth, wsContext, queryClient]);
|
|
9
106
|
const clearError = useCallback(() => {
|
|
10
107
|
setError(null);
|
|
11
108
|
}, []);
|
|
@@ -144,5 +241,5 @@ const useWildduckFilters = (networkClient, config, devMode = false) => {
|
|
|
144
241
|
refresh,
|
|
145
242
|
]);
|
|
146
243
|
};
|
|
147
|
-
export { useWildduckFilters };
|
|
244
|
+
export { useWildduckFilters, };
|
|
148
245
|
//# sourceMappingURL=useWildduckFilters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWildduckFilters.js","sourceRoot":"","sources":["../../src/hooks/useWildduckFilters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useWildduckFilters.js","sourceRoot":"","sources":["../../src/hooks/useWildduckFilters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAU1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+CvD,MAAM,kBAAkB,GAAG,CACzB,aAA4B,EAC5B,MAAsB,EACtB,gBAA4C,EAC5C,UAAmB,KAAK,EACxB,OAAmC,EACT,EAAE;IAC5B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA2B,EAAE,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAGtC,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QAEP,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAGD,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,EAC/C,CAAC,aAAa,EAAE,MAAM,CAAC,CACxB,CAAC;IAGF,MAAM,kBAAkB,GACtB,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,SAAS;QACpB,gBAAgB,KAAK,IAAI,CAAC;IAG5B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAGD,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAClD,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAGH,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAE,IAAwB,EAAE,EAAE;YACpE,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3C,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,IAAW,CAAC;YAChC,MAAM,UAAU,GACb,WAAW,CAAC,OAAoC,IAAI,EAAE,CAAC;YAG1D,UAAU,CAAC,UAAU,CAAC,CAAC;YAGvB,WAAW,CAAC,YAAY,CACtB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC7C,UAAU,CACX,CAAC;QACJ,CAAC,CAAC;QAGF,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,IAAwB,EAAE,EAAE;YACtE,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3C,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,IAAW,CAAC;YAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,KAA0C,CAAC;YACpE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAgC,CAAC;YAE3D,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAEtB,WAAW,CAAC,iBAAiB,CAAC;oBAC5B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC;iBACxD,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAGD,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE;gBAC5B,IAAI,cAAwC,CAAC;gBAE7C,QAAQ,KAAK,EAAE,CAAC;oBACd,KAAK,SAAS;wBAEZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;4BACpD,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,MAAM,CAAC,CAAC;wBAC/C,CAAC;6BAAM,CAAC;4BACN,cAAc,GAAG,cAAc,CAAC;wBAClC,CAAC;wBACD,MAAM;oBAER,KAAK,SAAS;wBAEZ,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC;wBACF,MAAM;oBAER,KAAK,SAAS;wBAEZ,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;wBAClE,MAAM;oBAER;wBACE,cAAc,GAAG,cAAc,CAAC;gBACpC,CAAC;gBAGD,WAAW,CAAC,YAAY,CACtB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC7C,cAAc,CACf,CAAC;gBAEF,OAAO,cAAc,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAGF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAGlC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC7B,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YAC/B,MAAM;iBACH,SAAS,CAAC,SAAS,EAAE;gBACpB,MAAM,EAAE,gBAAgB,CAAC,MAAM;gBAC/B,KAAK,EAAE,gBAAgB,CAAC,WAAW;aACpC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAChE,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC;QAGD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAEnC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC5C,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBACH,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;YAClC,CAAC;YAED,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EACH,gBAAkC,EACC,EAAE;QACrC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAExD,MAAM,UAAU,GACb,QAAmD,CAAC,OAAO,IAAI,EAAE,CAAC;YACrE,UAAU,CAAC,UAAU,CAAC,CAAC;YACvB,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI;qBAC9B,OAA8C,CAAC;gBAClD,UAAU,CAAC,WAAW,CAAC,CAAC;gBACxB,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC/D,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,EACH,gBAAkC,EAClC,QAAgB,EAC6B,EAAE;QAC/C,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEjE,OAAO,QAAkC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAA2C,CAAC;YACnE,CAAC;YAED,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAC9D,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EACH,gBAAkC,EAClC,MAAmC,EACQ,EAAE;QAC7C,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAElE,OAAO,QAA4C,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACjE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EACH,gBAAkC,EAClC,QAAgB,EAChB,MAAmC,EACJ,EAAE;QACjC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CACrC,gBAAgB,EAChB,QAAQ,EACR,MAAM,CACP,CAAC;YAEF,OAAO,QAAgC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACjE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EACH,gBAAkC,EAClC,QAAgB,EACe,EAAE;QACjC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEpE,OAAO,QAAgC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACjE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,gBAAkC,EAAiB,EAAE;QAC1D,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,OAAO;KACR,CAAC,EACF;QACE,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,OAAO;KACR,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EACL,kBAAkB,GAGnB,CAAC"}
|
|
@@ -75,6 +75,9 @@ interface UseWildduckMessagesReturn {
|
|
|
75
75
|
moveError: Optional<Error>;
|
|
76
76
|
clearError: () => void;
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
interface UseWildduckMessagesOptions {
|
|
79
|
+
enableWebSocket?: boolean;
|
|
80
|
+
}
|
|
81
|
+
declare const useWildduckMessages: (networkClient: NetworkClient, config: WildduckConfig, _devMode?: boolean, pageSize?: number, options?: UseWildduckMessagesOptions) => UseWildduckMessagesReturn;
|
|
79
82
|
export { useWildduckMessages, type GetMessagesOptions, type SendMessageParams, type UseWildduckMessagesReturn, };
|
|
80
83
|
//# sourceMappingURL=useWildduckMessages.d.ts.map
|