/ src / server / events.js
events.js
  1  import cryptoUtils from '../crypto.js'
  2  import state from './state.js'
  3  const { serverState } = state
  4  import dctrlDb from './dctrlDb.js'
  5  
  6  function completedToggled(taskId, blame, callback){
  7      let newEvent = {
  8          type: "completed-toggled",
  9          taskId,
 10          blame,
 11      }
 12      dctrlDb.insertEvent(newEvent, callback)
 13  }
 14  
 15  function taskColored(taskId, inId, color, blame, callback){
 16      let newEvent = {
 17          type: "task-colored",
 18          taskId,
 19          inId,
 20          color,
 21          blame,
 22      }
 23      dctrlDb.insertEvent(newEvent, callback)
 24  }
 25  
 26  function taskSeized(taskId, inId, callback){
 27    let newEvent = {
 28        type: "task-seized",
 29        taskId,
 30        inId,
 31    }
 32    dctrlDb.insertEvent(newEvent, callback)
 33  }
 34  
 35  function taskTouched(taskId, stack, position, memberId, callback){
 36      let newEvent = {
 37          type: "task-touched",
 38          taskId,
 39          stack,
 40          position,
 41          memberId,
 42      }
 43      dctrlDb.insertEvent(newEvent, callback)
 44  }
 45  
 46  
 47  function taskCompleted(taskId, inId, blame, callback){
 48      let newEvent = {
 49        type: "task-completed",
 50        taskId,
 51        inId,
 52        blame,
 53      }
 54      dctrlDb.insertEvent(newEvent, callback)
 55  }
 56  
 57  function taskValued(taskId, value, blame, callback) {
 58    let newEvent = {
 59      type: "task-valued",
 60      taskId,
 61      value,
 62      blame
 63    }
 64    dctrlDb.insertEvent(newEvent, callback)
 65  }
 66  
 67  function highlighted(taskId, memberId, valence, blame, callback){
 68      let newEvent = {
 69          type: "highlighted",
 70          taskId,
 71          memberId,
 72          valence,
 73          blame,
 74      }
 75      dctrlDb.insertEvent(newEvent, callback)
 76  }
 77  
 78  function aoInboundConnected(address, alias, secret, callback){
 79      let newEvent = {
 80          type: "ao-inbound-connected",
 81          address,
 82          alias,
 83          secret,
 84          i: serverState.tasks.length,
 85      }
 86      dctrlDb.insertEvent(newEvent, callback)
 87  }
 88  
 89  function aoOutboundConnected(address, secret, callback) {
 90      let newEvent = {
 91          type: "ao-outbound-connected",
 92          address,
 93          secret,
 94          i: serverState.tasks.length,
 95      }
 96      dctrlDb.insertEvent(newEvent, callback)
 97  }
 98  
 99  function aoDisconnected(address, callback) {
100      let newEvent = {
101          type: "ao-disconnected",
102          address,
103          i: serverState.tasks.length,
104      }
105      dctrlDb.insertEvent(newEvent, callback)
106  }
107  
108  function getNodeInfo(info, callback){
109      let newEvent = {
110          type: "get-node-info",
111          info
112      }
113      dctrlDb.triggerShadow(newEvent)
114  }
115  
116  function rentSet(amount, callback){
117      let newEvent = {
118        type: "rent-set",
119        amount
120      }
121      dctrlDb.insertEvent(newEvent, callback)
122  }
123  
124  function capSet(amount, callback){
125      let newEvent = {
126        type: "cap-set",
127        amount
128      }
129      dctrlDb.insertEvent(newEvent, callback)
130  }
131  
132  function spotUpdated(spot, callback) {
133    let newEvent = {
134        type: "spot-updated",
135        spot
136    }
137    dctrlDb.triggerShadow(newEvent)
138  }
139  
140  function currencySwitched(currency, callback) {
141    let newEvent = {
142        type: "currency-switched",
143        currency
144    }
145    dctrlDb.insertEvent(newEvent, callback)
146  }
147  
148  function memberCreated(name, fob, secret, callback) {
149        let memberId = crypto.randomUUID()
150        let newEvent = {
151            type: "member-created",
152            memberId,
153            name,
154            fob,
155            secret,
156            i: serverState.tasks.length
157        }
158        dctrlDb.insertEvent(newEvent, callback)
159  }
160  
161  function memberDeactivated(memberId, callback) {
162    let newEvent = {
163      type: "member-deactivated",
164      memberId,
165    }
166    dctrlDb.insertEvent(newEvent, callback)
167  }
168  
169  function memberPurged(memberId, blame, callback) {
170    let newEvent = {
171      type: "member-purged",
172      memberId,
173      blame,
174      i: serverState.hashMap[memberId]
175    }
176    dctrlDb.insertEvent(newEvent, callback)
177  }
178  
179  function memberActivated(memberId, callback) {
180    let newEvent = {
181      type: "member-activated",
182      memberId,
183    }
184    dctrlDb.insertEvent(newEvent, callback)
185  }
186  
187  function memberFieldUpdated(memberId, field, newfield, callback){
188    let newEvent = {
189      type: "member-field-updated",
190      memberId,
191      field,
192      newfield,
193    }
194    dctrlDb.insertEvent(newEvent, callback)
195  }
196  
197  function resourceCreated(resourceId, name, charged, secret, trackStock, callback) {
198      let newEvent = {
199          type: "resource-created",
200          resourceId,
201          name,
202          charged,
203          secret,
204          info: {},
205          i: serverState.tasks.length
206      }
207      if (trackStock) {
208          newEvent.stock = 0
209      }
210      dctrlDb.insertEvent(newEvent, callback)
211  }
212  
213  function resourceStocked(resourceId, memberId, amount, paid, notes, callback) {
214    let newEvent = {
215        type: 'resource-stocked',
216        resourceId,
217        memberId,
218        amount,
219        paid,
220        notes,
221    }
222    dctrlDb.insertEvent(newEvent, callback)
223  }
224  
225  function resourceUsed(resourceId, memberId, charged, notes, callback) {
226    let newEvent = {
227        type: 'resource-used',
228        resourceId,
229        memberId,
230        charged,
231        notes
232    }
233    dctrlDb.insertEvent(newEvent, callback)
234  }
235  
236  function resourceBooked(resourceId, memberId, startTs, endTs, charge, notes, callback) {
237    let newEvent = {
238        type: 'resource-booked',
239        resourceId,
240        memberId,
241        startTs,
242        endTs,
243        charge,
244        notes,
245    }
246    dctrlDb.insertEvent(newEvent, callback)
247  }
248  
249  function bookCancelled(resourceId, bookTime, callback){
250    let newEvent = {
251        type: 'book-cancelled',
252        resourceId,
253        bookTime,
254    }
255    dctrlDb.insertEvent(newEvent, callback)
256  }
257  
258  function resourcePurged(resourceId, blame, callback) {
259    let newEvent = {
260      type: "resource-purged",
261      resourceId,
262      blame,
263      i: serverState.hashMap[resourceId]
264    }
265    dctrlDb.insertEvent(newEvent, callback)
266  }
267  
268  function sessionCreated(ownerId, session, token, callback) {
269      let newEvent = {
270          type: "session-created",
271          session,
272          token,
273          ownerId
274      }
275      dctrlDb.insertEvent(newEvent, callback)
276  }
277  
278  function sessionKilled(session, callback) {
279      let newEvent = {
280          type: "session-killed",
281          session
282      }
283      dctrlDb.insertEvent(newEvent, callback)
284  }
285  
286  function taskCreated(name, color, deck, inId, memberId, callback) {
287      let hash = cryptoUtils.createCardHash(name)
288      let isExist = false
289      serverState.tasks.forEach( t => {
290          if (t.taskId === hash || t.hash === hash){
291              isExist = true
292          }
293      })
294      if (isExist) return callback('err exists')
295      let newEvent = {
296          type: "task-created",
297          taskId: hash,
298          name,
299          color,
300          deck,
301          inId,
302          memberId,
303          i: serverState.tasks.length
304      }
305      dctrlDb.insertEvent(newEvent, callback)
306  }
307  
308  function addressUpdated(taskId, btcAddr, blame, callback){
309        dctrlDb.insertEvent({
310            type: "address-updated",
311            taskId,
312            btcAddr,
313            blame,
314        }, callback)
315  }
316  
317  function taskGuilded(taskId, guild, blame, callback){
318      let newEvent = {
319          type: "task-guilded",
320          taskId,
321          guild,
322          blame,
323      }
324      dctrlDb.insertEvent(newEvent, callback)
325  }
326  
327  function taskSubTasked(taskId, inId, blame, callback){
328      let newEvent = {
329        type: "task-sub-tasked",
330        taskId,
331        inId,
332        blame,
333      }
334      dctrlDb.insertEvent(newEvent, callback)
335  }
336  
337  function taskDeSubTasked(taskId, inId, blame, callback){
338      let newEvent = {
339        type: "task-de-sub-tasked",
340        taskId,
341        inId,
342        blame,
343      }
344      dctrlDb.insertEvent(newEvent, callback)
345  }
346  
347  function pileSubTasked(inId, tasks, blame, callback){
348      let newEvent = {
349        type: "pile-sub-tasked",
350        inId,
351        tasks,
352        blame,
353      }
354      dctrlDb.insertEvent(newEvent, callback)
355  }
356  
357  function pileDeSubTasked(inId, tasks, blame, callback){
358      let newEvent = {
359        type: "pile-de-sub-tasked",
360        inId,
361        tasks,
362        blame,
363      }
364      dctrlDb.insertEvent(newEvent, callback)
365  }
366  
367  function taskPrioritized(taskId, inId, fromId, blame, callback){
368      let newEvent = {
369        type: "task-prioritized",
370        taskId,
371        inId,
372        fromId,
373        blame,
374      }
375      dctrlDb.insertEvent(newEvent, callback)
376  }
377  
378  function pilePrioritized(inId, tasks, blame, callback) {
379    let newEvent = {
380      type: "pile-prioritized",
381      inId,
382      tasks,
383      blame,
384    };
385    dctrlDb.insertEvent(newEvent, callback);
386  }
387  
388  function taskPopped(taskId, inId, blame, callback){
389      let newEvent = {
390        type: "task-popped",
391        taskId,
392        inId,
393        blame
394      }
395      dctrlDb.insertEvent(newEvent, callback)
396  }
397  
398  function taskGrabbed(taskId, memberId, callback){
399      let newEvent = {
400        type: "task-grabbed",
401        taskId,
402        memberId,
403      }
404      dctrlDb.insertEvent(newEvent, callback)
405  }
406  
407  function taskDropped(taskId, memberId, callback){
408      let newEvent = {
409        type: "task-dropped",
410        taskId,
411        memberId,
412      }
413      dctrlDb.insertEvent(newEvent, callback)
414  }
415  
416  function taskClaimed(taskId, memberId, inId, callback) {
417    let newEvent = {
418      type: "task-claimed",
419      taskId,
420      memberId,
421      inId,
422    }
423    dctrlDb.insertEvent(newEvent, callback)
424  }
425  
426  function taskUnclaimed(taskId, memberId, inId, callback) {
427    let newEvent = {
428      type: "task-unclaimed",
429      taskId,
430      memberId,
431      inId,
432    }
433    dctrlDb.insertEvent(newEvent, callback)
434  }
435  
436  function taskBoosted(taskId, amount, txid, callback) {
437    let newEvent = {
438        type: "task-boosted",
439        taskId,
440        amount,
441        txid,
442    }
443    dctrlDb.insertEvent(newEvent, callback)
444  }
445  
446  function taskBoostedLightning(taskId, amount, payment_hash, pay_index, callback) {
447    let newEvent = {
448        type: "task-boosted-lightning",
449        taskId,
450        amount,
451        payment_hash,
452        pay_index,
453    }
454    dctrlDb.insertEvent(newEvent, callback)
455  }
456  
457  function taskRemoved(taskId, blame, callback){
458    let newEvent = {
459      type: "task-removed",
460      taskId,
461      blame,
462      i: serverState.hashMap[taskId]
463    }
464    dctrlDb.insertEvent(newEvent, callback)
465  }
466  
467  function taskSwapped(taskId, swapId1, swapId2, blame, callback){
468    let newEvent = {
469      type: "task-swapped",
470      taskId,
471      swapId1,
472      swapId2,
473      blame,
474    }
475    dctrlDb.insertEvent(newEvent, callback)
476  }
477  
478  function tasksReceived(tasks, blame, callback) {
479    let newEvent = {
480      type: "tasks-received",
481      tasks,
482      blame,
483      i: serverState.tasks.length
484    }
485    dctrlDb.insertEvent(newEvent, callback)
486  }
487  
488  function invoiceCreated(taskId, bolt11, payment_hash, blame, callback){
489      let newEvent = {
490          type: "invoice-created",
491          taskId,
492          bolt11,
493          payment_hash,
494          blame,
495      }
496      dctrlDb.insertEvent(newEvent, callback)
497  }
498  
499  function memberCharged(memberId, charged, notes, callback) {
500      let newEvent = {
501          type: "member-charged",
502          memberId,
503          charged,
504          notes,
505      }
506      dctrlDb.insertEvent(newEvent, callback)
507  }
508  
509  export default {
510      highlighted,
511      memberCharged,
512      aoOutboundConnected,
513      aoDisconnected,
514      aoInboundConnected,
515      spotUpdated,
516      rentSet,
517      capSet,
518      getNodeInfo,
519      memberCreated,
520      memberDeactivated,
521      memberPurged,
522      memberActivated,
523      memberFieldUpdated,
524      resourceCreated,
525      resourceUsed,
526      resourceStocked,
527      resourceBooked,
528      bookCancelled,
529      resourcePurged,
530      sessionCreated,
531      sessionKilled,
532      taskCreated,
533      taskBoosted,
534      taskClaimed,
535      taskUnclaimed,
536      taskRemoved,
537      taskSwapped,
538      taskGrabbed,
539      taskPrioritized,
540      taskPopped,
541      taskDropped,
542      taskGuilded,
543      taskSubTasked,
544      taskDeSubTasked,
545      addressUpdated,
546      invoiceCreated,
547      taskBoostedLightning,
548      tasksReceived,
549      pilePrioritized,
550      pileSubTasked,
551      pileDeSubTasked,
552      taskValued,
553      taskCompleted,
554      taskTouched,
555      taskSeized,
556      taskColored,
557      completedToggled,
558  }