From 6b9af3ed3233865e4c92abc6cd33e3586e0f88a8 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Mon, 27 Dec 2021 19:10:57 -0600 Subject: [PATCH] Integrate new donation server. Basic sponsor modal --- client/assets/icon-200.png | Bin 0 -> 1574 bytes client/assets/icon-800.png | Bin 0 -> 6068 bytes client/assets/icon.png | Bin 0 -> 2920 bytes client/src/components/DonationOverlay.svelte | 458 ++++++++++++++++++ client/src/components/LightningOverlay.svelte | 4 +- client/src/components/TxViz.svelte | 4 +- client/src/config.js | 5 +- client/src/stores.js | 2 +- client/src/utils/format.js | 4 +- 9 files changed, 467 insertions(+), 10 deletions(-) create mode 100644 client/assets/icon-200.png create mode 100644 client/assets/icon-800.png create mode 100644 client/assets/icon.png create mode 100644 client/src/components/DonationOverlay.svelte diff --git a/client/assets/icon-200.png b/client/assets/icon-200.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc5ba4ec0e37e55fa4775e165a4261b573fa663 GIT binary patch literal 1574 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yu@pObhHwBu4M$1`kk47*5n0T@ zz}gGKjFYBHy#NYImbgZg1m~xflqVLYGL)B>>t*I;7bhncr0V4trO$q6BL!5w*we)^ zq+-t7yY}5_UnP$}{QdpR=bq-49U5IuOo z?B7iLE~mX?TwvVjpdi4(!UUrdtiLnN$?aM7c1CsAo0Ry{U60f=nKE-it{yyiCpcw! z|M#ycmr8{^k{5s5di%@0pMJ+y2&W4?+aMXb`(pL`-)Ud?Dzq9+%(AY0TTrg>_~RYn zIr>1Z+tqD9YmZHx@4#~D){0xE{3*eDmu8-n2;Ke6d(GKX{)#{guI&3On3(e)hZqP-9xifA&`G_s$A)bHzTY)ZS&ebYsQ8_erMp()C6_#~fRc`B& zIf@H;jqDpuzCBq#YX{rR$qrJ#UwZ%kbv1i=alhc-&!;E<`aSpA@|~POhdwNecfWlv zeM0)I^X6BpF2}e2dp&()gXD4npi6!{UGrBeg>!$icQ&W>eGPA&v`r0m(*i%T=v~^K zUDpuzTQE$aw|8THy;S5+P8Wr{ruK~`@5@167Ap`gHTl0Fd(~EbMe$tD_m;W|M?B{^ zN=YyNFI8V6U!c@jvTgk>^Z0{ntogmyT${FG-}eO*e(F5vctri*4rKmA7A0_$T9?;kly`N0`#?wjOcVSNk~q>xZ@G`dQPKe>xoh zr)+Oy&%fRGh1N}8w&6(DnrfNQ*ZbKDXK&xQvElcgv-UIR`zZAOeSL7*U&UYF_TKyK zo7#Ex#(w#8wg>-z`?=BK!6hN2l!=;7vGDeJ=D&G&eeu69p6`=y%>DiP-xFYX)c!fT z;{KhQw0DMjTko~2&zOltBRuiL#yvnxA`vd{Bc2ee|&xEJIzIBm(RcY z?3{RdUVmfF=hO4AAKrfN&wl=+^?x5+-@p3peY;uJJ;jB;9u z_EtVC^VT6H2rzttlDA>r!xU`#QGY41tMGfB?eA~Zz(gr~XP4}D?v`TXKKZK;&+b2G zdrSqz%Z+A{=uW~ z(SOhTbp@;Y*4^K+B2sTDFk+78-mU+~zCCaL&fGh{SN;8Sn?LX9TW}f4J&RTBxDYq0 cY5y6EC$H38Sb2B_uuNz0boFyt=akR{0FC9Xi2wiq literal 0 HcmV?d00001 diff --git a/client/assets/icon-800.png b/client/assets/icon-800.png new file mode 100644 index 0000000000000000000000000000000000000000..345c535ff7d5eb746abab1631ab1052b3d06b190 GIT binary patch literal 6068 zcmeHLZBSEJ8a_8430)9Z3sNT!)fK?{X2}udXEr8jRt*M#G3r`uU)QJo&D_fz^`A7IPAS_x@OIuFTF1R z<7&iw-nZw&OFNZ&;@6GsE1=g;ojcL;)Va5(*b|BSE!VH~j(>kMA#)%xyWHXY>G>Ka z0Nk_#VhBdziO~Rfm4O3L;>`y@5XY#5-s_I5}J2C$o6@qF<8s^G$hn!kfk*%AJFr)}w0}Za5bxX{znt z4aDd^c=PsBKDg5|g_Z9oKuH5l8+7j&+lRx2gQgw-dU8x!wi-rB|2JJ!3S-aKvCgg% z6bg0`;CA0jJIfN?;tSD|Ok7hB8EbCcglU(Qg_D@ZTYKK}_UWEx6`^1OI!rp^x08%E zK0NF-co-rwnWG7TVWYnu-BA&o)7!>g^eUU>C2KJX%ye z9;_D@AS@*fO!nX_WWdZM@hOAIkF%77)1QAcbS*AK*Im}Bu263dd7YhZql^9yfsgtG zPH1o~2ct=ig>No6d6IoFVxMK|hc1!OHTNx#CrQ8+LcWRcQ~4n_nOu4M=5@Y^ zo*lJAGuE!Epn`Z6z%C`SeNv@v=#oGCU2jI3EuqYtoMMWNbv{BrdyRQEy^u@pO5RQ* z=~b6T*Ofs`BugQ5nqm_KW(bNhX>VLuR#<_Uc6j33q>T8^1Um*q#Vf=_$`Q=94~oZW zYiwpSq+>UtBOyd(a1jvFd!I(;I0eCDka_!qq=_lS*OFBA{7|}UO#g!igGA(cIfWI$ zJ&q{POpdN=!gk?^(U3$*6P+Rj##4IrZaG8hr{ZZu-g8+R24b?l)xOzC?ZS7czxegz zu0Sz2vfYq$rGzZ)Vj=}$bY(1&;trQF%Fap`EqFitqd>KE?K}$Ka`!kRu)2|DK@~!#?@T8#$|?pzMv?5 z-$q|D8JRZg#Z`g=a$^m2YDM!62L97M8YRU6Y{UXQNxy(*C+C6C$WK+h-L z8!%^M{jG?+F8U5BX-ghSex^D98OO461BaY?kWjEMPyuJ>*Pmo+w+cyJHID{GL2t~= zZ$6NMKSPqvzTgPfzY{=}nph_|xE>m9{8#%!o5++ z1!-pLAdR2mEYkJkK7m96lv)N9H{GSlnjt1t*q~8=v0sdzQ+m2@AXWdpQyc2Cf9o}9 zLEqXi;+nzX3y{-0YWq!A#t9I6IYZG7P(a)`gOE_*;=BQ(B5LT`;7J6%81S{zd zFy$u^ND5%@6I#TMK=ZOu|G7y8)|O)!Kec+;lGsTV+Oe3->dC9T{BCzHT54>3c-(97 z1p}N4{GR56=_&&FqpJUT%_t9y!e)2JdcDVdK~i=MdQ->;n)A~vlw2U`^a%vY-o{=s zc6gbT35n)#%hleag~R`Z^|?D4z|R7*ygeA)h5m*n&`LXj&*b6|M%Z9ywZjmG5Qs#Q%?h2h*kG^Q6)=I)ba+7c>OtI+9!Y>lwbC16uS zlg>A)Q+dy2hgLQAWH@xWF|}a}O8e%)P^+2lFAJ2!=GfJijD@|2cwW#WW`{$}=K5X| zH_^LFq=f@8Yoj-dS1H&&dbA}|$9kAp82Ke=i8Edk8hLE zxzZ7sr@^5^Z`npJZikaeN8U&qK{uj)QKQ?4yDHXni|qt!gc~7Jc>@2)Tn!o1YMo*! zHbSN*l=c;aQINQjxevgQoAZIpqCo7F%vn>rp9eBWUoJEiUjhJ81oHs4KnB4rs8PUQ zyEyom5YkeS1AyVd&DsFV_$PNi8a&x%&v;%;^N&P%wB%-Nci@0i&txxV?!T$p+KHHvs;(p+QdN7YQx zvcmxs|FnE1o0RA?XWzQ_VG`^$i`8MVGA?$7-`6Jfmb)xiIKFs4F00uTNzcidTTH|toGFWW;`noxLtHak{-j*d?%CF4HZJnP^o-&>ie+K(l zpyV;!>*7&p@fi4jcLdg3KK3%VIV(Rdc9T{&#)av#tuMD7vGn)V8&5a(91R{Q%DU$q zKivpTcc)=!;kg@UCue!N%D-km3;!%$1|K#a%SQnH0`_SxJJzTzc^AM}`Z F{{aA%NYVfR literal 0 HcmV?d00001 diff --git a/client/assets/icon.png b/client/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b9a6468d6c4f46dafeef03b97f8b735a946e2918 GIT binary patch literal 2920 zcmeAS@N?(olHy`uVBq!ia0y~yU=jgg4mO~OQ`Od|K#HZ<$uool2x>S|I)Hr60*}aI z1_r((Aj~*bn@<`jC|TkfQ4*Y=R#Ki=l*&+EUaps!mtCBkSdglhUz9%kosAR&1J_ee z7srr_IdAVC%$0E$a0ootWcOoRc)V+axw?x5@A8EPGg^`Z`FIW-vtoNV-C)Mr?@SRU z3LZaJt($52?*2V_eFlbuZ{IL8FkDyHU}*3OU|^WJfPultk&z*#iHYF^3oF9}PA&!o zVG#xgHDVRqe0`IhVczk=Ikil6#~v4cw^t zk)ZF$*t5}@v6_=Bp@)<8jjBe2;db%py6cM=W-0^O?biGeAeAwd2jW0xSjSYxbTg&& z0nMnGZVy(z&IV%06i$#KXA;{VC9x5>y`x4N#o#4+$4#Xh2Q|hXE`gs~}z!=7MOck_LxE{;3v_1CDhYB_apD zEJPJ7N+6-xGY{<8V|*x%u&g=Dd<_(&(7@aA39QNu5@L^|p+U+I(F6^CYe=x&iL)`| zibjg<_C*a_fzEOBM+t72o1vi(jk|n^Z((r)5k2$v!wrobP{KLhEyxOHK$8S4#J@uv zR;&Su*?+%2-{0JS!2ieZ`S;J+G5H_qev6dyt%3gH?>z*HxW|(GH%?DwN92ICb|#5r zO<_-_Y?ab>`aai)c7MzRxF?95?4)-_L0F(Y!%W@kp8O;b5R-kz}5=f)`v zGn*kXb-v<2+&UYmVJ=|9K*9S~9G&X|Q|;N$ao#$pcJ*)}#~?lovAtVZz>dwG0m`|9t%W zeRDsBCCiT2)BdEacfYSpDxeDu)_>F%}`$MzbXC2zQ3-<@4w22?mPGG!1-$b z|LaD7zuzBnfkaYeH&8K22S--h{$^mXY5#ru_)Yf*E^1WG-Ox4yu;2j|#XI)b_WYY? z|37=?zt85Nf{mi~$1si(I>b8pR`mVe{{8sPb_RxZXQ`X#f6FVdI$l=Tc1#!8DrWF> L^>bP0l+XkK@;3>D literal 0 HcmV?d00001 diff --git a/client/src/components/DonationOverlay.svelte b/client/src/components/DonationOverlay.svelte new file mode 100644 index 0000000..ffe9934 --- /dev/null +++ b/client/src/components/DonationOverlay.svelte @@ -0,0 +1,458 @@ + + + +
+

