Browse Source

Can fetch balance from mem.space

watchonly
benarc 4 years ago
parent
commit
257c9c1c64
  1. 108
      Pipfile.lock
  2. 1
      lnbits/extensions/watchonly/crud.py
  3. 46
      lnbits/extensions/watchonly/templates/watchonly/index.html
  4. 20
      lnbits/extensions/watchonly/views_api.py

108
Pipfile.lock

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "4e34dce2635dc6cc5260a95c959810b290aabaa772a1fe7a9ce02b23fea440c9" "sha256": "9e5dd461dc1a7d645f089c7e7a67fb7bfaf47273eaf2ebadbdb60234bfb34710"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -28,7 +28,6 @@
"sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b", "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b",
"sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144" "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"
], ],
"markers": "python_version >= '3.5'",
"version": "==1.10" "version": "==1.10"
}, },
"attrs": { "attrs": {
@ -36,7 +35,6 @@
"sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6",
"sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==20.3.0" "version": "==20.3.0"
}, },
"bech32": { "bech32": {
@ -44,7 +42,6 @@
"sha256:7d6db8214603bd7871fcfa6c0826ef68b85b0abd90fa21c285a9c5e21d2bd899", "sha256:7d6db8214603bd7871fcfa6c0826ef68b85b0abd90fa21c285a9c5e21d2bd899",
"sha256:990dc8e5a5e4feabbdf55207b5315fdd9b73db40be294a19b3752cde9e79d981" "sha256:990dc8e5a5e4feabbdf55207b5315fdd9b73db40be294a19b3752cde9e79d981"
], ],
"markers": "python_version >= '3.5'",
"version": "==1.2.0" "version": "==1.2.0"
}, },
"bitstring": { "bitstring": {
@ -114,7 +111,6 @@
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==7.1.2" "version": "==7.1.2"
}, },
"ecdsa": { "ecdsa": {
@ -125,6 +121,13 @@
"index": "pypi", "index": "pypi",
"version": "==0.16.1" "version": "==0.16.1"
}, },
"embit": {
"hashes": [
"sha256:d88e74eafdd26280c298bb572ac28e7913abbc2c91e99df0ebb9139c626bc4d3"
],
"index": "pypi",
"version": "==0.1.2"
},
"environs": { "environs": {
"hashes": [ "hashes": [
"sha256:10dca340bff9c912e99d237905909390365e32723c2785a9f3afa6ef426c53bc", "sha256:10dca340bff9c912e99d237905909390365e32723c2785a9f3afa6ef426c53bc",
@ -145,7 +148,6 @@
"sha256:ac9e293a1990b339d5d71b19c5fe630e3dd4d768c620d1730d355485323f1b25", "sha256:ac9e293a1990b339d5d71b19c5fe630e3dd4d768c620d1730d355485323f1b25",
"sha256:bb7ac7099dd67a857ed52c815a6192b6b1f5ba6b516237fc24a085341340593d" "sha256:bb7ac7099dd67a857ed52c815a6192b6b1f5ba6b516237fc24a085341340593d"
], ],
"markers": "python_full_version >= '3.6.1'",
"version": "==4.0.0" "version": "==4.0.0"
}, },
"hpack": { "hpack": {
@ -153,7 +155,6 @@
"sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c",
"sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095" "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"
], ],
"markers": "python_full_version >= '3.6.1'",
"version": "==4.0.0" "version": "==4.0.0"
}, },
"httpcore": { "httpcore": {
@ -161,7 +162,6 @@
"sha256:420700af11db658c782f7e8fda34f9dcd95e3ee93944dd97d78cb70247e0cd06", "sha256:420700af11db658c782f7e8fda34f9dcd95e3ee93944dd97d78cb70247e0cd06",
"sha256:dd1d762d4f7c2702149d06be2597c35fb154c5eff9789a8c5823fbcf4d2978d6" "sha256:dd1d762d4f7c2702149d06be2597c35fb154c5eff9789a8c5823fbcf4d2978d6"
], ],
"markers": "python_version >= '3.6'",
"version": "==0.12.2" "version": "==0.12.2"
}, },
"httpx": { "httpx": {
@ -173,9 +173,6 @@
"version": "==0.16.1" "version": "==0.16.1"
}, },
"hypercorn": { "hypercorn": {
"extras": [
"trio"
],
"hashes": [ "hashes": [
"sha256:81c69dd84a87b8e8b3ebf06ef5dd92836a8238f0ac65ded3d86befb8ba9acfeb", "sha256:81c69dd84a87b8e8b3ebf06ef5dd92836a8238f0ac65ded3d86befb8ba9acfeb",
"sha256:e3f317d6d64d15ce589f49e4f5057947259fa35332d169e62cb060e9997189e4" "sha256:e3f317d6d64d15ce589f49e4f5057947259fa35332d169e62cb060e9997189e4"
@ -188,7 +185,6 @@
"sha256:742d2a4bc3152a340a49d59f32e33ec420aa8e7054c1444ef5c7efff255842f1", "sha256:742d2a4bc3152a340a49d59f32e33ec420aa8e7054c1444ef5c7efff255842f1",
"sha256:a51026b1591cac726fc3d0b7994fbc7dc5efab861ef38503face2930fd7b2d34" "sha256:a51026b1591cac726fc3d0b7994fbc7dc5efab861ef38503face2930fd7b2d34"
], ],
"markers": "python_full_version >= '3.6.1'",
"version": "==6.0.0" "version": "==6.0.0"
}, },
"idna": { "idna": {
@ -203,7 +199,6 @@
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
"sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.1.0" "version": "==1.1.0"
}, },
"jinja2": { "jinja2": {
@ -211,7 +206,6 @@
"sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0",
"sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==2.11.2" "version": "==2.11.2"
}, },
"lnurl": { "lnurl": {
@ -257,7 +251,6 @@
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7",
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.1.1" "version": "==1.1.1"
}, },
"marshmallow": { "marshmallow": {
@ -265,7 +258,6 @@
"sha256:73facc37462dfc0b27f571bdaffbef7709e19f7a616beb3802ea425b07843f4e", "sha256:73facc37462dfc0b27f571bdaffbef7709e19f7a616beb3802ea425b07843f4e",
"sha256:e26763201474b588d144dae9a32bdd945cd26a06c943bc746a6882e850475378" "sha256:e26763201474b588d144dae9a32bdd945cd26a06c943bc746a6882e850475378"
], ],
"markers": "python_version >= '3.5'",
"version": "==3.9.1" "version": "==3.9.1"
}, },
"outcome": { "outcome": {
@ -273,7 +265,6 @@
"sha256:c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958", "sha256:c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958",
"sha256:e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967" "sha256:e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967"
], ],
"markers": "python_version >= '3.6'",
"version": "==1.1.0" "version": "==1.1.0"
}, },
"priority": { "priority": {
@ -285,31 +276,30 @@
}, },
"pydantic": { "pydantic": {
"hashes": [ "hashes": [
"sha256:01f0291f4951580f320f7ae3f2ecaf0044cdebcc9b45c5f882a7e84453362420", "sha256:025bf13ce27990acc059d0c5be46f416fc9b293f45363b3d19855165fee1874f",
"sha256:0fe8b45d31ae53d74a6aa0bf801587bd49970070eac6a6326f9fa2a302703b8a", "sha256:185e18134bec5ef43351149fe34fda4758e53d05bb8ea4d5928f0720997b79ef",
"sha256:2182ba2a9290964b278bcc07a8d24207de709125d520efec9ad6fa6f92ee058d", "sha256:213125b7e9e64713d16d988d10997dabc6a1f73f3991e1ff8e35ebb1409c7dc9",
"sha256:2c1673633ad1eea78b1c5c420a47cd48717d2ef214c8230d96ca2591e9e00958", "sha256:24ca47365be2a5a3cc3f4a26dcc755bcdc9f0036f55dcedbd55663662ba145ec",
"sha256:388c0c26c574ff49bad7d0fd6ed82fbccd86a0473fa3900397d3354c533d6ebb", "sha256:38be427ea01a78206bcaf9a56f835784afcba9e5b88fbdce33bbbfbcd7841229",
"sha256:4ba6b903e1b7bd3eb5df0e78d7364b7e831ed8b4cd781ebc3c4f1077fbcb72a4", "sha256:475f2fa134cf272d6631072554f845d0630907fce053926ff634cc6bc45bf1af",
"sha256:6665f7ab7fbbf4d3c1040925ff4d42d7549a8c15fe041164adfe4fc2134d4cce", "sha256:514b473d264671a5c672dfb28bdfe1bf1afd390f6b206aa2ec9fed7fc592c48e",
"sha256:95d4410c4e429480c736bba0db6cce5aaa311304aea685ebcf9ee47571bfd7c8", "sha256:59e45f3b694b05a69032a0d603c32d453a23f0de80844fb14d55ab0c6c78ff2f",
"sha256:a2fc7bf77ed4a7a961d7684afe177ff59971828141e608f142e4af858e07dddc", "sha256:5b24e8a572e4b4c18f614004dda8c9f2c07328cb5b6e314d6e1bbd536cb1a6c1",
"sha256:a3c274c49930dc047a75ecc865e435f3df89715c775db75ddb0186804d9b04d0", "sha256:6e3874aa7e8babd37b40c4504e3a94cc2023696ced5a0500949f3347664ff8e2",
"sha256:ab1d5e4d8de00575957e1c982b951bffaedd3204ddd24694e3baca3332e53a23", "sha256:8d72e814c7821125b16f1553124d12faba88e85405b0864328899aceaad7282b",
"sha256:b11fc9530bf0698c8014b2bdb3bbc50243e82a7fa2577c8cfba660bcc819e768", "sha256:a4143c8d0c456a093387b96e0f5ee941a950992904d88bc816b4f0e72c9a0009",
"sha256:b9572c0db13c8658b4a4cb705dcaae6983aeb9842248b36761b3fbc9010b740f", "sha256:b2b054d095b6431cdda2f852a6d2f0fdec77686b305c57961b4c5dd6d863bf3c",
"sha256:c68b5edf4da53c98bb1ccb556ae8f655575cb2e676aef066c12b08c724a3f1a1", "sha256:c59ea046aea25be14dc22d69c97bee629e6d48d2b2ecb724d7fe8806bf5f61cd",
"sha256:c8200aecbd1fb914e1bd061d71a4d1d79ecb553165296af0c14989b89e90d09b", "sha256:d1fe3f0df8ac0f3a9792666c69a7cd70530f329036426d06b4f899c025aca74e",
"sha256:c9760d1556ec59ff745f88269a8f357e2b7afc75c556b3a87b8dda5bc62da8ba", "sha256:d8df4b9090b595511906fa48deda47af04e7d092318bfb291f4d45dfb6bb2127",
"sha256:ce2d452961352ba229fe1e0b925b41c0c37128f08dddb788d0fd73fd87ea0f66", "sha256:dba5c1f0a3aeea5083e75db9660935da90216f8a81b6d68e67f54e135ed5eb23",
"sha256:dfaa6ed1d509b5aef4142084206584280bb6e9014f01df931ec6febdad5b200a", "sha256:e682f6442ebe4e50cb5e1cfde7dda6766fb586631c3e5569f6aa1951fd1a76ef",
"sha256:e5fece30e80087d9b7986104e2ac150647ec1658c4789c89893b03b100ca3164", "sha256:ecb54491f98544c12c66ff3d15e701612fc388161fd455242447083350904730",
"sha256:f045cf7afb3352a03bc6cb993578a34560ac24c5d004fa33c76efec6ada1361a", "sha256:f5b06f5099e163295b8ff5b1b71132ecf5866cc6e7f586d78d7d3fd6e8084608",
"sha256:f83f679e727742b0c465e7ef992d6da4a7e5268b8edd8fdaf5303276374bef52", "sha256:f6864844b039805add62ebe8a8c676286340ba0c6d043ae5dea24114b82a319e",
"sha256:fc21a37ff3f545de80b166e1735c4172b41b017948a3fb2d5e2f03c219eac50a" "sha256:ffd180ebd5dd2a9ac0da4e8b995c9c99e7c74c31f985ba090ee01d681b1c4b95"
], ],
"markers": "python_version >= '3.6'", "version": "==1.7.3"
"version": "==1.7.2"
}, },
"pyscss": { "pyscss": {
"hashes": [ "hashes": [
@ -365,9 +355,6 @@
"version": "==1.6.0" "version": "==1.6.0"
}, },
"rfc3986": { "rfc3986": {
"extras": [
"idna2008"
],
"hashes": [ "hashes": [
"sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d",
"sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50"
@ -395,7 +382,6 @@
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.15.0" "version": "==1.15.0"
}, },
"sniffio": { "sniffio": {
@ -403,7 +389,6 @@
"sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663",
"sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de" "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"
], ],
"markers": "python_version >= '3.5'",
"version": "==1.2.0" "version": "==1.2.0"
}, },
"sortedcontainers": { "sortedcontainers": {
@ -454,7 +439,6 @@
"sha256:f605f348f4e6a2ba00acb3399c71d213b92f27f2383fc4abebf7a37368c12142", "sha256:f605f348f4e6a2ba00acb3399c71d213b92f27f2383fc4abebf7a37368c12142",
"sha256:fcdb3755a7c355bc29df1b5e6fb8226d5c8b90551d202d69d0076a8a5649d68b" "sha256:fcdb3755a7c355bc29df1b5e6fb8226d5c8b90551d202d69d0076a8a5649d68b"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.3.20" "version": "==1.3.20"
}, },
"sqlalchemy-aio": { "sqlalchemy-aio": {
@ -470,7 +454,6 @@
"sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b",
"sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
], ],
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'",
"version": "==0.10.2" "version": "==0.10.2"
}, },
"trio": { "trio": {
@ -495,7 +478,6 @@
"sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43", "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43",
"sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c" "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==1.0.1" "version": "==1.0.1"
}, },
"wsproto": { "wsproto": {
@ -503,7 +485,6 @@
"sha256:868776f8456997ad0d9720f7322b746bbe9193751b5b290b7f924659377c8c38", "sha256:868776f8456997ad0d9720f7322b746bbe9193751b5b290b7f924659377c8c38",
"sha256:d8345d1808dd599b5ffb352c25a367adb6157e664e140dbecba3f9bc007edb9f" "sha256:d8345d1808dd599b5ffb352c25a367adb6157e664e140dbecba3f9bc007edb9f"
], ],
"markers": "python_full_version >= '3.6.1'",
"version": "==1.0.0" "version": "==1.0.0"
} }
}, },
@ -520,7 +501,6 @@
"sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b", "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b",
"sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144" "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"
], ],
"markers": "python_version >= '3.5'",
"version": "==1.10" "version": "==1.10"
}, },
"attrs": { "attrs": {
@ -528,7 +508,6 @@
"sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6",
"sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==20.3.0" "version": "==20.3.0"
}, },
"black": { "black": {
@ -543,7 +522,6 @@
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==7.1.2" "version": "==7.1.2"
}, },
"coverage": { "coverage": {
@ -583,7 +561,6 @@
"sha256:cedb2f9e1f990918ea061f28a0f0077a07702e3819602d3507e2ff98c8d20636", "sha256:cedb2f9e1f990918ea061f28a0f0077a07702e3819602d3507e2ff98c8d20636",
"sha256:e8caf961e1b1a945db76f1b5fa9c91498d15f545ac0ababbe575cfab185d3bd8" "sha256:e8caf961e1b1a945db76f1b5fa9c91498d15f545ac0ababbe575cfab185d3bd8"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
"version": "==5.3" "version": "==5.3"
}, },
"idna": { "idna": {
@ -632,16 +609,14 @@
"sha256:c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958", "sha256:c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958",
"sha256:e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967" "sha256:e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967"
], ],
"markers": "python_version >= '3.6'",
"version": "==1.1.0" "version": "==1.1.0"
}, },
"packaging": { "packaging": {
"hashes": [ "hashes": [
"sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8", "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236",
"sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181" "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==20.7"
"version": "==20.4"
}, },
"pathspec": { "pathspec": {
"hashes": [ "hashes": [
@ -655,7 +630,6 @@
"sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
"sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==0.13.1" "version": "==0.13.1"
}, },
"py": { "py": {
@ -663,7 +637,6 @@
"sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2",
"sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"
], ],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.9.0" "version": "==1.9.0"
}, },
"pyparsing": { "pyparsing": {
@ -671,7 +644,6 @@
"sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
"sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
], ],
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'",
"version": "==2.4.7" "version": "==2.4.7"
}, },
"pytest": { "pytest": {
@ -743,20 +715,11 @@
], ],
"version": "==2020.11.13" "version": "==2020.11.13"
}, },
"six": {
"hashes": [
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
"version": "==1.15.0"
},
"sniffio": { "sniffio": {
"hashes": [ "hashes": [
"sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663",
"sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de" "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"
], ],
"markers": "python_version >= '3.5'",
"version": "==1.2.0" "version": "==1.2.0"
}, },
"sortedcontainers": { "sortedcontainers": {
@ -771,7 +734,6 @@
"sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b",
"sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
], ],
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'",
"version": "==0.10.2" "version": "==0.10.2"
}, },
"trio": { "trio": {

1
lnbits/extensions/watchonly/crud.py

@ -137,7 +137,6 @@ async def get_payment(payment_id: str) -> Payments:
async def get_payments(user: str) -> List[Payments]: async def get_payments(user: str) -> List[Payments]:
rows = await db.fetchall("SELECT * FROM payments WHERE user = ?", (user,)) rows = await db.fetchall("SELECT * FROM payments WHERE user = ?", (user,))
print(rows[0])
return [Payments.from_row(row) for row in rows] return [Payments.from_row(row) for row in rows]

46
lnbits/extensions/watchonly/templates/watchonly/index.html

@ -6,7 +6,7 @@
<q-card-section> <q-card-section>
{% raw %} {% raw %}
<q-btn unelevated color="deep-purple" @click="formDialog.show = true" <q-btn unelevated color="deep-purple" @click="formDialog.show = true"
>New wallet</q-btn >New wallet </q-btn
> >
<q-btn unelevated color="deep-purple" <q-btn unelevated color="deep-purple"
icon="edit"> icon="edit">
@ -424,6 +424,7 @@
</style> </style>
<script> <script>
Vue.component(VueQrcode.name, VueQrcode) Vue.component(VueQrcode.name, VueQrcode)
Vue.filter('reverse', function(value) { Vue.filter('reverse', function(value) {
// slice to make a copy of array, then reverse the copy // slice to make a copy of array, then reverse the copy
return value.slice().reverse(); return value.slice().reverse();
@ -459,6 +460,7 @@
data: function () { data: function () {
return { return {
filter: '', filter: '',
balance: null,
checker: null, checker: null,
walletLinks: [], walletLinks: [],
paymentLinks: [], paymentLinks: [],
@ -511,6 +513,18 @@
label: 'Amount', label: 'Amount',
field: 'amount' field: 'amount'
}, },
{
name: 'balance',
align: 'left',
label: 'Paid',
field: 'getAddressBalance("1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC")'
},
{
name: 'address',
align: 'left',
label: 'Address',
field: 'address'
},
{ {
name: 'time to pay', name: 'time to pay',
align: 'left', align: 'left',
@ -561,8 +575,10 @@
} }
} }
}, },
methods: { methods: {
getAddresses: function (walletID) { getAddresses: function (walletID) {
var self = this var self = this
@ -639,8 +655,6 @@
LNbits.utils.notifyApiError(error) LNbits.utils.notifyApiError(error)
}) })
}, },
getWalletLinks: function () { getWalletLinks: function () {
var self = this var self = this
@ -691,6 +705,7 @@
getPayments: function () { getPayments: function () {
var self = this var self = this
var getAddressBalance = this.getAddressBalance
LNbits.api LNbits.api
.request( .request(
@ -709,10 +724,12 @@
else{ else{
response.data[i].timeleft = timeleft response.data[i].timeleft = timeleft
} }
getAddressBalance("1wizSAYSbuyXbt9d8JV8ytm5acqq2TorC")
console.log(this.balance)
response.data[i].balance = this.balance
} }
console.log(response.data)
self.paymentLinks = response.data.map(function (obj) { self.paymentLinks = response.data.map(function (obj) {
console.log(mapPayment(obj))
return mapPayment(obj) return mapPayment(obj)
}) })
}) })
@ -726,7 +743,6 @@
var data = self.formDialogPayment.data var data = self.formDialogPayment.data
data.amount = parseInt(data.amount) data.amount = parseInt(data.amount)
data.time = parseInt(data.time) data.time = parseInt(data.time)
console.log(data)
if (data.id) { if (data.id) {
this.updatePayment(wallet, data) this.updatePayment(wallet, data)
} else { } else {
@ -760,7 +776,6 @@
.then(function (response) { .then(function (response) {
self.paymentLinks.push(mapPayment(response.data)) self.paymentLinks.push(mapPayment(response.data))
self.formDialogPayment.show = false self.formDialogPayment.show = false
console.log(response.data)
}) })
.catch(function (error) { .catch(function (error) {
LNbits.utils.notifyApiError(error) LNbits.utils.notifyApiError(error)
@ -789,7 +804,24 @@
}) })
}) })
}, },
getAddressBalance: function (address) {
var self = this
LNbits.api
.request(
'GET',
'/watchonly/api/v1/mempool/' + address,
this.g.user.wallets[0].inkey
)
.then(function (response) {
this.balance = response.data.balance
console.log(this.balance)
})
.catch(function (error) {
LNbits.utils.notifyApiError(error)
})
},
updateWalletLink: function (wallet, data) { updateWalletLink: function (wallet, data) {
var self = this var self = this

20
lnbits/extensions/watchonly/views_api.py

@ -2,6 +2,7 @@ import hashlib
from quart import g, jsonify, request, url_for from quart import g, jsonify, request, url_for
from http import HTTPStatus from http import HTTPStatus
import httpx import httpx
import requests
from lnbits.core.crud import get_user from lnbits.core.crud import get_user
from lnbits.decorators import api_check_wallet_key, api_validate_post_request from lnbits.decorators import api_check_wallet_key, api_validate_post_request
@ -125,8 +126,8 @@ async def api_payments_retrieve():
print(payments) print(payments)
if not payments: if not payments:
return ( return (
jsonify({"message": "Cant fetch."}), jsonify(""),
HTTPStatus.UPGRADE_REQUIRED, HTTPStatus.OK
) )
else: else:
return jsonify([payment._asdict() for payment in payments]), HTTPStatus.OK return jsonify([payment._asdict() for payment in payments]), HTTPStatus.OK
@ -202,13 +203,8 @@ async def api_get_mempool():
@api_check_wallet_key("invoice") @api_check_wallet_key("invoice")
async def api_get_mempool_address_balance(address): async def api_get_mempool_address_balance(address):
mempool = await get_mempool(g.wallet.user) mempool = await get_mempool(g.wallet.user)
async with httpx.AsyncClient() as client: print(mempool.endpoint)
try: r = requests.get(mempool.endpoint + "/api/address/" + address)
r = await client.get( balance = r.json()['chain_stats']['funded_txo_sum'] - r.json()['chain_stats']['spent_txo_sum']
mempool.endpoint + "/" + address,
timeout=40, return jsonify({"balance":balance}), HTTPStatus.OK
)
print(r)
except AssertionError:
webhook = None
return jsonify(mempool._asdict()), HTTPStatus.OK
Loading…
Cancel
Save