47 lines
1 KiB
TypeScript
47 lines
1 KiB
TypeScript
|
interface CurrentUserInfo {
|
||
|
user_id: number;
|
||
|
username: string;
|
||
|
user_background_settings: number;
|
||
|
user_colour: number;
|
||
|
colour: Colour;
|
||
|
}
|
||
|
|
||
|
let userInfo: CurrentUserInfo;
|
||
|
|
||
|
function getRawCurrentUserInfo(): CurrentUserInfo
|
||
|
{
|
||
|
const userInfoElement: HTMLDivElement = document.getElementById('js-user-info') as HTMLDivElement;
|
||
|
|
||
|
if (!userInfoElement)
|
||
|
return null;
|
||
|
|
||
|
return JSON.parse(userInfoElement.textContent) as CurrentUserInfo;
|
||
|
}
|
||
|
|
||
|
function refreshCurrentUserInfo(): void
|
||
|
{
|
||
|
userInfo = getRawCurrentUserInfo();
|
||
|
|
||
|
if (userInfo)
|
||
|
userInfo.colour = new Colour(userInfo.user_colour);
|
||
|
}
|
||
|
|
||
|
function getCurrentUser(attribute: string = null)
|
||
|
{
|
||
|
if (attribute) {
|
||
|
if (!userInfo) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
return userInfo[attribute] || '';
|
||
|
}
|
||
|
|
||
|
return userInfo || null;
|
||
|
}
|
||
|
|
||
|
function userInit(): void
|
||
|
{
|
||
|
refreshCurrentUserInfo();
|
||
|
console.log(`You are ${getCurrentUser('username')} with user id ${getCurrentUser('user_id')} and colour ${getCurrentUser('colour').hex}.`);
|
||
|
}
|