04-fusions.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /* Import modules. */
  2. /* Initialize globals. */
  3. let fusionsDb
  4. /* Set constants. */
  5. const CHECK_FUSIONS_INTERVAL = 5000
  6. /**
  7. * Initialize (Fusions)
  8. *
  9. * Setup a Fusions (background) handler.
  10. */
  11. const init = async () => {
  12. /* Manage Fusions */
  13. setInterval(() => {
  14. // console.log('Looking for DB(fusions) changes...', fusionsDb)
  15. /* Set Fusion snapshot. */
  16. const snapshot = JSON.stringify(fusionsDb)
  17. // console.log('SNAPSHOT', snapshot)
  18. /* Validate Fusion snapshot. */
  19. if (fusionsDb && snapshot !== lastSnapshot) {
  20. lastSnapshot = snapshot
  21. /* Initialize recents. */
  22. const recents = []
  23. /* Handle fusions. */
  24. Object.keys(fusionsDb).forEach(_fusionid => {
  25. /* Set fusion. */
  26. const fusion = fusionsDb[_fusionid]
  27. /* Validate last update. */
  28. if (typeof fusion.completedAt === 'undefined' && fusion.updatedAt > lastUpdate) {
  29. /* Add fusion. */
  30. recents.push(fusion)
  31. }
  32. })
  33. console.log('RECENTS', lastUpdate, recents)
  34. /* Handle recents. */
  35. // NOTE: Update last update handler.
  36. recents.forEach(_recent => {
  37. if (_recent.updatedAt > lastUpdate) {
  38. /* Set (new) last update. */
  39. lastUpdate = _recent.updatedAt
  40. }
  41. /* Validate fusion progress. */
  42. if (_recent.progress === 100.0) {
  43. /* Build transaction. */
  44. // rawTx = ...
  45. // console.log('FOUND CHANGES??', snapshot)
  46. // txObj.ins[1].script = txObj2.ins[1].script
  47. // txObj.ins[2].script = txObj3.ins[2].script
  48. /* Save to database. */
  49. // fusionsDb[???].rawTx
  50. }
  51. })
  52. console.log('NEW LAST UPDATE', lastUpdate)
  53. }
  54. }, CHECK_FUSIONS_INTERVAL)
  55. }
  56. // init()
  57. export default defineEventHandler((event) => {
  58. /* Set database. */
  59. const Db = event.context.Db
  60. /* Set fusions database. */
  61. fusionsDb = Db.fusions
  62. })