]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/helpers/User.js
periodically sync avatars
[alttp.git] / resources / js / helpers / User.js
index c6a99c9dfe4d60e5918ef93a345615111ecc6316..9a554449cdfb0dd437c10c13ab6e344273c3d70e 100644 (file)
@@ -1,12 +1,64 @@
+import moment from 'moment';
+
+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 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);
 };
 
-export const getAvatarUrl = user => user.avatar
-       ? `//cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png`
-       : '/default-avatar.png';
+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 getUserName = user => (user && (user.nickname || user.username)) || '';
 
 export const hasFinishedRound = (user, round) => {
        const result = findResult(user, round);
@@ -14,7 +66,11 @@ export const hasFinishedRound = (user, round) => {
 };
 
 export default {
+       compareFinished,
+       compareResult,
+       compareUsername,
        findResult,
        getAvatarUrl,
+       getUserName,
        hasFinishedRound,
 };