4chan-x/src/Monitoring/MarkNewIPs.coffee
Zixaphir dc3845f51a I hate array#map jsperf.com/arraymap
Also, it's nice to see my callbacks class getting some use. ;__;
2014-12-15 08:57:56 -07:00

46 lines
1.4 KiB
CoffeeScript

MarkNewIPs =
init: ->
return if g.VIEW isnt 'thread' or !Conf['Mark New IPs']
Thread.callbacks.push
name: 'Mark New IPs'
cb: @node
node: ->
MarkNewIPs.ipCount = @ipCount
MarkNewIPs.postIDs = (+x for x in @post.keys)
$.on d, 'ThreadUpdate', MarkNewIPs.onUpdate
onUpdate: (e) ->
{ipCount, newPosts} = e.detail
{postIDs} = ThreadUpdater
return unless ipCount?
if newPosts.length
obj = {}
obj[x] = true for x in MarkNewIPs.postIDs
added = 0
added++ for x in postIDs when not (x of obj)
removed = MarkNewIPs.postIDs.length + added - postIDs.length
switch ipCount - MarkNewIPs.ipCount
when added
i = MarkNewIPs.ipCount
for fullID in newPosts
MarkNewIPs.markNew g.posts[fullID], ++i
when -removed
for fullID in newPosts
MarkNewIPs.markOld g.posts[fullID]
MarkNewIPs.ipCount = ipCount
MarkNewIPs.postIDs = postIDs
markNew: (post, ipCount) ->
suffix = ['st', 'nd', 'rd'][ipCount % 10] or 'th' # fuck switches
counter = $.el 'span',
className: 'ip-counter'
textContent: "(#{ipCount})"
post.nodes.nameBlock.title = "This is the #{ipCount}#{suffix} IP in the thread."
$.add post.nodes.nameBlock, [$.tn(' '), counter]
$.addClass post.nodes.root, 'new-ip'
markOld: (post) ->
post.nodes.nameBlock.title = 'Not the first post from this IP.'
$.addClass post.nodes.root, 'old-ip'