Add user cards and badges, Closes #25

This commit is contained in:
Jeremy Zhang
2017-12-07 06:49:32 +00:00
parent 3af5dc703a
commit 204858d011
12 changed files with 293 additions and 10 deletions

View File

@ -1,13 +1,13 @@
/* global $, Materialize, location */
function postForm(user_id, css, css_limit, guest_icon) {
function postForm(user_id, css, css_limit, guest_icon, badges) {
if (css_limit == "") {
css_limit = 0;
}
var funct = $.ajax({
dataType: "json",
method: "POST",
data: {"user_id": user_id, "css": css, "css_limit": css_limit, "guest_icon": guest_icon}
data: {"user_id": user_id, "css": css, "css_limit": css_limit, "guest_icon": guest_icon, "badges": badges}
});
return funct.promise();
}
@ -32,6 +32,7 @@ function patchForm(user_id, param) {
}
$(function() {
$('select').material_select();
$("#new_submit").click(function () {
var user_id = $("#new_user_id").val();
if (user_id.length < 1) {
@ -41,7 +42,8 @@ $(function() {
var css_checked = $("#new_css_switch").is(':checked');
var css_limit = $("#new_css_limit").val();
var guest_icon_checked = $("#new_guest_icon_switch").is(':checked');
var formPost = postForm(user_id, css_checked, css_limit, guest_icon_checked);
var badges = $("#new_badges > option:selected").map(function(){ return this.value }).get().join();
var formPost = postForm(user_id, css_checked, css_limit, guest_icon_checked, badges);
formPost.done(function (data) {
location.reload();
});
@ -114,4 +116,19 @@ function update_guest_icon_switch(user_id, element) {
Materialize.toast('Oh no! Something has failed changing the guest icon toggle!', 10000);
}
});
}
function update_badges(user_id, element) {
var badges = $(element).val().join();
var formPatch = patchForm(user_id, {"badges": badges});
formPatch.done(function (data) {
Materialize.toast('Badges updated!', 10000);
});
formPatch.fail(function (data) {
if (data.status == 409) {
Materialize.toast('This user id does not exists!', 10000);
} else {
Materialize.toast('Oh no! Something has failed changing the badges!', 10000);
}
});
}

View File

@ -19,6 +19,7 @@
(function () {
const theme_options = ["DiscordDark", "BetterTitan"]; // All the avaliable theming names
const badges_options = ["administrator", "partner", "supporter", "star"]; // All badges avaliable
var user_def_css; // Saves the user defined css
var has_already_been_initially_resized = false; // keep track if the embed initially been resized
@ -134,6 +135,14 @@
return funct.promise();
}
function api_badges(user_id) {
var funct = $.ajax({
dataType: "json",
url: "/api/badges/" + user_id,
});
return funct.promise();
}
$(function() {
if ($("#user-defined-css").length > 0) {
user_def_css = $("#user-defined-css").text();
@ -165,6 +174,9 @@
inDuration: 400,
outDuration: 400,
});
$("#usercard").modal({
opacity: .5,
});
$("#nameplate").click(function () {
$("#userembedmodal").modal("open");
@ -607,7 +619,7 @@
var rendered_user = Mustache.render(template_user, {"id": member.id.toString() + "d", "username": member_name, "avatar": member.avatar_url});
$("#discord-members").append(rendered_user);
$( "#discorduser-" + member.id.toString() + "d").click({"member_id": member.id.toString()}, function(event) {
mention_member(event.data.member_id);
openUserCard(event.data.member_id);
});
if (member.color) {
$( "#discorduser-" + member.id.toString() + "d").css("color", "#" + member.color);
@ -631,7 +643,7 @@
var rendered = Mustache.render(template, {"id": member.id.toString() + "a", "username": username, "avatar": member.avatar_url});
$("#embed-discord-members").append(rendered);
$( "#discorduser-" + member.id.toString() + "a").click({"member_id": member.id.toString()}, function(event) {
mention_member(event.data.member_id);
openUserCard(event.data.member_id);
});
}
authenticated_users_list = users;
@ -679,6 +691,60 @@
}, 5000);
}
function openUserCard(user_id) {
var bgs = api_badges(user_id);
bgs.done(function (data) {
for (var i = 0; i < badges_options.length; i++) {
var badge = badges_options[i];
if (data.indexOf(badge) != -1) {
$(`#usercard .badges .${badge}`).show();
} else {
$(`#usercard .badges .${badge}`).hide();
}
}
});
for (var i = 0; i < discord_users_list.length; i++) {
var usr = discord_users_list[i];
if (usr.id == user_id) {
$("#usercard .avatar").attr("src", usr.avatar_url);
$("#usercard .identity .username").text(usr.username);
$("#usercard .identity .discriminator").text(usr.discriminator);
if (usr.bot) {
$("#usercard .bottag").show();
} else {
$("#usercard .bottag").hide();
}
if (usr.status == "offline") {
$("#usercard .offline-text").show();
} else {
$("#usercard .offline-text").hide();
}
if (usr["hoist-role"]) {
$("#usercard .role").show();
$("#usercard .role .text").text(usr["hoist-role"].name);
if (usr.color) {
$("#usercard .role .bubble").css("color", "#" + usr.color);
$("#usercard .role .color").css("background-color", "#" + usr.color);
}
} else {
$("#usercard .role").hide();
}
if (usr.game) {
$("#usercard .game").show();
$("#usercard .game .text").text(usr.game.name);
} else {
$("#usercard .game").hide();
}
$("#usercard-mention-btn").off("click");
$("#usercard-mention-btn").click(function () {
mention_member(user_id);
$("#usercard").modal('close');
});
}
}
$("#usercard").modal('open');
}
function flashElement(element) {
var opacity = element.css("opacity");
for (var i = 0; i < 3; i++) {
@ -966,7 +1032,7 @@
$("#chatcontent .chatusername").last().click(function () {
var discordid = $(this).parent().attr("discord_userid");
if (discordid) {
mention_member(discordid);
openUserCard(discordid);
}
});
$("#chatcontent p:last-child").find(".channellink").click(function () {