Merge commit 'ef89d9324' (notification filters)
This commit is contained in:
commit
35213df61e
@ -64,6 +64,9 @@ Filter =
|
||||
else
|
||||
Conf['Stubs']
|
||||
|
||||
# Desktop notification
|
||||
noti = /notify/.test filter
|
||||
|
||||
# Highlight the post, or hide it.
|
||||
# If not specified, the highlight class will be filter-highlight.
|
||||
# Defaults to post hiding.
|
||||
@ -82,7 +85,7 @@ Filter =
|
||||
else
|
||||
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'
|
||||
for type in types
|
||||
(@filters[type] or= []).push filter
|
||||
@ -94,7 +97,7 @@ Filter =
|
||||
name: 'Filter'
|
||||
cb: @node
|
||||
|
||||
createFilter: (regexp, boards, excludes, op, stub, hl, top) ->
|
||||
createFilter: (regexp, boards, excludes, op, stub, hl, top, noti) ->
|
||||
test =
|
||||
if typeof regexp is 'string'
|
||||
# MD5 checking
|
||||
@ -103,10 +106,11 @@ Filter =
|
||||
(value) -> regexp.test value
|
||||
|
||||
settings =
|
||||
hide: !hl
|
||||
hide: !(hl or noti)
|
||||
stub: stub
|
||||
class: hl
|
||||
top: top
|
||||
noti: noti
|
||||
|
||||
(value, boardID, isReply) ->
|
||||
if boards and boardID not in boards
|
||||
@ -125,6 +129,7 @@ Filter =
|
||||
stub = true
|
||||
hl = undefined
|
||||
top = false
|
||||
noti = false
|
||||
if QuoteYou.isYou(post)
|
||||
hideable = false
|
||||
for key of Filter.filters when ((value = Filter[key] post)?)
|
||||
@ -138,14 +143,16 @@ Filter =
|
||||
unless hl and result.class in hl
|
||||
(hl or= []).push result.class
|
||||
top or= result.top
|
||||
if result.noti
|
||||
noti = true
|
||||
if hide
|
||||
{hide, stub}
|
||||
else
|
||||
{hl, top}
|
||||
{hl, top, noti}
|
||||
|
||||
node: ->
|
||||
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 @isReply
|
||||
PostHiding.hide @, stub
|
||||
@ -155,7 +162,8 @@ Filter =
|
||||
if hl
|
||||
@highlights = hl
|
||||
$.addClass @nodes.root, hl...
|
||||
return
|
||||
if noti and Unread.posts and (@ID > Unread.lastReadPost) and not QuoteYou.isYou(@)
|
||||
Unread.openNotification @, ' triggered a notification filter'
|
||||
|
||||
isHidden: (post) ->
|
||||
!!Filter.test(post).hide
|
||||
|
||||
@ -30,6 +30,10 @@
|
||||
Highlighted OPs will have their threads put on top of the board index by default.<br>
|
||||
For example: <code>top:yes;</code> or <code>top:no;</code>.
|
||||
</li>
|
||||
<li>
|
||||
Show a desktop notification instead of hiding.<br>
|
||||
For example: <code>notify;</code>.
|
||||
</li>
|
||||
<li>
|
||||
Filters in the "General" section apply to multiple fields, by default <code>subject,name,filename,comment</code>.<br>
|
||||
The fields can be specified with the <code>type</code> option, separated by commas.<br>
|
||||
|
||||
@ -125,9 +125,9 @@ Unread =
|
||||
Unread.openNotification post
|
||||
return
|
||||
|
||||
openNotification: (post) ->
|
||||
openNotification: (post, predicate=' replied to you') ->
|
||||
return unless Header.areNotificationsEnabled
|
||||
notif = new Notification "#{post.info.nameBlock} replied to you",
|
||||
notif = new Notification "#{post.info.nameBlock}#{predicate}",
|
||||
body: post.commentDisplay()
|
||||
icon: Favicon.logo
|
||||
notif.onclick = ->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user