added desktop notification for filters

This commit is contained in:
ebinBuddha 2019-01-12 01:25:41 +01:00
parent ecc247323e
commit 2003b25c05

View File

@ -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