g3.6
This commit is contained in:
1 parent
bdeaece35a
commit
16bc5ea38e
11 files changed
+445
-338
No files matched your search
+64
-8
@@ -374,14 +374,15 @@ var userData = null;
|
||||
const userDataListener = [];
|
||||
|
||||
async function setUserData(couchDB) {
|
||||
const res = await getUserData(couchDB);
|
||||
if (res == null) {
|
||||
const user = await getUserData(couchDB);
|
||||
if (user == null) {
|
||||
location.href = "../login.html";
|
||||
return false;
|
||||
}
|
||||
userData = res;
|
||||
updateAllProfiles(res);
|
||||
_constructProfile(res);
|
||||
userData = user;
|
||||
updateAllProfiles(user);
|
||||
_constructProfile(user);
|
||||
await checkUserCourses(couchDB, user);
|
||||
|
||||
while (userDataListener.length > 0) {
|
||||
const call = userDataListener[userDataListener.length - 1];
|
||||
@@ -407,18 +408,51 @@ async function updateUserData(couchDB, user = userData) {
|
||||
|
||||
|
||||
function updateAllProfiles(user) {
|
||||
const hasProfilAbility = user.enabled_abilities.includes("profile_pic");
|
||||
const features = user.enabled_abilities ??= [];
|
||||
const hasProfilAbility = features.includes("profile_pic");
|
||||
|
||||
const profiles = document.getElementsByClassName("profile");
|
||||
for (var i of profiles) {
|
||||
if (hasProfilAbility) {
|
||||
if (hasProfilAbility && user.avatar) {
|
||||
i.style.backgroundImage = `url("${user.avatar}")`;
|
||||
} else {
|
||||
i.style.removeProperty("backgroundImage");
|
||||
if (features.includes("pink_mode")) {
|
||||
i.style.backgroundImage = `url("https://static.turtle-coding-gbr.de/gmci/rosa_profil.png")`;
|
||||
} else {
|
||||
i.style.backgroundImage = `url("https://static.turtle-coding-gbr.de/gmci/standart_profil.png")`;
|
||||
}
|
||||
}
|
||||
i.onclick = _onProfileClick;
|
||||
}
|
||||
}
|
||||
async function checkUserCourses(couchDB, userData) {
|
||||
for (var cName of userData.courses) {
|
||||
const course = await couchDB.get("course:" + cName);
|
||||
if (!course || !course.expire_date) continue;
|
||||
|
||||
const expire_date = new Date(course.expire_date);
|
||||
if (expire_date < new Date()) {
|
||||
course.result_history ??= [];
|
||||
course.questions ??= [];
|
||||
course.result ??= [];
|
||||
|
||||
if (course.questions.length == 0 || course.result.length == 0) continue;
|
||||
|
||||
course.result_history.push({
|
||||
"date": course.start_date ?? expire_date,
|
||||
"questions": course.questions,
|
||||
"result": course.result
|
||||
});
|
||||
course.questions = [];
|
||||
course.result = [];
|
||||
|
||||
await couchDB.set("course:" + cName, course);
|
||||
|
||||
console.log(`Course ${cName} expired`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _onProfileClick(event) {
|
||||
var buttonRect = this.getBoundingClientRect();
|
||||
|
||||
@@ -542,4 +576,26 @@ function getUserDisplayName(user) {
|
||||
const hasHonor = (user.enabled_abilities ??= []).includes("title_of_honor");
|
||||
const title_of_honor = hasHonor ? "(Sir) " : "";
|
||||
return `${title_of_honor}${ !user.title ? "" : user.title + " " }${ form1(user.name) }`;
|
||||
}
|
||||
|
||||
async function levelUpXP(couchDB, user = userData, xp = 1) {
|
||||
var resLevelUp = false;
|
||||
|
||||
userData.xp ??= 0;
|
||||
userData.level ??= 0;
|
||||
|
||||
userData.xp += xp;
|
||||
while (userData.xp >= userData.level+1) {
|
||||
userData.xp -= (userData.level + 1);
|
||||
userData.level++;
|
||||
resLevelUp = true;
|
||||
}
|
||||
|
||||
if (userData.xp < 0) {
|
||||
console.error("UserData-XP was below zero!");
|
||||
userData.xp = 0;
|
||||
}
|
||||
|
||||
await updateUserData(couchDB, user);
|
||||
return resLevelUp;
|
||||
}
|
||||
Reference in new issue
Block a user