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
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
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
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
@ -133,7 +133,6 @@ class Backend:
|
||||||
|
|
||||||
self.mxc_events: DefaultDict[str, List[Event]] = DefaultDict(list)
|
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}
|
self.notification_avatar_cache: Dict[str, Path] = {} # {mxc: path}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2181,16 +2181,12 @@ class MatrixClient(nio.AsyncClient):
|
||||||
if from_us:
|
if from_us:
|
||||||
return item
|
return item
|
||||||
|
|
||||||
already_notified = item.event_id in self.backend.notified_events
|
if await self.event_is_past(ev):
|
||||||
|
|
||||||
if already_notified or await self.event_is_past(ev):
|
|
||||||
await self.update_account_unread_counts()
|
await self.update_account_unread_counts()
|
||||||
return item
|
return item
|
||||||
|
|
||||||
# Alerts & notifications
|
# Alerts & notifications
|
||||||
|
|
||||||
self.backend.notified_events.add(item.event_id)
|
|
||||||
|
|
||||||
room_item = self.models[self.user_id, "rooms"][room.room_id]
|
room_item = self.models[self.user_id, "rooms"][room.room_id]
|
||||||
|
|
||||||
unread = \
|
unread = \
|
||||||
|
@ -2230,6 +2226,7 @@ class MatrixClient(nio.AsyncClient):
|
||||||
body = f"{sender}: {item.inline_content}"
|
body = f"{sender}: {item.inline_content}"
|
||||||
|
|
||||||
NotificationRequested(
|
NotificationRequested(
|
||||||
|
id = item.id,
|
||||||
high_importance = highlight,
|
high_importance = highlight,
|
||||||
title = room_name,
|
title = room_name,
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ class NotificationRequested(PyOtherSideEvent):
|
||||||
flash the program's taskbar icon on Windows.
|
flash the program's taskbar icon on Windows.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
id: str = field()
|
||||||
title: str = field()
|
title: str = field()
|
||||||
body: str = ""
|
body: str = ""
|
||||||
image: Union[Path, str] = ""
|
image: Union[Path, str] = ""
|
||||||
|
|
|
@ -11,12 +11,17 @@ QtObject {
|
||||||
Qt.exit(exitCode)
|
Qt.exit(exitCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
function onNotificationRequested(title, body, image, highImportance) {
|
function onNotificationRequested(id, title, body, image, highImportance) {
|
||||||
const level = window.notificationLevel
|
const level = window.notificationLevel
|
||||||
|
|
||||||
if (Qt.application.state === Qt.ApplicationActive) return
|
|
||||||
if (level === Window.NotificationLevel.None) return
|
if (level === Window.NotificationLevel.None) return
|
||||||
if (level === Window.MentionsKeywords && ! highImportance) 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])
|
py.callCoro("desktop_notify", [title, body, image])
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ ApplicationWindow {
|
||||||
window.visibility === window.Hidden
|
window.visibility === window.Hidden
|
||||||
|
|
||||||
property int notificationLevel: Window.NotificationLevel.All
|
property int notificationLevel: Window.NotificationLevel.All
|
||||||
|
property var notifiedIds: new Set()
|
||||||
|
|
||||||
property var mainUI: null
|
property var mainUI: null
|
||||||
property var settings: ({})
|
property var settings: ({})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user