Ver código fonte

fixed dev conflict

Viktoriia 8 meses atrás
pai
commit
62a6098839
31 arquivos alterados com 309 adições e 31 exclusões
  1. 1 1
      Route.tsx
  2. 2 2
      app.config.ts
  3. 0 0
      assets/icons/TickIcon.tsx
  4. 40 0
      assets/icons/un-100.svg
  5. 40 0
      assets/icons/un-150.svg
  6. 40 0
      assets/icons/un-50.svg
  7. 7 5
      package.json
  8. 26 9
      src/components/Button/index.tsx
  9. 4 0
      src/modules/api/ranking/ranking-api.tsx
  10. 4 0
      src/modules/api/regions/regions-api.tsx
  11. 4 0
      src/modules/api/series/series-api.tsx
  12. 4 0
      src/modules/api/user/user-api.tsx
  13. 3 3
      src/screens/InAppScreens/MapScreen/RegionViewScreen/index.tsx
  14. 12 0
      src/screens/InAppScreens/MapScreen/UsersListScreen/Profile/index.tsx
  15. 3 0
      src/screens/InAppScreens/MapScreen/UsersListScreen/index.tsx
  16. 13 2
      src/screens/InAppScreens/MapScreen/index.tsx
  17. 12 0
      src/screens/InAppScreens/ProfileScreen/MyFriendsScreen/FriendsProfile/index.tsx
  18. 3 0
      src/screens/InAppScreens/ProfileScreen/MyFriendsScreen/index.tsx
  19. 6 0
      src/screens/InAppScreens/ProfileScreen/ShareScreen/index.tsx
  20. 10 0
      src/screens/InAppScreens/ProfileScreen/index.tsx
  21. 12 0
      src/screens/InAppScreens/TravellersScreen/Components/Profile.tsx
  22. 6 0
      src/screens/InAppScreens/TravellersScreen/Components/SeriesRankingItem.tsx
  23. 3 0
      src/screens/InAppScreens/TravellersScreen/InHistoryScreen/index.tsx
  24. 3 0
      src/screens/InAppScreens/TravellersScreen/InMemoriamScreen/index.tsx
  25. 3 0
      src/screens/InAppScreens/TravellersScreen/LPIRankingScreen/index.tsx
  26. 3 0
      src/screens/InAppScreens/TravellersScreen/MasterRankingScreen/index.tsx
  27. 4 0
      src/screens/InAppScreens/TravellersScreen/index.tsx
  28. 4 0
      src/screens/InAppScreens/TravellersScreen/utils/types.ts
  29. 1 0
      src/screens/InAppScreens/TravelsScreen/SuggestSeriesScreen/index.tsx
  30. 23 6
      src/screens/LoginScreen/index.tsx
  31. 13 3
      src/screens/RegisterScreen/EditAccount/index.tsx

+ 1 - 1
Route.tsx

