Create URL to get user notification

This commit is contained in:
Gregoire Parant 2020-12-22 11:15:18 +01:00
parent 53b96d61fe
commit 69bf416dd0
8 changed files with 104 additions and 20 deletions

View file

@ -7,7 +7,6 @@ import {localUserStore} from "./LocalUserStore";
import {ConnectedUser, LocalUser} from "./LocalUser";
import {Room} from "./Room";
import {NotConnectedError} from "../Exception/NotConnectedError";
import {ErrorConnectedError} from "../Exception/ErrorConnectedError";
const URL_ROOM_STARTED = '/Floor0/floor0.json';
@ -19,7 +18,8 @@ class ConnectionManager {
private connectedUser?: ConnectedUser|null;
constructor() {
//this.userLogin();
this.connectedUser = localUserStore.getUserConnected();
this.getNotification();
}
/**
@ -124,17 +124,39 @@ class ConnectionManager {
* @param email
* @param password
*/
public userLogin(email: string, password: string){
public userLogin(email: string, password: string) {
//Verify spark session
//TODO change url addresse
return Axios.post('http://pusher.workadventure.localhost/user/login',{email, password}).then((res) => {
return res.data;
return Axios.post('http://pusher.workadventure.localhost/user/login', {email, password}).then((res) => {
const user = res.data;
this.localUser = new LocalUser(res.data.userUuid, res.data.authToken, res.data.textures || []);
localUserStore.saveUser(this.localUser);
this.connectedUser = new ConnectedUser(
user.name,
user.email,
user.uuid,
user.jwtToken,
[],
[]
);
localUserStore.saveUserConnected(this.connectedUser);
return this.getNotification().then((response) => {
if (!this.connectedUser) {
return;
}
this.connectedUser.setNotification(response.data.notification || []);
this.connectedUser.setAnnouncements(response.data.announcements || []);
localUserStore.saveUserConnected(this.connectedUser);
}).catch((err) => {
console.info(err);
});
}).catch((err) => {
if(err instanceof ErrorConnectedError) {
throw err;
}
console.log('err', err);
this.connectedUser = null;
localUserStore.clearUserConnected();
throw new NotConnectedError('User not connected');
});
}
@ -181,6 +203,10 @@ class ConnectionManager {
throw err;
})
}
private getNotification(){
return Axios.get('http://pusher.workadventure.localhost/user/notifications/recent');
}
}
export const connectionManager = new ConnectionManager();

View file

@ -14,8 +14,18 @@ export class ConnectedUser {
constructor(
public readonly name:string,
public readonly email: string,
public readonly notification: [],
public readonly announcements: [],
public readonly uuid:string,
public readonly jwtToken: string,
public notification?: [],
public announcements?: [],
) {
}
setNotification(notification: []){
this.notification = notification;
}
setAnnouncements(announcements: []){
this.announcements = announcements;
}
}

View file

@ -1,4 +1,4 @@
import {LocalUser} from "./LocalUser";
import {ConnectedUser, LocalUser} from "./LocalUser";
const characterLayersKey = 'characterLayers';
const gameQualityKey = 'gameQuality';
@ -6,7 +6,7 @@ const videoQualityKey = 'videoQuality';
//todo: add localstorage fallback
class LocalUserStore {
saveUser(localUser: LocalUser) {
localStorage.setItem('localUser', JSON.stringify(localUser));
}
@ -56,6 +56,17 @@ class LocalUserStore {
setVideoQualityValue(value: number): void {
localStorage.setItem(videoQualityKey, '' + value);
}
clearUserConnected(){
localStorage.removeItem('connectedUser');
}
saveUserConnected(connectedUser: ConnectedUser) {
localStorage.setItem('connectedUser', JSON.stringify(connectedUser));
}
getUserConnected(): ConnectedUser|null {
const data = localStorage.getItem('connectedUser');
return data ? JSON.parse(data) : null;
}
}
export const localUserStore = new LocalUserStore();

View file

@ -1 +0,0 @@
export class ErrorConnectedError extends Error{}

View file

@ -331,11 +331,6 @@ export class MenuScene extends Phaser.Scene {
}
if(errorForm){return;}
gameLoginError.innerText = 'Login or password incorrect';
gameLoginError.style.display = 'block';
//TODO login user in back
connectionManager.userLogin(gameLoginEmail.value, gameLoginPassword.value).then(() => {
this.closeGameLogin();
}).catch((err) => {