Skip to content

Commit

Permalink
Offline mode: enable for items
Browse files Browse the repository at this point in the history
  • Loading branch information
addyosmani committed May 9, 2016
1 parent e0a2eda commit 710c131
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
29 changes: 26 additions & 3 deletions src/Item.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var ReactFireMixin = require('reactfire')
var TimeAgo = require('react-timeago').default

var HNService = require('./services/HNService')
var HNServiceRest = require('./services/HNServiceRest')
var StoryCommentThreadStore = require('./stores/StoryCommentThreadStore')
var ItemStore = require('./stores/ItemStore')

Expand All @@ -14,6 +15,8 @@ var ItemMixin = require('./mixins/ItemMixin')
var cx = require('./utils/buildClassName')
var setTitle = require('./utils/setTitle')

var SettingsStore = require('./stores/SettingsStore')

function timeUnitsAgo(value, unit, suffix) {
if (value === 1) {
return unit
Expand All @@ -31,7 +34,17 @@ var Item = React.createClass({
},

componentWillMount() {
this.bindAsObject(HNService.itemRef(this.props.params.id), 'item')
if (SettingsStore.offlineMode) {
HNServiceRest.itemRef(this.props.params.id).then(function(res) {
return res.json()
}).then(function(snapshot) {
this.replaceState({ item: snapshot })
}.bind(this))
}
else {
this.bindAsObject(HNService.itemRef(this.props.params.id), 'item')
}

if (this.state.item.id) {
this.threadStore = new StoryCommentThreadStore(this.state.item, this.handleCommentsChanged, {cached: true})
setTitle(this.state.item.title)
Expand All @@ -58,8 +71,18 @@ var Item = React.createClass({
this.threadStore = new StoryCommentThreadStore(item, this.handleCommentsChanged, {cached: true})
setTitle(item.title)
}
this.bindAsObject(HNService.itemRef(nextProps.params.id), 'item')
this.setState({item: item || {}})

if (SettingsStore.offlineMode) {
HNServiceRest.itemRef(nextProps.params.id).then(function(res) {
return res.json()
}).then(function(snapshot) {
this.replaceState({ item: snapshot })
}.bind(this))
}
else {
this.bindAsObject(HNService.itemRef(nextProps.params.id), 'item')
this.setState({item: item || {}})
}
}
},

Expand Down
10 changes: 8 additions & 2 deletions src/stores/ItemStore.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
var HNService = require('../services/HNService')
var HNServiceRest = require('../services/HNServiceRest')

var StoryStore = require('./StoryStore')
var UpdatesStore = require('./UpdatesStore')

var SettingsStore = require('./SettingsStore')
var commentParentLookup = {}
var titleCache = {}

Expand Down Expand Up @@ -72,7 +73,12 @@ var ItemStore = {
setImmediate(cb, cachedItem)
}
else {
HNService.fetchItem(id, cb)
if (SettingsStore.offlineMode) {
HNServiceRest.fetchItem(id, cb)
}
else {
HNService.fetchItem(id, cb)
}
}
},

Expand Down

0 comments on commit 710c131

Please sign in to comment.