X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fhelpers%2FUser.js;h=b00c853542d6eb739ec6fec3cec8f0771473ae49;hb=8645b77ea2dc402f0265e1c8022ba18302506ca1;hp=8aa839d732fbb174f8b599031de8853baa5a946f;hpb=b115fcfcad6c2798cffad9a166c4886cfe1eed6f;p=alttp.git diff --git a/resources/js/helpers/User.js b/resources/js/helpers/User.js index 8aa839d..b00c853 100644 --- a/resources/js/helpers/User.js +++ b/resources/js/helpers/User.js @@ -1,14 +1,75 @@ -export const getAvatarUrl = user => (user.avatar - ? `//cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png` - : '/default-avatar.png'); +export const getUserName = user => (user && + (user.nickname || user.discord_nickname || user.username)) || ''; + +export const compareUsername = (a, b) => { + const a_name = getUserName(a); + const b_name = getUserName(b); + return a_name.localeCompare(b_name); +}; export const findResult = (user, round) => { if (!user || !user.id) return null; if (!round || !round.results || !round.results.length) return null; - return round.results.find(result => result.user_id === user.id); + return round.results.find(result => result.user_id == user.id); +}; + +export const compareFinished = round => (a, b) => { + const a_result = findResult(a, round); + const b_result = findResult(b, round); + const a_finished = a_result && a_result.has_finished; + const b_finished = b_result && b_result.has_finished; + if (a_finished) { + if (b_finished) { + return compareUsername(a, b); + } + return -1; + } + if (b_finished) { + return 1; + } + return compareUsername(a, b); +}; + +export const compareResult = round => (a, b) => { + const a_result = findResult(a, round); + const b_result = findResult(b, round); + const a_placement = a_result && a_result.placement ? a_result.placement : 0; + const b_placement = b_result && b_result.placement ? b_result.placement : 0; + if (a_placement) { + if (b_placement) { + if (a_placement < b_placement) return -1; + if (b_placement < a_placement) return 1; + return compareUsername(a, b); + } + return -1; + } + if (b_placement) { + return 1; + } + return compareUsername(a, b); +}; + +export const getAvatarUrl = user => { + if (user && user.avatar) { + if (user.avatar_cached) { + return `/media/avatar/${user.id}/${user.avatar}.png`; + } + return `//cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png`; + } + return '/default-avatar.png'; +}; + +export const hasFinishedRound = (user, round) => { + const result = findResult(user, round); + return result && result.has_finished; }; export default { + compareFinished, + compareResult, + compareUsername, findResult, getAvatarUrl, + getUserName, + hasFinishedRound, };