try restore
This commit is contained in:
@ -33,7 +33,7 @@ class Account
|
||||
|
||||
if (JSON.stringify(response_data) == JSON.stringify({'detail': 'Authentication credentials were not provided.'}))
|
||||
{
|
||||
this.client._logged = false;
|
||||
this.client._update_logged(false);
|
||||
return null;
|
||||
}
|
||||
if (response_data == "user deleted")
|
||||
|
@ -35,7 +35,9 @@ class Channel {
|
||||
this.chatSocket.close();
|
||||
}
|
||||
|
||||
updateMessages(messages) {
|
||||
updateMessages(messages)
|
||||
{
|
||||
console.log(messages);
|
||||
messages = JSON.parse(messages);
|
||||
let new_messages = [];
|
||||
|
||||
|
@ -9,8 +9,8 @@ class Channels {
|
||||
async createChannel(members_id, reload) {
|
||||
|
||||
let null_id = false;
|
||||
members_id.forEach(user_id => {
|
||||
if (user_id == null)
|
||||
members_id.forEach(member_id => {
|
||||
if (member_id == null)
|
||||
null_id = true;
|
||||
});
|
||||
if (null_id)
|
||||
@ -28,6 +28,7 @@ class Channels {
|
||||
let messages = undefined;
|
||||
if (exit_code == 200)
|
||||
messages = data.messages;
|
||||
|
||||
return new Channel(this.client, data.channel_id, members_id, messages, reload);
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,8 @@ import { MatchMaking } from "./matchmaking.js";
|
||||
import { Profiles } from "./profiles.js";
|
||||
import { Channels } from './chat/channels.js';
|
||||
import { MyProfile } from "./MyProfile.js";
|
||||
import { navigateTo } from "../index.js"
|
||||
import { Tourmanents } from "./tournament/tournaments.js";
|
||||
|
||||
function getCookie(name)
|
||||
{
|
||||
@ -22,6 +24,7 @@ class Client
|
||||
this.account = new Account(this);
|
||||
this.profiles = new Profiles(this);
|
||||
this.matchmaking = new MatchMaking(this);
|
||||
this.tournaments = new Tourmanents(this);
|
||||
this._logged = undefined;
|
||||
|
||||
this.channels = new Channels(this);
|
||||
@ -102,6 +105,10 @@ class Client
|
||||
this.me = new MyProfile(this);
|
||||
await this.me.init();
|
||||
}
|
||||
if (this.logged && !state)
|
||||
{
|
||||
navigateTo("/login");
|
||||
}
|
||||
this.logged = state;
|
||||
}
|
||||
|
||||
|
@ -8,30 +8,45 @@ class MatchMaking
|
||||
constructor(client)
|
||||
{
|
||||
/**
|
||||
* @type {client}
|
||||
* @type {Client}
|
||||
*/
|
||||
this.client = client
|
||||
this.searching = false;
|
||||
}
|
||||
|
||||
async start(func)
|
||||
async start(receive_func, disconnect_func, mode)
|
||||
{
|
||||
if (!await this.client.isAuthentificate())
|
||||
return null;
|
||||
|
||||
let url = `wss://${window.location.host}/ws/matchmaking/`;
|
||||
let url = `${window.location.protocol[4] === 's' ? 'wss' : 'ws'}://${window.location.host}/ws/matchmaking/${mode}`;
|
||||
|
||||
this._socket = new WebSocket(url);
|
||||
|
||||
this._chatSocket = new WebSocket(url);
|
||||
|
||||
this._chatSocket.onmessage = function (event) {
|
||||
this.searching = true;
|
||||
|
||||
this.receive_func = receive_func;
|
||||
this.disconnect_func = disconnect_func;
|
||||
|
||||
this._socket.onmessage = function (event) {
|
||||
const data = JSON.parse(event.data);
|
||||
func(data.game_id)
|
||||
receive_func(data);
|
||||
};
|
||||
|
||||
this._socket.onclose = this.onclose.bind(this);
|
||||
}
|
||||
|
||||
onclose(event)
|
||||
{
|
||||
this.stop();
|
||||
this.disconnect_func(event);
|
||||
}
|
||||
|
||||
async stop()
|
||||
{
|
||||
this._chatSocket.close()
|
||||
this.searching = false;
|
||||
this._socket.close()
|
||||
}
|
||||
}
|
||||
|
||||
export {MatchMaking}
|
||||
export {MatchMaking}
|
||||
|
@ -20,6 +20,10 @@ class Profile
|
||||
async init(user_id)
|
||||
{
|
||||
let response = await this.client._get(`/api/profiles/${user_id}`);
|
||||
|
||||
if (response.status === 404)
|
||||
return 1;
|
||||
|
||||
let response_data = await response.json();
|
||||
|
||||
this.user_id = response_data.user_id;
|
||||
|
@ -28,7 +28,8 @@ class Profiles
|
||||
async getProfile(user_id)
|
||||
{
|
||||
let profile = new Profile(this.client);
|
||||
await profile.init(user_id);
|
||||
if (await profile.init(user_id))
|
||||
return null;
|
||||
return profile;
|
||||
}
|
||||
|
||||
|
98
frontend/static/js/api/tournament/tournament.js
Normal file
98
frontend/static/js/api/tournament/tournament.js
Normal file
@ -0,0 +1,98 @@
|
||||
import { Client } from "../client.js";
|
||||
|
||||
class Tourmanent
|
||||
{
|
||||
/**
|
||||
* @param {Client} client
|
||||
*/
|
||||
constructor(client, name = undefined, nb_players = undefined, nb_players_by_game = undefined, level = undefined, started = undefined, finished = undefined, levels = undefined, id = undefined)
|
||||
{
|
||||
/**
|
||||
* @type {Client}
|
||||
*/
|
||||
this.client = client;
|
||||
this.name = name || `${nb_players_by_game}x1, ${nb_players} players`;
|
||||
this.nb_players = nb_players;
|
||||
this.nb_players_by_game = nb_players_by_game;
|
||||
this.level = level;
|
||||
this.started = started;
|
||||
this.finished = finished;
|
||||
this.levels = levels;
|
||||
this.state = this.get_state();
|
||||
this.id = id
|
||||
|
||||
this.connected = false;
|
||||
}
|
||||
|
||||
get_state()
|
||||
{
|
||||
if (this.finished)
|
||||
return "finished";
|
||||
if (this.started)
|
||||
return "started";
|
||||
else
|
||||
return "waiting";
|
||||
}
|
||||
|
||||
async init(id)
|
||||
{
|
||||
let response = await this.client._get(`/api/tournaments/${id}`);
|
||||
|
||||
if (response.status === 404)
|
||||
return 1;
|
||||
|
||||
let response_data = await response.json();
|
||||
|
||||
this.name = response_data.name || `${response_data.nb_players_by_game}x1, ${response_data.nb_players} players`;
|
||||
this.nb_players = response_data.nb_players;
|
||||
this.nb_players_by_game = response_data.nb_players_by_game;
|
||||
this.level = response_data.level;
|
||||
this.started = response_data.started;
|
||||
this.finished = response_data.finished;
|
||||
this.levels = response_data.levels;
|
||||
this.id = response_data.id
|
||||
this.state = this.get_state();
|
||||
}
|
||||
|
||||
leave(event)
|
||||
{
|
||||
if (this.connected == false)
|
||||
return
|
||||
this.connected = false;
|
||||
this._socket.close()
|
||||
this.disconnect_func(event);
|
||||
}
|
||||
|
||||
toggle_participation()
|
||||
{
|
||||
if (!this.connected)
|
||||
return
|
||||
this._socket.send(JSON.stringify({participate: ""}));
|
||||
}
|
||||
|
||||
async join(receive_func, disconnect_func)
|
||||
{
|
||||
if (!await this.client.isAuthentificate())
|
||||
return null;
|
||||
|
||||
let url = `${window.location.protocol[4] === 's' ? 'wss' : 'ws'}://${window.location.host}/ws/tournaments/${this.id}`;
|
||||
|
||||
this._socket = new WebSocket(url);
|
||||
|
||||
this.connected = true;
|
||||
this.isParticipating = false;
|
||||
|
||||
this.receive_func = receive_func;
|
||||
this.disconnect_func = disconnect_func;
|
||||
|
||||
this._socket.onmessage = function (event) {
|
||||
const data = JSON.parse(event.data);
|
||||
receive_func(data);
|
||||
};
|
||||
|
||||
this._socket.onclose = this.leave.bind(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export { Tourmanent }
|
78
frontend/static/js/api/tournament/tournaments.js
Normal file
78
frontend/static/js/api/tournament/tournaments.js
Normal file
@ -0,0 +1,78 @@
|
||||
import { Client } from "../client.js";
|
||||
import { Tourmanent } from "./tournament.js";
|
||||
|
||||
class Tourmanents
|
||||
{
|
||||
/**
|
||||
* @param {Client} client
|
||||
*/
|
||||
constructor(client)
|
||||
{
|
||||
/**
|
||||
* @type {Client}
|
||||
*/
|
||||
this.client = client
|
||||
}
|
||||
|
||||
async getTournament(id)
|
||||
{
|
||||
let tournament = new Tourmanent(this.client);
|
||||
if (await tournament.init(id))
|
||||
return null;
|
||||
return tournament;
|
||||
}
|
||||
|
||||
async createTournament(nb_players, nb_players_by_game, name = "")
|
||||
{
|
||||
let response = await this.client._post("/api/tournaments/", {nb_players: nb_players, nb_players_by_game: nb_players_by_game, name: name});
|
||||
|
||||
if (response.status === 403)
|
||||
{
|
||||
this.client._update_logged(false);
|
||||
return null;
|
||||
}
|
||||
|
||||
let response_data = await response.json();
|
||||
return response_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} state must be "finished", or "started", or "waiting". Any other return all elements
|
||||
*/
|
||||
|
||||
async search(state)
|
||||
{
|
||||
let response = await this.client._get(`/api/tournaments/search/${state}`);
|
||||
let response_data = await response.json()
|
||||
|
||||
if (response.status === 404)
|
||||
{
|
||||
this.client._update_logged(false);
|
||||
return null;
|
||||
}
|
||||
|
||||
let tournaments = [];
|
||||
|
||||
response_data.forEach(tournament_data => {
|
||||
tournaments.push(new Tourmanent(this.client,
|
||||
tournament_data.name,
|
||||
tournament_data.nb_players,
|
||||
tournament_data.nb_players_by_game,
|
||||
tournament_data.level,
|
||||
tournament_data.started,
|
||||
tournament_data.finished,
|
||||
tournament_data.levels,
|
||||
tournament_data.id));
|
||||
});
|
||||
|
||||
return tournaments;
|
||||
}
|
||||
|
||||
async all()
|
||||
{
|
||||
return await this.search("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export { Tourmanents }
|
Reference in New Issue
Block a user