Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Pass MatrixEvent to displayNotification method (#7355)
Browse files Browse the repository at this point in the history
  • Loading branch information
Germain authored Dec 15, 2021
1 parent 42b14bf commit 53081f5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
31 changes: 30 additions & 1 deletion src/BasePlatform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,36 @@ export default abstract class BasePlatform {
*/
abstract requestNotificationPermission(): Promise<string>;

abstract displayNotification(title: string, msg: string, avatarUrl: string, room: Room);
public displayNotification(
title: string,
msg: string,
avatarUrl: string,
room: Room,
ev?: MatrixEvent,
): Notification {
const notifBody = {
body: msg,
silent: true, // we play our own sounds
};
if (avatarUrl) notifBody['icon'] = avatarUrl;
const notification = new window.Notification(title, notifBody);

notification.onclick = () => {
const payload: ActionPayload = {
action: Action.ViewRoom,
room_id: room.roomId,
};

if (ev.getThread()) {
payload.event_id = ev.getId();
}

dis.dispatch(payload);
window.focus();
};

return notification;
}

loudNotification(ev: MatrixEvent, room: Room) {
}
Expand Down
4 changes: 2 additions & 2 deletions src/Notifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export const Notifier = {
avatarUrl = Avatar.avatarUrlForMember(ev.sender, 40, 40, 'crop');
}

const notif = plaf.displayNotification(title, msg, avatarUrl, room);
const notif = plaf.displayNotification(title, msg, avatarUrl, room, ev);

// if displayNotification returns non-null, the platform supports
// clearing notifications later, so keep track of this.
Expand Down Expand Up @@ -381,7 +381,7 @@ export const Notifier = {
_evaluateEvent: function(ev: MatrixEvent) {
const room = MatrixClientPeg.get().getRoom(ev.getRoomId());
const actions = MatrixClientPeg.get().getPushActionsForEvent(ev);
if (actions && actions.notify) {
if (actions?.notify) {
if (RoomViewStore.getRoomId() === room.roomId &&
UserActivity.sharedInstance().userActiveRecently() &&
!Modal.hasDialogs()
Expand Down

0 comments on commit 53081f5

Please sign in to comment.