chore(release): 0.2.5
[risinglegends.git] / src / client / discord.ts
1 import $ from 'jquery';
2 import {Socket} from 'socket.io-client';
3 import {Message} from '../shared/message';
4
5 type DiscordWidget = HTMLElement & {
6   on: (event: string, handler: any) => void;
7   emit: (event: string, data: any) => void;
8 }
9
10 type DiscordUser = {
11   _id: string;
12   avatar: string;
13   blockedUsers: string[],
14   discriminator: string;
15   provider: "Discord",
16   username: string
17 }
18
19 function $el(): DiscordWidget {
20   return document.getElementById('discord-widget') as DiscordWidget;
21 }
22
23 function loadPersistedUser(): DiscordUser {
24   let user = localStorage.getItem('discordChat');
25   if(user) {
26     return JSON.parse(user) as DiscordUser;
27   }
28   else {
29     throw new Error('No discord user');
30   }
31 }
32
33 //@ts-ignore
34 $el().on('signIn', (user: DiscordUser) => {
35   localStorage.setItem('discordChat', JSON.stringify(user));
36
37   setUserAvatarFromDiscord(user.avatar);
38 });
39
40 function setUserAvatarFromDiscord(url: string) {
41   $('#avatar').attr('src', url);
42 }
43
44 export function configureDiscordChat(socket: Socket) {
45   try {
46     const user = loadPersistedUser();
47     setUserAvatarFromDiscord(user.avatar);
48
49     socket.on('login', (msg: Message) => {
50
51       console.log('ok logged in');
52       $el().emit('sendMessage', {
53         message: msg.msg
54       });
55     });
56   }
57   catch(e) {
58
59   }
60 }