1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
next.js/examples/with-mobx-state-tree/store.js
Arunoda Susiripala 820e3ff716
Always load pages with ".js" extension (#3393)
* Always fetch pages with '.js' extention from client side.

* Load error page always from _error.js rather _error/index.js

* Load pages from page.js instead of page/index.js from the client for static exports.

* Update index.js

* Simplify the path re-write logic in the webpack pages-plugin.
2017-12-05 04:49:53 +05:30

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
}