Fix bugs in cross-site data access.

This commit is contained in:
ccd0 2018-12-06 23:37:25 -08:00
parent 558407e2db
commit 7675816307

View File

@ -48,6 +48,7 @@ class DataBoard
delete: ({siteID, boardID, threadID, postID}) -> delete: ({siteID, boardID, threadID, postID}) ->
siteID or= Site.hostname siteID or= Site.hostname
return unless @data[siteID]
@save => @save =>
if postID if postID
return unless @data[siteID].boards[boardID]?[threadID] return unless @data[siteID].boards[boardID]?[threadID]
@ -61,6 +62,7 @@ class DataBoard
delete @data[siteID].boards[boardID] delete @data[siteID].boards[boardID]
deleteIfEmpty: ({siteID, boardID, threadID}) -> deleteIfEmpty: ({siteID, boardID, threadID}) ->
return unless @data[siteID]
if threadID if threadID
unless Object.keys(@data[siteID].boards[boardID][threadID]).length unless Object.keys(@data[siteID].boards[boardID][threadID]).length
delete @data[siteID].boards[boardID][threadID] delete @data[siteID].boards[boardID][threadID]
@ -75,6 +77,7 @@ class DataBoard
setUnsafe: ({siteID, boardID, threadID, postID, val}) -> setUnsafe: ({siteID, boardID, threadID, postID, val}) ->
siteID or= Site.hostname siteID or= Site.hostname
@data[siteID] or= boards: {}
if postID isnt undefined if postID isnt undefined
((@data[siteID].boards[boardID] or= {})[threadID] or= {})[postID] = val ((@data[siteID].boards[boardID] or= {})[threadID] or= {})[postID] = val
else if threadID isnt undefined else if threadID isnt undefined
@ -96,7 +99,7 @@ class DataBoard
get: ({siteID, boardID, threadID, postID, defaultValue}) -> get: ({siteID, boardID, threadID, postID, defaultValue}) ->
siteID or= Site.hostname siteID or= Site.hostname
if board = @data[siteID].boards[boardID] if board = @data[siteID]?.boards[boardID]
unless threadID? unless threadID?
if postID? if postID?
for ID, thread in board for ID, thread in board