@mgarlik/datastore 0.1.2 → 0.1.3
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/index.cjs +174 -115
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -10
- package/dist/index.d.ts +25 -10
- package/dist/index.js +174 -115
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
package/dist/index.cjs
CHANGED
|
@@ -85,26 +85,32 @@ function systemLog(..._args) {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// src/handleSocketMessage.ts
|
|
88
|
-
var handleSocketMessage = (
|
|
89
|
-
const { dispatch
|
|
88
|
+
var handleSocketMessage = (msg, dataProvider) => {
|
|
89
|
+
const { dispatch } = dataProvider;
|
|
90
|
+
console.log("Mam socket message, data: ", msg);
|
|
90
91
|
const data = JSON.parse(msg);
|
|
91
92
|
switch (data.action) {
|
|
92
93
|
case "create":
|
|
93
94
|
systemLog("sockets", "[create] ", data.model, ", document: ", data.documentId);
|
|
95
|
+
console.log("[SOCKETS] CREATING model:", data.model, ", document: ", data.documentId, " data:", data.data);
|
|
94
96
|
dispatch?.("createDocument", { model: data.model, documentId: data.documentId, data: data.data });
|
|
95
97
|
break;
|
|
96
98
|
case "update":
|
|
99
|
+
console.log(`[SOCKETS] UPDATE model: ${data.model}, document: ${data.documentId}, data: `, data.data);
|
|
97
100
|
systemLog("sockets", `[update] ${JSON.stringify(data)}`);
|
|
98
101
|
if (Array.isArray(data.data)) dispatch?.("updateDocuments", { model: data.model, documents: data.data });
|
|
99
|
-
else
|
|
102
|
+
else {
|
|
103
|
+
dispatch?.("updateDocument", { model: data.model, documentId: data.documentId, data: data.data });
|
|
104
|
+
}
|
|
100
105
|
break;
|
|
101
106
|
case "delete":
|
|
107
|
+
console.log(`[SOCKETS] DELETE model: ${data.model}, document: ${data.documentId}`);
|
|
102
108
|
systemLog("sockets", "[delete] model:", data.model, ", document: ", data.documentId);
|
|
103
|
-
dispatch?.("deleteDocument", { documentId: data.documentId, data: data.data });
|
|
109
|
+
dispatch?.("deleteDocument", { model: data.model, documentId: data.documentId, data: data.data });
|
|
104
110
|
break;
|
|
105
111
|
case "deleteItem":
|
|
106
|
-
systemLog("sockets", "DELETE ITEM ", model, ", model: ", data.model, ", data: ", data.data);
|
|
107
|
-
dispatch?.("removeItem", { model, documentId: data.data.id });
|
|
112
|
+
systemLog("sockets", "DELETE ITEM ", data.model, ", model: ", data.model, ", data: ", data.data);
|
|
113
|
+
dispatch?.("removeItem", { model: data.model, documentId: data.data.id });
|
|
108
114
|
break;
|
|
109
115
|
default:
|
|
110
116
|
console.error(`Unknown command ${data.action}`);
|
|
@@ -512,12 +518,15 @@ function doesValueMatchFilter(objVal, value, documents = {}) {
|
|
|
512
518
|
}
|
|
513
519
|
}
|
|
514
520
|
function doesObjectMatchFilter(obj, filter, documents = {}) {
|
|
521
|
+
console.log("doesObjectMatchFilter", "Obj", JSON.stringify(obj, null, 2), "Filter", JSON.stringify(filter, null, 2));
|
|
515
522
|
if (!filter) return true;
|
|
516
523
|
if (Object.keys(filter)?.includes("$rule")) {
|
|
524
|
+
console.log("Pravidloo: ", filter.$rule);
|
|
517
525
|
const result2 = doesObjectMatchFilter(obj, filter.$rule, documents);
|
|
518
526
|
if (result2 === true) {
|
|
519
527
|
return result2;
|
|
520
528
|
} else {
|
|
529
|
+
console.log("Vracim chybovou message ", filter.$message);
|
|
521
530
|
return filter.$message || false;
|
|
522
531
|
}
|
|
523
532
|
}
|
|
@@ -666,11 +675,20 @@ var saveData = async ({
|
|
|
666
675
|
}
|
|
667
676
|
console.timeEnd(`[SQL] saveData ${providerId}`);
|
|
668
677
|
};
|
|
678
|
+
var serializeParams = (params) => {
|
|
679
|
+
return Object.fromEntries(
|
|
680
|
+
Object.entries(params).map(([key, value]) => [
|
|
681
|
+
key,
|
|
682
|
+
typeof value === "object" ? JSON.stringify(value) : value
|
|
683
|
+
])
|
|
684
|
+
);
|
|
685
|
+
};
|
|
669
686
|
var buildUri = ({
|
|
670
687
|
method,
|
|
671
688
|
dataSource,
|
|
672
689
|
variant
|
|
673
690
|
}) => {
|
|
691
|
+
console.log("[HANDLE DATA] BUILD URI method ", method, " from", dataSource);
|
|
674
692
|
if (dataSource.crud) {
|
|
675
693
|
if (method === "update" && dataSource.crud.updates) {
|
|
676
694
|
if (variant && dataSource.crud.updates[variant]) return dataSource.crud.updates[variant];
|
|
@@ -704,7 +722,7 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
|
|
|
704
722
|
console.time("Persisted Data");
|
|
705
723
|
const qDatum = await SQLite.read(`SELECT * FROM documents WHERE model = '${id}' ORDER BY lastUpdate DESC`);
|
|
706
724
|
systemLog("axios", "SQLite.read Posledni datum update: ", qDatum[0]?.lastUpdate);
|
|
707
|
-
if (qDatum[0]?.lastUpdate) params.
|
|
725
|
+
if (qDatum[0]?.lastUpdate) params.changeTimeFrom = qDatum[0].lastUpdate;
|
|
708
726
|
persistedData = qDatum.map((item) => {
|
|
709
727
|
try {
|
|
710
728
|
const parsedData = typeof item.data === "string" ? JSON.parse(item.data) : item.data;
|
|
@@ -721,8 +739,8 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
|
|
|
721
739
|
console.timeEnd("Persisted Data");
|
|
722
740
|
}
|
|
723
741
|
if (dataSource) {
|
|
724
|
-
|
|
725
|
-
const axiosResponse = await import_axios.default.get(buildUri({ dataSource, method: "read" }), { params });
|
|
742
|
+
console.log("Stahuji data z ", buildUri({ dataSource, method: "read" }), " s parametry ", params);
|
|
743
|
+
const axiosResponse = await import_axios.default.get(buildUri({ dataSource, method: "read" }), { params: serializeParams(params) });
|
|
726
744
|
if (schema && !dataSource.readAllFields) {
|
|
727
745
|
if (Array.isArray(axiosResponse.data.data)) {
|
|
728
746
|
newData = [];
|
|
@@ -1118,9 +1136,12 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1118
1136
|
(0, import_react.useEffect)(() => {
|
|
1119
1137
|
if (isLive) {
|
|
1120
1138
|
systemLog("dsp", "useEffect[isLive] Sockets: ", JSON.stringify(sockets, null, 2));
|
|
1121
|
-
const
|
|
1122
|
-
|
|
1123
|
-
|
|
1139
|
+
const roomsToJoin = Object.entries(sockets).flatMap(
|
|
1140
|
+
([roomName, socketItem]) => socketItem.filters.map(({ filter }) => ({ room: roomName, filter }))
|
|
1141
|
+
);
|
|
1142
|
+
console.log("Sokety pro p\u0159ipojen\xED:", roomsToJoin);
|
|
1143
|
+
systemLog("dsp", "useEffect[isLive] registruji", roomsToJoin);
|
|
1144
|
+
if (roomsToJoin.length > 0) socket.emit("joinRooms", roomsToJoin);
|
|
1124
1145
|
if (!didInitialLiveSyncRef.current) {
|
|
1125
1146
|
didInitialLiveSyncRef.current = true;
|
|
1126
1147
|
systemLog("dsp", "useEffect[isLive] Zacinam synchronizovat");
|
|
@@ -1134,6 +1155,15 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1134
1155
|
(0, import_react.useEffect)(() => {
|
|
1135
1156
|
socket.on("connect", handleSocketConnect);
|
|
1136
1157
|
socket.on("disconnect", handleSocketDisconnect);
|
|
1158
|
+
if (socketServer?.params?.socketEvents && socketServer.params.socketEvents.length > 0) {
|
|
1159
|
+
socketServer?.params?.socketEvents?.map(
|
|
1160
|
+
(event) => socket.on(event, (data) => handleSocketMessage(data, socketActionHandlersRef.current))
|
|
1161
|
+
);
|
|
1162
|
+
} else {
|
|
1163
|
+
socket.on("create", (data) => handleSocketMessage(data, socketActionHandlersRef.current));
|
|
1164
|
+
socket.on("update", (data) => handleSocketMessage(data, socketActionHandlersRef.current));
|
|
1165
|
+
socket.on("delete", (data) => handleSocketMessage(data, socketActionHandlersRef.current));
|
|
1166
|
+
}
|
|
1137
1167
|
return () => {
|
|
1138
1168
|
socket.off("connect", handleSocketConnect);
|
|
1139
1169
|
socket.off("disconnect", handleSocketDisconnect);
|
|
@@ -1210,6 +1240,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1210
1240
|
result = await updateDataStore(item.data);
|
|
1211
1241
|
break;
|
|
1212
1242
|
case "createDocument":
|
|
1243
|
+
console.log("Dispatcher createDocument", item.data);
|
|
1213
1244
|
await createDocument(item.data);
|
|
1214
1245
|
break;
|
|
1215
1246
|
case "updateDocument":
|
|
@@ -1549,14 +1580,27 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1549
1580
|
const createDocument = (0, import_react.useCallback)(
|
|
1550
1581
|
async ({ model, documentId, data }) => {
|
|
1551
1582
|
const newDocument = data;
|
|
1552
|
-
|
|
1583
|
+
console.log(`Registruji model ${model}, documentId ${documentId}, data: ${JSON.stringify(data)}`);
|
|
1553
1584
|
var providerListenersCount = 0;
|
|
1554
1585
|
Object.keys(providers).forEach((key) => {
|
|
1555
1586
|
const provider = providers[key];
|
|
1556
1587
|
var socketListeners = provider.dataSource?.socketListeners;
|
|
1557
1588
|
if ((socketListeners?.includes(model) || key === model) && (!provider.dataSource?.filter || filterDocuments(data, provider.dataSource?.filter))) {
|
|
1558
|
-
systemLog("dsp", "[createDocument] Provider data: ", provider.data.length, " Bytes, documentId: ", documentId);
|
|
1559
1589
|
if (!provider.data.includes(documentId)) {
|
|
1590
|
+
setCounterDocuments((prev) => {
|
|
1591
|
+
const newC = { ...prev };
|
|
1592
|
+
if (newC[documentId]) {
|
|
1593
|
+
setDocuments((prev2) => ({
|
|
1594
|
+
...prev2,
|
|
1595
|
+
[documentId]: { ...prev2[documentId], ...newDocument }
|
|
1596
|
+
}));
|
|
1597
|
+
newC[documentId] = prev[documentId] + 1;
|
|
1598
|
+
} else {
|
|
1599
|
+
setDocuments((prev2) => ({ ...prev2, [documentId]: newDocument }));
|
|
1600
|
+
newC[documentId] = providerListenersCount;
|
|
1601
|
+
}
|
|
1602
|
+
return newC;
|
|
1603
|
+
});
|
|
1560
1604
|
providerListenersCount++;
|
|
1561
1605
|
setProviders((prev) => ({
|
|
1562
1606
|
...prev,
|
|
@@ -1569,24 +1613,14 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1569
1613
|
}
|
|
1570
1614
|
}
|
|
1571
1615
|
});
|
|
1616
|
+
console.log("Provider listeners count: ", providerListenersCount);
|
|
1572
1617
|
if (providerListenersCount > 0) {
|
|
1573
1618
|
if (providers[model]?.isPersisting && persistenceStorage) {
|
|
1619
|
+
console.log("Persistuji dokument ", documentId, " do modelu ", model);
|
|
1574
1620
|
await persistDocument({ documentId, model, data: newDocument });
|
|
1575
1621
|
}
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
if (newC[documentId]) {
|
|
1579
|
-
setDocuments((prev2) => ({
|
|
1580
|
-
...prev2,
|
|
1581
|
-
[documentId]: { ...prev2[documentId], ...newDocument }
|
|
1582
|
-
}));
|
|
1583
|
-
newC[documentId] = prev[documentId] + providerListenersCount;
|
|
1584
|
-
} else {
|
|
1585
|
-
setDocuments((prev2) => ({ ...prev2, [documentId]: newDocument }));
|
|
1586
|
-
newC[documentId] = providerListenersCount;
|
|
1587
|
-
}
|
|
1588
|
-
return newC;
|
|
1589
|
-
});
|
|
1622
|
+
console.log("Dokument ", documentId, " zaregistrovan do ", providerListenersCount, " provideru");
|
|
1623
|
+
console.log(newDocument);
|
|
1590
1624
|
return { id: documentId, document: newDocument };
|
|
1591
1625
|
} else return false;
|
|
1592
1626
|
},
|
|
@@ -1594,6 +1628,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1594
1628
|
);
|
|
1595
1629
|
const deleteDocument = (0, import_react.useCallback)(
|
|
1596
1630
|
async ({ documentId }) => {
|
|
1631
|
+
console.log("Mazani dokumentu ", documentId);
|
|
1597
1632
|
systemLog("dsp", `[deleteDocument] Mazu document ${documentId}}`);
|
|
1598
1633
|
await removePersistedDocument(documentId);
|
|
1599
1634
|
setDocuments((prev) => {
|
|
@@ -1660,55 +1695,77 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1660
1695
|
[providers]
|
|
1661
1696
|
);
|
|
1662
1697
|
const registerProviderSockets = (0, import_react.useCallback)(
|
|
1663
|
-
(sockets2) => {
|
|
1664
|
-
if (sockets2)
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1698
|
+
(sockets2, filter) => {
|
|
1699
|
+
if (!sockets2) return;
|
|
1700
|
+
const normalizedFilter = filter ?? {};
|
|
1701
|
+
systemLog("dsp", "[registerProviderSockets]", sockets2, `filter: ${JSON.stringify(normalizedFilter)}`);
|
|
1702
|
+
const d = Array.isArray(sockets2) ? sockets2 : [sockets2];
|
|
1703
|
+
setSockets((prev) => {
|
|
1704
|
+
const newS = { ...prev };
|
|
1705
|
+
d.forEach((item) => {
|
|
1706
|
+
if (newS[item]) {
|
|
1707
|
+
const existingFilter = newS[item].filters.find((f) => (0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1708
|
+
if (existingFilter) {
|
|
1709
|
+
existingFilter.listeners++;
|
|
1710
|
+
systemLog("dsp", `[registerProviderSockets] Filter uz existuje, navysuji listeners na ${existingFilter.listeners}`);
|
|
1672
1711
|
} else {
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
};
|
|
1680
|
-
socketRoomHandlersRef.current[item] = roomHandler;
|
|
1681
|
-
newS[item] = { listeners: 1, data: [] };
|
|
1682
|
-
socket.emit("joinRoom", item);
|
|
1683
|
-
socket.on(item, roomHandler);
|
|
1712
|
+
newS[item].filters = [...newS[item].filters, { filter: normalizedFilter, listeners: 1 }];
|
|
1713
|
+
socket.emit("joinRoom", { room: item, filter: normalizedFilter });
|
|
1714
|
+
systemLog(
|
|
1715
|
+
"dsp",
|
|
1716
|
+
`[registerProviderSockets] Novy filter, registruji room ${item} s filterem ${JSON.stringify(normalizedFilter)}`
|
|
1717
|
+
);
|
|
1684
1718
|
}
|
|
1685
|
-
}
|
|
1686
|
-
|
|
1719
|
+
} else {
|
|
1720
|
+
newS[item] = {
|
|
1721
|
+
filters: [{ filter: normalizedFilter, listeners: 1 }],
|
|
1722
|
+
data: []
|
|
1723
|
+
};
|
|
1724
|
+
socket.emit("joinRoom", { room: item, filter: normalizedFilter });
|
|
1725
|
+
systemLog("dsp", `[registerProviderSockets] Nova room ${item}, filter: ${JSON.stringify(normalizedFilter)}`);
|
|
1726
|
+
}
|
|
1687
1727
|
});
|
|
1688
|
-
|
|
1728
|
+
return newS;
|
|
1729
|
+
});
|
|
1689
1730
|
},
|
|
1690
1731
|
[setSockets, socket]
|
|
1691
1732
|
);
|
|
1692
1733
|
const unregisterProviderSockets = (0, import_react.useCallback)(
|
|
1693
|
-
(sockets2) => {
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1734
|
+
(sockets2, filter) => {
|
|
1735
|
+
const normalizedFilter = filter ?? {};
|
|
1736
|
+
systemLog(
|
|
1737
|
+
"dsp",
|
|
1738
|
+
"[unregisterProviderSockets] Mazu sockety",
|
|
1739
|
+
JSON.stringify(sockets2, null, 2),
|
|
1740
|
+
`filter: ${JSON.stringify(normalizedFilter)}`
|
|
1741
|
+
);
|
|
1742
|
+
const d = Array.isArray(sockets2) ? sockets2 : [sockets2];
|
|
1697
1743
|
setSockets((prev) => {
|
|
1698
1744
|
const newS = { ...prev };
|
|
1745
|
+
const removeSocketListeners = [];
|
|
1699
1746
|
d.forEach((item) => {
|
|
1700
|
-
if (newS[item]
|
|
1747
|
+
if (!newS[item]) return;
|
|
1748
|
+
const existingFilter = newS[item].filters.find((f) => (0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1749
|
+
if (!existingFilter) return;
|
|
1750
|
+
if (existingFilter.listeners <= 1) {
|
|
1751
|
+
newS[item].filters = newS[item].filters.filter((f) => !(0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1752
|
+
socket.emit("leaveRoom", { room: item, filter: normalizedFilter });
|
|
1753
|
+
systemLog(
|
|
1754
|
+
"dsp",
|
|
1755
|
+
`[unregisterProviderSockets] Filter smazan, odhlaseni room ${item} s filterem ${JSON.stringify(normalizedFilter)}`
|
|
1756
|
+
);
|
|
1757
|
+
} else {
|
|
1758
|
+
existingFilter.listeners--;
|
|
1759
|
+
systemLog("dsp", `[unregisterProviderSockets] Filter listeners snizen na ${existingFilter.listeners}`);
|
|
1760
|
+
}
|
|
1761
|
+
if (newS[item].filters.length === 0) {
|
|
1701
1762
|
removeSocketListeners.push(item);
|
|
1702
|
-
const roomHandler = socketRoomHandlersRef.current[item];
|
|
1703
|
-
if (roomHandler) {
|
|
1704
|
-
socket.off(item, roomHandler);
|
|
1705
|
-
delete socketRoomHandlersRef.current[item];
|
|
1706
|
-
}
|
|
1707
1763
|
delete newS[item];
|
|
1708
|
-
|
|
1764
|
+
systemLog("dsp", `[unregisterProviderSockets] Room ${item} uplne smazana`);
|
|
1765
|
+
}
|
|
1709
1766
|
});
|
|
1710
1767
|
if (removeSocketListeners.length > 0) {
|
|
1711
|
-
socket.emit("leaveRooms",
|
|
1768
|
+
socket.emit("leaveRooms", removeSocketListeners);
|
|
1712
1769
|
}
|
|
1713
1770
|
return newS;
|
|
1714
1771
|
});
|
|
@@ -1721,60 +1778,62 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1721
1778
|
setCounterProviders((prev) => {
|
|
1722
1779
|
if (!prev[id]) return prev;
|
|
1723
1780
|
if (prev[id] + val > 0) {
|
|
1724
|
-
return {
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
socket.emit("leaveRooms", JSON.stringify(removeSocketListeners));
|
|
1781
|
+
return { ...prev, [id]: prev[id] + val };
|
|
1782
|
+
}
|
|
1783
|
+
setProviders((prevP) => {
|
|
1784
|
+
systemLog("dsp", "[DSP] UPDATE PROVIDER - mazu sockets ", id);
|
|
1785
|
+
setSockets((prevS) => {
|
|
1786
|
+
const newS = { ...prevS };
|
|
1787
|
+
const removeSocketListeners = [];
|
|
1788
|
+
const providerSocketListeners = prevP[id].dataSource?.socketListeners || [];
|
|
1789
|
+
const providerFilter = prevP[id].dataSource?.filter;
|
|
1790
|
+
const normalizedFilter = providerFilter ?? {};
|
|
1791
|
+
providerSocketListeners.forEach((socketName) => {
|
|
1792
|
+
if (!newS[socketName]) return;
|
|
1793
|
+
const existingFilter = newS[socketName].filters.find((f) => (0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1794
|
+
if (!existingFilter) return;
|
|
1795
|
+
if (existingFilter.listeners + val <= 0) {
|
|
1796
|
+
newS[socketName].filters = newS[socketName].filters.filter((f) => !(0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1797
|
+
socket.emit("leaveRoom", { room: socketName, filter: normalizedFilter });
|
|
1798
|
+
systemLog("dsp", `[updateProviderListeners] Filter smazan pro room ${socketName}`);
|
|
1799
|
+
} else {
|
|
1800
|
+
existingFilter.listeners = existingFilter.listeners + val;
|
|
1801
|
+
systemLog("dsp", `[updateProviderListeners] Filter listeners snizen na ${existingFilter.listeners}`);
|
|
1802
|
+
}
|
|
1803
|
+
if (newS[socketName].filters.length === 0) {
|
|
1804
|
+
removeSocketListeners.push(socketName);
|
|
1805
|
+
delete newS[socketName];
|
|
1806
|
+
systemLog("dsp", `[updateProviderListeners] Room ${socketName} uplne smazana`);
|
|
1751
1807
|
}
|
|
1752
|
-
return newS;
|
|
1753
1808
|
});
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1809
|
+
if (removeSocketListeners.length > 0) {
|
|
1810
|
+
socket.emit("leaveRooms", removeSocketListeners);
|
|
1811
|
+
}
|
|
1812
|
+
return newS;
|
|
1813
|
+
});
|
|
1814
|
+
setCounterDocuments((prevC) => {
|
|
1815
|
+
const newC = { ...prevC };
|
|
1816
|
+
prevP[id].data.forEach((document) => {
|
|
1817
|
+
if (newC[document] + val <= 0) {
|
|
1818
|
+
setDocuments((prev2) => {
|
|
1819
|
+
const newD = { ...prev2 };
|
|
1820
|
+
delete newD[document];
|
|
1821
|
+
return newD;
|
|
1822
|
+
});
|
|
1823
|
+
delete newC[document];
|
|
1824
|
+
} else {
|
|
1825
|
+
newC[document] = newC[document] + val;
|
|
1826
|
+
}
|
|
1769
1827
|
});
|
|
1770
|
-
|
|
1771
|
-
delete newP[id];
|
|
1772
|
-
return newP;
|
|
1828
|
+
return newC;
|
|
1773
1829
|
});
|
|
1774
|
-
const
|
|
1775
|
-
delete
|
|
1776
|
-
return
|
|
1777
|
-
}
|
|
1830
|
+
const newP = { ...prevP };
|
|
1831
|
+
delete newP[id];
|
|
1832
|
+
return newP;
|
|
1833
|
+
});
|
|
1834
|
+
const newProvs = { ...prev };
|
|
1835
|
+
delete newProvs[id];
|
|
1836
|
+
return newProvs;
|
|
1778
1837
|
});
|
|
1779
1838
|
},
|
|
1780
1839
|
[setCounterProviders, setProviders, setCounterDocuments, setDocuments, socket]
|
|
@@ -1848,7 +1907,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1848
1907
|
[id]: 1
|
|
1849
1908
|
}));
|
|
1850
1909
|
if (provider.dataSource?.socketListeners) {
|
|
1851
|
-
registerProviderSockets(provider.dataSource.socketListeners);
|
|
1910
|
+
registerProviderSockets(provider.dataSource.socketListeners, provider.dataSource.filter);
|
|
1852
1911
|
}
|
|
1853
1912
|
console.timeEnd(`[DSP] VYTVARENI PROVIDERA ${id}`);
|
|
1854
1913
|
} catch (error) {
|
|
@@ -1872,7 +1931,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1872
1931
|
};
|
|
1873
1932
|
} else {
|
|
1874
1933
|
systemLog("dsp", "[unregisterProvider] mazu ", Object.keys(providers));
|
|
1875
|
-
unregisterProviderSockets(providers[itemId]?.dataSource.socketListeners);
|
|
1934
|
+
unregisterProviderSockets(providers[itemId]?.dataSource.socketListeners, providers[itemId]?.dataSource.filter);
|
|
1876
1935
|
systemLog("dsp", "[unregisterProvider] Mazu dokumenty providera ", itemId);
|
|
1877
1936
|
setCounterDocuments((cd) => {
|
|
1878
1937
|
const newC = { ...cd };
|