@@ -162,7 +162,7 @@ const Route = () => {
   useEffect(() => {
     const prepareApp = async () => {
       await checkNmToken();
-      await checkTokenAndUpdate();
+      // await checkTokenAndUpdate();
       await openDatabases();
       setDbLoaded(true);
       await findFastestServer();

+ 2 - 2
app.config.ts

@@ -22,7 +22,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
   owner: 'nomadmaniaou',
   scheme: 'nm',
   // Should be updated after every production release (deploy to AppStore/PlayMarket)
-  version: '2.0.18',
+  version: '2.0.20',
   // Should be updated after every dependency change
   runtimeVersion: '1.5',
   orientation: 'portrait',
@@ -106,7 +106,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
       "RECORD_AUDIO",
       'MODIFY_AUDIO_SETTINGS'
     ],
-    versionCode: 71 // next version submitted to Google Play needs to be higher than that 2.0.18
+    versionCode: 73 // next version submitted to Google Play needs to be higher than that 2.0.20
   },
   plugins: [
     [

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
assets/icons/TickIcon.tsx


+ 40 - 0
assets/icons/un-100.svg

@@ -0,0 +1,40 @@
+<svg width="20" height="20" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(0.138889,0,0,0.138889,-0.416668,0.208312)">
+        <g transform="matrix(1,0,0,1.05882,0,-6.79395)">
+            <path d="M75.078,124.704C69.723,133.552 51.419,136.3 44.395,131.185C46.383,128.389 49.066,126.167 52.174,124.743C59.375,121.358 66.685,121.016 74.106,124.094C74.782,124.309 75.511,124.282 76.17,124.019C85.739,120.382 94.595,121.558 102.699,127.916C103.385,128.501 104.027,129.138 104.618,129.822C104.991,130.222 105.31,130.67 105.656,131.097C99.269,136.203 80.845,133.909 75.078,124.704Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
+            <path d="M38.683,112.386C30.335,116.58 12.749,110.192 10.105,101.274C20.237,97.404 34.898,102.838 38.683,112.386Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
+            <path d="M94.438,121.258C101.101,113.525 116.999,112.007 125.648,118.81C120.019,126.149 101.745,127.746 94.438,121.258Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
+            <path d="M139.978,101.301C137.271,110.068 120.143,116.537 111.371,112.437C114.987,102.886 129.916,97.386 139.978,101.301Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
+            <path d="M132.037,66.081C125.551,58.887 126.923,45.239 136.895,39.003C143.898,45.503 140.944,61.972 132.037,66.081Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
+            <path d="M24.397,118.807C32.946,112.04 48.841,113.443 55.6,121.231C48.519,127.661 30.203,126.261 24.397,118.807Z" style="fill:url(#_Linear6);fill-rule:nonzero;"/>
+            <path d="M13.065,39C22.806,44.703 24.761,58.696 17.972,66.084C9.501,62.148 5.99,46.06 13.065,39Z" style="fill:url(#_Linear7);fill-rule:nonzero;"/>
+            <path d="M146.978,80.614C147.625,89.874 133.649,100.765 124.141,99.298C123.819,89.923 135.235,79.932 146.978,80.614Z" style="fill:url(#_Linear8);fill-rule:nonzero;"/>
+            <path d="M3,80.632C12.957,79.859 25.498,87.926 26.054,99.326C23.073,99.626 20.065,99.161 17.31,97.974C12.787,96.014 8.839,92.919 5.843,88.983C3.984,86.571 3.135,83.762 3,80.632Z" style="fill:url(#_Linear9);fill-rule:nonzero;"/>
+            <path d="M3.737,59.045C14.963,61.448 22.511,73.957 18.7,83.541C16.895,82.741 14.954,82.171 13.336,81.117C7.62,77.341 4.134,71.972 3.211,65.139C2.934,63.169 3.535,61.099 3.737,59.045Z" style="fill:url(#_Linear10);fill-rule:nonzero;"/>
+            <path d="M145.922,59.139C149.986,67.017 141.473,81.544 131.354,83.308C127.495,75.075 134.308,61.663 145.922,59.139Z" style="fill:url(#_Linear11);fill-rule:nonzero;"/>
+            <path d="M67.437,141C66.559,137.179 67.54,133.997 70.304,131.606C74.329,128.113 75.752,128.122 79.846,131.679C82.646,134.103 83.573,137.764 82.505,140.942C78.667,140.121 76.582,137.427 75.051,133.818C73.514,137.318 71.453,140.094 67.437,141Z" style="fill:url(#_Linear12);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,-0.341759,-3.6)">
+            <path d="M27.596,55.2L46.82,55.2L46.82,93L34.076,93L34.076,64.812L27.596,64.812L27.596,55.2ZM68.581,93.864C58.591,93.864 51.463,86.628 51.463,74.1C51.463,61.572 58.591,54.336 68.581,54.336C78.571,54.336 85.699,61.572 85.699,74.1C85.699,86.628 78.571,93.864 68.581,93.864ZM68.581,83.658C71.065,83.658 72.9,81.39 72.9,74.1C72.9,66.81 71.065,64.542 68.581,64.542C66.097,64.542 64.26,66.81 64.26,74.1C64.26,81.39 66.097,83.658 68.581,83.658ZM105.969,93.864C95.979,93.864 88.851,86.628 88.851,74.1C88.851,61.572 95.979,54.336 105.969,54.336C115.959,54.336 123.087,61.572 123.087,74.1C123.087,86.628 115.959,93.864 105.969,93.864ZM105.969,83.658C108.453,83.658 110.289,81.39 110.289,74.1C110.289,66.81 108.453,64.542 105.969,64.542C103.485,64.542 101.649,66.81 101.649,74.1C101.649,81.39 103.485,83.658 105.969,83.658Z" style="fill:rgb(22,51,95);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,0,-10.9315)">
+            <path d="M54.562,27.315L48.507,26.446L45.798,21.031C45.641,20.716 45.112,20.716 44.957,21.031L42.245,26.446L36.192,27.315C36.015,27.34 35.868,27.463 35.813,27.631C35.757,27.798 35.802,27.982 35.931,28.105L40.313,32.32L39.278,38.272C39.249,38.446 39.32,38.62 39.466,38.725C39.61,38.828 39.804,38.843 39.96,38.76L45.377,35.95L50.795,38.76C50.862,38.796 50.939,38.814 51.013,38.814C51.111,38.814 51.208,38.784 51.288,38.725C51.431,38.62 51.507,38.445 51.475,38.272L50.441,32.32L54.824,28.105C54.951,27.982 54.999,27.799 54.942,27.631C54.885,27.463 54.74,27.34 54.562,27.315Z" style="fill:rgb(167,83,0);fill-rule:nonzero;"/>
+            <path d="M87.415,17.994L79.465,16.853L75.907,9.742C75.7,9.328 75.006,9.328 74.799,9.742L71.242,16.853L63.291,17.994C63.058,18.027 62.865,18.189 62.791,18.409C62.72,18.628 62.779,18.871 62.948,19.031L68.703,24.567L67.344,32.382C67.304,32.611 67.399,32.842 67.588,32.977C67.78,33.115 68.033,33.133 68.239,33.025L75.352,29.334L82.467,33.025C82.555,33.071 82.656,33.094 82.755,33.094C82.882,33.094 83.011,33.056 83.115,32.977C83.305,32.841 83.402,32.61 83.36,32.382L82.004,24.566L87.759,19.03C87.926,18.87 87.988,18.628 87.915,18.408C87.841,18.189 87.649,18.027 87.415,17.994Z" style="fill:rgb(167,83,0);fill-rule:nonzero;"/>
+            <path d="M114.891,27.631C114.836,27.463 114.69,27.34 114.512,27.315L108.457,26.446L105.747,21.031C105.592,20.716 105.062,20.716 104.905,21.031L102.195,26.446L96.141,27.315C95.964,27.34 95.818,27.463 95.761,27.631C95.707,27.798 95.75,27.982 95.88,28.105L100.263,32.32L99.229,38.272C99.197,38.446 99.271,38.62 99.414,38.725C99.56,38.828 99.752,38.843 99.91,38.76L105.326,35.95L110.743,38.76C110.812,38.796 110.887,38.814 110.964,38.814C111.06,38.814 111.158,38.784 111.239,38.725C111.383,38.62 111.456,38.445 111.425,38.272L110.39,32.32L114.773,28.105C114.901,27.982 114.946,27.799 114.891,27.631Z" style="fill:rgb(167,83,0);fill-rule:nonzero;"/>
+        </g>
+    </g>
+    <defs>
+        <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear7" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear8" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear9" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear10" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear11" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear12" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+    </defs>
+</svg>

+ 40 - 0
assets/icons/un-150.svg

@@ -0,0 +1,40 @@
+<svg width="20" height="20" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(0.138889,0,0,0.138889,-0.416668,-0.446665)">
+        <g transform="matrix(1,0,0,1.06094,0,-2.37658)">
+            <path d="M75.078,124.704C69.723,133.552 51.419,136.3 44.395,131.185C46.383,128.389 49.066,126.167 52.174,124.743C59.375,121.358 66.685,121.016 74.106,124.094C74.782,124.309 75.511,124.282 76.17,124.019C85.739,120.382 94.595,121.558 102.699,127.916C103.385,128.501 104.027,129.138 104.618,129.822C104.991,130.222 105.31,130.67 105.656,131.097C99.269,136.203 80.845,133.909 75.078,124.704Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
+            <path d="M38.683,112.386C30.335,116.58 12.749,110.192 10.105,101.274C20.237,97.404 34.898,102.838 38.683,112.386Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
+            <path d="M94.438,121.258C101.101,113.525 116.999,112.007 125.648,118.81C120.019,126.149 101.745,127.746 94.438,121.258Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
+            <path d="M139.978,101.301C137.271,110.068 120.143,116.537 111.371,112.437C114.987,102.886 129.916,97.386 139.978,101.301Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
+            <path d="M132.037,66.081C125.551,58.887 126.923,45.239 136.895,39.003C143.898,45.503 140.944,61.972 132.037,66.081Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
+            <path d="M24.397,118.807C32.946,112.04 48.841,113.443 55.6,121.231C48.519,127.661 30.203,126.261 24.397,118.807Z" style="fill:url(#_Linear6);fill-rule:nonzero;"/>
+            <path d="M13.065,39C22.806,44.703 24.761,58.696 17.972,66.084C9.501,62.148 5.99,46.06 13.065,39Z" style="fill:url(#_Linear7);fill-rule:nonzero;"/>
+            <path d="M146.978,80.614C147.625,89.874 133.649,100.765 124.141,99.298C123.819,89.923 135.235,79.932 146.978,80.614Z" style="fill:url(#_Linear8);fill-rule:nonzero;"/>
+            <path d="M3,80.632C12.957,79.859 25.498,87.926 26.054,99.326C23.073,99.626 20.065,99.161 17.31,97.974C12.787,96.014 8.839,92.919 5.843,88.983C3.984,86.571 3.135,83.762 3,80.632Z" style="fill:url(#_Linear9);fill-rule:nonzero;"/>
+            <path d="M3.737,59.045C14.963,61.448 22.511,73.957 18.7,83.541C16.895,82.741 14.954,82.171 13.336,81.117C7.62,77.341 4.134,71.972 3.211,65.139C2.934,63.169 3.535,61.099 3.737,59.045Z" style="fill:url(#_Linear10);fill-rule:nonzero;"/>
+            <path d="M145.922,59.139C149.986,67.017 141.473,81.544 131.354,83.308C127.495,75.075 134.308,61.663 145.922,59.139Z" style="fill:url(#_Linear11);fill-rule:nonzero;"/>
+            <path d="M67.437,141C66.559,137.179 67.54,133.997 70.304,131.606C74.329,128.113 75.752,128.122 79.846,131.679C82.646,134.103 83.573,137.764 82.505,140.942C78.667,140.121 76.582,137.427 75.051,133.818C73.514,137.318 71.453,140.094 67.437,141Z" style="fill:url(#_Linear12);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,-0.342009,1.11582)">
+            <path d="M29.574,55.2L48.798,55.2L48.798,93L36.054,93L36.054,64.812L29.574,64.812L29.574,55.2ZM68.884,68.538C80.062,68.538 84.328,73.884 84.328,80.58C84.328,87.33 79.144,93.864 67.048,93.864C61.864,93.864 56.194,92.73 52.144,90.462L56.464,81.066C59.704,82.956 63.376,83.82 66.562,83.82C69.424,83.82 71.53,82.794 71.53,80.85C71.53,79.23 70.396,78.15 65.806,78.15L54.844,78.15L56.734,55.2L81.844,55.2L81.844,64.812L67.21,64.812L66.94,68.538L68.884,68.538ZM103.992,93.864C94.002,93.864 86.874,86.628 86.874,74.1C86.874,61.572 94.002,54.336 103.992,54.336C113.982,54.336 121.11,61.572 121.11,74.1C121.11,86.628 113.982,93.864 103.992,93.864ZM103.992,83.658C106.476,83.658 108.312,81.39 108.312,74.1C108.312,66.81 106.476,64.542 103.992,64.542C101.508,64.542 99.672,66.81 99.672,74.1C99.672,81.39 101.508,83.658 103.992,83.658Z" style="fill:rgb(22,51,95);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,0,-6.21566)">
+            <path d="M54.562,27.315L48.507,26.446L45.798,21.031C45.641,20.716 45.112,20.716 44.957,21.031L42.245,26.446L36.192,27.315C36.015,27.34 35.868,27.463 35.813,27.631C35.757,27.798 35.802,27.982 35.931,28.105L40.313,32.32L39.278,38.272C39.249,38.446 39.32,38.62 39.466,38.725C39.61,38.828 39.804,38.843 39.96,38.76L45.377,35.95L50.795,38.76C50.862,38.796 50.939,38.814 51.013,38.814C51.111,38.814 51.208,38.784 51.288,38.725C51.431,38.62 51.507,38.445 51.475,38.272L50.441,32.32L54.824,28.105C54.951,27.982 54.999,27.799 54.942,27.631C54.885,27.463 54.74,27.34 54.562,27.315Z" style="fill:rgb(97,97,97);fill-rule:nonzero;"/>
+            <path d="M87.415,17.994L79.465,16.853L75.907,9.742C75.7,9.328 75.006,9.328 74.799,9.742L71.242,16.853L63.291,17.994C63.058,18.027 62.865,18.189 62.791,18.409C62.72,18.628 62.779,18.871 62.948,19.031L68.703,24.567L67.344,32.382C67.304,32.611 67.399,32.842 67.588,32.977C67.78,33.115 68.033,33.133 68.239,33.025L75.352,29.334L82.467,33.025C82.555,33.071 82.656,33.094 82.755,33.094C82.882,33.094 83.011,33.056 83.115,32.977C83.305,32.841 83.402,32.61 83.36,32.382L82.004,24.566L87.759,19.03C87.926,18.87 87.988,18.628 87.915,18.408C87.841,18.189 87.649,18.027 87.415,17.994Z" style="fill:rgb(97,97,97);fill-rule:nonzero;"/>
+            <path d="M114.891,27.631C114.836,27.463 114.69,27.34 114.512,27.315L108.457,26.446L105.747,21.031C105.592,20.716 105.062,20.716 104.905,21.031L102.195,26.446L96.141,27.315C95.964,27.34 95.818,27.463 95.761,27.631C95.707,27.798 95.75,27.982 95.88,28.105L100.263,32.32L99.229,38.272C99.197,38.446 99.271,38.62 99.414,38.725C99.56,38.828 99.752,38.843 99.91,38.76L105.326,35.95L110.743,38.76C110.812,38.796 110.887,38.814 110.964,38.814C111.06,38.814 111.158,38.784 111.239,38.725C111.383,38.62 111.456,38.445 111.425,38.272L110.39,32.32L114.773,28.105C114.901,27.982 114.946,27.799 114.891,27.631Z" style="fill:rgb(97,97,97);fill-rule:nonzero;"/>
+        </g>
+    </g>
+    <defs>
+        <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear7" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear8" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear9" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear10" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear11" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear12" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+    </defs>
+</svg>

+ 40 - 0
assets/icons/un-50.svg

@@ -0,0 +1,40 @@
+<svg width="20" height="20" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(0.138889,0,0,0.138923,-0.416668,-0.449177)">
+        <g transform="matrix(1,0,0,1.05857,0,-2.05954)">
+            <path d="M75.078,124.704C69.723,133.552 51.419,136.3 44.395,131.185C46.383,128.389 49.066,126.167 52.174,124.743C59.375,121.358 66.685,121.016 74.106,124.094C74.782,124.309 75.511,124.282 76.17,124.019C85.739,120.382 94.595,121.558 102.699,127.916C103.385,128.501 104.027,129.138 104.618,129.822C104.991,130.222 105.31,130.67 105.656,131.097C99.269,136.203 80.845,133.909 75.078,124.704Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
+            <path d="M38.683,112.386C30.335,116.58 12.749,110.192 10.105,101.274C20.237,97.404 34.898,102.838 38.683,112.386Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
+            <path d="M94.438,121.258C101.101,113.525 116.999,112.007 125.648,118.81C120.019,126.149 101.745,127.746 94.438,121.258Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
+            <path d="M139.978,101.301C137.271,110.068 120.143,116.537 111.371,112.437C114.987,102.886 129.916,97.386 139.978,101.301Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
+            <path d="M132.037,66.081C125.551,58.887 126.923,45.239 136.895,39.003C143.898,45.503 140.944,61.972 132.037,66.081Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
+            <path d="M24.397,118.807C32.946,112.04 48.841,113.443 55.6,121.231C48.519,127.661 30.203,126.261 24.397,118.807Z" style="fill:url(#_Linear6);fill-rule:nonzero;"/>
+            <path d="M13.065,39C22.806,44.703 24.761,58.696 17.972,66.084C9.501,62.148 5.99,46.06 13.065,39Z" style="fill:url(#_Linear7);fill-rule:nonzero;"/>
+            <path d="M146.978,80.614C147.625,89.874 133.649,100.765 124.141,99.298C123.819,89.923 135.235,79.932 146.978,80.614Z" style="fill:url(#_Linear8);fill-rule:nonzero;"/>
+            <path d="M3,80.632C12.957,79.859 25.498,87.926 26.054,99.326C23.073,99.626 20.065,99.161 17.31,97.974C12.787,96.014 8.839,92.919 5.843,88.983C3.984,86.571 3.135,83.762 3,80.632Z" style="fill:url(#_Linear9);fill-rule:nonzero;"/>
+            <path d="M3.737,59.045C14.963,61.448 22.511,73.957 18.7,83.541C16.895,82.741 14.954,82.171 13.336,81.117C7.62,77.341 4.134,71.972 3.211,65.139C2.934,63.169 3.535,61.099 3.737,59.045Z" style="fill:url(#_Linear10);fill-rule:nonzero;"/>
+            <path d="M145.922,59.139C149.986,67.017 141.473,81.544 131.354,83.308C127.495,75.075 134.308,61.663 145.922,59.139Z" style="fill:url(#_Linear11);fill-rule:nonzero;"/>
+            <path d="M67.437,141C66.559,137.179 67.54,133.997 70.304,131.606C74.329,128.113 75.752,128.122 79.846,131.679C82.646,134.103 83.573,137.764 82.505,140.942C78.667,140.121 76.582,137.427 75.051,133.818C73.514,137.318 71.453,140.094 67.437,141Z" style="fill:url(#_Linear12);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,-0.841609,1.11582)">
+            <path d="M58.099,68.538C69.277,68.538 73.543,73.884 73.543,80.58C73.543,87.33 68.359,93.864 56.263,93.864C51.079,93.864 45.409,92.73 41.359,90.462L45.679,81.066C48.919,82.956 52.591,83.82 55.777,83.82C58.639,83.82 60.745,82.794 60.745,80.85C60.745,79.23 59.611,78.15 55.021,78.15L44.059,78.15L45.949,55.2L71.059,55.2L71.059,64.812L56.425,64.812L56.155,68.538L58.099,68.538ZM93.207,93.864C83.217,93.864 76.089,86.628 76.089,74.1C76.089,61.572 83.217,54.336 93.207,54.336C103.196,54.336 110.324,61.572 110.324,74.1C110.324,86.628 103.196,93.864 93.207,93.864ZM93.207,83.658C95.691,83.658 97.527,81.39 97.527,74.1C97.527,66.81 95.691,64.542 93.207,64.542C90.723,64.542 88.887,66.81 88.887,74.1C88.887,81.39 90.723,83.658 93.207,83.658Z" style="fill:rgb(22,51,95);fill-rule:nonzero;"/>
+        </g>
+        <g transform="matrix(1,0,0,1,0,-6.19835)">
+            <path d="M54.562,27.315L48.507,26.446L45.798,21.031C45.641,20.716 45.112,20.716 44.957,21.031L42.245,26.446L36.192,27.315C36.015,27.34 35.868,27.463 35.813,27.631C35.757,27.798 35.802,27.982 35.931,28.105L40.313,32.32L39.278,38.272C39.249,38.446 39.32,38.62 39.466,38.725C39.61,38.828 39.804,38.843 39.96,38.76L45.377,35.95L50.795,38.76C50.862,38.796 50.939,38.814 51.013,38.814C51.111,38.814 51.208,38.784 51.288,38.725C51.431,38.62 51.507,38.445 51.475,38.272L50.441,32.32L54.824,28.105C54.951,27.982 54.999,27.799 54.942,27.631C54.885,27.463 54.74,27.34 54.562,27.315Z" style="fill:rgb(22,81,168);fill-rule:nonzero;"/>
+            <path d="M87.415,17.994L79.465,16.853L75.907,9.742C75.7,9.328 75.006,9.328 74.799,9.742L71.242,16.853L63.291,17.994C63.058,18.027 62.865,18.189 62.791,18.409C62.72,18.628 62.779,18.871 62.948,19.031L68.703,24.567L67.344,32.382C67.304,32.611 67.399,32.842 67.588,32.977C67.78,33.115 68.033,33.133 68.239,33.025L75.352,29.334L82.467,33.025C82.555,33.071 82.656,33.094 82.755,33.094C82.882,33.094 83.011,33.056 83.115,32.977C83.305,32.841 83.402,32.61 83.36,32.382L82.004,24.566L87.759,19.03C87.926,18.87 87.988,18.628 87.915,18.408C87.841,18.189 87.649,18.027 87.415,17.994Z" style="fill:rgb(22,81,168);fill-rule:nonzero;"/>
+            <path d="M114.891,27.631C114.836,27.463 114.69,27.34 114.512,27.315L108.457,26.446L105.747,21.031C105.592,20.716 105.062,20.716 104.905,21.031L102.195,26.446L96.141,27.315C95.964,27.34 95.818,27.463 95.761,27.631C95.707,27.798 95.75,27.982 95.88,28.105L100.263,32.32L99.229,38.272C99.197,38.446 99.271,38.62 99.414,38.725C99.56,38.828 99.752,38.843 99.91,38.76L105.326,35.95L110.743,38.76C110.812,38.796 110.887,38.814 110.964,38.814C111.06,38.814 111.158,38.784 111.239,38.725C111.383,38.62 111.456,38.445 111.425,38.272L110.39,32.32L114.773,28.105C114.901,27.982 114.946,27.799 114.891,27.631Z" style="fill:rgb(22,81,168);fill-rule:nonzero;"/>
+        </g>
+    </g>
+    <defs>
+        <linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear7" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear8" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear9" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear10" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear11" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+        <linearGradient id="_Linear12" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.06734e-15,-131.75,131.75,8.06734e-15,74.9931,147.638)"><stop offset="0" style="stop-color:rgb(242,113,39);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,187,49);stop-opacity:1"/></linearGradient>
+    </defs>
+</svg>

+ 7 - 5
package.json

@@ -4,8 +4,8 @@
   "main": "node_modules/expo/AppEntry.js",
   "scripts": {
     "start": "expo start --dev-client",
-    "android": "expo start --android",
-    "ios": "expo start --ios",
+    "android": "expo run:android",
+    "ios": "expo run:ios",
     "build:dev": "eas build --profile development",
     "build:prod": "ENV=production eas build --platform all --profile production",
     "publish:prod": "ENV=production eas update --branch production",
@@ -22,7 +22,7 @@
     "@react-navigation/native": "^6.1.9",
     "@react-navigation/native-stack": "^6.9.17",
     "@react-navigation/stack": "^6.3.20",
-    "@sentry/react-native": "~5.22.0",
+    "@sentry/react-native": "~5.33.2",
     "@shopify/flash-list": "1.6.4",
     "@tanstack/react-query": "latest",
     "@turf/turf": "^6.5.0",
@@ -39,12 +39,13 @@
     "expo-dev-client": "~4.0.26",
     "expo-file-system": "~17.0.1",
     "expo-font": "~12.0.10",
-    "expo-image": "~1.12.15",
+    "expo-image": "~1.13.0",
     "expo-image-picker": "~15.0.7",
     "expo-location": "~17.0.1",
     "expo-notifications": "~0.28.16",
     "expo-splash-screen": "~0.27.5",
     "expo-sqlite": "^14.0.6",
+    "expo-status-bar": "~1.12.1",
     "expo-updates": "~0.25.24",
     "formik": "^2.4.5",
     "moment": "^2.29.4",
@@ -62,8 +63,8 @@
     "react-native-gesture-handler": "~2.16.1",
     "react-native-get-random-values": "^1.11.0",
     "react-native-gifted-chat": "^2.6.3",
-    "react-native-google-places-autocomplete": "^2.5.6",
     "react-native-haptic-feedback": "^2.3.2",
+    "react-native-google-places-autocomplete": "^2.5.7",
     "react-native-image-viewing": "^0.2.2",
     "react-native-keyboard-aware-scroll-view": "^0.9.5",
     "react-native-linear-gradient": "^2.8.3",
@@ -86,6 +87,7 @@
     "react-native-video": "^6.5.0",
     "react-native-view-shot": "^3.7.0",
     "react-native-walkthrough-tooltip": "^1.6.0",
+    "uuid": "^10.0.0",
     "yup": "^1.3.3",
     "zustand": "^4.4.7"
   },

+ 26 - 9
src/components/Button/index.tsx

@@ -1,5 +1,5 @@
 import React, { CSSProperties, FC, ReactNode } from 'react';
-import { Text, TouchableOpacity } from 'react-native';
+import { Text, TouchableOpacity, ActivityIndicator } from 'react-native';
 
 import { styles } from './styles';
 import { ButtonVariants } from '../../types/components';
@@ -13,7 +13,14 @@ type Props = {
   disabled?: boolean;
 };
 
-export const Button: FC<Props> = ({ children, variant, onPress, containerStyles, textStyles, disabled }) => {
+export const Button: FC<Props> = ({
+  children,
+  variant,
+  onPress,
+  containerStyles,
+  textStyles,
+  disabled
+}) => {
   return (
     <>
       {variant === ButtonVariants.OPACITY ? (
@@ -30,11 +37,12 @@ export const Button: FC<Props> = ({ children, variant, onPress, containerStyles,
           children={children}
           containerStyles={containerStyles}
           textStyles={textStyles}
+          disabled={disabled}
         />
       ) : variant == ButtonVariants.TEXT ? (
-        <TextButton children={children} onPress={onPress} />
+        <TextButton children={children} onPress={onPress} disabled={disabled} />
       ) : (
-        <FillButton onPress={onPress} children={children} />
+        <FillButton onPress={onPress} children={children} disabled={disabled} />
       )}
     </>
   );
@@ -68,15 +76,24 @@ const FillButton: FC<VariantProps> = ({
   onPress,
   children,
   containerStyles = {},
-  textStyles = {}
+  textStyles = {},
+  disabled = false
 }) => (
-  <TouchableOpacity style={[styles.button, styles.fillButton, containerStyles]} onPress={onPress}>
-    <Text style={[styles.text, styles.fillText, textStyles]}>{children}</Text>
+  <TouchableOpacity
+    style={[styles.button, styles.fillButton, containerStyles]}
+    onPress={onPress}
+    disabled={disabled}
+  >
+    {disabled ? (
+      <ActivityIndicator animating={disabled} color={'#fff'} />
+    ) : (
+      <Text style={[styles.text, styles.fillText, textStyles]}>{children}</Text>
+    )}
   </TouchableOpacity>
 );
 
-const TextButton: FC<VariantProps> = ({ onPress, children }) => (
-  <TouchableOpacity style={styles.button} onPress={onPress}>
+const TextButton: FC<VariantProps> = ({ onPress, children, disabled = false }) => (
+  <TouchableOpacity style={styles.button} onPress={onPress} disabled={disabled}>
     <Text style={[styles.text, styles.textButtonText]}>{children}</Text>
   </TouchableOpacity>
 );

+ 4 - 0
src/modules/api/ranking/ranking-api.tsx

@@ -25,6 +25,10 @@ export interface PostGetRanking extends ResponseType {
     flag2: string;
     badge_1281: number;
     badge_un: number;
+    badge_un_50: 0 | 1;
+    badge_un_100: 0 | 1;
+    badge_un_150: 0 | 1;
+    badge_un_193: 0 | 1;
     badge_supreme: number;
     badge_tbt: number;
     badge_offline: number;

+ 4 - 0
src/modules/api/regions/regions-api.tsx

@@ -79,6 +79,10 @@ export interface User {
   flag2: string | null;
   badge_1281: 0 | 1;
   badge_un: 0 | 1;
+  badge_un_50: 0 | 1;
+  badge_un_100: 0 | 1;
+  badge_un_150: 0 | 1;
+  badge_un_193: 0 | 1;
   badge_supreme: 0 | 1;
   badge_tbt: 0 | 1;
   badge_offline: 0 | 1;

+ 4 - 0
src/modules/api/series/series-api.tsx

@@ -96,6 +96,10 @@ export interface RankingData {
     authenticated: 0 | 1;
     badge_nm: 0 | 1;
     badge_un: 0 | 1;
+    badge_un_50: 0 | 1;
+    badge_un_100: 0 | 1;
+    badge_un_150: 0 | 1;
+    badge_un_193: 0 | 1;
     flag1: string;
     flag2: string | null;
     rip: boolean;

+ 4 - 0
src/modules/api/user/user-api.tsx

@@ -245,6 +245,10 @@ export interface PostGetProfileDataReturn extends ResponseType {
       badge_nm: number | null;
       badge_tbt: 0 | 1;
       badge_un: 0 | 1;
+      badge_un_50: 0 | 1;
+      badge_un_100: 0 | 1;
+      badge_un_150: 0 | 1;
+      badge_un_193: 0 | 1;
       badges: number;
       bio: string;
       email: string;

+ 3 - 3
src/screens/InAppScreens/MapScreen/RegionViewScreen/index.tsx

@@ -44,7 +44,7 @@ const RegionViewScreen: FC<Props> = ({ navigation, route }) => {
   const regionId = route.params?.regionId;
   const type = route.params?.type;
   const disabled = route.params?.disabled;
-  const token = storage.get('token', StoreType.STRING) as string;
+  const token = (storage.get('token', StoreType.STRING) as string) ?? null;
   const [isLoading, setIsLoading] = useState(true);
   const [isModalVisible, setModalVisible] = useState(false);
   const [currentImageIndex, setCurrentImageIndex] = useState(0);
@@ -457,7 +457,7 @@ const RegionViewScreen: FC<Props> = ({ navigation, route }) => {
           <View style={styles.divider} />
 
           <View style={styles.stats}>
-            {data?.data.users_from_region_count ?? 0 > 0 ? (
+            {(data?.data.users_from_region_count ?? 0 > 0) ? (
               <TouchableOpacity
                 style={[styles.statItem, { justifyContent: 'flex-start' }]}
                 onPress={() =>
@@ -505,7 +505,7 @@ const RegionViewScreen: FC<Props> = ({ navigation, route }) => {
               <View style={[styles.statItem, { justifyContent: 'flex-start' }]} />
             )}
 
-            {data?.data.users_who_visited_region_count ?? 0 > 0 ? (
+            {(data?.data.users_who_visited_region_count ?? 0 > 0) ? (
               <TouchableOpacity
                 style={[styles.statItem, { justifyContent: 'flex-end' }]}
                 onPress={() =>

+ 12 - 0
src/screens/InAppScreens/MapScreen/UsersListScreen/Profile/index.tsx

@@ -8,6 +8,9 @@ import { AvatarWithInitials, WarningModal } from 'src/components';
 
 import TickIcon from 'assets/icons/tick.svg';
 import UNIcon from 'assets/icons/un_icon.svg';
+import UN50Icon from 'assets/icons/un-50.svg';
+import UN100Icon from 'assets/icons/un-100.svg';
+import UN150Icon from 'assets/icons/un-150.svg';
 import NMIcon from 'assets/icons/nm_icon.svg';
 
 import { useConnection } from 'src/contexts/ConnectionContext';
@@ -35,6 +38,9 @@ type Props = {
   badge_tbt?: number;
   badge_1281: number;
   badge_un: number;
+  badge_un_50: number;
+  badge_un_100: number;
+  badge_un_150: number;
   auth: number;
   userId: number;
 };
@@ -53,6 +59,9 @@ export const Profile: FC<Props> = ({
   badge_tbt,
   badge_1281,
   badge_un,
+  badge_un_50,
+  badge_un_100,
+  badge_un_150,
   auth,
   userId
 }) => {
@@ -124,6 +133,9 @@ export const Profile: FC<Props> = ({
                   {auth ? <TickIcon /> : null}
                   {badge_un ? <UNIcon /> : null}
                   {badge_1281 ? <NMIcon /> : null}
+                  {badge_un_150 ? <UN150Icon /> : null}
+                  {badge_un_100 ? <UN100Icon /> : null}
+                  {badge_un_50 ? <UN50Icon /> : null}
                 </View>
               </View>
             </View>

+ 3 - 0
src/screens/InAppScreens/MapScreen/UsersListScreen/index.tsx

@@ -359,6 +359,9 @@ const UsersListScreen: FC<Props> = ({ navigation, route }) => {
             badge_tbt={item.badge_tbt}
             badge_1281={item.badge_1281}
             badge_un={item.badge_un}
+            badge_un_50={item.badge_un_50}
+            badge_un_100={item.badge_un_100}
+            badge_un_150={item.badge_un_150}
             auth={item.auth}
           />
         )}

+ 13 - 2
src/screens/InAppScreens/MapScreen/index.tsx

@@ -215,10 +215,10 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
   }, [dareData]);
 
   useEffect(() => {
-    if (route.params?.id && route.params?.type && dareData) {
+    if (route.params?.id && route.params?.type && dareData && db1 && db2 && db3) {
       handleFindRegion(route.params?.id, route.params?.type);
     }
-  }, [route, dareData]);
+  }, [route, dareData, db1, db2, db3]);
 
   useEffect(() => {
     if (userInfo) {
@@ -493,6 +493,8 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
               refreshDatabases();
             });
 
+          setUserData({ type: 'countries', id: +countryId });
+
           token &&
             (await mutateCountriesData(
               { id: +countryId, token },
@@ -553,6 +555,7 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
       zoomLevel < 7 && mapRef.current?.animateToRegion(region, 1000);
 
       if (tableName === 'regions') {
+        setUserData({ type: 'nm', id: +id });
         token &&
           (await mutateUserData(
             { region_id: +id, token: String(token) },
@@ -575,6 +578,7 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
             }
           ));
       } else {
+        setUserData({ type: 'dare', id: +id });
         token &&
           (await mutateUserDataDare(
             { dare_id: +id, token: String(token) },
@@ -593,6 +597,9 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
 
   const handleFindRegion = async (id: number, type: string) => {
     cancelTokenRef.current = true;
+    if (!db1 || !db2 || !db3) {
+      return;
+    }
     const db = type === 'regions' ? db1 : type === 'countries' ? db3 : db2;
 
     if (type === 'countries') {
@@ -609,6 +616,8 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
           refreshDatabases();
         });
 
+      setUserData({ type: 'countries', id: +id });
+
       token &&
         (await mutateCountriesData(
           { id: +id, token },
@@ -663,6 +672,7 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
       mapRef.current?.animateToRegion(region, 1000);
 
       if (type === 'regions') {
+        setUserData({ type: 'nm', id: +id });
         token &&
           (await mutateUserData(
             { region_id: +id, token: String(token) },
@@ -686,6 +696,7 @@ const MapScreen: React.FC<MapScreenProps> = ({ navigation, route }) => {
             }
           ));
       } else {
+        setUserData({ type: 'dare', id: +id });
         token &&
           (await mutateUserDataDare(
             { dare_id: +id, token: String(token) },

+ 12 - 0
src/screens/InAppScreens/ProfileScreen/MyFriendsScreen/FriendsProfile/index.tsx

@@ -15,6 +15,9 @@ import { getFontSize } from 'src/utils';
 
 import TickIcon from 'assets/icons/tick.svg';
 import UNIcon from 'assets/icons/un_icon.svg';
+import UN50Icon from 'assets/icons/un-50.svg';
+import UN100Icon from 'assets/icons/un-100.svg';
+import UN150Icon from 'assets/icons/un-150.svg';
 import NMIcon from 'assets/icons/nm_icon.svg';
 import { styles } from '../../Components/styles';
 
@@ -33,6 +36,9 @@ type Props = {
   badge_tbt?: number;
   badge_1281: number;
   badge_un: number;
+  badge_un_50: number;
+  badge_un_100: number;
+  badge_un_150: number;
   auth: number;
   userId: number;
   type: 'friends' | 'sent' | 'received';
@@ -53,6 +59,9 @@ export const FriendsProfile: FC<Props> = ({
   active_score,
   badge_1281,
   badge_un,
+  badge_un_50,
+  badge_un_100,
+  badge_un_150,
   auth,
   userId,
   type,
@@ -237,6 +246,9 @@ export const FriendsProfile: FC<Props> = ({
                   {auth ? <TickIcon /> : null}
                   {badge_un ? <UNIcon /> : null}
                   {badge_1281 ? <NMIcon /> : null}
+                  {badge_un_150 ? <UN150Icon /> : null}
+                  {badge_un_100 ? <UN100Icon /> : null}
+                  {badge_un_50 ? <UN50Icon /> : null}
                 </View>
               </View>
             </View>

+ 3 - 0
src/screens/InAppScreens/ProfileScreen/MyFriendsScreen/index.tsx

@@ -266,6 +266,9 @@ const MyFriendsScreen: FC<Props> = ({ navigation }) => {
                   badge_tbt={item.badge_tbt}
                   badge_1281={item.badge_1281}
                   badge_un={item.badge_un}
+                  badge_un_50={item.badge_un_50}
+                  badge_un_100={item.badge_un_100}
+                  badge_un_150={item.badge_un_150}
                   auth={item.auth}
                   type={route.key}
                   updateFriendStatus={handleUpdateFriendStatus}

+ 6 - 0
src/screens/InAppScreens/ProfileScreen/ShareScreen/index.tsx

@@ -12,6 +12,9 @@ import Logo from 'assets/images/logo.svg';
 import TickIcon from 'assets/icons/tick.svg';
 import UNIcon from 'assets/icons/un_icon.svg';
 import NMIcon from 'assets/icons/nm_icon.svg';
+import UN50Icon from 'assets/icons/un-50.svg';
+import UN100Icon from 'assets/icons/un-100.svg';
+import UN150Icon from 'assets/icons/un-150.svg';
 import { styles } from './styles';
 
 const PreviewScreen = ({ route }: { route: any }) => {
@@ -90,6 +93,9 @@ const PreviewScreen = ({ route }: { route: any }) => {
                       {data.auth ? <TickIcon /> : null}
                       {data.badge_un ? <UNIcon /> : null}
                       {data.badge_nm ? <NMIcon /> : null}
+                      {data.badge_un_150 ? <UN150Icon /> : null}
+                      {data.badge_un_100 ? <UN100Icon /> : null}
+                      {data.badge_un_50 ? <UN50Icon /> : null}
                     </View>
                   </View>
                 </View>

+ 10 - 0
src/screens/InAppScreens/ProfileScreen/index.tsx

@@ -30,6 +30,9 @@ import TBTIcon from '../../../../assets/icons/tbt.svg';
 import TickIcon from '../../../../assets/icons/tick.svg';
 import UNIcon from '../../../../assets/icons/un_icon.svg';
 import NMIcon from '../../../../assets/icons/nm_icon.svg';
+import UN50Icon from '../../../../assets/icons/un-50.svg';
+import UN100Icon from '../../../../assets/icons/un-100.svg';
+import UN150Icon from '../../../../assets/icons/un-150.svg';
 import ChevronIcon from '../../../../assets/icons/chevron-left.svg';
 import ShareIcon from '../../../../assets/icons/share.svg';
 import UnverifiedIcon from '../../../../assets/icons/unverified.svg';
@@ -258,6 +261,10 @@ const ProfileScreen: FC<Props> = ({ navigation, route }) => {
                   {data.user_data.auth ? <TickIcon /> : null}
                   {data.user_data.badge_un ? <UNIcon /> : null}
                   {data.user_data.badge_nm ? <NMIcon /> : null}
+                  {data.user_data.badge_un_150 ? <UN150Icon /> : null}
+                  {data.user_data.badge_un_100 ? <UN100Icon /> : null}
+                  {data.user_data.badge_un_50 ? <UN50Icon /> : null}
+
                   {data.user_data.badge_ghost ? (
                     <Tooltip
                       isVisible={tooltipVisible}
@@ -292,6 +299,9 @@ const ProfileScreen: FC<Props> = ({ navigation, route }) => {
                           auth: data.user_data.auth,
                           badge_un: data.user_data.badge_un,
                           badge_nm: data.user_data.badge_nm,
+                          badge_un_50: data.user_data.badge_un_50,
+                          badge_un_100: data.user_data.badge_un_100,
+                          badge_un_150: data.user_data.badge_un_150,
                           scores: data.scores
                         }
                       })

+ 12 - 0
src/screens/InAppScreens/TravellersScreen/Components/Profile.tsx

@@ -18,6 +18,9 @@ import { adaptiveStyle, Colors } from '../../../../theme';
 import TickIcon from '../../../../../assets/icons/TickIcon';
 import UNIcon from '../../../../../assets/icons/UNIcon';
 import NMIcon from '../../../../../assets/icons/NMIcon';
+import UN50Icon from '../../../../../assets/icons/un-50.svg';
+import UN100Icon from '../../../../../assets/icons/un-100.svg';
+import UN150Icon from '../../../../../assets/icons/un-150.svg';
 import TBTIcon from '../../../../../assets/icons/tbt.svg';
 import MonumentIcon from '../../../../../assets/icons/monument.svg';
 
@@ -39,6 +42,9 @@ type Props = {
   badge_tbt?: number;
   badge_1281: number;
   badge_un: number;
+  badge_un_50: number;
+  badge_un_100: number;
+  badge_un_150: number;
   auth: number;
   userId: number;
 };
@@ -58,6 +64,9 @@ export const Profile: FC<Props> = ({
   badge_tbt,
   badge_1281,
   badge_un,
+  badge_un_50,
+  badge_un_100,
+  badge_un_150,
   auth,
   userId
 }) => {
@@ -278,6 +287,9 @@ export const Profile: FC<Props> = ({
                     {auth ? <TickIcon isBlackAndWhite={index === -1} /> : null}
                     {badge_un ? <UNIcon isBlackAndWhite={index === -1} /> : null}
                     {badge_1281 ? <NMIcon isBlackAndWhite={index === -1} /> : null}
+                    {badge_un_150 ? <UN150Icon /> : null}
+                    {badge_un_100 ? <UN100Icon /> : null}
+                    {badge_un_50 ? <UN50Icon /> : null}
                   </View>
                 </View>
               </View>

+ 6 - 0
src/screens/InAppScreens/TravellersScreen/Components/SeriesRankingItem.tsx

@@ -15,6 +15,9 @@ import formatNumber from '../../TravelsScreen/utils/formatNumber';
 import TickIcon from 'assets/icons/tick.svg';
 import UNIcon from 'assets/icons/un_icon.svg';
 import NMIcon from 'assets/icons/nm_icon.svg';
+import UN50Icon from 'assets/icons/un-50.svg';
+import UN100Icon from 'assets/icons/un-100.svg';
+import UN150Icon from 'assets/icons/un-150.svg';
 import ArrowIcon from 'assets/icons/arrow-bold.svg';
 
 const SeriesRankingItem = React.memo(
@@ -93,6 +96,9 @@ const SeriesRankingItem = React.memo(
                   {item.authenticated === 1 ? <TickIcon /> : null}
                   {item.badge_un === 1 ? <UNIcon /> : null}
                   {item.badge_nm === 1 ? <NMIcon /> : null}
+                  {item.badge_un_150 ? <UN150Icon /> : null}
+                  {item.badge_un_100 ? <UN100Icon /> : null}
+                  {item.badge_un_50 ? <UN50Icon /> : null}
                 </View>
               </View>
 

+ 3 - 0
src/screens/InAppScreens/TravellersScreen/InHistoryScreen/index.tsx

@@ -68,6 +68,9 @@ const InHistoryScreen = () => {
             badge_tbt={item.badge_tbt}
             badge_1281={item.badge_1281}
             badge_un={item.badge_un}
+            badge_un_50={item.badge_un_50}
+            badge_un_100={item.badge_un_100}
+            badge_un_150={item.badge_un_150}
             auth={item.auth}
           />
         )}

+ 3 - 0
src/screens/InAppScreens/TravellersScreen/InMemoriamScreen/index.tsx

@@ -93,6 +93,9 @@ const InMemoriamScreen = () => {
             badge_tbt={item.badge_tbt}
             badge_1281={item.badge_1281}
             badge_un={item.badge_un}
+            badge_un_50={item.badge_un_50}
+            badge_un_100={item.badge_un_100}
+            badge_un_150={item.badge_un_150}
             auth={item.auth}
           />
         )}

+ 3 - 0
src/screens/InAppScreens/TravellersScreen/LPIRankingScreen/index.tsx

@@ -92,6 +92,9 @@ const LPIRankingScreen = () => {
             badge_tbt={item.badge_tbt}
             badge_1281={item.badge_1281}
             badge_un={item.badge_un}
+            badge_un_50={item.badge_un_50}
+            badge_un_100={item.badge_un_100}
+            badge_un_150={item.badge_un_150}
             auth={item.auth}
           />
         )}

+ 3 - 0
src/screens/InAppScreens/TravellersScreen/MasterRankingScreen/index.tsx

@@ -160,6 +160,9 @@ const MasterRankingScreen = () => {
             badge_tbt={item.badge_tbt}
             badge_1281={item.badge_1281}
             badge_un={item.badge_un}
+            badge_un_50={item.badge_un_50}
+            badge_un_100={item.badge_un_100}
+            badge_un_150={item.badge_un_150}
             auth={item.auth}
           />
         )}

+ 4 - 0
src/screens/InAppScreens/TravellersScreen/index.tsx

@@ -139,6 +139,10 @@ export interface Ranking {
   flag2: string | null;
   badge_1281: number;
   badge_un: number;
+  badge_un_50: number;
+  badge_un_100: number;
+  badge_un_150: number;
+  badge_un_193: number;
   badge_supreme: number;
   badge_tbt: number;
   badge_offline: number;

+ 4 - 0
src/screens/InAppScreens/TravellersScreen/utils/types.ts

@@ -48,6 +48,10 @@ export interface SeriesRanking {
   authenticated: 0 | 1;
   badge_nm: 0 | 1;
   badge_un: 0 | 1;
+  badge_un_50: 0 | 1;
+  badge_un_100: 0 | 1;
+  badge_un_150: 0 | 1;
+  badge_un_193: 0 | 1;
   flag1: string;
   flag2: string | null;
   rip: boolean;

+ 1 - 0
src/screens/InAppScreens/TravelsScreen/SuggestSeriesScreen/index.tsx

@@ -12,6 +12,7 @@ import {
 import MapView, { Marker } from 'react-native-maps';
 import ReactModal from 'react-native-modal';
 import axios from 'axios';
+import "react-native-get-random-values";
 import {
   GooglePlaceData,
   GooglePlaceDetail,

+ 23 - 6
src/screens/LoginScreen/index.tsx

@@ -36,6 +36,7 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
     data?.uid ? +data.uid : 0,
     data?.token ? true : false
   );
+  const [isSubmitting, setIsSubmitting] = useState(false);
 
   const updateLocalData = async (token: string) => {
     await fetchAndSaveStatistics(token);
@@ -63,6 +64,7 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
         homebase_flag: profileData?.data?.user_data.flag1
       };
       storage.set('currentUserData', JSON.stringify(userInfo));
+      setIsSubmitting(false);
 
       isFirstLaunch
         ? dispatch(
@@ -88,12 +90,25 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
           login: '',
           pass: ''
         }}
-        onSubmit={({ login, pass }) => {
+        onSubmit={async ({ login, pass }) => {
+          setIsSubmitting(true);
           if (netInfo?.isInternetReachable || netInfo?.isConnected) {
-            userLogin({
-              login,
-              pass
-            });
+            await userLogin(
+              {
+                login,
+                pass
+              },
+              {
+                onSuccess: (res) => {
+                  if (res && !res?.token) {
+                    setIsSubmitting(false);
+                  }
+                },
+                onError: () => {
+                  setIsSubmitting(false);
+                }
+              }
+            );
           } else {
             setIsWarningModalVisible(true);
           }
@@ -132,7 +147,9 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
               >
                 Forgot password
               </Button>
-              <Button onPress={props.handleSubmit}>Login</Button>
+              <Button onPress={props.handleSubmit} disabled={isSubmitting}>
+                Login
+              </Button>
             </View>
           </>
         )}

+ 13 - 3
src/screens/RegisterScreen/EditAccount/index.tsx

@@ -40,6 +40,7 @@ const EditAccount = () => {
     data?.token ? true : false
   );
   const [isLoading, setIsLoading] = useState(true);
+  const [isSubmitting, setIsSubmitting] = useState(false);
 
   useFocusEffect(
     useCallback(() => {
@@ -60,6 +61,7 @@ const EditAccount = () => {
         homebase_flag: profileData?.data?.user_data.flag1
       };
       storage.set('currentUserData', JSON.stringify(userInfo));
+      setIsSubmitting(false);
 
       dispatch(
         CommonActions.reset({
@@ -99,7 +101,8 @@ const EditAccount = () => {
                 homebase2: undefined
               }}
               validationSchema={SignUpSchema}
-              onSubmit={(values) => {
+              onSubmit={async (values) => {
+                setIsSubmitting(true);
                 const data = {
                   user: {
                     ...user,
@@ -122,13 +125,18 @@ const EditAccount = () => {
                       }
                 };
 
-                userRegister(data, {
+                await userRegister(data, {
                   onSuccess: (data) => {
                     if (data && data.token) {
                       storage.set('token', data.token);
                       storage.set('uid', data.uid.toString());
                       updateLocalData(data.token);
+                    } else {
+                      setIsSubmitting(false);
                     }
+                  },
+                  onError: () => {
+                    setIsSubmitting(false);
                   }
                 });
               }}
@@ -180,7 +188,9 @@ const EditAccount = () => {
                     selectedObject={(data) => props.setFieldValue('homebase2', data.id)}
                   />
                   <View style={{ marginTop: 10 }}>
-                    <Button onPress={props.handleSubmit}>Sign up</Button>
+                    <Button onPress={props.handleSubmit} disabled={isSubmitting}>
+                      Sign up
+                    </Button>
                   </View>
                 </View>
               )}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff