/* * Copyright (c) 2022. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ import {Context} from "@nuxt/types"; import {Inject} from "@nuxt/types/app"; import {useContactSelfKeyPairStorage, useContactRelatedKeyStorage} from "~/domains/contact/encryption"; import {useChatRoomKeyStorage} from "~/domains/chat-room/encryption"; import {applyContactData, loadAndApplyContactData} from "~/domains/contact-data/utils"; import {changeResponseKeyCase} from "~/modules/api/utils"; export default (ctx : Context, inject : Inject) => { // init contact encryption const selfKeyStorage : Promise = useContactSelfKeyPairStorage(); const relatedKeyStorage : Promise = useContactRelatedKeyStorage(); // init chat room encryption const roomKeyStorage : Promise = useChatRoomKeyStorage(); if(typeof ctx.store.getters['auth/userId'] === 'undefined') return; Promise.all([selfKeyStorage, relatedKeyStorage, roomKeyStorage]) .then(() => { loadAndApplyContactData(ctx.store.getters['auth/userId']).then(r => r); }); const socket = ctx.$socket.use('/'); socket.on('contactDataCreated', async(payload) => { payload = changeResponseKeyCase(payload); try { await applyContactData(payload.data, ctx.store.getters['auth/userId']); } catch (e) { console.log(e); } }); socket.on('contactCreated', (payload) => { payload = changeResponseKeyCase(payload); console.log(payload); try { socket.emit('contactJoin', { id: payload.id, type: 'contact' }, (data) => { console.log(data); }) } catch (e) { } }); socket.on('contactDeleted', (payload) => { payload = changeResponseKeyCase(payload); console.log(payload); try { socket.emit('contactLeave', { id: payload.id, type: 'contact' }, (data) => { console.log(data); }) } catch (e) { } }); }