From 3aa2fd76075e5194aa5a178e698603e29ac2d8f0 Mon Sep 17 00:00:00 2001 From: Derick M <58572875+TurtIeSocks@users.noreply.github.com> Date: Sun, 4 Dec 2022 16:52:09 -0500 Subject: [PATCH 01/29] latest uicons - Support for power up levels - Support for display_type - Version bump --- package.json | 2 +- server/src/graphql/scannerTypes.js | 1 + server/src/models/Pokestop.js | 8 +++++++- src/components/markers/pokestop.jsx | 6 ++++-- src/services/Icons.js | 15 ++++++++++----- src/services/queries/pokestop.js | 1 + 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 9d6462d75..48a8c7e0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "reactmap", - "version": "1.7.2", + "version": "1.7.3", "description": "React based frontend map.", "main": "ReactMap.js", "author": "TurtIeSocks <58572875+TurtIeSocks@users.noreply.github.com>", diff --git a/server/src/graphql/scannerTypes.js b/server/src/graphql/scannerTypes.js index 500fa3764..149e073ab 100644 --- a/server/src/graphql/scannerTypes.js +++ b/server/src/graphql/scannerTypes.js @@ -118,6 +118,7 @@ module.exports = gql` power_up_level: Int power_up_points: Int power_up_end_timestamp: Int + display_type: Int } type Pokemon { diff --git a/server/src/models/Pokestop.js b/server/src/models/Pokestop.js index aa7b37524..03f6e651e 100644 --- a/server/src/models/Pokestop.js +++ b/server/src/models/Pokestop.js @@ -589,11 +589,17 @@ module.exports = class Pokestop extends Model { filtered.invasions = pokestop.invasions.filter( (invasion) => !invasion.grunt_type, ) + if (filtered.invasions.length) { + filtered.display_type = Math.max( + ...filtered.invasions.map((inv) => inv.display_type), + ) + } } } if ( perms.invasions && - (filters.onlyAllPokestops || filters.onlyInvasions) + ((filters.onlyAllPokestops && filters.onlyInvasions) || + filters.onlyInvasions) ) { filtered.invasions = [ ...(Array.isArray(filtered.invasions) ? filtered.invasions : []), diff --git a/src/components/markers/pokestop.jsx b/src/components/markers/pokestop.jsx index beaf215fe..37c32cba7 100644 --- a/src/components/markers/pokestop.jsx +++ b/src/components/markers/pokestop.jsx @@ -11,7 +11,7 @@ export default function stopMarker( Icons, userSettings, ) { - const { lure_id, ar_scan_eligible } = pokestop + const { lure_id, ar_scan_eligible, power_up_level, display_type } = pokestop const { invasion: invasionMod, pokestop: pokestopMod, @@ -24,7 +24,9 @@ export default function stopMarker( hasLure ? lure_id : 0, hasInvasion, hasQuest && userSettings.hasQuestIndicator, - userSettings.showArBadge && ar_scan_eligible, + ar_scan_eligible && userSettings.showArBadge, + power_up_level, + display_type || '', ) let baseSize = Icons.getSize('pokestop', filters.filter[filterId]) let popupX = 7 + pokestopMod.popupX diff --git a/src/services/Icons.js b/src/services/Icons.js index c1c3af15b..82997c483 100644 --- a/src/services/Icons.js +++ b/src/services/Icons.js @@ -23,7 +23,6 @@ export default class UIcons { build(icons) { const baseUrl = 'https://raw.githubusercontent.com/WatWowMap/wwm-uicons/main/' - icons.forEach((icon) => { try { const { data } = icon @@ -207,17 +206,23 @@ export default class UIcons { invasionActive = false, questActive = false, ar = false, + power = 0, + display = '', ) { const baseUrl = `${this[this.selected.pokestop].path}/pokestop` - const invasionSuffixes = invasionActive ? ['_i', ''] : [''] + const invasionSuffixes = + invasionActive || display ? [`_i${display}`, ''] : [''] const questSuffixes = questActive ? ['_q', ''] : [''] const arSuffixes = ar ? ['_ar', ''] : [''] + const powerUpSuffixes = power ? [`_p${power}`, ''] : [''] for (let i = 0; i < invasionSuffixes.length; i += 1) { for (let q = 0; q < questSuffixes.length; q += 1) { for (let a = 0; a < arSuffixes.length; a += 1) { - const result = `${lureId}${questSuffixes[q]}${invasionSuffixes[i]}${arSuffixes[a]}.png` - if (this[this.selected.pokestop].pokestop.has(result)) { - return `${baseUrl}/${result}` + for (let p = 0; p < powerUpSuffixes.length; p += 1) { + const result = `${lureId}${invasionSuffixes[i]}${questSuffixes[q]}${arSuffixes[a]}${powerUpSuffixes[p]}.png` + if (this[this.selected.pokestop].pokestop.has(result)) { + return `${baseUrl}/${result}` + } } } } diff --git a/src/services/queries/pokestop.js b/src/services/queries/pokestop.js index 41483c174..76afe06b8 100644 --- a/src/services/queries/pokestop.js +++ b/src/services/queries/pokestop.js @@ -13,6 +13,7 @@ const core = gql` power_up_level power_up_points power_up_end_timestamp + display_type } ` From 6849cb8d59a0fecef3257412672b955c7e41705c Mon Sep 17 00:00:00 2001 From: Wheel Date: Tue, 6 Dec 2022 07:05:58 -0500 Subject: [PATCH 02/29] Dirty fix on DiscordClient.js There are more elegant ways to fix this but its a fix. --- server/src/services/DiscordClient.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/src/services/DiscordClient.js b/server/src/services/DiscordClient.js index 2035d8100..3b700d94e 100644 --- a/server/src/services/DiscordClient.js +++ b/server/src/services/DiscordClient.js @@ -127,8 +127,11 @@ module.exports = class DiscordMapClient { if (perms.areaRestrictions.length) { perms.areaRestrictions = [...new Set(perms.areaRestrictions)] } - if (perms.webhooks.length) { - perms.webhooks = [...new Set(perms.webhooks)] + if (perms.areaRestrictions.length < 15) { + perms.areaRestrictions = [...new Set(perms.areaRestrictions)] + } else { + console.warn('[DISCORD] Area list too long, number of areas:', perms.areaRestrictions.length, 'List:', perms.areaRestrictions) + perms.areaRestrictions = ["More than 15 areas, see log for full list"] } } catch (e) { console.warn('[DISCORD] Failed to get perms for user', user.id, e.message) From 703e51e99b314bc1c77d063a5c1b0ecdf7cea632 Mon Sep 17 00:00:00 2001 From: Wheel Date: Tue, 6 Dec 2022 13:00:12 -0500 Subject: [PATCH 03/29] Revert DiscordClient.js --- server/src/services/DiscordClient.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/server/src/services/DiscordClient.js b/server/src/services/DiscordClient.js index 3b700d94e..c2d5e8faa 100644 --- a/server/src/services/DiscordClient.js +++ b/server/src/services/DiscordClient.js @@ -127,12 +127,8 @@ module.exports = class DiscordMapClient { if (perms.areaRestrictions.length) { perms.areaRestrictions = [...new Set(perms.areaRestrictions)] } - if (perms.areaRestrictions.length < 15) { - perms.areaRestrictions = [...new Set(perms.areaRestrictions)] - } else { - console.warn('[DISCORD] Area list too long, number of areas:', perms.areaRestrictions.length, 'List:', perms.areaRestrictions) - perms.areaRestrictions = ["More than 15 areas, see log for full list"] - } + if (perms.webhooks.length) { + perms.webhooks = [...new Set(perms.webhooks)] } catch (e) { console.warn('[DISCORD] Failed to get perms for user', user.id, e.message) } From 01510388f175f87f73fbbc2cf41e6dc717b3780c Mon Sep 17 00:00:00 2001 From: Wheel Date: Tue, 6 Dec 2022 13:00:58 -0500 Subject: [PATCH 04/29] Update logUserAuth.js Still dirty but doesnt break other stuff --- server/src/services/logUserAuth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/services/logUserAuth.js b/server/src/services/logUserAuth.js index d3921e639..20866f31c 100644 --- a/server/src/services/logUserAuth.js +++ b/server/src/services/logUserAuth.js @@ -121,7 +121,7 @@ module.exports = async function getAuthInfo(req, user, strategy) { ], timestamp: new Date(), } - if (user.perms.areaRestrictions.length) { + if (user.perms.areaRestrictions.length > 15) { embed.fields.push({ name: 'Area Restrictions', value: user.perms.areaRestrictions.map((str) => capCamel(str)).join('\n'), From 74fe8a760e5a7cdaa41717dfcd0e2f39de0513b2 Mon Sep 17 00:00:00 2001 From: Wheel Date: Tue, 6 Dec 2022 13:01:46 -0500 Subject: [PATCH 05/29] Update DiscordClient.js --- server/src/services/DiscordClient.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/services/DiscordClient.js b/server/src/services/DiscordClient.js index c2d5e8faa..2035d8100 100644 --- a/server/src/services/DiscordClient.js +++ b/server/src/services/DiscordClient.js @@ -129,6 +129,7 @@ module.exports = class DiscordMapClient { } if (perms.webhooks.length) { perms.webhooks = [...new Set(perms.webhooks)] + } } catch (e) { console.warn('[DISCORD] Failed to get perms for user', user.id, e.message) } From aba682208ad33a684b65f0fae20c5afd02b8ada2 Mon Sep 17 00:00:00 2001 From: Wheel Date: Tue, 6 Dec 2022 13:34:49 -0500 Subject: [PATCH 06/29] Update logUserAuth.js --- server/src/services/logUserAuth.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server/src/services/logUserAuth.js b/server/src/services/logUserAuth.js index 20866f31c..90f2d31f4 100644 --- a/server/src/services/logUserAuth.js +++ b/server/src/services/logUserAuth.js @@ -121,10 +121,17 @@ module.exports = async function getAuthInfo(req, user, strategy) { ], timestamp: new Date(), } - if (user.perms.areaRestrictions.length > 15) { + if (user.perms.areaRestrictions.length) { + const trimmed = user.perms.areaRestrictions + .filter((_f, i) => i < 15) + .map((f) => capCamel(f)) + .join('\n') embed.fields.push({ - name: 'Area Restrictions', - value: user.perms.areaRestrictions.map((str) => capCamel(str)).join('\n'), + name: `(${user.perms.areaRestrictions.length}) Area Restrictions`, + value: + user.perms.areaRestrictions.length > 15 + ? `${trimmed}\n...${user.perms.areaRestrictions.length - 15} more` + : trimmed, inline: true, }) } From 2eb9aed797b62a38bebc6ee913a3a521137141bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 01:21:51 +0000 Subject: [PATCH 07/29] Bump express from 4.17.1 to 4.17.3 Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.3. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.3) --- updated-dependencies: - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 238 +++++++++++++++++++++++++-------------------------- 2 files changed, 118 insertions(+), 122 deletions(-) diff --git a/package.json b/package.json index 9d6462d75..de39188aa 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "config": "^3.3.6", "discord.js": "^12.5.3", "dotenv": "^10.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "express-mysql-session": "^2.1.6", "express-rate-limit": "^5.2.6", "express-session": "^1.17.1", diff --git a/yarn.lock b/yarn.lock index fe503f8b5..0d86680b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -807,13 +807,13 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@^1.3.5, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -1120,21 +1120,21 @@ bluebird@^3.5.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.0, body-parser@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.19.2, body-parser@^1.19.0: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "1.7.2" + http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" brace-expansion@^1.1.7: version "1.1.11" @@ -1161,10 +1161,10 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -1298,12 +1298,12 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.4" @@ -1320,6 +1320,11 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + core-js-pure@^3.20.2: version "3.21.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" @@ -1420,10 +1425,10 @@ debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4, debug@^4.1.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -1434,6 +1439,13 @@ debug@4.3.1: dependencies: ms "2.1.2" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -1441,13 +1453,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - decimal.js@^10.3.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" @@ -2048,17 +2053,17 @@ express-session@1.17.1, express-session@^1.17.1: safe-buffer "5.2.0" uid-safe "~2.1.5" -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== +express@^4.17.3: + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.19.2" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -2072,13 +2077,13 @@ express@^4.17.1: on-finished "~2.3.0" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.9.7" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" statuses "~1.5.0" type-is "~1.6.18" utils-merge "1.0.1" @@ -2160,10 +2165,10 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" @@ -2400,27 +2405,16 @@ html-parse-stringify@^3.0.1: dependencies: void-elements "3.1.0" -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" inherits "2.0.4" - setprototypeof "1.1.1" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + toidentifier "1.0.1" http-proxy-agent@^4.0.1: version "4.0.1" @@ -2532,11 +2526,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -3037,6 +3026,11 @@ mime-db@1.49.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + mime-types@^2.1.12: version "2.1.32" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" @@ -3051,6 +3045,13 @@ mime-types@~2.1.24: dependencies: mime-db "1.46.0" +mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -3104,17 +3105,12 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3155,10 +3151,10 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== node-abort-controller@^3.0.1: version "3.0.1" @@ -3605,12 +3601,12 @@ protobufjs@^6.10.2: "@types/node" ">=13.7.0" long "^4.0.0" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" proxy-from-env@^1.1.0: @@ -3638,10 +3634,10 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== quickselect@^2.0.0: version "2.0.0" @@ -3658,13 +3654,13 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" @@ -3903,7 +3899,7 @@ safe-buffer@5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -safe-buffer@^5.0.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -3950,10 +3946,10 @@ semver@~7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== dependencies: debug "2.6.9" depd "~1.1.2" @@ -3962,9 +3958,9 @@ send@0.17.1: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "1.8.1" mime "1.6.0" - ms "2.1.1" + ms "2.1.3" on-finished "~2.3.0" range-parser "~1.2.1" statuses "~1.5.0" @@ -3974,15 +3970,15 @@ seq-queue@^0.0.5: resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.17.2" set-blocking@^2.0.0: version "2.0.0" @@ -3994,10 +3990,10 @@ setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.11: version "2.4.11" @@ -4213,10 +4209,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== touch@^3.1.0: version "3.1.0" @@ -4309,7 +4305,7 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== From 303a6ff14f61dc1d6e871ea5cd6e66f2d4ecd0be Mon Sep 17 00:00:00 2001 From: Derick M <58572875+TurtIeSocks@users.noreply.github.com> Date: Thu, 15 Dec 2022 17:48:48 -0500 Subject: [PATCH 08/29] Size Enum Support - Adds a few translation keys - Moves all "old size" reference to height - New size reference is the size proto - Maintains backwards compatibility - Filter size globally and per pokemon - Adds map marker indicator to view the size of the pokemon - Requires updates from those using custom pokemon markers - Version bump --- package.json | 2 +- public/base-locales/en.json | 10 +- server/src/configs/default.json | 4 +- server/src/graphql/scannerTypes.js | 1 + server/src/models/Filters.js | 15 ++- server/src/models/Pokemon.js | 12 ++- server/src/models/Pokestop.js | 6 +- server/src/services/DbCheck.js | 11 +- server/src/services/ui/clientOptions.js | 1 + .../layout/dialogs/filters/Advanced.jsx | 102 ++++++++++++++---- src/components/layout/drawer/Pokemon.jsx | 77 ++++++++----- src/components/layout/general/Menu.jsx | 1 + src/components/markers/pokemon.jsx | 15 +++ src/components/popups/Pokemon.jsx | 24 ++++- src/components/tiles/Pokemon.jsx | 1 + src/services/queries/pokemon.js | 1 + 16 files changed, 215 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 46a71f634..d7d6b6b3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "reactmap", - "version": "1.7.3", + "version": "1.7.4", "description": "React based frontend map.", "main": "ReactMap.js", "author": "TurtIeSocks <58572875+TurtIeSocks@users.noreply.github.com>", diff --git a/public/base-locales/en.json b/public/base-locales/en.json index b7785c475..d95028983 100644 --- a/public/base-locales/en.json +++ b/public/base-locales/en.json @@ -561,5 +561,13 @@ "seen_lure_wild": "Lure Spawn", "seen_wild": "Wild Spawn", "event_stops": "Event Stops", - "event_stop_timers": "Event Stop Timers" + "event_stop_timers": "Event Stop Timers", + "spawn_size": "Spawn Size", + "size_0": "Any", + "size_1": "XXS", + "size_2": "XS", + "size_3": "M", + "size_4": "XL", + "size_5": "XXL", + "show_size_indicator": "Show Size Indicator" } \ No newline at end of file diff --git a/server/src/configs/default.json b/server/src/configs/default.json index 407039481..e741a35d1 100644 --- a/server/src/configs/default.json +++ b/server/src/configs/default.json @@ -327,6 +327,7 @@ "showDexNumInPopup": false, "pvpMega": false, "linkGlobalAndAdvanced": false, + "showSizeIndicator": false, "glow": [ { "name": "Hundo", @@ -497,7 +498,8 @@ "cp": [ 10, 5000 - ] + ], + "spawnSize": 0 } }, "portals": { diff --git a/server/src/graphql/scannerTypes.js b/server/src/graphql/scannerTypes.js index 149e073ab..56d88d033 100644 --- a/server/src/graphql/scannerTypes.js +++ b/server/src/graphql/scannerTypes.js @@ -134,6 +134,7 @@ module.exports = gql` display_pokemon_id: Int ditto_form: Int weight: Float + height: Float size: Float move_1: Int move_2: Int diff --git a/server/src/models/Filters.js b/server/src/models/Filters.js index bea70bb43..5d0ae1876 100644 --- a/server/src/models/Filters.js +++ b/server/src/models/Filters.js @@ -14,7 +14,19 @@ class GenericFilter { } class PokemonFilter extends GenericFilter { - constructor(enabled, size, iv, level, atk, def, sta, pvp, gender, cp) { + constructor( + enabled, + size, + iv, + level, + atk, + def, + sta, + pvp, + gender, + cp, + spawnSize, + ) { super(enabled, size) this.iv = iv || [0, 100] this.atk_iv = atk || [0, 15] @@ -23,6 +35,7 @@ class PokemonFilter extends GenericFilter { this.level = level || [1, 35] this.cp = cp || [10, 5000] this.gender = gender || 0 + this.spawn_size = spawnSize || 0 leagues.forEach( (league) => (this[league.name] = pvp || [ diff --git a/server/src/models/Pokemon.js b/server/src/models/Pokemon.js index f18f5c4c7..29d599fcc 100644 --- a/server/src/models/Pokemon.js +++ b/server/src/models/Pokemon.js @@ -27,6 +27,7 @@ const keys = [ 'def_iv', 'sta_iv', 'gender', + 'spawnSize', ...leagues.map((league) => league.name), ] const madKeys = { @@ -55,7 +56,7 @@ const getMadSql = (q) => 'individual_attack AS atk_iv', 'individual_defense AS def_iv', 'individual_stamina AS sta_iv', - 'height AS size', + 'height', 'pokemon.form', 'pokemon.gender', 'pokemon.costume', @@ -76,7 +77,7 @@ module.exports = class Pokemon extends Model { return 'pokemon' } - static async getAll(perms, args, { isMad, pvpV2 }) { + static async getAll(perms, args, { isMad, pvpV2, hasSize, hasHeight }) { const { iv: ivs, pvp, areaRestrictions } = perms const { onlyStandard, @@ -181,6 +182,11 @@ module.exports = class Pokemon extends Model { const generateSql = (queryBase, filter, relevant) => { relevant.forEach((key) => { switch (key) { + case 'spawn_size': + if (hasSize) { + queryBase.andWhere('pokemon.size', filter[key]) + } + break case 'gender': queryBase.andWhere('pokemon.gender', filter[key]) break @@ -219,6 +225,8 @@ module.exports = class Pokemon extends Model { const query = this.query() if (isMad) { getMadSql(query) + } else { + query.select(['*', hasSize && !hasHeight ? 'size AS height' : 'size']) } query .where( diff --git a/server/src/models/Pokestop.js b/server/src/models/Pokestop.js index e1270a4aa..7c11c0bc2 100644 --- a/server/src/models/Pokestop.js +++ b/server/src/models/Pokestop.js @@ -1106,11 +1106,7 @@ module.exports = class Pokestop extends Model { } else { queries.invasions = this.query() .distinct(isMad ? 'incident_grunt_type AS grunt_type' : 'grunt_type') - .where( - isMad ? 'incident_grunt_type' : 'grunt_type', - '>', - 0, - ) + .where(isMad ? 'incident_grunt_type' : 'grunt_type', '>', 0) .andWhere( isMad ? 'incident_expiration' : 'incident_expire_timestamp', '>=', diff --git a/server/src/services/DbCheck.js b/server/src/services/DbCheck.js index aa0b0d444..900fb34de 100644 --- a/server/src/services/DbCheck.js +++ b/server/src/services/DbCheck.js @@ -76,9 +76,14 @@ module.exports = class DbCheck { await Promise.all( this.connections.map(async (schema, i) => { try { - const [isMad, pvpV2] = await schema('pokemon') + const [isMad, pvpV2, hasSize, hasHeight] = await schema('pokemon') .columnInfo() - .then((columns) => ['cp_multiplier' in columns, 'pvp' in columns]) + .then((columns) => [ + 'cp_multiplier' in columns, + 'pvp' in columns, + 'size' in columns, + 'height' in columns, + ]) const [hasRewardAmount, hasPowerUp, hasAltQuests] = await schema( 'pokestop', ) @@ -111,6 +116,8 @@ module.exports = class DbCheck { if (source.connection === i) { this.models[category][j].isMad = isMad this.models[category][j].pvpV2 = pvpV2 + this.models[category][j].hasSize = hasSize + this.models[category][j].hasHeight = hasHeight this.models[category][j].hasRewardAmount = hasRewardAmount this.models[category][j].hasPowerUp = hasPowerUp this.models[category][j].hasAltQuests = hasAltQuests diff --git a/server/src/services/ui/clientOptions.js b/server/src/services/ui/clientOptions.js index 7a788e4a7..4b89f8c37 100644 --- a/server/src/services/ui/clientOptions.js +++ b/server/src/services/ui/clientOptions.js @@ -42,6 +42,7 @@ module.exports = function clientOptions(perms) { showDexNumInPopup: { type: 'bool', perm: ['pokemon'] }, weatherIndicator: { type: 'bool', perm: ['pokemon'] }, pvpMega: { type: 'bool', perm: ['pokemon'] }, + showSizeIndicator: { type: 'bool', perm: ['pokemon'] }, }, wayfarer: { clustering: { type: 'bool', perm: ['portals'] }, diff --git a/src/components/layout/dialogs/filters/Advanced.jsx b/src/components/layout/dialogs/filters/Advanced.jsx index f158cced5..ff424ce09 100644 --- a/src/components/layout/dialogs/filters/Advanced.jsx +++ b/src/components/layout/dialogs/filters/Advanced.jsx @@ -13,6 +13,7 @@ import { useStore, useStatic } from '@hooks/useStore' import Header from '@components/layout/general/Header' import Footer from '@components/layout/general/Footer' +import MultiSelector from '@components/layout/drawer/MultiSelector' import StringFilter from './StringFilter' import SliderTile from './SliderTile' import Size from './Size' @@ -24,6 +25,7 @@ export default function AdvancedFilter({ advancedFilter, type, isTutorial, + isMobile, }) { Utility.analytics(`/${type}/${advancedFilter.id}`) @@ -134,33 +136,87 @@ export default function AdvancedFilter({ /> ) : ( - Object.entries(ui[type].sliders).map(([category, sliders], i) => ( - - {category === 'primary' && i === 0 && ui.pokemon.gender && ( - - - setFilterValues({ ...filterValues, gender: newValue }) + <> + {Object.entries(ui[type].sliders).map(([category, sliders]) => ( + + {sliders.map((each) => ( + + ))} + + ))} + + + + setFilterValues({ + ...filterValues, + gender: newValue, + }) + } + /> + + + {t('gender')} + + + + + + + setFilterValues({ + ...filterValues, + spawn_size: newValue, + }) } /> - )} - {sliders.map((each) => ( - - ))} + + + {t('spawn_size')} + + + - )) + )} ) : ( diff --git a/src/components/layout/drawer/Pokemon.jsx b/src/components/layout/drawer/Pokemon.jsx index c6bcad3ea..4cc58bcbd 100644 --- a/src/components/layout/drawer/Pokemon.jsx +++ b/src/components/layout/drawer/Pokemon.jsx @@ -8,6 +8,7 @@ import StringFilter from '../dialogs/filters/StringFilter' import SliderTile from '../dialogs/filters/SliderTile' import TabPanel from '../general/TabPanel' import GenderFilter from '../dialogs/filters/Gender' +import MultiSelector from './MultiSelector' export default function WithSliders({ category, @@ -133,8 +134,29 @@ export default function WithSliders({ justifyContent="center" style={{ width: 250 }} > - {index - ? ['xsRat', 'xlKarp'].map((each, i) => ( + {index ? ( + <> + + + setFilters({ + ...filters, + [category]: { + ...filters[category], + ivOr: { + ...filters[category].ivOr, + spawn_size: newValue, + }, + }, + }) + } + /> + + {['xsRat', 'xlKarp'].map((each, i) => ( - )) - : ['zeroIv', 'hundoIv'].map((each) => ( - - - - {t(Utility.camelToSnake(each))} - - - - { - setFilters({ - ...filters, - [category]: { - ...filters[category], - [each]: !filters[category][each], - }, - }) - }} - /> - - ))} + + ) : ( + ['zeroIv', 'hundoIv'].map((each) => ( + + + {t(Utility.camelToSnake(each))} + + + { + setFilters({ + ...filters, + [category]: { + ...filters[category], + [each]: !filters[category][each], + }, + }) + }} + /> + + + )) + )} {!index && ( diff --git a/src/components/markers/pokemon.jsx b/src/components/markers/pokemon.jsx index 653165f72..af193576f 100644 --- a/src/components/markers/pokemon.jsx +++ b/src/components/markers/pokemon.jsx @@ -20,6 +20,7 @@ export const fancyMarker = ( Icons, weatherCheck, timeOfDay, + userSettings, ) => { const { pokemon: pokemonMod, weather: weatherMod } = Icons.modifiers let badge @@ -85,6 +86,20 @@ export const fancyMarker = ( {Math.round(pkmn.iv)} )} + {userSettings?.showSizeIndicator && + Number.isInteger(pkmn.size) && + pkmn.size !== 3 && ( +
+ {{ 1: 'XXS', 2: 'XS', 3: 'MD', 4: 'XL', 5: 'XXL' }[pkmn.size]} +
+ )} {Boolean(weatherCheck) && (