react-peer-chat 0.11.6 → 0.11.8
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/chunks/{chunk-7M2EWH66.js → chunk-63W3RVVG.js} +1 -1
- package/dist/chunks/{chunk-XJSK56RM.js → chunk-NWSTDMKZ.js} +14 -10
- package/dist/chunks/chunk-RM3QSN63.js +55 -0
- package/dist/components.js +3 -3
- package/dist/hooks.js +2 -2
- package/dist/index.js +3 -3
- package/dist/lib/storage.d.ts +10 -4
- package/dist/lib/storage.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/chunk-ZYFPSCFE.js +0 -22
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useChat } from './chunk-
|
|
1
|
+
import { useChat } from './chunk-NWSTDMKZ.js';
|
|
2
2
|
import { BiSolidMessageX, BiSolidMessageDetail, GrSend, BsFillMicFill, BsFillMicMuteFill } from './chunk-QIPTWGEX.js';
|
|
3
3
|
import { __objRest, __spreadValues } from './chunk-FZ4QVG4I.js';
|
|
4
4
|
import React, { useRef, useState, useEffect } from 'react';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getStorage, setStorage } from './chunk-
|
|
1
|
+
import { getStorage, subscribeToStorage, setStorage } from './chunk-RM3QSN63.js';
|
|
2
2
|
import { __spreadValues, __async, __spreadProps } from './chunk-FZ4QVG4I.js';
|
|
3
3
|
import { useState, useRef, useMemo, useEffect } from 'react';
|
|
4
4
|
|
|
@@ -31,7 +31,8 @@ var defaults = {
|
|
|
31
31
|
peerOptions: {},
|
|
32
32
|
remotePeerId: []
|
|
33
33
|
};
|
|
34
|
-
var
|
|
34
|
+
var iosRegex = /iPhone|iPad|iPod/i;
|
|
35
|
+
var mobileRegex = /Android|webOS|BlackBerry|IEMobile|Opera Mini/i;
|
|
35
36
|
|
|
36
37
|
// src/lib/connection.ts
|
|
37
38
|
function closeConnection(conn) {
|
|
@@ -41,6 +42,12 @@ function closeConnection(conn) {
|
|
|
41
42
|
|
|
42
43
|
// src/lib/utils.ts
|
|
43
44
|
var addPrefix = (str) => `rpc-${str}`;
|
|
45
|
+
function isMobile(iOS = true) {
|
|
46
|
+
var _a;
|
|
47
|
+
let result = (_a = navigator.userAgentData) == null ? void 0 : _a.mobile;
|
|
48
|
+
result != null ? result : result = mobileRegex.test(navigator.userAgent) || iOS && iosRegex.test(navigator.userAgent);
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
44
51
|
|
|
45
52
|
// src/lib/react.ts
|
|
46
53
|
function isSetStateFunction(v) {
|
|
@@ -182,7 +189,6 @@ function useChat({
|
|
|
182
189
|
if (!text && !audio) return;
|
|
183
190
|
let destroyed = false;
|
|
184
191
|
let reconnecting = false;
|
|
185
|
-
let reconnectAttempts = 0;
|
|
186
192
|
let reconnectTimer;
|
|
187
193
|
scheduleReconnectRef.current = () => {
|
|
188
194
|
if (destroyed || reconnecting) return;
|
|
@@ -190,11 +196,8 @@ function useChat({
|
|
|
190
196
|
reconnectTimer = setTimeout(() => {
|
|
191
197
|
const peer = peerRef.current;
|
|
192
198
|
if (peer) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
setPeerGeneration((prev) => prev + 1);
|
|
196
|
-
reconnectAttempts = 0;
|
|
197
|
-
} else peer.reconnect();
|
|
199
|
+
if (isMobile()) setPeerGeneration((prev) => prev + 1);
|
|
200
|
+
else peer.reconnect();
|
|
198
201
|
}
|
|
199
202
|
reconnecting = false;
|
|
200
203
|
}, 1e3);
|
|
@@ -212,7 +215,6 @@ function useChat({
|
|
|
212
215
|
peerRef.current = new Peer(completePeerId, __spreadValues({ config: defaultConfig }, peerOptions));
|
|
213
216
|
setPeerEpoch((prev) => prev + 1);
|
|
214
217
|
const peer = peerRef.current;
|
|
215
|
-
peer.on("open", () => reconnectAttempts = 0);
|
|
216
218
|
peer.on("connection", handleConnection);
|
|
217
219
|
peer.on("call", handleCall);
|
|
218
220
|
peer.on("disconnected", () => {
|
|
@@ -233,7 +235,6 @@ function useChat({
|
|
|
233
235
|
var _a, _b;
|
|
234
236
|
destroyed = true;
|
|
235
237
|
reconnecting = false;
|
|
236
|
-
reconnectAttempts = 0;
|
|
237
238
|
clearTimeout(reconnectTimer);
|
|
238
239
|
(_a = peerRef.current) == null ? void 0 : _a.removeAllListeners();
|
|
239
240
|
(_b = peerRef.current) == null ? void 0 : _b.destroy();
|
|
@@ -295,6 +296,9 @@ function useStorage(key, initialValue, local = false) {
|
|
|
295
296
|
return next;
|
|
296
297
|
});
|
|
297
298
|
};
|
|
299
|
+
useEffect(() => {
|
|
300
|
+
return subscribeToStorage(key, local, (value) => setStoredValue(value));
|
|
301
|
+
}, [key, local]);
|
|
298
302
|
return [storedValue, setValue];
|
|
299
303
|
}
|
|
300
304
|
function useAudio(allowed) {
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// src/lib/storage.ts
|
|
2
|
+
var listeners = /* @__PURE__ */ new Map();
|
|
3
|
+
function clearChat() {
|
|
4
|
+
removeStorage("rpc-remote-peer");
|
|
5
|
+
removeStorage("rpc-messages");
|
|
6
|
+
}
|
|
7
|
+
var getStorageInstance = (local = true) => local ? localStorage : sessionStorage;
|
|
8
|
+
function clearStorage(prefix = "", local = true) {
|
|
9
|
+
const storage = getStorageInstance(local);
|
|
10
|
+
const keysToRemove = [];
|
|
11
|
+
for (let i = 0; i < storage.length; i++) {
|
|
12
|
+
const key = storage.key(i);
|
|
13
|
+
if (key && key.startsWith(prefix)) keysToRemove.push(key);
|
|
14
|
+
}
|
|
15
|
+
keysToRemove.forEach((key) => removeStorage(key, local));
|
|
16
|
+
}
|
|
17
|
+
var getNamespacedKey = (key, local = true) => `${local ? "local" : "session"}:${key}`;
|
|
18
|
+
function getStorage(key, fallbackValue, local = true) {
|
|
19
|
+
if (typeof window === "undefined") return fallbackValue;
|
|
20
|
+
const value = getStorageInstance(local).getItem(key);
|
|
21
|
+
if (value) {
|
|
22
|
+
try {
|
|
23
|
+
return JSON.parse(value);
|
|
24
|
+
} catch (e) {
|
|
25
|
+
removeStorage(key, local);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (fallbackValue !== void 0) setStorage(key, fallbackValue, local);
|
|
29
|
+
return fallbackValue;
|
|
30
|
+
}
|
|
31
|
+
function publish(key, local, value) {
|
|
32
|
+
const callbacks = listeners.get(getNamespacedKey(key, local));
|
|
33
|
+
if (callbacks) callbacks.forEach((callback) => callback(value));
|
|
34
|
+
}
|
|
35
|
+
function removeStorage(key, local = true) {
|
|
36
|
+
getStorageInstance(local).removeItem(key);
|
|
37
|
+
publish(key, local);
|
|
38
|
+
}
|
|
39
|
+
function setStorage(key, value, local = true) {
|
|
40
|
+
if (typeof value === "function") value = value(getStorage(key, void 0, local));
|
|
41
|
+
getStorageInstance(local).setItem(key, JSON.stringify(value));
|
|
42
|
+
publish(key, local, value);
|
|
43
|
+
}
|
|
44
|
+
function subscribeToStorage(key, local, callback) {
|
|
45
|
+
key = getNamespacedKey(key, local);
|
|
46
|
+
if (!listeners.has(key)) listeners.set(key, /* @__PURE__ */ new Set());
|
|
47
|
+
const set = listeners.get(key);
|
|
48
|
+
set.add(callback);
|
|
49
|
+
return () => {
|
|
50
|
+
set.delete(callback);
|
|
51
|
+
if (set.size === 0) listeners.delete(key);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export { clearChat, clearStorage, getStorage, removeStorage, setStorage, subscribeToStorage };
|
package/dist/components.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Chat as default } from './chunks/chunk-
|
|
2
|
-
import './chunks/chunk-
|
|
1
|
+
export { Chat as default } from './chunks/chunk-63W3RVVG.js';
|
|
2
|
+
import './chunks/chunk-NWSTDMKZ.js';
|
|
3
3
|
import './chunks/chunk-QIPTWGEX.js';
|
|
4
|
-
import './chunks/chunk-
|
|
4
|
+
import './chunks/chunk-RM3QSN63.js';
|
|
5
5
|
import './chunks/chunk-FZ4QVG4I.js';
|
package/dist/hooks.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { useAudio, useChat, useMessages, useStorage } from './chunks/chunk-
|
|
2
|
-
import './chunks/chunk-
|
|
1
|
+
export { useAudio, useChat, useMessages, useStorage } from './chunks/chunk-NWSTDMKZ.js';
|
|
2
|
+
import './chunks/chunk-RM3QSN63.js';
|
|
3
3
|
import './chunks/chunk-FZ4QVG4I.js';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Chat as default } from './chunks/chunk-
|
|
2
|
-
export { useChat } from './chunks/chunk-
|
|
1
|
+
export { Chat as default } from './chunks/chunk-63W3RVVG.js';
|
|
2
|
+
export { useChat } from './chunks/chunk-NWSTDMKZ.js';
|
|
3
3
|
import './chunks/chunk-QIPTWGEX.js';
|
|
4
|
-
export { clearChat } from './chunks/chunk-
|
|
4
|
+
export { clearChat } from './chunks/chunk-RM3QSN63.js';
|
|
5
5
|
import './chunks/chunk-FZ4QVG4I.js';
|
package/dist/lib/storage.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { VoidFunction } from '../types.js';
|
|
2
|
+
import 'peerjs';
|
|
3
|
+
import 'react';
|
|
4
|
+
|
|
5
|
+
declare function clearChat(): void;
|
|
6
|
+
declare function clearStorage(prefix?: string, local?: boolean): void;
|
|
4
7
|
declare function getStorage<T>(key: string, fallbackValue?: T, local?: boolean): T | undefined;
|
|
8
|
+
declare function removeStorage(key: string, local?: boolean): void;
|
|
9
|
+
declare function setStorage(key: string, value: unknown, local?: boolean): void;
|
|
10
|
+
declare function subscribeToStorage<T>(key: string, local: boolean, callback: (value: T) => void): VoidFunction;
|
|
5
11
|
|
|
6
|
-
export { clearChat, getStorage, removeStorage, setStorage };
|
|
12
|
+
export { clearChat, clearStorage, getStorage, removeStorage, setStorage, subscribeToStorage };
|
package/dist/lib/storage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { clearChat, getStorage, removeStorage, setStorage } from '../chunks/chunk-
|
|
1
|
+
export { clearChat, clearStorage, getStorage, removeStorage, setStorage, subscribeToStorage } from '../chunks/chunk-RM3QSN63.js';
|
|
2
2
|
import '../chunks/chunk-FZ4QVG4I.js';
|
package/package.json
CHANGED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// src/lib/storage.ts
|
|
2
|
-
var getStorageInstance = (local = true) => local ? localStorage : sessionStorage;
|
|
3
|
-
var removeStorage = (key, local = true) => getStorageInstance(local).removeItem(key);
|
|
4
|
-
var clearChat = () => {
|
|
5
|
-
removeStorage("rpc-remote-peer");
|
|
6
|
-
removeStorage("rpc-messages");
|
|
7
|
-
};
|
|
8
|
-
var setStorage = (key, value, local = true) => getStorageInstance(local).setItem(key, JSON.stringify(value));
|
|
9
|
-
function getStorage(key, fallbackValue, local = true) {
|
|
10
|
-
const value = getStorageInstance(local).getItem(key);
|
|
11
|
-
if (value) {
|
|
12
|
-
try {
|
|
13
|
-
return JSON.parse(value);
|
|
14
|
-
} catch (e) {
|
|
15
|
-
removeStorage(key, local);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
if (fallbackValue !== void 0) setStorage(key, fallbackValue, local);
|
|
19
|
-
return fallbackValue;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { clearChat, getStorage, removeStorage, setStorage };
|