Support Bitfeed

+

+ Every satoshi helps to keep Bitfeed running and funds development of new features! +

+ +
+
+ supporter + community hero + enterprise sponsor +
+ +
slider
+ +
+ + sats +
+ + + + + +
+ +
+ + + +
+ +
+ +
+
+

sats: { invoiceSatsLabel }

+

Expiry: { invoiceExpiryLabel }

+

{ invoiceDestinationLabel }: { invoiceHexLabel || invoiceHexPlaceholder }

+ {#if !invoice || !invoice.id || !invoiceHexLabel } +
+

Payment Details

+
+ {/if} +
+ +
+ {#if invoicePaid } +
+

Received, Thanks!

+ {:else if invoiceExpired} +
+

Invoice Expired

+ {:else} +
+ {/if} + {#if qrSrc && !invoicePaid && !invoiceExpired} +
+ invoice qr code +
+ {/if} +
+
+
+
+
+ + diff --git a/client/src/components/LightningOverlay.svelte b/client/src/components/LightningOverlay.svelte index f2bb637..afddc5c 100644 --- a/client/src/components/LightningOverlay.svelte +++ b/client/src/components/LightningOverlay.svelte @@ -133,7 +133,7 @@ function processInvoice () { async function pollInvoice () { if (pollingEnabled && invoice && invoice.status === 'Unpaid') { - const response = await fetch(`${config.dev ? config.devLightningRoot : ''}/api/lightning/invoice/${invoice.id}`, { + const response = await fetch(`${config.lightningRoot}/api/lightning/invoice/${invoice.id}`, { method: 'GET' }) invoice = await response.json() @@ -145,7 +145,7 @@ async function generateInvoice () { if (amount) { analytics.trackEvent('donations', 'lightning', 'generate', amount) resetInvoice() - const response = await fetch(`${config.dev ? config.devLightningRoot : ''}/api/lightning/invoice`, { + const response = await fetch(`${config.lightningRoot}/api/lightning/invoice`, { method: 'POST', headers: { 'Content-Type': 'application/json' diff --git a/client/src/components/TxViz.svelte b/client/src/components/TxViz.svelte index b5ab275..8340d2d 100644 --- a/client/src/components/TxViz.svelte +++ b/client/src/components/TxViz.svelte @@ -9,7 +9,7 @@ import TxInfo from '../components/TxInfo.svelte' import Sidebar from '../components/Sidebar.svelte' import AboutOverlay from '../components/AboutOverlay.svelte' - import LightningOverlay from '../components/LightningOverlay.svelte' + import DonationOverlay from '../components/DonationOverlay.svelte' import DonationBar from '../components/DonationBar.svelte' import { integerFormat } from '../utils/format.js' import { exchangeRates, localCurrency, lastBlockId } from '../stores.js' @@ -447,7 +447,7 @@ {#if config.lightningEnabled } - + {/if} {#if config.dev && config.debug && $devSettings.guides } diff --git a/client/src/config.js b/client/src/config.js index f7e9e70..b40544a 100644 --- a/client/src/config.js +++ b/client/src/config.js @@ -1,13 +1,12 @@ export default { dev: ENVIRONMENT === 'development', - // devLightningRoot: 'http://localhost:4000', - devLightningRoot: 'https://bits.monospace.live', + donationRoot: 'http://localhost:3001', debug: false, layoutHints: false, fps: true, websocket_path: '/ws/txs', localSocket: false, - nofeed: false, + nofeed: true, txDelay: 10000, blockTimeout: 10000, donationAddress: "bc1qthanksv78zs5jnmysvmuuuzj09aklf8jmm49xl", diff --git a/client/src/stores.js b/client/src/stores.js index 5ef8e48..4537310 100644 --- a/client/src/stores.js +++ b/client/src/stores.js @@ -88,7 +88,7 @@ export const nativeAntialias = writable(false) const newVisitor = !localStorage.getItem('seen-welcome-msg') // export const overlay = writable(newVisitor ? 'about' : null) -export const overlay = writable(null) +export const overlay = writable('donation') let currencyCode = LocaleCurrency.getCurrency(navigator.language) console.log('LOCALE: ', navigator.language, currencyCode) diff --git a/client/src/utils/format.js b/client/src/utils/format.js index dacadac..19eae88 100644 --- a/client/src/utils/format.js +++ b/client/src/utils/format.js @@ -33,7 +33,7 @@ export const durationFormat = { const seconds = milliseconds / 1000 const absSeconds = Math.abs(seconds) if (absSeconds < 1) return 'now' - else if (absSeconds < 60) return relativeTimeFormat.format(seconds, 'seconds') - else return relativeTimeFormat.format(Math.round(seconds / 60), 'minutes') + else if (absSeconds < 60) return relativeTimeFormat.format(seconds, absSeconds == 1 ? 'second' : 'seconds') + else return relativeTimeFormat.format(Math.round(seconds / 60), Math.abs(Math.round(seconds / 60)) == 1 ? 'minute' : 'minutes') } }