Store session cookie in local storage
This commit is contained in:
@@ -14,13 +14,14 @@ ImageLoader = require './image_loader'
|
||||
Mod = require '../models/game/mod'
|
||||
ModPack = require '../models/game/mod_pack'
|
||||
Router = require './router'
|
||||
Storage = require './storage'
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class SiteController extends BaseController
|
||||
|
||||
constructor: (options={})->
|
||||
if not options.client? then throw new Error 'options.client is required'
|
||||
if not options.storage? then throw new Error 'options.storage is required'
|
||||
options.el = 'html'
|
||||
super options
|
||||
|
||||
@@ -28,7 +29,7 @@ module.exports = class SiteController extends BaseController
|
||||
@imageLoader = new ImageLoader defaultUrl:'/images/unknown.png'
|
||||
@modPack = new ModPack
|
||||
@router = new Router this
|
||||
@storage = new Storage storage:global.localStorage
|
||||
@storage = options.storage
|
||||
|
||||
@_currentPage = null
|
||||
@_currentPageController = null
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
#
|
||||
# Crafting Guide - storage.coffee
|
||||
#
|
||||
# Copyright © 2014-2016 by Redwood Labs
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class Storage
|
||||
|
||||
constructor: (options={})->
|
||||
options.storage ?= window.sessionStorage
|
||||
|
||||
@storage = options.storage
|
||||
@_models = {}
|
||||
|
||||
# Public Methods ###############################################################################
|
||||
|
||||
load: (key)->
|
||||
value = @storage.getItem key
|
||||
logger.verbose -> "loaded #{value} from #{key}"
|
||||
return value
|
||||
|
||||
store: (key, value)->
|
||||
@storage.setItem key, value
|
||||
logger.verbose -> "stored #{value} into #{key}"
|
||||
|
||||
register: (key, model, property, defaultValue=null)->
|
||||
modelData = @_models[key]
|
||||
if not modelData? then modelData = @_models[key] = model:model, properties:{}
|
||||
makeStoreMethod = (k, m, p)=> return => @_storeProperty(k, m, p)
|
||||
|
||||
return if modelData.properties[property]?
|
||||
modelData.properties[property] = property
|
||||
|
||||
@_loadProperty key, model, property, defaultValue
|
||||
model.on "change:#{property}", makeStoreMethod(key, model, property)
|
||||
|
||||
unregister: (key, property)->
|
||||
modelData = @_models[key]
|
||||
return unless modelData?
|
||||
delete modelData.properties[key]
|
||||
|
||||
# Private Methods ##############################################################################
|
||||
|
||||
_loadProperty: (key, model, property, defaultValue=null)->
|
||||
loadedValue = @load "#{key}:#{property}"
|
||||
if loadedValue?
|
||||
value = JSON.parse loadedValue
|
||||
else
|
||||
value = defaultValue
|
||||
|
||||
return unless value?
|
||||
model[property] = value
|
||||
|
||||
if value? and not loadedValue?
|
||||
@_storeProperty key, model, property
|
||||
|
||||
_storeProperty: (key, model, property)->
|
||||
value = JSON.stringify model[property]
|
||||
@store "#{key}:#{property}", value
|
||||
Reference in New Issue
Block a user