Merge branch 'master' into matrix-chat-native
commit
550d79af28
@ -0,0 +1,28 @@
|
|||||||
|
import {getMxcFromUserId, getAvatarUrl} from '@/lib/getMxc';
|
||||||
|
import {calcUserName} from '@/lib/matrixUtils';
|
||||||
|
import {getRoom} from '@/lib/matrixUtils';
|
||||||
|
import {router} from '@/router';
|
||||||
|
|
||||||
|
export class NotificationHandler{
|
||||||
|
constructor() {
|
||||||
|
this.activateNotification();
|
||||||
|
}
|
||||||
|
async activateNotification(){
|
||||||
|
if (!window.Notification){
|
||||||
|
console.log('notifications are unsupported')
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (Notification.permission === 'granted') return true;
|
||||||
|
return await Notification.requestPermission()
|
||||||
|
.then(permission => {return permission === 'granted'});
|
||||||
|
}
|
||||||
|
showNotification(event){
|
||||||
|
if (Notification.permission !== 'granted') return false;
|
||||||
|
console.log(event);
|
||||||
|
let mxc = getMxcFromUserId(event.sender);
|
||||||
|
new Notification(`${calcUserName(event.sender)} in ${getRoom(event.room_id).name}`, {
|
||||||
|
body: event.content.body,
|
||||||
|
icon: mxc?getAvatarUrl(mxc):undefined
|
||||||
|
}).onclick = ()=>router.push(`/rooms/${event.room_id}`);
|
||||||
|
}
|
||||||
|
}
|
@ -1,40 +0,0 @@
|
|||||||
import VueRouter from 'vue-router';
|
|
||||||
import login from '@/views/login';
|
|
||||||
import chat from '@/views/chat';
|
|
||||||
import rooms from '@/views/rooms';
|
|
||||||
import admin from '@/views/admin';
|
|
||||||
|
|
||||||
export const router = new VueRouter({
|
|
||||||
routes: [
|
|
||||||
{
|
|
||||||
path: '/',
|
|
||||||
name: 'home',
|
|
||||||
component: login
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/login',
|
|
||||||
name: 'login',
|
|
||||||
component: login
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/chat/*',
|
|
||||||
name: 'chat',
|
|
||||||
component: chat
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/rooms/*',
|
|
||||||
name: 'room',
|
|
||||||
component: rooms
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/rooms',
|
|
||||||
name: 'rooms',
|
|
||||||
component: rooms
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/admin',
|
|
||||||
name: 'admin',
|
|
||||||
component: admin
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
@ -0,0 +1,40 @@
|
|||||||
|
import VueRouter from 'vue-router';
|
||||||
|
import login from '@/views/login';
|
||||||
|
import chat from '@/views/chat';
|
||||||
|
import rooms from '@/views/rooms';
|
||||||
|
import admin from '@/views/admin';
|
||||||
|
|
||||||
|
export const router = new VueRouter({
|
||||||
|
routes: [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
name: 'home',
|
||||||
|
component: login
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/login',
|
||||||
|
name: 'login',
|
||||||
|
component: login
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/chat/*',
|
||||||
|
name: 'chat',
|
||||||
|
component: chat
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/rooms/*',
|
||||||
|
name: 'room',
|
||||||
|
component: rooms
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/rooms',
|
||||||
|
name: 'rooms',
|
||||||
|
component: rooms
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/admin',
|
||||||
|
name: 'admin',
|
||||||
|
component: admin
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
Loading…
Reference in New Issue