Fix "Mentions & keywords" notification level
Make it work in cases where multiple accounts are present in the room and one of them is highlighted.
This commit is contained in:
parent
e8d8f7fe0b
commit
54234399f5
|
@ -8,7 +8,7 @@ import sys
|
|||
import time
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import Any, DefaultDict, Dict, List, Optional, Set, Tuple, Union
|
||||
from typing import Any, DefaultDict, Dict, List, Optional, Tuple, Union
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import aiohttp
|
||||
|
@ -133,7 +133,6 @@ class Backend:
|
|||
|
||||
self.mxc_events: DefaultDict[str, List[Event]] = DefaultDict(list)
|
||||
|
||||
self.notified_events: Set[str] = set() # {event_id}
|
||||
self.notification_avatar_cache: Dict[str, Path] = {} # {mxc: path}
|
||||
|
||||
|
||||
|
|
|
@ -2181,16 +2181,12 @@ class MatrixClient(nio.AsyncClient):
|
|||
if from_us:
|
||||
return item
|
||||
|
||||
already_notified = item.event_id in self.backend.notified_events
|
||||
|
||||
if already_notified or await self.event_is_past(ev):
|
||||
if await self.event_is_past(ev):
|
||||
await self.update_account_unread_counts()
|
||||
return item
|
||||
|
||||
# Alerts & notifications
|
||||
|
||||
self.backend.notified_events.add(item.event_id)
|
||||
|
||||
room_item = self.models[self.user_id, "rooms"][room.room_id]
|
||||
|
||||
unread = \
|
||||
|
@ -2230,6 +2226,7 @@ class MatrixClient(nio.AsyncClient):
|
|||
body = f"{sender}: {item.inline_content}"
|
||||
|
||||
NotificationRequested(
|
||||
id = item.id,
|
||||
high_importance = highlight,
|
||||
title = room_name,
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ class NotificationRequested(PyOtherSideEvent):
|
|||
flash the program's taskbar icon on Windows.
|
||||
"""
|
||||
|
||||
id: str = field()
|
||||
title: str = field()
|
||||
body: str = ""
|
||||
image: Union[Path, str] = ""
|
||||
|
|
|
@ -11,12 +11,17 @@ QtObject {
|
|||
Qt.exit(exitCode)
|
||||
}
|
||||
|
||||
function onNotificationRequested(title, body, image, highImportance) {
|
||||
function onNotificationRequested(id, title, body, image, highImportance) {
|
||||
const level = window.notificationLevel
|
||||
|
||||
if (Qt.application.state === Qt.ApplicationActive) return
|
||||
if (level === Window.NotificationLevel.None) return
|
||||
if (level === Window.MentionsKeywords && ! highImportance) return
|
||||
if (window.notifiedIds.has(id)) return
|
||||
|
||||
window.notifiedIds.add(id)
|
||||
window.notifiedIdsChanged()
|
||||
|
||||
if (Qt.application.state === Qt.ApplicationActive) return
|
||||
|
||||
py.callCoro("desktop_notify", [title, body, image])
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ ApplicationWindow {
|
|||
window.visibility === window.Hidden
|
||||
|
||||
property int notificationLevel: Window.NotificationLevel.All
|
||||
property var notifiedIds: new Set()
|
||||
|
||||
property var mainUI: null
|
||||
property var settings: ({})
|
||||
|
|
Loading…
Reference in New Issue
Block a user