mango-cms 0.2.26 → 0.2.28

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.
@@ -25,7 +25,7 @@
25
25
  "dayjs": "^1.10.7",
26
26
  "express": "^4.18.1",
27
27
  "google-maps": "^4.3.3",
28
- "mango-cms": "^0.2.26",
28
+ "mango-cms": "^0.2.28",
29
29
  "mapbox-gl": "^2.7.0",
30
30
  "sweetalert2": "^11.4.0",
31
31
  "vite": "^6.2.2",
@@ -226,12 +226,36 @@ const Mango = collections.reduce((a, c) => {
226
226
 
227
227
  }
228
228
 
229
- let subscribe = (callback, room) => {
229
+ let subscribe = ({target, triggers, room} = {}) => {
230
+
230
231
  let socket = io(`${api}/${c.name}`, { transports: ['websocket'] })
231
- let userId = window.localStorage.getItem('auth').split(':')[1]
232
+ let userId = window.localStorage.getItem('token').split(':')[1]
233
+
232
234
  room = room || userId
233
235
  socket.emit('subscribeToThread', room)
234
- if (callback) socket.on('message', callback)
236
+
237
+ triggers = triggers || {}
238
+ let defaultTriggers = {
239
+ created: (data) => {
240
+ if (Array.isArray(target)) target.push(data)
241
+ else target = data
242
+ },
243
+ updated: (data) => {
244
+ if (Array.isArray(target)) target = target.map(t => t.id == data.id ? data : t)
245
+ else if (target.id == data.id) target = data
246
+ },
247
+ deleted: (data) => {
248
+ if (Array.isArray(target)) target = target.filter(t => t.id != data.id)
249
+ else if (target.id == data.id) target = null
250
+ }
251
+ }
252
+
253
+ let combinedTriggers = { ...defaultTriggers, ...triggers }
254
+
255
+ for (let trigger of Object.keys(combinedTriggers)) {
256
+ socket.on(`${c.name}:${trigger}`, combinedTriggers[trigger])
257
+ }
258
+
235
259
  }
236
260
 
237
261
  a[c.name] = runQuery
@@ -239,9 +263,9 @@ const Mango = collections.reduce((a, c) => {
239
263
  a[c.name]['delete'] = deleteEntry
240
264
  a[c.name]['subscribe'] = subscribe
241
265
  a[c.singular] = (id, query) => runQuery({ id, ...query })
242
- a[c.singular]['subscribe'] = (id, callback) => {
266
+ a[c.singular]['subscribe'] = (id, callback, message) => {
243
267
  if (!id) return console.error('No id provided')
244
- return subscribe(callback, id)
268
+ return subscribe(id, message, callback)
245
269
  }
246
270
 
247
271
  a[c.name]['local'] = localDB.getEntries
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mango-cms",
3
- "version": "0.2.26",
3
+ "version": "0.2.28",
4
4
  "main": "./index.js",
5
5
  "exports": {
6
6
  ".": "./index.js",