decent-bet/solido

reactive data feature

Closed this issue · 0 comments

Inspired by subspace, the next Solido release v2.0, will include a reactive data feature, both for code first development as well for entity modeling.

Tracking read methods

To track read methods (incl props), using code first.

// Track by subscribing to write methods
const subscribeTo = TrackBy.Push('setStatus')
const fn = myContract.methods.getStatus()
await fn.dispatch(subscribeTo)
fn.$state.subscribe(state => console.log(state.status))


// Track by subscribing to write methods by polling
const subscribeTo = TrackBy.Poll('balanceOf', 1000) // interval in ms
const fn = myContract.methods.balanceOf(address)
await fn.dispatch(subscribeTo)
fn.$state.subscribe(state => console.log(state.status))

// Track by event
const subscribeTo = TrackBy.Event('LogNewStatus')
const fn = myContract.methods.getStatus()
await fn.dispatch(subscribeTo)
fn.$state.subscribe(state => console.log(state.status))

Handling mutations

// Track by subscribing to write methods
const subscribeTo = TrackBy.Push('setStatus', (state, res) => {
  state.orderStatus = res.status;
})
const fn = myContract.methods.getStatus()
await fn.dispatch(subscribeTo)
fn.$state.subscribe(state => console.log(state.orderStatus))

Write, confirm and read pattern

// Track by event
const subscribeTo = TrackBy.Event('LogUpdateStatus')
const fn = myContract.methods.getStatus()
await fn.dispatch(subscribeTo)

// Subscribe to event
fn.$state.subscribe(state => console.log(state.status))

// Write
await myContract.methods.setStatus(orderId, 'Completed')