From 4a05e8714b577316b9b7dd544d9fc12e9cb65b48 Mon Sep 17 00:00:00 2001 From: Kichiyaki Date: Sat, 12 Jun 2021 08:35:01 +0200 Subject: [PATCH] fix(extendedMapPopup): don't render UI when village id is null --- dist/extendedMapPopup.js | 15 +++++++++++---- dist/quickbar/extendedMapPopup.js | 2 +- src/extendedMapPopup.js | 16 ++++++++++++---- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/dist/extendedMapPopup.js b/dist/extendedMapPopup.js index 8139b5d..912adf7 100644 --- a/dist/extendedMapPopup.js +++ b/dist/extendedMapPopup.js @@ -371,7 +371,7 @@ // ==/UserScript== const $dd5d786daadd6a3858722303ff53be21$var$SERVER = $075335fbc46b1a64d60d11b353f74662$export$default(); const $dd5d786daadd6a3858722303ff53be21$var$CURR_SERVER_CONFIG = "\n query server($key: String!) {\n server(key: $key) {\n config {\n speed\n unitSpeed\n snob {\n maxDist\n }\n }\n unitConfig {\n spear {\n speed\n }\n sword {\n speed\n }\n axe {\n speed\n }\n archer {\n speed\n }\n spy {\n speed\n }\n light {\n speed\n }\n marcher {\n speed\n }\n heavy {\n speed\n }\n ram {\n speed\n }\n catapult {\n speed\n }\n knight {\n speed\n }\n snob {\n speed\n }\n }\n }\n }\n"; - const $dd5d786daadd6a3858722303ff53be21$var$LAST_VILLAGE_CONQUER_QUERY = "\n query ennoblements($server: String!, $filter: EnnoblementFilter!, $sort: [String!], $limit: Int) {\n ennoblements(server: $server, filter: $filter, sort: $sort, limit: $limit) {\n items {\n ennobledAt\n village {\n id\n }\n }\n }\n }\n"; + const $dd5d786daadd6a3858722303ff53be21$var$LAST_CONQUER_QUERY = "\n query ennoblements($server: String!, $filter: EnnoblementFilter!, $sort: [String!], $limit: Int) {\n ennoblements(server: $server, filter: $filter, sort: $sort, limit: $limit) {\n items {\n ennobledAt\n village {\n id\n }\n }\n }\n }\n"; const $dd5d786daadd6a3858722303ff53be21$var$SERVER_CONFIG_LOCAL_STORAGE_KEY = 'kiszkowaty_extended_map_popup_server_cfg'; const $dd5d786daadd6a3858722303ff53be21$var$translations = $b77e52fe2469092ef0c13094c9dc19c1$export$default(); const $dd5d786daadd6a3858722303ff53be21$var$loadConfigFromLocalStorage = () => { @@ -403,12 +403,15 @@ }; const $dd5d786daadd6a3858722303ff53be21$var$loadVillageData = async function loadVillageData(id) { let {cacheOnly = false} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (!id) { + return; + } if (cacheOnly || TWMap.popup.extendedMapPopupCache[id]) { return TWMap.popup.extendedMapPopupCache[id]; } try { const data = await $3af05e958b2a20a26445518aba292c50$export$default({ - query: $dd5d786daadd6a3858722303ff53be21$var$LAST_VILLAGE_CONQUER_QUERY, + query: $dd5d786daadd6a3858722303ff53be21$var$LAST_CONQUER_QUERY, variables: { server: $dd5d786daadd6a3858722303ff53be21$var$SERVER, sort: ['ennobledAt DESC'], @@ -485,14 +488,18 @@ const $dd5d786daadd6a3858722303ff53be21$var$createLoadVillageHandler = cfg => async e => { TWMap.popup._loadVillage(e); const data = await $dd5d786daadd6a3858722303ff53be21$var$loadVillageData(parseInt(e)); - $dd5d786daadd6a3858722303ff53be21$var$renderAdditionalInfo(parseInt(e), data, cfg); + if (data) { + $dd5d786daadd6a3858722303ff53be21$var$renderAdditionalInfo(parseInt(e), data, cfg); + } }; const $dd5d786daadd6a3858722303ff53be21$var$createDisplayForVillageHandler = cfg => async (e, a, t) => { TWMap.popup._displayForVillage(e, a, t); const data = await $dd5d786daadd6a3858722303ff53be21$var$loadVillageData(parseInt(e.id), { cacheOnly: window.game_data.features.Premium.active }); - $dd5d786daadd6a3858722303ff53be21$var$renderAdditionalInfo(parseInt(e.id), data, cfg); + if (data) { + $dd5d786daadd6a3858722303ff53be21$var$renderAdditionalInfo(parseInt(e.id), data, cfg); + } }; (async function () { try { diff --git a/dist/quickbar/extendedMapPopup.js b/dist/quickbar/extendedMapPopup.js index 952e0c8..d5a4907 100644 --- a/dist/quickbar/extendedMapPopup.js +++ b/dist/quickbar/extendedMapPopup.js @@ -1 +1 @@ -!function(){function e(e){if(null===e||!0===e||!1===e)return NaN;var n=Number(e);return isNaN(n)?n:n<0?Math.ceil(n):Math.floor(n)}function n(e,n){if(n.length1?"s":"")+" required, but only "+n.length+" present")}function t(e){n(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function o(o,r){n(2,arguments);var a=t(o).getTime(),i=e(r);return new Date(a+i)}const r={pl_PL:{ennobledAt:"Podbita o",never:"Nigdy",possibleLoyalty:"Prawdopodobne poparcie",canSendNoble:"Można wysłać szlachcica",yes:"Tak",no:"Nie"},en_DK:{ennobledAt:"Ennobled at",never:"Never",possibleLoyalty:"Possible loyalty",canSendNoble:"Can send noble",yes:"Yes",no:"No"},de_DE:{ennobledAt:"Adelung bei",never:"Nie",possibleLoyalty:"Mögliche Zustimmung",canSendNoble:"Kann Adelsgeschlecht senden",yes:"Ja",no:"Nein"}};const a="https://api.tribalwarshelp.com/graphql";var i=function(){let{query:e,variables:n={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return fetch(a,{method:"POST",body:JSON.stringify({query:e,variables:n}),headers:{"Content-Type":"application/json"}}).then((e=>e.json())).then((e=>{let{data:n,errors:t}=e;if(t&&Array.isArray(t)&&t.length>0)throw new Error(t[0].message);return new Promise((e=>e(n)))}))};const l=(e,n)=>new Date(e).toLocaleDateString(void 0,n||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});var s=e=>{return n="unit/unit_".concat(e,".png"),image_base+n;var n};const c=(e,n)=>{localStorage.setItem(e,JSON.stringify(n))};function p(e,o){n(2,arguments);var r=t(e),a=t(o);return r.getTime()-a.getTime()}const d=(e,t)=>{let o=25+Math.abs(function(e,t){n(2,arguments);var o=p(e,t)/6e4;return o>0?Math.floor(o):Math.ceil(o)}(e,new Date))*(t/60);return o>100&&(o=100),Math.floor(o)};function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function g(e){for(var n=1;nfunction(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const t=localStorage.getItem(e);let o=n;return t&&(o=JSON.parse(t)),o}(f),w=async()=>{let e=v();var n;return e&&e.server&&(n=new Date(e.loadedAt),!(Math.abs(n.getTime()-(new Date).getTime())>864e5))&&e.server.config&&e.server.config.speed&&e.server.config.snob&&e.server.config.snob.maxDist&&e.server.config.unitSpeed&&e.server.unitConfig||(e=await i({query:"\n query server($key: String!) {\n server(key: $key) {\n config {\n speed\n unitSpeed\n snob {\n maxDist\n }\n }\n unitConfig {\n spear {\n speed\n }\n sword {\n speed\n }\n axe {\n speed\n }\n archer {\n speed\n }\n spy {\n speed\n }\n light {\n speed\n }\n marcher {\n speed\n }\n heavy {\n speed\n }\n ram {\n speed\n }\n catapult {\n speed\n }\n knight {\n speed\n }\n snob {\n speed\n }\n }\n }\n }\n",variables:{key:b}}),e.loadedAt=new Date,function(){c(f,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})}(e)),e&&e.server&&e.server.config?{config:e.server.config,unitConfig:e.server.unitConfig}:{}},M=async function(e){let{cacheOnly:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n||TWMap.popup.extendedMapPopupCache[e])return TWMap.popup.extendedMapPopupCache[e];try{const n=await i({query:m,variables:{server:b,sort:["ennobledAt DESC"],filter:{villageID:[e]},limit:1}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(e){console.log("loadVillageData",e)}},S=e=>e%2==0?"#f8f4e8":"#ded3b9;",T=(e,n)=>'\n \n \n \n '),D=(t,r)=>'\n \n ').concat(l(function(t,r){n(2,arguments);var a=e(r);return o(t,6e4*a)}(Timing.getCurrentServerTime(),t)),"\n \n "),O=(e,n,t)=>{let{config:o,unitConfig:r}=t;const a=TWMap.CoordByXY(TWMap.villageKey[e]),i=((e,n,t,o)=>{const r=e-t,a=n-o;return Math.sqrt(r*r+a*a)})(a[0],a[1],window.game_data.village.x,window.game_data.village.y),c=n&&n.ennoblements&&n.ennoblements.items&&n.ennoblements.items.length>0?n.ennoblements.items[0]:void 0,p=document.querySelector("#map_popup #info_content tbody");let u=p.querySelector("#units");u||(u=document.createElement("tr"),u.id="units",p.appendChild(u));const y=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=[];for(let t in e)0!==e[t].speed&&n.push(g(g({},e[t]),{},{name:t,img:s(t)}));return n}(r);u.innerHTML='\n \n \n \n \n '.concat(y.map(T).join(""),'\n \n \n ').concat(y.map(((e,n)=>D(((e,n)=>Math.round(e*n))(i,e.speed),n))).join(""),"\n \n \n
\n \n ");let b=p.querySelector("#lastEnnobledAt");b||(b=document.createElement("tr"),b.id="lastEnnobledAt",p.appendChild(b)),b.innerHTML="\n \n ".concat(h.ennobledAt,":\n \n \n ").concat(c?l(c.ennobledAt):h.never,"\n \n ");let m=p.querySelector("#loyalty");m||(m=document.createElement("tr"),m.id="loyalty",p.appendChild(m)),m.innerHTML="\n \n ".concat(h.possibleLoyalty,":\n \n \n ").concat(c?d(new Date(c.ennobledAt),o.speed):100,"\n \n ");let f=p.querySelector("#canSendNoble");f||(f=document.createElement("tr"),f.id="canSendNoble",p.appendChild(f)),f.innerHTML="\n \n ".concat(h.canSendNoble,":\n \n \n ").concat(i\n ")};!async function(){try{const n=await w();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=(e=n,async n=>{TWMap.popup._loadVillage(n);const t=await M(parseInt(n));O(parseInt(n),t,e)}),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=(e=>async(n,t,o)=>{TWMap.popup._displayForVillage(n,t,o);const r=await M(parseInt(n.id),{cacheOnly:window.game_data.features.Premium.active});O(parseInt(n.id),r,e)})(n)}catch(e){console.log("extended map popup",e)}var e}()}(); \ No newline at end of file +!function(){function e(e){if(null===e||!0===e||!1===e)return NaN;var n=Number(e);return isNaN(n)?n:n<0?Math.ceil(n):Math.floor(n)}function n(e,n){if(n.length1?"s":"")+" required, but only "+n.length+" present")}function t(e){n(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function o(o,r){n(2,arguments);var a=t(o).getTime(),i=e(r);return new Date(a+i)}const r={pl_PL:{ennobledAt:"Podbita o",never:"Nigdy",possibleLoyalty:"Prawdopodobne poparcie",canSendNoble:"Można wysłać szlachcica",yes:"Tak",no:"Nie"},en_DK:{ennobledAt:"Ennobled at",never:"Never",possibleLoyalty:"Possible loyalty",canSendNoble:"Can send noble",yes:"Yes",no:"No"},de_DE:{ennobledAt:"Adelung bei",never:"Nie",possibleLoyalty:"Mögliche Zustimmung",canSendNoble:"Kann Adelsgeschlecht senden",yes:"Ja",no:"Nein"}};const a="https://api.tribalwarshelp.com/graphql";var i=function(){let{query:e,variables:n={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return fetch(a,{method:"POST",body:JSON.stringify({query:e,variables:n}),headers:{"Content-Type":"application/json"}}).then((e=>e.json())).then((e=>{let{data:n,errors:t}=e;if(t&&Array.isArray(t)&&t.length>0)throw new Error(t[0].message);return new Promise((e=>e(n)))}))};const l=(e,n)=>new Date(e).toLocaleDateString(void 0,n||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});var s=e=>{return n="unit/unit_".concat(e,".png"),image_base+n;var n};const c=(e,n)=>{localStorage.setItem(e,JSON.stringify(n))};function p(e,o){n(2,arguments);var r=t(e),a=t(o);return r.getTime()-a.getTime()}const d=(e,t)=>{let o=25+Math.abs(function(e,t){n(2,arguments);var o=p(e,t)/6e4;return o>0?Math.floor(o):Math.ceil(o)}(e,new Date))*(t/60);return o>100&&(o=100),Math.floor(o)};function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function g(e){for(var n=1;nfunction(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const t=localStorage.getItem(e);let o=n;return t&&(o=JSON.parse(t)),o}(f),w=async()=>{let e=v();var n;return e&&e.server&&(n=new Date(e.loadedAt),!(Math.abs(n.getTime()-(new Date).getTime())>864e5))&&e.server.config&&e.server.config.speed&&e.server.config.snob&&e.server.config.snob.maxDist&&e.server.config.unitSpeed&&e.server.unitConfig||(e=await i({query:"\n query server($key: String!) {\n server(key: $key) {\n config {\n speed\n unitSpeed\n snob {\n maxDist\n }\n }\n unitConfig {\n spear {\n speed\n }\n sword {\n speed\n }\n axe {\n speed\n }\n archer {\n speed\n }\n spy {\n speed\n }\n light {\n speed\n }\n marcher {\n speed\n }\n heavy {\n speed\n }\n ram {\n speed\n }\n catapult {\n speed\n }\n knight {\n speed\n }\n snob {\n speed\n }\n }\n }\n }\n",variables:{key:b}}),e.loadedAt=new Date,function(){c(f,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})}(e)),e&&e.server&&e.server.config?{config:e.server.config,unitConfig:e.server.unitConfig}:{}},M=async function(e){let{cacheOnly:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if(n||TWMap.popup.extendedMapPopupCache[e])return TWMap.popup.extendedMapPopupCache[e];try{const n=await i({query:m,variables:{server:b,sort:["ennobledAt DESC"],filter:{villageID:[e]},limit:1}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(e){console.log("loadVillageData",e)}}},S=e=>e%2==0?"#f8f4e8":"#ded3b9;",T=(e,n)=>'\n \n \n \n '),D=(t,r)=>'\n \n ').concat(l(function(t,r){n(2,arguments);var a=e(r);return o(t,6e4*a)}(Timing.getCurrentServerTime(),t)),"\n \n "),O=(e,n,t)=>{let{config:o,unitConfig:r}=t;const a=TWMap.CoordByXY(TWMap.villageKey[e]),i=((e,n,t,o)=>{const r=e-t,a=n-o;return Math.sqrt(r*r+a*a)})(a[0],a[1],window.game_data.village.x,window.game_data.village.y),c=n&&n.ennoblements&&n.ennoblements.items&&n.ennoblements.items.length>0?n.ennoblements.items[0]:void 0,p=document.querySelector("#map_popup #info_content tbody");let u=p.querySelector("#units");u||(u=document.createElement("tr"),u.id="units",p.appendChild(u));const y=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=[];for(let t in e)0!==e[t].speed&&n.push(g(g({},e[t]),{},{name:t,img:s(t)}));return n}(r);u.innerHTML='\n \n \n \n \n '.concat(y.map(T).join(""),'\n \n \n ').concat(y.map(((e,n)=>D(((e,n)=>Math.round(e*n))(i,e.speed),n))).join(""),"\n \n \n
\n \n ");let b=p.querySelector("#lastEnnobledAt");b||(b=document.createElement("tr"),b.id="lastEnnobledAt",p.appendChild(b)),b.innerHTML="\n \n ".concat(h.ennobledAt,":\n \n \n ").concat(c?l(c.ennobledAt):h.never,"\n \n ");let m=p.querySelector("#loyalty");m||(m=document.createElement("tr"),m.id="loyalty",p.appendChild(m)),m.innerHTML="\n \n ".concat(h.possibleLoyalty,":\n \n \n ").concat(c?d(new Date(c.ennobledAt),o.speed):100,"\n \n ");let f=p.querySelector("#canSendNoble");f||(f=document.createElement("tr"),f.id="canSendNoble",p.appendChild(f)),f.innerHTML="\n \n ".concat(h.canSendNoble,":\n \n \n ").concat(i\n ")};!async function(){try{const n=await w();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=(e=n,async n=>{TWMap.popup._loadVillage(n);const t=await M(parseInt(n));t&&O(parseInt(n),t,e)}),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=(e=>async(n,t,o)=>{TWMap.popup._displayForVillage(n,t,o);const r=await M(parseInt(n.id),{cacheOnly:window.game_data.features.Premium.active});r&&O(parseInt(n.id),r,e)})(n)}catch(e){console.log("extended map popup",e)}var e}()}(); \ No newline at end of file diff --git a/src/extendedMapPopup.js b/src/extendedMapPopup.js index f4a5fd2..ea1a2c8 100644 --- a/src/extendedMapPopup.js +++ b/src/extendedMapPopup.js @@ -73,7 +73,7 @@ const CURR_SERVER_CONFIG = ` } } `; -const LAST_VILLAGE_CONQUER_QUERY = ` +const LAST_CONQUER_QUERY = ` query ennoblements($server: String!, $filter: EnnoblementFilter!, $sort: [String!], $limit: Int) { ennoblements(server: $server, filter: $filter, sort: $sort, limit: $limit) { items { @@ -129,13 +129,17 @@ const loadConfig = async () => { }; const loadVillageData = async (id, { cacheOnly = false } = {}) => { + if (!id) { + return; + } + if (cacheOnly || TWMap.popup.extendedMapPopupCache[id]) { return TWMap.popup.extendedMapPopupCache[id]; } try { const data = await requestCreator({ - query: LAST_VILLAGE_CONQUER_QUERY, + query: LAST_CONQUER_QUERY, variables: { server: SERVER, sort: ['ennobledAt DESC'], @@ -298,7 +302,9 @@ const renderAdditionalInfo = (id, data, { config, unitConfig }) => { const createLoadVillageHandler = cfg => async e => { TWMap.popup._loadVillage(e); const data = await loadVillageData(parseInt(e)); - renderAdditionalInfo(parseInt(e), data, cfg); + if (data) { + renderAdditionalInfo(parseInt(e), data, cfg); + } }; const createDisplayForVillageHandler = cfg => async (e, a, t) => { @@ -306,7 +312,9 @@ const createDisplayForVillageHandler = cfg => async (e, a, t) => { const data = await loadVillageData(parseInt(e.id), { cacheOnly: window.game_data.features.Premium.active, }); - renderAdditionalInfo(parseInt(e.id), data, cfg); + if (data) { + renderAdditionalInfo(parseInt(e.id), data, cfg); + } }; (async function () {