From fa8878e0eb910a72033b441c91e1351ae1d877f8 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 25 Sep 2023 20:57:09 -0700 Subject: menu update --- src/components/AppHeader.svelte | 2 ++ src/components/LocationsMap.svelte | 41 +++++++++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 9 deletions(-) (limited to 'src/components') diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index ac815211..8f1fe947 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -17,6 +17,8 @@ menuButtons = [ { key: 'nav.settings', icon: 'settings', href: `/${user.username}/settings` }, { key: 'nav.support', icon: 'support', href: `/support` }, + { key: 'nav.map', icon: 'map', href: `/${user.username}/map` }, + { key: 'nav.merch', icon: 'shirt', href: `https://coinosmerch.com` }, { key: 'nav.signOut', icon: 'logout', href: `/logout` } ]; diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index 37dd60ba..b9833c6c 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -34,16 +34,32 @@ let mapElement; let map; + function updateLabelVisibility() { + const zoom = map.getZoom(); + map.eachLayer((layer) => { + if (layer.getTooltip) { + const tooltip = layer.getTooltip(); + if (tooltip) { + if (zoom > 14) { + // Show labels at zoom levels greater than 14 + tooltip.setOpacity(1.0); + } else { + tooltip.setOpacity(0.0); + } + } + } + }); + } + onMount(async () => { if (browser) { const L = await import('leaflet'); map = L.map(mapElement, { - zoomSnap: 0, - attributionControl: false, + zoomSnap: 0, + attributionControl: false }).setView([49.26, -123.05], 12); - const myCustomColour = '#F7931A'; const markerHtmlStyles = ` @@ -178,17 +194,22 @@ marker.addTo(map); }); + updateLabelVisibility(); + map.on('zoomend', updateLabelVisibility); // map.fitBounds(locations.map(({ osm_json: { lat, lon } }) => [lat, lon])); } }); - onDestroy(async () => map && map.remove()); + onDestroy(async () => { + map.off('zoomend', updateLabelVisibility); + map && map.remove(); + });
-
-
-
+
+
+
-- cgit v1.2.3 From 695923dff329c15d88341002c5788ef397f1c611 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 25 Sep 2023 22:39:32 -0700 Subject: check for map --- src/components/LocationsMap.svelte | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/components') diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index b9833c6c..76523006 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -201,8 +201,10 @@ }); onDestroy(async () => { - map.off('zoomend', updateLabelVisibility); - map && map.remove(); + if (map) { + map.off('zoomend', updateLabelVisibility); + map.remove(); + } }); -- cgit v1.2.3 From 5dcd48afc84eee277156fbf291ccc3c0191df0f3 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 5 Oct 2023 22:15:05 -0700 Subject: map update --- package.json | 3 +- pnpm-lock.yaml | 346 ++++++++++++++++++++++++++++++++++++- src/components/LocationsMap.svelte | 301 +++++++++++--------------------- 3 files changed, 448 insertions(+), 202 deletions(-) (limited to 'src/components') diff --git a/package.json b/package.json index 7057e577..00d29f0a 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "dependencies": { "@scure/bip39": "^1.2.1", "html2canvas": "^1.4.1", - "leaflet-tooltip-layout": "^0.1.2" + "leaflet-tooltip-layout": "^0.1.2", + "maplibre-gl": "^3.3.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2860602e..ce0d43d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ dependencies: leaflet-tooltip-layout: specifier: ^0.1.2 version: 0.1.2(leaflet@1.9.3) + maplibre-gl: + specifier: ^3.3.1 + version: 3.3.1 devDependencies: '@scure/base': @@ -317,6 +320,54 @@ packages: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true + /@mapbox/geojson-rewind@0.5.2: + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} + hasBin: true + dependencies: + get-stream: 6.0.1 + minimist: 1.2.7 + dev: false + + /@mapbox/jsonlint-lines-primitives@2.0.2: + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + dev: false + + /@mapbox/point-geometry@0.1.0: + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + dev: false + + /@mapbox/tiny-sdf@2.0.6: + resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==} + dev: false + + /@mapbox/unitbezier@0.0.1: + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + dev: false + + /@mapbox/vector-tile@1.3.1: + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + dev: false + + /@mapbox/whoots-js@3.1.0: + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + dev: false + + /@maplibre/maplibre-gl-style-spec@19.3.2: + resolution: {integrity: sha512-C2JAk64XUz9v78+bpyTk1zvgjjnDsB8CCjNumyAYdWK2dvdDtILzh1AGBMdS/llX3KaHjGYxAE5wOwfdwq4Pog==} + hasBin: true + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 + json-stringify-pretty-compact: 3.0.0 + minimist: 1.2.8 + rw: 1.3.3 + sort-object: 3.0.3 + dev: false + /@noble/ciphers@0.2.0: resolution: {integrity: sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==} dev: true @@ -534,6 +585,22 @@ packages: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true + /@types/geojson@7946.0.11: + resolution: {integrity: sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg==} + dev: false + + /@types/mapbox__point-geometry@0.1.2: + resolution: {integrity: sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA==} + dev: false + + /@types/mapbox__vector-tile@1.3.1: + resolution: {integrity: sha512-RpwGE57xM4a/YCH6XWzfcPVRPAu/jiCll0bEGRn6a4iubN2k4xZizskQoRj8fuXyo9BpI7F3bwz3uxs0pWbGNw==} + dependencies: + '@types/geojson': 7946.0.11 + '@types/mapbox__point-geometry': 0.1.2 + '@types/pbf': 3.0.3 + dev: false + /@types/node@18.11.17: resolution: {integrity: sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==} dev: true @@ -542,6 +609,10 @@ packages: resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} dev: true + /@types/pbf@3.0.3: + resolution: {integrity: sha512-hw6bDMjvm+QTvEC+pRLpnTknQXoPu8Fnf+A+zX9HB7j/7RfYajFSbdukabo3adPwvvEHhIMafQl0R0Tpej7clQ==} + dev: false + /@types/pug@2.0.6: resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} dev: true @@ -556,6 +627,12 @@ packages: '@types/node': 18.11.17 dev: true + /@types/supercluster@7.1.1: + resolution: {integrity: sha512-dNK02GO1UApgo+1KpY4jOfm3uWb2eBCMB/VMM2y8cMoF49FiqVVcOawEg19wxYcaX7SvEs370incOuFtFGrVLg==} + dependencies: + '@types/geojson': 7946.0.11 + dev: false + /@zerodevx/svelte-toast@0.7.2: resolution: {integrity: sha512-vWiY6IqsstcOoQ8PFBuFuxgPkj1JFAGhUF9gC7wLx7c5A9SSfdtxWs/39ekGSIeyJK0yqWhTcmzGrCEWSELzDw==} dev: true @@ -591,6 +668,16 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: false + + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: false + /autoprefixer@10.4.13(postcss@8.4.20): resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} @@ -702,6 +789,19 @@ packages: streamsearch: 1.1.0 dev: true + /bytewise-core@1.2.3: + resolution: {integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==} + dependencies: + typewise-core: 1.2.0 + dev: false + + /bytewise@1.1.0: + resolution: {integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==} + dependencies: + bytewise-core: 1.2.3 + typewise: 1.0.3 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -815,6 +915,10 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true + /earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + dev: false + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true @@ -866,6 +970,21 @@ packages: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -910,6 +1029,10 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /geojson-vt@3.2.1: + resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==} + dev: false + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: @@ -918,6 +1041,20 @@ packages: has-symbols: 1.0.3 dev: true + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: false + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: false + + /gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -954,6 +1091,15 @@ packages: once: 1.4.0 dev: true + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: false + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true @@ -992,7 +1138,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -1005,6 +1150,10 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -1025,6 +1174,18 @@ packages: has: 1.0.3 dev: true + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: false + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1046,12 +1207,41 @@ packages: engines: {node: '>=0.12.0'} dev: true + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 0.0.39 dev: true + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: false + + /json-stringify-pretty-compact@3.0.0: + resolution: {integrity: sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==} + dev: false + + /kdbush@4.0.2: + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} + dev: false + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -1101,6 +1291,37 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /maplibre-gl@3.3.1: + resolution: {integrity: sha512-SfRq9bT68GytDzCOG0IoTGg2rASbgdYunW/6xhnp55QuLmwG1M/YOlXxqHaphwia7kZbMvBOocvY0fp5yfTjZA==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 2.0.6 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/maplibre-gl-style-spec': 19.3.2 + '@types/geojson': 7946.0.11 + '@types/mapbox__point-geometry': 0.1.2 + '@types/mapbox__vector-tile': 1.3.1 + '@types/pbf': 3.0.3 + '@types/supercluster': 7.1.1 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + global-prefix: 3.0.0 + kdbush: 4.0.2 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 2.0.0 + quickselect: 2.0.0 + supercluster: 8.0.1 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 + dev: false + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1140,7 +1361,10 @@ packages: /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -1163,6 +1387,10 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + dev: false + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1218,6 +1446,14 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true + /pbf@3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -1311,6 +1547,10 @@ packages: source-map-js: 1.0.2 dev: true + /potpack@2.0.0: + resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==} + dev: false + /prettier-plugin-svelte@2.9.0(prettier@2.8.1)(svelte@3.55.0): resolution: {integrity: sha512-3doBi5NO4IVgaNPtwewvrgPpqAcvNv0NwJNflr76PIGgi9nf1oguQV1Hpdm9TI2ALIQVn/9iIwLpBO5UcD2Jiw==} peerDependencies: @@ -1327,6 +1567,10 @@ packages: hasBin: true dev: true + /protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + dev: false + /qr-code-styling@1.6.0-rc.1: resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} dependencies: @@ -1363,6 +1607,10 @@ packages: engines: {node: '>=10'} dev: true + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: @@ -1376,6 +1624,12 @@ packages: picomatch: 2.3.1 dev: true + /resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.6.0 + dev: false + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -1427,6 +1681,10 @@ packages: queue-microtask: 1.2.3 dev: true + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -1452,6 +1710,16 @@ packages: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} dev: true + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false + /sha256-uint8array@0.10.3: resolution: {integrity: sha512-SFTs87RfXVulKrhhP6B5/qcFruOKQZaKf6jY9V4PJ7NOG0qIlQP6XL4pQq5xagsuP/Wd55S7tUBJpRajEsDUEQ==} dev: true @@ -1483,6 +1751,28 @@ packages: sourcemap-codec: 1.4.8 dev: true + /sort-asc@0.2.0: + resolution: {integrity: sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-desc@0.2.0: + resolution: {integrity: sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-object@3.0.3: + resolution: {integrity: sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==} + engines: {node: '>=0.10.0'} + dependencies: + bytewise: 1.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + sort-asc: 0.2.0 + sort-desc: 0.2.0 + union-value: 1.0.1 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -1493,6 +1783,13 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: true + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: false + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -1505,6 +1802,12 @@ packages: min-indent: 1.0.1 dev: true + /supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + dependencies: + kdbush: 4.0.2 + dev: false + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -1657,6 +1960,10 @@ packages: globrex: 0.1.2 dev: true + /tinyqueue@2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1669,6 +1976,16 @@ packages: engines: {node: '>=6'} dev: true + /typewise-core@1.2.0: + resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} + dev: false + + /typewise@1.0.3: + resolution: {integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==} + dependencies: + typewise-core: 1.2.0 + dev: false + /undici@5.21.0: resolution: {integrity: sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==} engines: {node: '>=12.18'} @@ -1676,6 +1993,16 @@ packages: busboy: 1.6.0 dev: true + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: false + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -1746,6 +2073,21 @@ packages: vite: 4.2.1 dev: true + /vt-pbf@3.1.3: + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.2.1 + dev: false + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index 76523006..c4facf21 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -1,230 +1,133 @@
-
+
-- cgit v1.2.3 From f03caed2a9e730d30770c749cae33d26103fd36c Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 5 Oct 2023 22:41:32 -0700 Subject: check for lat/lng --- src/components/LocationsMap.svelte | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/components') diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index c4facf21..329f832a 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -37,7 +37,7 @@ if (zoom > 13 && isInView) { popup.setHTML(`${tags.name}`).addTo(map); } else { - popup.remove(); + popup.remove(); popup.setHTML(html(tags)); } } @@ -72,6 +72,7 @@ if (location['deleted_at']) return; let { lat, lon, tags } = location['osm_json']; + if (!(lat && lon)) return; let element = document.createElement('div'); element.className = 'marker'; @@ -82,9 +83,9 @@ .addTo(map); marker.getElement().addEventListener('click', () => { - let h = html(marker.tags); + let h = html(marker.tags); let popup = marker.getPopup(); - popup.setHTML(h); + popup.setHTML(h); }); marker.tags = tags; -- cgit v1.2.3 From 6b8b3320016e495ee12c2de079fd1157a228690f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 5 Oct 2023 22:50:08 -0700 Subject: remove outline --- src/components/LocationsMap.svelte | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/components') diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index 329f832a..11a3f8c0 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -93,9 +93,9 @@ markers.push(marker); }); - updateLabelVisibility(); - map.on('moveend', updateLabelVisibility); - map.on('zoomend', updateLabelVisibility); + // updateLabelVisibility(); + // map.on('moveend', updateLabelVisibility); + // map.on('zoomend', updateLabelVisibility); }); }); } @@ -103,8 +103,8 @@ onDestroy(() => { if (map) { - map.off('moveend', updateLabelVisibility); - map.off('zoomend', updateLabelVisibility); + // map.off('moveend', updateLabelVisibility); + // map.off('zoomend', updateLabelVisibility); map.remove(); } }); @@ -122,9 +122,12 @@ padding: 8px; } + :global(.maplibregl-popup :focus) { + outline: none; + } + :global(.maplibregl-popup-content) { padding: 0.5em 1em; - border: 1px solid black; border-radius: 4px; font-size: 14px; color: black; -- cgit v1.2.3 From 87589539d05859fde0aba6e2683eda2d23c8fd8c Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 5 Oct 2023 22:54:20 -0700 Subject: hide attribution --- src/components/LocationsMap.svelte | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/components') diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index 11a3f8c0..f927331c 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -126,6 +126,10 @@ outline: none; } + :global(.maplibregl-ctrl-attrib) { + display: none; + } + :global(.maplibregl-popup-content) { padding: 0.5em 1em; border-radius: 4px; -- cgit v1.2.3 From 0212fe0032eb0c5d6bfb74ebaab42543b73d6d6b Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sun, 8 Oct 2023 00:17:32 -0700 Subject: payments fixes --- src/components/AppHeader.svelte | 2 +- src/components/Balance.svelte | 4 +- src/components/Code.svelte | 4 +- src/components/Footer.svelte | 2 +- src/components/LocationsMap.svelte | 4 +- src/components/RegisterOrLogin.svelte | 6 ++- src/lib/invoice.js | 8 ++-- src/lib/socket.js | 20 +++------ src/lib/store.js | 1 - .../(app)/[username]/(profile)/+layout.svelte | 20 ++++----- src/routes/(app)/[username]/(profile)/+page.svelte | 8 +++- .../(app)/[username]/card/[serial]/+page.svelte | 50 +++++++++++----------- src/routes/(app)/[username]/generate/+page.svelte | 8 ++-- .../(app)/[username]/invoice/[id]/+page.svelte | 4 +- src/routes/(app)/[username]/map/+page.svelte | 4 +- .../[username]/payments/[...page]/+page.server.js | 4 +- .../[username]/payments/[...page]/+page.svelte | 14 +++--- .../[username]/receive/[...param]/+page.svelte | 1 - .../[username]/settings/[...tab]/+page.svelte | 4 +- .../[username]/settings/[...tab]/_account.svelte | 36 +++++++++------- .../(app)/[username]/settings/[...tab]/_pos.svelte | 4 +- .../[username]/settings/[...tab]/_security.svelte | 6 +-- src/routes/(app)/login/+page.svelte | 2 +- src/routes/(app)/payment/[id]/+page.svelte | 6 +-- src/routes/(app)/pot/[name]/+page.svelte | 20 ++++----- src/routes/(app)/pot/[name]/sweep/+page.svelte | 31 +++++++------- src/routes/(app)/pot/[name]/withdraw/+page.svelte | 4 +- src/routes/(app)/qr/[text]/+page.svelte | 2 +- src/routes/(app)/send/invoice/[id]/+page.svelte | 2 +- src/routes/(static)/bounties/+page.svelte | 27 ++++++------ src/routes/(static)/docs/+page.svelte | 17 +++++--- src/routes/+layout.svelte | 4 +- src/routes/+page.svelte | 8 ++-- src/routes/map/+page.svelte | 4 +- 34 files changed, 173 insertions(+), 168 deletions(-) (limited to 'src/components') diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index 8f1fe947..798073fb 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -121,7 +121,7 @@
{:else} - + diff --git a/src/components/Balance.svelte b/src/components/Balance.svelte index 96edf630..0e4f2ec2 100644 --- a/src/components/Balance.svelte +++ b/src/components/Balance.svelte @@ -9,14 +9,14 @@ {#if show && user.haspin && $pin?.length !== 6} - (show = false)} /> + (show = false)} /> {/if}
{#if user.haspin && !$pin} (show = true)}>{$t('user.showBalance')} {:else}
diff --git a/src/components/Code.svelte b/src/components/Code.svelte index dd0cecf2..ffca98a4 100644 --- a/src/components/Code.svelte +++ b/src/components/Code.svelte @@ -9,9 +9,7 @@
{samples[sample]}
-
diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte index 9dfbc3de..eda26526 100644 --- a/src/components/Footer.svelte +++ b/src/components/Footer.svelte @@ -10,7 +10,7 @@ const companyLinks = [ { url: '/docs', titleID: 'documentation' }, - { url: '/support', titleID: 'support' }, + { url: '/support', titleID: 'support' } ]; diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index f927331c..7876659a 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -127,8 +127,8 @@ } :global(.maplibregl-ctrl-attrib) { - display: none; - } + display: none; + } :global(.maplibregl-popup-content) { padding: 0.5em 1em; diff --git a/src/components/RegisterOrLogin.svelte b/src/components/RegisterOrLogin.svelte index d8475340..57e0eeed 100644 --- a/src/components/RegisterOrLogin.svelte +++ b/src/components/RegisterOrLogin.svelte @@ -88,7 +88,11 @@ {/if}
- +
diff --git a/src/lib/invoice.js b/src/lib/invoice.js index 23ce1757..218972c6 100644 --- a/src/lib/invoice.js +++ b/src/lib/invoice.js @@ -21,16 +21,16 @@ export default async ({ cookies, request, url }) => { let user = { username: form.get('username'), currency: form.get('currency') }; invoice = await post('/invoice', { invoice, user }, auth(cookies)); - let { hash } = invoice; + let { id } = invoice; if (request_id) { if (url.pathname.endsWith('tip')) { - throw redirect(307, `/send/invoice/${hash}`); + throw redirect(307, `/send/invoice/${id}`); } throw redirect(307, `/${user.username}/request/${request_id}`); } - if (invoice.prompt) throw redirect(307, `/${user.username}/invoice/${hash}/tip`); - else throw redirect(307, `/${user.username}/invoice/${hash}`); + if (invoice.prompt) throw redirect(307, `/${user.username}/invoice/${id}/tip`); + else throw redirect(307, `/${user.username}/invoice/${id}`); }; diff --git a/src/lib/socket.js b/src/lib/socket.js index e8859fa6..96fde317 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -1,5 +1,5 @@ import { get } from 'svelte/store'; -import { event, invoice, request, newPayment, last, rate, payments, user } from '$lib/store'; +import { event, invoice, request, newPayment, last, rate, user } from '$lib/store'; import { success, sat } from '$lib/utils'; import { PUBLIC_SOCKET } from '$env/static/public'; import { invalidate } from '$app/navigation'; @@ -34,23 +34,13 @@ export const messages = (data) => ({ }, async payment() { - let { amount, invoice } = data; + let { amount, confirmed } = data; + invalidate('app:user'); invalidate('app:invoice'); - - let p = get(payments); - let i = p.findIndex((p) => p.id === data.id); - - if (~i) { - p[i] = data; - payments.set(p); - } else newPayment.set(true); - - invalidate((url) => url.pathname === '/payments'); + invalidate('app:payments'); if (amount > 0) { - success(`${data.confirmed ? 'Received' : 'Detected'} ${sat(amount)}!`); - } else { - // success(`Sent ${sat(amount)}!`); + success(`${confirmed ? 'Received' : 'Detected'} ${sat(amount)}!`); } }, diff --git a/src/lib/store.js b/src/lib/store.js index 923bda52..64cf015e 100644 --- a/src/lib/store.js +++ b/src/lib/store.js @@ -45,7 +45,6 @@ export const decrypted = persistLocal('decrypted', {}); export const newPayment = persistLocal('newPayment'); export const password = persistLocal('password'); export const passwordPrompt = writable(); -export const payments = persistLocal('transactions', []); export const pin = writable(); export const rate = writable(); export const request = writable(); diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index ed8a90f3..331161bb 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -51,16 +51,16 @@
diff --git a/src/routes/(app)/[username]/generate/+page.svelte b/src/routes/(app)/[username]/generate/+page.svelte index 33bf64c4..b9274434 100644 --- a/src/routes/(app)/[username]/generate/+page.svelte +++ b/src/routes/(app)/[username]/generate/+page.svelte @@ -14,10 +14,10 @@ let gen = async () => { if (!browser) return; - if (user.pubkey) { - goto($loginRedirect || `/${user.username}`, { invalidateAll: true }); - return; - } + if (user.pubkey) { + goto($loginRedirect || `/${user.username}`, { invalidateAll: true }); + return; + } if (!$password) $passwordPrompt = true; diff --git a/src/routes/(app)/[username]/invoice/[id]/+page.svelte b/src/routes/(app)/[username]/invoice/[id]/+page.svelte index 508550ba..2d204255 100644 --- a/src/routes/(app)/[username]/invoice/[id]/+page.svelte +++ b/src/routes/(app)/[username]/invoice/[id]/+page.svelte @@ -101,12 +101,12 @@ let toggleType = async () => { invoice.type = invoice.type === types.lightning ? types.bitcoin : types.lightning; - ({ hash } = await post(`/${username}/invoice`, { + ({ id } = await post(`/${username}/invoice`, { invoice, user: { username, currency } })); - goto(`./${hash}`, { invalidateAll: true }); + goto(`./${id}`, { invalidateAll: true }); }; diff --git a/src/routes/(app)/[username]/map/+page.svelte b/src/routes/(app)/[username]/map/+page.svelte index b5e4dfad..99c822d3 100644 --- a/src/routes/(app)/[username]/map/+page.svelte +++ b/src/routes/(app)/[username]/map/+page.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.server.js b/src/routes/(app)/[username]/payments/[...page]/+page.server.js index cb94d71d..a3b0ad6f 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.server.js +++ b/src/routes/(app)/[username]/payments/[...page]/+page.server.js @@ -2,7 +2,9 @@ import { get, auth } from '$lib/utils'; let limit = 25; -export async function load({ cookies, params, request }) { +export async function load({ cookies, depends, params, request }) { + depends('app:payments'); + let parts = params.page.split('/'); let start, end, page; diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte index 69f51f37..2ea225ad 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte +++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte @@ -2,7 +2,7 @@ import { Avatar, Icon } from '$comp'; import { onMount } from 'svelte'; import { format } from 'date-fns'; - import { newPayment, payments } from '$lib/store'; + import { newPayment } from '$lib/store'; import { t } from '$lib/translations'; import { get, f, s, sat, sats, types } from '$lib/utils'; import { page } from '$app/stores'; @@ -11,7 +11,7 @@ export let data; - let { start, end, user, rates } = data; + let { start, end, user, rates, payments } = data; let change = ({ target: { value } }) => goto(value); let link = (p) => { @@ -34,7 +34,7 @@ let p, totals, pages = []; - $: data && ({ page: p, pages, start, end, totals, payments: $payments } = data); + $: data && ({ page: p, pages, start, end, totals, payments } = data); $: $page && ($newPayment = false); $: $newPayment && invalidate(`/users/${user.username}`); @@ -136,7 +136,7 @@
- {#each $payments as p} + {#each payments as p}
@@ -216,7 +216,7 @@
- {$t('payments.total')} + {$t('payments.total')} {$t('payments.presentValue')} {$t('payments.gainLoss')} @@ -226,7 +226,9 @@ {@const gain = (pv * 100) / total - 100} {f(total, c)} {f(pv, c)} - {Math.abs(gain).toFixed(2)}% + {Math.abs(gain).toFixed(2)}% {/each}
diff --git a/src/routes/(app)/[username]/receive/[...param]/+page.svelte b/src/routes/(app)/[username]/receive/[...param]/+page.svelte index a97dc776..d7001079 100644 --- a/src/routes/(app)/[username]/receive/[...param]/+page.svelte +++ b/src/routes/(app)/[username]/receive/[...param]/+page.svelte @@ -5,7 +5,6 @@ import { page } from '$app/stores'; import { requestRedirect } from '$lib/store'; import { browser } from '$app/environment'; - import { goto } from '$app/navigation'; export let data; let type = 'lightning'; diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte index 842c2eba..762e836e 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte @@ -138,7 +138,9 @@
{#each tabs.filter((t) => t.name !== 'shopify') as { name, key }} - diff --git a/src/routes/(app)/[username]/settings/[...tab]/_account.svelte b/src/routes/(app)/[username]/settings/[...tab]/_account.svelte index 34399ad5..47c4c4c6 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_account.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_account.svelte @@ -64,28 +64,32 @@ $: url = `${$page.url.host}/${user.username}`; $: full = `${$page.url.protocol}//${url}`; - $: addr = `${user.username}@${$page.url.host}`; + $: addr = `${user.username}@${$page.url.host}`;
- -
@{$page.url.host}
-
- - - + +
+ @{$page.url.host} +
+
-
{$page.url.host}/
+
+ {$page.url.host}/ +
diff --git a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte index ef5b7869..057d8c20 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte @@ -33,7 +33,9 @@
- diff --git a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte index a08785f6..c01db734 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte @@ -52,12 +52,12 @@ return true; }; -let disablingPin = false; + let disablingPin = false; let togglePin = async () => { if (user.haspin) { try { - disablingPin = true; + disablingPin = true; await tick(); submit.click(); } catch (e) { @@ -122,7 +122,7 @@ let disablingPin = false; }; - + @@ -70,7 +70,7 @@ class="rounded-full border py-3 px-2 font-bold hover:opacity-80 flex gap-1 w-full justify-center" > - {$t('payments.takeFunds')} + {$t('payments.takeFunds')}
@@ -85,10 +85,10 @@
diff --git a/src/routes/(app)/pot/[name]/sweep/+page.svelte b/src/routes/(app)/pot/[name]/sweep/+page.svelte index 17d707cc..9b473af3 100644 --- a/src/routes/(app)/pot/[name]/sweep/+page.svelte +++ b/src/routes/(app)/pot/[name]/sweep/+page.svelte @@ -4,14 +4,13 @@ import { Icon } from '$comp'; import { t } from '$lib/translations'; - export let data; + export let data; - let { amount, name, user, rates } = data; - let { currency } = user; - $: rate = rates[currency]; + let { amount, name, user, rates } = data; + let { currency } = user; + $: rate = rates[currency]; -
-
- -
-

{$t('payments.fundsClaimed')}

-

- {f(fiat(amount, rate), currency)} -

-

- ⚡️{s(amount)} -

-
+
+ +
+

{$t('payments.fundsClaimed')}

+

+ {f(fiat(amount, rate), currency)} +

+

+ ⚡️{s(amount)} +

+
diff --git a/src/routes/(app)/pot/[name]/withdraw/+page.svelte b/src/routes/(app)/pot/[name]/withdraw/+page.svelte index da564709..7be643a9 100644 --- a/src/routes/(app)/pot/[name]/withdraw/+page.svelte +++ b/src/routes/(app)/pot/[name]/withdraw/+page.svelte @@ -9,7 +9,7 @@ export let data; export let form; - let { rates } = data; + let { rates } = data; let { amount, name } = $page.params; let { currency } = data.user; let loading; @@ -35,7 +35,7 @@ {/if}
- + diff --git a/src/routes/(app)/qr/[text]/+page.svelte b/src/routes/(app)/qr/[text]/+page.svelte index d903da0e..9e56ab29 100644 --- a/src/routes/(app)/qr/[text]/+page.svelte +++ b/src/routes/(app)/qr/[text]/+page.svelte @@ -7,5 +7,5 @@
- {text} + {text}
diff --git a/src/routes/(app)/send/invoice/[id]/+page.svelte b/src/routes/(app)/send/invoice/[id]/+page.svelte index a71c697a..a558895c 100644 --- a/src/routes/(app)/send/invoice/[id]/+page.svelte +++ b/src/routes/(app)/send/invoice/[id]/+page.svelte @@ -29,7 +29,7 @@ let external = async () => { let invoice = { type: 'lightning', amount, currency }; - let {id }= await post(`/${recipient.username}/invoice`, { + let { id } = await post(`/${recipient.username}/invoice`, { invoice, user: { username: recipient.username } }); diff --git a/src/routes/(static)/bounties/+page.svelte b/src/routes/(static)/bounties/+page.svelte index b2f86964..729cf5dd 100644 --- a/src/routes/(static)/bounties/+page.svelte +++ b/src/routes/(static)/bounties/+page.svelte @@ -2,14 +2,14 @@

Bounties

- We're offering ⚡️1,000,000 to the first 10 people that help us onboard these businesses in Vancouver - to take bitcoin payments. + We're offering ⚡️1,000,000 to the first 10 people that help us onboard these businesses in + Vancouver to take bitcoin payments.

-

- Eligible businesses: -

+

Eligible businesses:

    -
  • Have a physical location in Vancouver, North Vancouver, West Vancouver, Burnaby, New +
  • + Have a physical location in Vancouver, North Vancouver, West Vancouver, Burnaby, New Westminster, or Richmond
  • -
  • Take walk-in customers
  • +
  • Take walk-in customers
  • Have regular hours and a website with contact info
  • Have a 3 star or better rating on Google
  • @@ -53,14 +52,12 @@
  • Use Coinos
-

Each business category can be claimed only once

-

One bounty per person

+

Each business category can be claimed only once

+

One bounty per person

The businesses can expect free ongoing support and promotion from us and our community.

-

- The prize money will be offered to the person who makes the referral. -

+

The prize money will be offered to the person who makes the referral.

⚡️250,000 will be awarded once the business has met with us and is ready to take payments diff --git a/src/routes/(static)/docs/+page.svelte b/src/routes/(static)/docs/+page.svelte index 86be02f0..63173173 100644 --- a/src/routes/(static)/docs/+page.svelte +++ b/src/routes/(static)/docs/+page.svelte @@ -14,7 +14,10 @@

Coinos has a simple REST API that can be used to register accounts and make payments and - queries. The following examples show how you can call the API with curl from your command line. + queries. The following examples show how you can call the API with curl from your command line.

API Base URL

@@ -30,10 +33,11 @@ {#if user && token} This token authorizes you to use the API as {user.username}. {:else} - Sign in to view your auth token here, or get one from the /login endpoint. + Sign in to view your auth token here, or get one from the + /login endpoint. {/if} - Save it in a variable called $token to run the examples. + Save it in a variable called $token to run the examples.

@@ -68,18 +72,17 @@
-

Get a lightning invoice to receive funds

+

Get a lightning invoice to receive funds

-

Get a bitcoin address to receive funds

+

Get a bitcoin address to receive funds

Sample response

You can check the received field to see how much has been paid

- -

Specify a webhook to be called when an invoice is paid

+

Specify a webhook to be called when an invoice is paid

GET /invoice/:hash

diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 6dc84349..7e9cb755 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,8 +1,8 @@ diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ab49f91d..ec9f55b7 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -20,11 +20,11 @@ $: update(data); let howItWorks; - let faq; + let faq; let about; let log = console.log; - let faqs = {}; + let faqs = {}; const howItWorksSteps = [ { image: 'hand', stepID: 'step1' }, @@ -33,7 +33,7 @@ ]; onMount(async () => { - faqs = (await import('../locales/en.json')).default.faq; + faqs = (await import('../locales/en.json')).default.faq; close(); @@ -90,7 +90,7 @@

{$t('faq.header')}

- {#each Object.keys(faqs).filter(f => f !== "header") as faqID} + {#each Object.keys(faqs).filter((f) => f !== 'header') as faqID} {/each}
diff --git a/src/routes/map/+page.svelte b/src/routes/map/+page.svelte index b5e4dfad..99c822d3 100644 --- a/src/routes/map/+page.svelte +++ b/src/routes/map/+page.svelte @@ -1,6 +1,6 @@ -- cgit v1.2.3