Newer
Older
Website / src / app / home / home.component.ts
import { FormStyle } from '@angular/common';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { interval } from 'rxjs';
import { environment } from 'src/environments/environment';

class Status {
  constructor(public user: string, public message: string) {}
}
class StatusAnswer {
  constructor(public success: boolean = false, public userStatuses: Status[] = []) {}
}

class Quote {
  constructor(public user: string, public quote: string) {}
}
class QuotesAnswer {
  constructor(public success: boolean = false, public quotes: Quote[] = []) {}
}

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
  userStatuses: Status[] = []
  quotes: Quote[] = []
  loadingStatuses = true
  loadingQuotes = true

  constructor(private http: HttpClient) { }

  ngOnInit(): void {
    this.updateElements()
    interval(20000).subscribe((() => {
      this.updateElements()
    }))
  }

  updateElements() {
    this.http.get(`${environment.apiURL}/users/status`).subscribe((answer) => {
      var userStatusAnswer = Object.assign(new StatusAnswer(), answer)
      this.loadingStatuses &&= !userStatusAnswer.success
      if (userStatusAnswer.success) {
        this.userStatuses = userStatusAnswer.userStatuses
      }
    })
    this.http.get(`${environment.apiURL}/users/quotes`).subscribe((answer) => {
      var quotesAnswer = Object.assign(new QuotesAnswer(), answer)
      this.loadingQuotes &&= !quotesAnswer.success
      if (quotesAnswer.success) {
        this.quotes = quotesAnswer.quotes
      }
    })
  }
}