@mgarlik/datastore 0.1.2 → 0.1.4
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 +177 -116
- 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 +177 -116
- 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);
|
|
@@ -1175,8 +1205,9 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1175
1205
|
async (id, data) => {
|
|
1176
1206
|
const providerPreset = presetProviders[id];
|
|
1177
1207
|
const prov = renderJSONTemplate({ ...providerPreset || {}, id }, data);
|
|
1178
|
-
|
|
1208
|
+
console.log("[INIT PROVIDER] ", id, "(", data || "", ")");
|
|
1179
1209
|
if (typeof prov !== "boolean") {
|
|
1210
|
+
console.log("[INIT PROVIDER] rendered: ", prov);
|
|
1180
1211
|
return await registerProvider(prov);
|
|
1181
1212
|
}
|
|
1182
1213
|
return false;
|
|
@@ -1210,6 +1241,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1210
1241
|
result = await updateDataStore(item.data);
|
|
1211
1242
|
break;
|
|
1212
1243
|
case "createDocument":
|
|
1244
|
+
console.log("Dispatcher createDocument", item.data);
|
|
1213
1245
|
await createDocument(item.data);
|
|
1214
1246
|
break;
|
|
1215
1247
|
case "updateDocument":
|
|
@@ -1549,14 +1581,27 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1549
1581
|
const createDocument = (0, import_react.useCallback)(
|
|
1550
1582
|
async ({ model, documentId, data }) => {
|
|
1551
1583
|
const newDocument = data;
|
|
1552
|
-
|
|
1584
|
+
console.log(`Registruji model ${model}, documentId ${documentId}, data: ${JSON.stringify(data)}`);
|
|
1553
1585
|
var providerListenersCount = 0;
|
|
1554
1586
|
Object.keys(providers).forEach((key) => {
|
|
1555
1587
|
const provider = providers[key];
|
|
1556
1588
|
var socketListeners = provider.dataSource?.socketListeners;
|
|
1557
1589
|
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
1590
|
if (!provider.data.includes(documentId)) {
|
|
1591
|
+
setCounterDocuments((prev) => {
|
|
1592
|
+
const newC = { ...prev };
|
|
1593
|
+
if (newC[documentId]) {
|
|
1594
|
+
setDocuments((prev2) => ({
|
|
1595
|
+
...prev2,
|
|
1596
|
+
[documentId]: { ...prev2[documentId], ...newDocument }
|
|
1597
|
+
}));
|
|
1598
|
+
newC[documentId] = prev[documentId] + 1;
|
|
1599
|
+
} else {
|
|
1600
|
+
setDocuments((prev2) => ({ ...prev2, [documentId]: newDocument }));
|
|
1601
|
+
newC[documentId] = providerListenersCount;
|
|
1602
|
+
}
|
|
1603
|
+
return newC;
|
|
1604
|
+
});
|
|
1560
1605
|
providerListenersCount++;
|
|
1561
1606
|
setProviders((prev) => ({
|
|
1562
1607
|
...prev,
|
|
@@ -1569,24 +1614,14 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1569
1614
|
}
|
|
1570
1615
|
}
|
|
1571
1616
|
});
|
|
1617
|
+
console.log("Provider listeners count: ", providerListenersCount);
|
|
1572
1618
|
if (providerListenersCount > 0) {
|
|
1573
1619
|
if (providers[model]?.isPersisting && persistenceStorage) {
|
|
1620
|
+
console.log("Persistuji dokument ", documentId, " do modelu ", model);
|
|
1574
1621
|
await persistDocument({ documentId, model, data: newDocument });
|
|
1575
1622
|
}
|
|
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
|
-
});
|
|
1623
|
+
console.log("Dokument ", documentId, " zaregistrovan do ", providerListenersCount, " provideru");
|
|
1624
|
+
console.log(newDocument);
|
|
1590
1625
|
return { id: documentId, document: newDocument };
|
|
1591
1626
|
} else return false;
|
|
1592
1627
|
},
|
|
@@ -1594,6 +1629,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1594
1629
|
);
|
|
1595
1630
|
const deleteDocument = (0, import_react.useCallback)(
|
|
1596
1631
|
async ({ documentId }) => {
|
|
1632
|
+
console.log("Mazani dokumentu ", documentId);
|
|
1597
1633
|
systemLog("dsp", `[deleteDocument] Mazu document ${documentId}}`);
|
|
1598
1634
|
await removePersistedDocument(documentId);
|
|
1599
1635
|
setDocuments((prev) => {
|
|
@@ -1660,55 +1696,77 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1660
1696
|
[providers]
|
|
1661
1697
|
);
|
|
1662
1698
|
const registerProviderSockets = (0, import_react.useCallback)(
|
|
1663
|
-
(sockets2) => {
|
|
1664
|
-
if (sockets2)
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1699
|
+
(sockets2, filter) => {
|
|
1700
|
+
if (!sockets2) return;
|
|
1701
|
+
const normalizedFilter = filter ?? {};
|
|
1702
|
+
systemLog("dsp", "[registerProviderSockets]", sockets2, `filter: ${JSON.stringify(normalizedFilter)}`);
|
|
1703
|
+
const d = Array.isArray(sockets2) ? sockets2 : [sockets2];
|
|
1704
|
+
setSockets((prev) => {
|
|
1705
|
+
const newS = { ...prev };
|
|
1706
|
+
d.forEach((item) => {
|
|
1707
|
+
if (newS[item]) {
|
|
1708
|
+
const existingFilter = newS[item].filters.find((f) => (0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1709
|
+
if (existingFilter) {
|
|
1710
|
+
existingFilter.listeners++;
|
|
1711
|
+
systemLog("dsp", `[registerProviderSockets] Filter uz existuje, navysuji listeners na ${existingFilter.listeners}`);
|
|
1672
1712
|
} 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);
|
|
1713
|
+
newS[item].filters = [...newS[item].filters, { filter: normalizedFilter, listeners: 1 }];
|
|
1714
|
+
socket.emit("joinRoom", { room: item, filter: normalizedFilter });
|
|
1715
|
+
systemLog(
|
|
1716
|
+
"dsp",
|
|
1717
|
+
`[registerProviderSockets] Novy filter, registruji room ${item} s filterem ${JSON.stringify(normalizedFilter)}`
|
|
1718
|
+
);
|
|
1684
1719
|
}
|
|
1685
|
-
}
|
|
1686
|
-
|
|
1720
|
+
} else {
|
|
1721
|
+
newS[item] = {
|
|
1722
|
+
filters: [{ filter: normalizedFilter, listeners: 1 }],
|
|
1723
|
+
data: []
|
|
1724
|
+
};
|
|
1725
|
+
socket.emit("joinRoom", { room: item, filter: normalizedFilter });
|
|
1726
|
+
systemLog("dsp", `[registerProviderSockets] Nova room ${item}, filter: ${JSON.stringify(normalizedFilter)}`);
|
|
1727
|
+
}
|
|
1687
1728
|
});
|
|
1688
|
-
|
|
1729
|
+
return newS;
|
|
1730
|
+
});
|
|
1689
1731
|
},
|
|
1690
1732
|
[setSockets, socket]
|
|
1691
1733
|
);
|
|
1692
1734
|
const unregisterProviderSockets = (0, import_react.useCallback)(
|
|
1693
|
-
(sockets2) => {
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1735
|
+
(sockets2, filter) => {
|
|
1736
|
+
const normalizedFilter = filter ?? {};
|
|
1737
|
+
systemLog(
|
|
1738
|
+
"dsp",
|
|
1739
|
+
"[unregisterProviderSockets] Mazu sockety",
|
|
1740
|
+
JSON.stringify(sockets2, null, 2),
|
|
1741
|
+
`filter: ${JSON.stringify(normalizedFilter)}`
|
|
1742
|
+
);
|
|
1743
|
+
const d = Array.isArray(sockets2) ? sockets2 : [sockets2];
|
|
1697
1744
|
setSockets((prev) => {
|
|
1698
1745
|
const newS = { ...prev };
|
|
1746
|
+
const removeSocketListeners = [];
|
|
1699
1747
|
d.forEach((item) => {
|
|
1700
|
-
if (newS[item]
|
|
1748
|
+
if (!newS[item]) return;
|
|
1749
|
+
const existingFilter = newS[item].filters.find((f) => (0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1750
|
+
if (!existingFilter) return;
|
|
1751
|
+
if (existingFilter.listeners <= 1) {
|
|
1752
|
+
newS[item].filters = newS[item].filters.filter((f) => !(0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1753
|
+
socket.emit("leaveRoom", { room: item, filter: normalizedFilter });
|
|
1754
|
+
systemLog(
|
|
1755
|
+
"dsp",
|
|
1756
|
+
`[unregisterProviderSockets] Filter smazan, odhlaseni room ${item} s filterem ${JSON.stringify(normalizedFilter)}`
|
|
1757
|
+
);
|
|
1758
|
+
} else {
|
|
1759
|
+
existingFilter.listeners--;
|
|
1760
|
+
systemLog("dsp", `[unregisterProviderSockets] Filter listeners snizen na ${existingFilter.listeners}`);
|
|
1761
|
+
}
|
|
1762
|
+
if (newS[item].filters.length === 0) {
|
|
1701
1763
|
removeSocketListeners.push(item);
|
|
1702
|
-
const roomHandler = socketRoomHandlersRef.current[item];
|
|
1703
|
-
if (roomHandler) {
|
|
1704
|
-
socket.off(item, roomHandler);
|
|
1705
|
-
delete socketRoomHandlersRef.current[item];
|
|
1706
|
-
}
|
|
1707
1764
|
delete newS[item];
|
|
1708
|
-
|
|
1765
|
+
systemLog("dsp", `[unregisterProviderSockets] Room ${item} uplne smazana`);
|
|
1766
|
+
}
|
|
1709
1767
|
});
|
|
1710
1768
|
if (removeSocketListeners.length > 0) {
|
|
1711
|
-
socket.emit("leaveRooms",
|
|
1769
|
+
socket.emit("leaveRooms", removeSocketListeners);
|
|
1712
1770
|
}
|
|
1713
1771
|
return newS;
|
|
1714
1772
|
});
|
|
@@ -1721,66 +1779,69 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1721
1779
|
setCounterProviders((prev) => {
|
|
1722
1780
|
if (!prev[id]) return prev;
|
|
1723
1781
|
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));
|
|
1782
|
+
return { ...prev, [id]: prev[id] + val };
|
|
1783
|
+
}
|
|
1784
|
+
setProviders((prevP) => {
|
|
1785
|
+
systemLog("dsp", "[DSP] UPDATE PROVIDER - mazu sockets ", id);
|
|
1786
|
+
setSockets((prevS) => {
|
|
1787
|
+
const newS = { ...prevS };
|
|
1788
|
+
const removeSocketListeners = [];
|
|
1789
|
+
const providerSocketListeners = prevP[id].dataSource?.socketListeners || [];
|
|
1790
|
+
const providerFilter = prevP[id].dataSource?.filter;
|
|
1791
|
+
const normalizedFilter = providerFilter ?? {};
|
|
1792
|
+
providerSocketListeners.forEach((socketName) => {
|
|
1793
|
+
if (!newS[socketName]) return;
|
|
1794
|
+
const existingFilter = newS[socketName].filters.find((f) => (0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1795
|
+
if (!existingFilter) return;
|
|
1796
|
+
if (existingFilter.listeners + val <= 0) {
|
|
1797
|
+
newS[socketName].filters = newS[socketName].filters.filter((f) => !(0, import_isEqual.default)(f.filter, normalizedFilter));
|
|
1798
|
+
socket.emit("leaveRoom", { room: socketName, filter: normalizedFilter });
|
|
1799
|
+
systemLog("dsp", `[updateProviderListeners] Filter smazan pro room ${socketName}`);
|
|
1800
|
+
} else {
|
|
1801
|
+
existingFilter.listeners = existingFilter.listeners + val;
|
|
1802
|
+
systemLog("dsp", `[updateProviderListeners] Filter listeners snizen na ${existingFilter.listeners}`);
|
|
1803
|
+
}
|
|
1804
|
+
if (newS[socketName].filters.length === 0) {
|
|
1805
|
+
removeSocketListeners.push(socketName);
|
|
1806
|
+
delete newS[socketName];
|
|
1807
|
+
systemLog("dsp", `[updateProviderListeners] Room ${socketName} uplne smazana`);
|
|
1751
1808
|
}
|
|
1752
|
-
return newS;
|
|
1753
1809
|
});
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1810
|
+
if (removeSocketListeners.length > 0) {
|
|
1811
|
+
socket.emit("leaveRooms", removeSocketListeners);
|
|
1812
|
+
}
|
|
1813
|
+
return newS;
|
|
1814
|
+
});
|
|
1815
|
+
setCounterDocuments((prevC) => {
|
|
1816
|
+
const newC = { ...prevC };
|
|
1817
|
+
prevP[id].data.forEach((document) => {
|
|
1818
|
+
if (newC[document] + val <= 0) {
|
|
1819
|
+
setDocuments((prev2) => {
|
|
1820
|
+
const newD = { ...prev2 };
|
|
1821
|
+
delete newD[document];
|
|
1822
|
+
return newD;
|
|
1823
|
+
});
|
|
1824
|
+
delete newC[document];
|
|
1825
|
+
} else {
|
|
1826
|
+
newC[document] = newC[document] + val;
|
|
1827
|
+
}
|
|
1769
1828
|
});
|
|
1770
|
-
|
|
1771
|
-
delete newP[id];
|
|
1772
|
-
return newP;
|
|
1829
|
+
return newC;
|
|
1773
1830
|
});
|
|
1774
|
-
const
|
|
1775
|
-
delete
|
|
1776
|
-
return
|
|
1777
|
-
}
|
|
1831
|
+
const newP = { ...prevP };
|
|
1832
|
+
delete newP[id];
|
|
1833
|
+
return newP;
|
|
1834
|
+
});
|
|
1835
|
+
const newProvs = { ...prev };
|
|
1836
|
+
delete newProvs[id];
|
|
1837
|
+
return newProvs;
|
|
1778
1838
|
});
|
|
1779
1839
|
},
|
|
1780
1840
|
[setCounterProviders, setProviders, setCounterDocuments, setDocuments, socket]
|
|
1781
1841
|
);
|
|
1782
1842
|
const registerProvider = (0, import_react.useCallback)(
|
|
1783
1843
|
async (newItem) => {
|
|
1844
|
+
console.log("Registruji provider ", newItem.id, " se schema ", newItem.schema);
|
|
1784
1845
|
systemLog("dsp", "[registerProvider]", newItem.id);
|
|
1785
1846
|
let result;
|
|
1786
1847
|
const { id, ...provider } = newItem;
|
|
@@ -1848,7 +1909,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1848
1909
|
[id]: 1
|
|
1849
1910
|
}));
|
|
1850
1911
|
if (provider.dataSource?.socketListeners) {
|
|
1851
|
-
registerProviderSockets(provider.dataSource.socketListeners);
|
|
1912
|
+
registerProviderSockets(provider.dataSource.socketListeners, provider.dataSource.filter);
|
|
1852
1913
|
}
|
|
1853
1914
|
console.timeEnd(`[DSP] VYTVARENI PROVIDERA ${id}`);
|
|
1854
1915
|
} catch (error) {
|
|
@@ -1872,7 +1933,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
|
|
|
1872
1933
|
};
|
|
1873
1934
|
} else {
|
|
1874
1935
|
systemLog("dsp", "[unregisterProvider] mazu ", Object.keys(providers));
|
|
1875
|
-
unregisterProviderSockets(providers[itemId]?.dataSource.socketListeners);
|
|
1936
|
+
unregisterProviderSockets(providers[itemId]?.dataSource.socketListeners, providers[itemId]?.dataSource.filter);
|
|
1876
1937
|
systemLog("dsp", "[unregisterProvider] Mazu dokumenty providera ", itemId);
|
|
1877
1938
|
setCounterDocuments((cd) => {
|
|
1878
1939
|
const newC = { ...cd };
|