浏览代码

ranking sort fix

Viktoriia 11 月之前
父节点
当前提交
b58b408223

+ 4 - 1
src/screens/InAppScreens/TravellersScreen/MasterRankingScreen/index.tsx

@@ -34,7 +34,10 @@ const MasterRankingScreen = () => {
       const fetchRanking = async () => {
         const ranking = storage.get('masterRanking', StoreType.STRING) as string;
         setMasterRanking(
-          JSON.parse(ranking).sort((a: Ranking, b: Ranking) => b.score_nm - a.score_nm)
+          JSON.parse(ranking).sort(
+            (a: Ranking, b: Ranking) =>
+              b.score_nm - a.score_nm || b.score_un - a.score_un || a.age - b.age
+          )
         );
         setIsLoading(false);
       };

+ 55 - 11
src/screens/InAppScreens/TravellersScreen/utils/sort.ts

@@ -25,38 +25,60 @@ export const applyModalSort = (
     switch (ranking?.label) {
       case 'NM':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_nm - a.score_nm
+          (a: Ranking, b: Ranking) =>
+            b.score_nm - a.score_nm || b.score_un - a.score_un || a.age - b.age
         );
         break;
       case 'DARE':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_dare - a.score_dare
+          (a: Ranking, b: Ranking) =>
+            b.score_dare - a.score_dare ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'UN':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_un - a.score_un
+          (a: Ranking, b: Ranking) =>
+            b.score_un - a.score_un || b.score_nm - a.score_nm || a.age - b.age
         );
         break;
       case 'UN+':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_unp - a.score_unp
+          (a: Ranking, b: Ranking) =>
+            b.score_unp - a.score_unp ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'TCC':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_tcc - a.score_tcc
+          (a: Ranking, b: Ranking) =>
+            b.score_tcc - a.score_tcc ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'DEEP':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b?.score_deep - a?.score_deep
+          (a: Ranking, b: Ranking) =>
+            b?.score_deep - a?.score_deep ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'YES':
         const YESFilteredUsers = filteredLocalData.filter((user) => user.score_yes !== 10000);
         filteredLocalData = YESFilteredUsers.sort(
-          (a: Ranking, b: Ranking) => a.score_yes - b.score_yes
+          (a: Ranking, b: Ranking) =>
+            a.score_yes - b.score_yes ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'SLOW':
@@ -64,22 +86,44 @@ export const applyModalSort = (
           (user) => user.score_slow < 4500 && user.score_slow > 0
         );
         filteredLocalData = SLOWFilteredUsers.sort(
-          (a: Ranking, b: Ranking) => b.score_slow - a.score_slow
+          (a: Ranking, b: Ranking) =>
+            b.score_slow - a.score_slow ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'WHS':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_whs - a.score_whs
+          (a: Ranking, b: Ranking) =>
+            b.score_whs - a.score_whs ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'KYE':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_kye - a.score_kye
+          (a: Ranking, b: Ranking) =>
+            b.score_kye - a.score_kye ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
         );
         break;
       case 'TBT':
         filteredLocalData = filteredLocalData.sort(
-          (a: Ranking, b: Ranking) => b.score_tbt - a.score_tbt
+          (a: Ranking, b: Ranking) =>
+            b.score_tbt - a.score_tbt ||
+            b.score_nm - a.score_nm ||
+            b.score_un - a.score_un ||
+            a.age - b.age
+        );
+        break;
+      default:
+        filteredLocalData = filteredLocalData.sort(
+          (a: Ranking, b: Ranking) =>
+            b.score_nm - a.score_nm || b.score_un - a.score_un || a.age - b.age
         );
         break;
     }