summaryrefslogtreecommitdiff
path: root/WebInterface/NodeJSServer/src/modules/server-client.js
blob: 0a257ba1e1779dbc87cea5893a8c54de609b5ed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import * as signalR from '@aspnet/signalr';
import ServerListing from './ui/server-listing.js';

export default class ServerClient {
  constructor(url, serverListingId, debug = false) {
    const connectionBuilder = new signalR.HubConnectionBuilder()
        .withUrl(url)

    if (debug) {
      connectionBuilder.configureLogging(signalR.LogLevel.Debug);
    } else {
      connectionBuilder.configureLogging(signalR.LogLevel.Error);
    }

    this.connection = connectionBuilder.build();
    this.connection.start()
        .then(() => this.loadServers())
        .catch(() => err => console.error(err.toString()));

    this.refreshing = false;

    this.serverListing = new ServerListing(serverListingId);

    this.messageHandling(); //TODO: REMOVE, JUST FOR DEBUGGING
  }

  loadServers() {
    if (this.refreshing) return;
    this.connection.on('ListGroups', (groups) => {
      console.log(groups)
      this.serverListing.flushElements();
      this.serverListing.addElements(groups);
      this.connection.off('ListGroups');

      this.refreshing = false;
    });

    this.connection.invoke('GetGroups')
        .catch(err => {
          this.refreshing = false;
          console.error(err.toString())
        });
    this.refreshing = true;
  }

  createServer(){
    // TODO: Create
  }

  sendLogin(group, password, username){
    this.connection.invoke('Login', group, username, password);
  }

  messageHandling(){
    this.connection.on('ReceiveMessage', (user, message) => {
      let msg = message.replace(/&/g, "&")
          .replace(/</g, "&lt;")
          .replace(/>/g, "&gt;");
      let encodedMsg = user + " sagt:  " + msg;
      console.log(encodedMsg); //TODO: REMOVE, JUST FOR DEBUGGING
    });
  }
}



// connection.on('ReceiveMessage', (user, message) => {
//   let msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
//   let encodedMsg = user + " says " + msg;
//   let li = document.createElement("div");
//   li.classList.add('server');
//   li.textContent = encodedMsg;
//   document.getElementById('server-list').appendChild(li);
// });