reactive data feature
Closed this issue · 0 comments
molekilla commented
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')