added desktop notification for filters
This commit is contained in:
parent
ecc247323e
commit
2003b25c05
@ -63,6 +63,9 @@ Filter =
|
|||||||
false
|
false
|
||||||
else
|
else
|
||||||
Conf['Stubs']
|
Conf['Stubs']
|
||||||
|
|
||||||
|
# Desktop notification
|
||||||
|
noti = /notify/.test filter
|
||||||
|
|
||||||
# Highlight the post, or hide it.
|
# Highlight the post, or hide it.
|
||||||
# If not specified, the highlight class will be filter-highlight.
|
# If not specified, the highlight class will be filter-highlight.
|
||||||
@ -82,7 +85,7 @@ Filter =
|
|||||||
else
|
else
|
||||||
types = ['subject', 'name', 'filename', 'comment']
|
types = ['subject', 'name', 'filename', 'comment']
|
||||||
|
|
||||||
filter = @createFilter regexp, boards, excludes, op, stub, hl, top
|
filter = @createFilter regexp, boards, excludes, op, stub, hl, top, noti
|
||||||
if key is 'general'
|
if key is 'general'
|
||||||
for type in types
|
for type in types
|
||||||
(@filters[type] or= []).push filter
|
(@filters[type] or= []).push filter
|
||||||
@ -94,7 +97,7 @@ Filter =
|
|||||||
name: 'Filter'
|
name: 'Filter'
|
||||||
cb: @node
|
cb: @node
|
||||||
|
|
||||||
createFilter: (regexp, boards, excludes, op, stub, hl, top) ->
|
createFilter: (regexp, boards, excludes, op, stub, hl, top, noti) ->
|
||||||
test =
|
test =
|
||||||
if typeof regexp is 'string'
|
if typeof regexp is 'string'
|
||||||
# MD5 checking
|
# MD5 checking
|
||||||
@ -107,6 +110,7 @@ Filter =
|
|||||||
stub: stub
|
stub: stub
|
||||||
class: hl
|
class: hl
|
||||||
top: top
|
top: top
|
||||||
|
noti: noti
|
||||||
|
|
||||||
(value, boardID, isReply) ->
|
(value, boardID, isReply) ->
|
||||||
if boards and boardID not in boards
|
if boards and boardID not in boards
|
||||||
@ -125,6 +129,7 @@ Filter =
|
|||||||
stub = true
|
stub = true
|
||||||
hl = undefined
|
hl = undefined
|
||||||
top = false
|
top = false
|
||||||
|
noti = false
|
||||||
if QuoteYou.isYou(post)
|
if QuoteYou.isYou(post)
|
||||||
hideable = false
|
hideable = false
|
||||||
for key of Filter.filters when ((value = Filter[key] post)?)
|
for key of Filter.filters when ((value = Filter[key] post)?)
|
||||||
@ -138,14 +143,16 @@ Filter =
|
|||||||
unless hl and result.class in hl
|
unless hl and result.class in hl
|
||||||
(hl or= []).push result.class
|
(hl or= []).push result.class
|
||||||
top or= result.top
|
top or= result.top
|
||||||
|
if result.noti
|
||||||
|
noti = true
|
||||||
if hide
|
if hide
|
||||||
{hide, stub}
|
{hide, stub, noti}
|
||||||
else
|
else
|
||||||
{hl, top}
|
{hl, top, noti}
|
||||||
|
|
||||||
node: ->
|
node: ->
|
||||||
return if @isClone
|
return if @isClone
|
||||||
{hide, stub, hl, top} = Filter.test @, (!@isFetchedQuote and (@isReply or g.VIEW is 'index'))
|
{hide, stub, hl, top, noti} = Filter.test @, (!@isFetchedQuote and (@isReply or g.VIEW is 'index'))
|
||||||
if hide
|
if hide
|
||||||
if @isReply
|
if @isReply
|
||||||
PostHiding.hide @, stub
|
PostHiding.hide @, stub
|
||||||
@ -155,7 +162,20 @@ Filter =
|
|||||||
if hl
|
if hl
|
||||||
@highlights = hl
|
@highlights = hl
|
||||||
$.addClass @nodes.root, hl...
|
$.addClass @nodes.root, hl...
|
||||||
return
|
if noti
|
||||||
|
if Header.areNotificationsEnabled
|
||||||
|
if not (Unread.posts is null)
|
||||||
|
if (@ID > Unread.lastReadPost) and not QuoteYou.isYou(@)
|
||||||
|
notif = new Notification "#{@info.nameBlock} triggered a notification filter",
|
||||||
|
body: @commentDisplay()
|
||||||
|
icon: Favicon.logo
|
||||||
|
notif.onclick = ->
|
||||||
|
Header.scrollToIfNeeded @nodes.bottom, true
|
||||||
|
window.focus()
|
||||||
|
notif.onshow = ->
|
||||||
|
setTimeout ->
|
||||||
|
notif.close()
|
||||||
|
, 7 * $.SECOND
|
||||||
|
|
||||||
isHidden: (post) ->
|
isHidden: (post) ->
|
||||||
!!Filter.test(post).hide
|
!!Filter.test(post).hide
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user