mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
5daafa4f87
* Pulled encoding to top of head (#3214) * Remove next.d.ts to use @types/next (#3297) * Add with-mobx-state-tree example (#3179) * Adapt with-mobx example for with-mobx-state-tree * Remove unnecessary lastUpdate parameter to show off snapshot * update readme * make other.js more closely mimic index.js * Upgrade styled-jsx to v2.2.1 Includes some bug fixes. * Fix linting
44 lines
884 B
JavaScript
44 lines
884 B
JavaScript
import { types, applySnapshot } from 'mobx-state-tree'
|
|
|
|
let store = null
|
|
|
|
const Store = types
|
|
.model({
|
|
lastUpdate: types.Date,
|
|
light: false
|
|
})
|
|
.actions((self) => {
|
|
let timer
|
|
function start () {
|
|
timer = setInterval(() => {
|
|
// mobx-state-tree doesn't allow anonymous callbacks changing data
|
|
// pass off to another action instead
|
|
self.update()
|
|
})
|
|
}
|
|
|
|
function update () {
|
|
self.lastUpdate = Date.now()
|
|
self.light = true
|
|
}
|
|
|
|
function stop () {
|
|
clearInterval(timer)
|
|
}
|
|
|
|
return { start, stop, update }
|
|
})
|
|
|
|
export function initStore (isServer, snapshot = null) {
|
|
if (isServer) {
|
|
store = Store.create({ lastUpdate: Date.now() })
|
|
}
|
|
if (store === null) {
|
|
store = Store.create({ lastUpdate: Date.now() })
|
|
}
|
|
if (snapshot) {
|
|
applySnapshot(store, snapshot)
|
|
}
|
|
return store
|
|
}
|