Merge branch 'develop' of https://github.com/poanetwork/metamask-extension into tests-fix
|
@ -3,6 +3,8 @@
|
|||
## Current Master
|
||||
|
||||
- [#55](https://github.com/poanetwork/metamask-extension/pull/55): Tests fix.
|
||||
- [#52](https://github.com/poanetwork/metamask-extension/pull/52): Nifty Wallet restyling.
|
||||
- [#54](https://github.com/poanetwork/metamask-extension/pull/54): Fix explorer url for POA network on confirmed transaction.
|
||||
- [#50](https://github.com/poanetwork/metamask-extension/pull/50): Update sentry links.
|
||||
- [#45](https://github.com/poanetwork/metamask-extension/pull/45): Automate release publish.
|
||||
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
Copyright 2014 The Nunito Project Authors (contact@sansoxygen.com)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14">
|
||||
<path fill="#FFF" fill-rule="evenodd" d="M13 8H3.46l4.256 4.256c.366.367.337.99-.066 1.394-.404.403-1.027.432-1.394.066L.284 7.744a.855.855 0 0 1-.21-.378A.992.992 0 0 1 0 7c0-.13.029-.252.074-.366a.855.855 0 0 1 .21-.378L6.256.284c.367-.366.99-.337 1.394.066.403.404.432 1.027.066 1.394L3.46 6H13a1 1 0 0 1 0 2z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 391 B |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14">
|
||||
<path fill="#FFF" fill-rule="evenodd" d="M13.926 7.366a.855.855 0 0 1-.21.378l-5.972 5.972c-.367.366-.99.337-1.394-.066-.403-.404-.432-1.027-.066-1.394L10.54 8H1a1 1 0 0 1 0-2h9.54L6.284 1.744c-.366-.367-.337-.99.066-1.394.404-.403 1.027-.432 1.394-.066l5.972 5.972c.107.107.17.239.21.378A.992.992 0 0 1 14 7c0 .13-.029.252-.074.366z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 412 B |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12">
|
||||
<path fill="#6729A8" fill-rule="evenodd" d="M11.687 1.708L7.406 6l4.249 4.26a1.01 1.01 0 0 1 0 1.426 1.004 1.004 0 0 1-1.421 0l-4.25-4.261-4.249 4.261a1.004 1.004 0 0 1-1.421 0 1.01 1.01 0 0 1 0-1.426L4.563 6 .282 1.708a1.01 1.01 0 0 1 0-1.425 1.003 1.003 0 0 1 1.422 0l4.28 4.292L10.265.283a1.003 1.003 0 0 1 1.422 0 1.01 1.01 0 0 1 0 1.425z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 421 B |
|
@ -1,21 +1,3 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="24.088px" height="24px" viewBox="189.192 0 24.088 24" enable-background="new 189.192 0 24.088 24" xml:space="preserve" fill="#F7861C">
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#F7861C" d="M204.655,7.169h-8.962c-1.1,0-1.991,0.891-1.991,1.991v8.963c0,1.1,0.892,1.99,1.991,1.99h8.962
|
||||
c1.101,0,1.991-0.891,1.991-1.99V9.16C206.646,8.06,205.756,7.169,204.655,7.169z M205.651,18.123
|
||||
c0,0.549-0.446,0.994-0.996,0.994h-8.962c-0.549,0-0.995-0.445-0.995-0.994V9.16c0-0.55,0.446-0.996,0.995-0.996h8.962
|
||||
c0.55,0,0.996,0.446,0.996,0.996V18.123z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path fill="#F7861C" d="M196.689,11.152h6.969v-0.996h-6.969V11.152z"/>
|
||||
<path fill="#F7861C" d="M196.689,13.144h6.969v-0.996h-6.969V13.144z"/>
|
||||
<path fill="#F7861C" d="M196.689,15.135h6.969v-0.996h-6.969V15.135z"/>
|
||||
<path fill="#F7861C" d="M196.689,17.126h3.982v-0.994h-3.982V17.126z"/>
|
||||
<path fill="#F7861C" d="M207.643,4.182h-8.962c-1.101,0-1.991,0.892-1.991,1.991h0.995c0-0.549,0.446-0.996,0.996-0.996h8.962
|
||||
c0.549,0,0.995,0.447,0.995,0.996v8.962c0,0.55-0.446,0.997-0.995,0.997v0.994c1.101,0,1.991-0.891,1.991-1.991V6.172
|
||||
C209.634,5.073,208.743,4.182,207.643,4.182z"/>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14">
|
||||
<path fill="#6729A8" fill-rule="evenodd" d="M13 10a1 1 0 0 1-1-1V2H5a1 1 0 0 1 0-2h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1zm-3-5v8a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1zM8 6H2v6h6V6z"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 277 B |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="64">
|
||||
<path fill="#60DB97" fill-rule="evenodd" d="M19.996 32c0 .031 0 .062-.003.093-.003.03-.009.059-.015.089-.007.032-.013.064-.023.095a1.023 1.023 0 0 1-.077.179c-.005.008-.007.017-.012.026l-18 30.061a1.02 1.02 0 0 1-1.366.353.947.947 0 0 1-.366-1.318L17.845 32 .134 2.422A.947.947 0 0 1 .5 1.104a1.02 1.02 0 0 1 1.366.353l18 30.061c.005.009.007.018.012.026a1.023 1.023 0 0 1 .077.179c.01.031.016.063.023.095.006.03.012.059.015.089a.963.963 0 0 1 .003.093z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 531 B |
|
@ -1,74 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="4.2333331mm"
|
||||
height="12.800793mm"
|
||||
viewBox="0 0 14.999999 45.357139"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="forward-carrat.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="17.87049"
|
||||
inkscape:cy="17.678567"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
showguides="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1276"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-x="4"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4136"
|
||||
originx="-180"
|
||||
originy="-602.14286" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-180,-404.8622)">
|
||||
<path
|
||||
style="fill:#f7861c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 180,404.8622 0,7.5 10,15 -10,15 0,7.85714 15,-22.85714 z"
|
||||
id="path4138"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
</g>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="64">
|
||||
<path fill="#60DB97" fill-rule="evenodd" d="M49.996 32c0 .032 0 .064-.003.095-.003.032-.009.062-.015.093-.007.033-.013.065-.023.098-.008.027-.019.053-.03.08a1.07 1.07 0 0 1-.047.104l-.012.027-18 31.001a1.004 1.004 0 0 1-1.366.364.992.992 0 0 1-.366-1.359L47.845 32 30.134 1.497A.992.992 0 0 1 30.5.138a1.004 1.004 0 0 1 1.366.364l18 31.001.012.027c.018.034.033.069.047.104.011.027.022.053.03.08.01.033.016.065.023.098.006.031.012.061.015.093.003.031.003.063.003.095z"/>
|
||||
<path fill="#60DB97" fill-rule="evenodd" d="M34.996 32c0 .032 0 .064-.003.095-.003.032-.009.062-.015.093-.007.033-.013.065-.023.098-.008.027-.019.053-.03.08a1.07 1.07 0 0 1-.047.104l-.012.027-18 31.001a1.004 1.004 0 0 1-1.366.364.992.992 0 0 1-.366-1.359L32.845 32 15.134 1.497A.992.992 0 0 1 15.5.138a1.004 1.004 0 0 1 1.366.364l18 31.001.012.027c.018.034.033.069.047.104.011.027.022.053.03.08.01.033.016.065.023.098.006.031.012.061.015.093.003.031.003.063.003.095z" opacity=".502"/>
|
||||
<path fill="#60DB97" fill-rule="evenodd" d="M19.996 32c0 .032 0 .064-.003.096-.003.03-.009.061-.015.092-.007.033-.013.065-.023.098-.008.027-.019.053-.03.08a1.07 1.07 0 0 1-.047.104l-.012.027-18 31.001a1.004 1.004 0 0 1-1.366.364.992.992 0 0 1-.366-1.359L17.845 32 .134 1.497A.992.992 0 0 1 .5.138a1.004 1.004 0 0 1 1.366.364l18 31.001.012.027c.018.034.033.069.047.104.011.027.022.053.03.08.01.033.016.065.023.098.006.031.012.062.015.092.003.032.003.064.003.096z" opacity=".2"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14">
|
||||
<path fill="#6729A8" fill-rule="evenodd" d="M13 8H3.46l4.256 4.256c.366.367.337.99-.066 1.394-.404.403-1.027.432-1.394.066L.284 7.744a.852.852 0 0 1-.21-.377A.997.997 0 0 1 0 7c0-.13.029-.253.074-.366a.855.855 0 0 1 .21-.378L6.256.284c.367-.366.99-.337 1.394.066.403.404.432 1.027.066 1.394L3.46 6H13a1 1 0 0 1 0 2z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 394 B |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="2" height="18">
|
||||
<path fill="#60DB97" fill-rule="evenodd" d="M1 13a1 1 0 0 1-1-1V1a1 1 0 0 1 2 0v11a1 1 0 0 1-1 1zm0 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 208 B |
|
@ -1 +1,49 @@
|
|||
<svg width='120px' height='120px' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(0 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(40 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.1111111111111111s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(80 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.2222222222222222s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(120 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.3333333333333333s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(160 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.4444444444444444s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(200 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.5555555555555556s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(240 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.6666666666666666s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(280 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.7777777777777778s' repeatCount='indefinite'/></rect><rect x='46' y='39' width='8' height='22' rx='5' ry='5' fill='#ffae29' transform='rotate(320 50 50) translate(0 -20)'> <animate attributeName='opacity' from='1' to='0' dur='1s' begin='0.8888888888888888s' repeatCount='indefinite'/></rect></svg>
|
||||
<svg class="lds-spinner" width="200px" height="200px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" style="background: none;"><g transform="rotate(0 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.9166666666666666s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(30 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.8333333333333334s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(60 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.75s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(90 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.6666666666666666s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(120 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5833333333333334s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(150 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(180 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.4166666666666667s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(210 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.3333333333333333s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(240 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.25s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(270 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.16666666666666666s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(300 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.08333333333333333s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g><g transform="rotate(330 50 50)">
|
||||
<rect x="47" y="22.5" rx="4.7" ry="2.25" width="6" height="15" fill="#6729a8">
|
||||
<animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="0s" repeatCount="indefinite"></animate>
|
||||
</rect>
|
||||
</g></svg>
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 52 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22" height="20">
|
||||
<image width="22" height="20" xlink:href="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAUCAYAAACJfM0wAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAEBklEQVQ4y2WVy4tcVRDGf3XOvbd7pmc6k8QHZhKNJgYEMfg2KslCTdwYUHcqIQpKVq78IwT/gKwkCm5dKQgzIrjz/cIEDQRcBEMmM5PJPLpv9z2nPhd9JwlYm+IU1He+qvNVHTv2wPsUVlGEDqH1BR1CKIkUmBWnDT4Elsc+eG2us/fizu4BGh/gcgyjCBXZM1kNhsCMAoEASZgZCGQCQHBGSmcNMAt3J69/zO5vI15FCHhPUi2BwXYOSBQ3I4BowSexd5x8lvbmcd6iU8z2Z8u7Pk8+wuUAj4KeNKMWYNhNgsGw27FBYNhp9+bj7COkxDBfJ1rJ3VOPEMMUyWuE42oeFvrFCB/QMrW2+iBNajIzjIDQqZTH55KPcBJbzSoxdNjTe5wiVIx9EwWRNcbldOPsQ2bxI4mvMQu0WOEW3QDoVFb6NGsCOmhWiFawt/cERegwyutgkHKNKzNb3UURppAywAvIztG+U2hLR/I3kjefJh+SldhqrhFDyb7ZIxShS51vIETjNYpifu0wc8v7yKFGiGABV/N6k4dh7FsUNhHIm1nNZyAMo84rVGGGe2efowhT1GkNzJBnzMUuHuTyC98xThvc89tTUI0Y5FXGeaNnZj8KHSmEXnGNP8MFFhj5OlXosb9/lMqmqdPqpE0CkajyDN3xDvrvLiKH8q2jDHor1LaKUQA8hvGlPb//jCbKCNR+gzL0ODT3Mt04xyjfaHUJGBgie+LOcIhwuCCpJv06Zs0uE0NBILYyNIrk9XrjdT/5kOlyNwd3vEgVZxikFYIZLkeaaNksgIml+De7v7mfTGL1jn+IHpGcjNPq7asiWvVSt9z5PYg9vcfpFH0GzQpmgSYnMOiXe0g+ZDMtU1iFGnF17gLIKHIH2aRNAHJ+MLOTRQjVD7unDhyfq+5bEGJzfI0YItlrBPTLeao4QxmnyEoM0xohBIKVYCDL24AQ7DvDnjWigsnYbK4uLg3/PD72dSAzSptkNfSreTqhT1KNy+lX85SxS/Ia94SUcGWyJ5z0kzw/v70uAkCwgmFaXxzn4YkyTFOFGfrVPrqxT9IIZESr2EpLjPIGYDjegjqu9LPQ02YT+lILDEYRSjAtuPz4ru5BZso7abzGMMo4xVazxEp9iawGJKREVkYa/wF6xsBvXzkBA7PtQ6ROa4vLw79OJI3oxD5V7LHRXGG5vtgWaTgZV8aVf8d4AixtM215TkZaaoUKFKFDna8vLA0unNho/mWlvsTK8BJmgWAR8AlTy+cNHRE0tIBm23q/2YrbzKCK04zz5sLS8PzJtdE/7fiEm30F/wPXUwSG2zlSy1i3Vtr/zOXEUFLQ/SJadQzTt06+7kpXwD9BehJsIE1WJFjrb/0i/wGwOlXnXcFBjwAAAABJRU5ErkJggg=="/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="12">
|
||||
<path fill="#6729A8" fill-rule="evenodd" d="M13 7H1a1 1 0 0 1 0-2h12a1 1 0 0 1 0 2zm0-5H1a1 1 0 0 1 0-2h12a1 1 0 0 1 0 2zM1 10h12a1 1 0 0 1 0 2H1a1 1 0 0 1 0-2z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 239 B |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="4" height="24">
|
||||
<path fill="#60DB97" fill-rule="evenodd" d="M2 14a2 2 0 1 1-.001-3.999A2 2 0 0 1 2 14zM2 4A2 2 0 1 1 1.999.001 2 2 0 0 1 2 4zm0 16a2 2 0 1 1 .001 3.999A2 2 0 0 1 2 20z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 245 B |
|
@ -1,29 +1,3 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="29.477px" height="24px" viewBox="78.469 0 29.477 24" enable-background="new 78.469 0 29.477 24" xml:space="preserve" fill="#F7861C">
|
||||
<g>
|
||||
<path d="M90.437,9.087c0,1.669,1.423,4.766,3.177,4.766c1.755,0,3.177-3.097,3.177-4.766c0-1.668-1.422-3.021-3.177-3.021
|
||||
C91.859,6.066,90.437,7.418,90.437,9.087z"/>
|
||||
<path d="M93.613,17.091h4.042c1.108,0,1.503-0.249,1.503-0.84c0-1.21-1.158-2.147-2.867-2.62c-0.713,0.861-1.619,1.467-2.678,1.467
|
||||
c-1.057,0-1.964-0.605-2.676-1.467c-1.709,0.473-2.867,1.41-2.867,2.62c0,0.591,0.395,0.84,1.502,0.84H93.613z"/>
|
||||
<path d="M86.392,4.841c0.979-0.98,2.122-1.738,3.398-2.255c1.231-0.499,2.533-0.751,3.87-0.751c1.47,0,2.892,0.304,4.225,0.902
|
||||
c0.166,0.075,0.36,0.039,0.488-0.09l0.558-0.556c0.101-0.101,0.146-0.244,0.122-0.384c-0.024-0.14-0.115-0.26-0.243-0.321
|
||||
C97.218,0.624,95.437,0.22,93.66,0.22c-1.545,0-3.052,0.292-4.478,0.869c-1.477,0.598-2.8,1.476-3.933,2.609
|
||||
c-1.775,1.774-2.924,4.021-3.325,6.495c-0.192,1.19-0.205,2.4-0.036,3.595c0.052,0.366,0.121,0.729,0.206,1.089l-0.732-0.497
|
||||
c-0.199-0.136-0.472-0.083-0.608,0.117l-0.45,0.664c-0.065,0.097-0.089,0.214-0.067,0.329c0.021,0.114,0.088,0.214,0.184,0.28
|
||||
l2.638,1.787l0.259,0.177c0.056,0.037,0.117,0.061,0.182,0.07c0.021,0.003,0.043,0.005,0.064,0.005
|
||||
c0.028,0,0.056-0.002,0.083-0.008c0.006-0.001,0.011-0.002,0.016-0.004c0.107-0.024,0.202-0.089,0.264-0.18l1.965-2.897
|
||||
c0.065-0.096,0.09-0.214,0.067-0.328s-0.088-0.215-0.185-0.28l-0.665-0.45c-0.199-0.136-0.472-0.084-0.607,0.116l-0.741,1.093
|
||||
c-0.408-1.469-0.485-3.014-0.22-4.541C83.903,8.242,84.89,6.343,86.392,4.841z"/>
|
||||
<path d="M106.979,8.028c-0.039-0.109-0.121-0.198-0.226-0.248l-2.443-1.142l0,0l-0.727-0.34c-0.22-0.102-0.48-0.007-0.583,0.211
|
||||
l-1.482,3.17c-0.102,0.219-0.008,0.48,0.212,0.582l0.728,0.34c0.059,0.027,0.121,0.041,0.186,0.041c0.05,0,0.101-0.009,0.149-0.026
|
||||
c0.108-0.039,0.198-0.121,0.247-0.226l0.509-1.087c0.43,1.52,0.505,3.12,0.213,4.694c-0.379,2.047-1.358,3.907-2.832,5.382
|
||||
c-0.979,0.979-2.123,1.737-3.398,2.253c-1.231,0.499-2.534,0.752-3.87,0.752c-1.393,0-2.743-0.273-4.018-0.812
|
||||
c-0.164-0.068-0.354-0.031-0.48,0.095l-0.561,0.561c-0.103,0.102-0.147,0.247-0.122,0.389c0.026,0.141,0.119,0.26,0.251,0.32
|
||||
C90.264,23.632,91.968,24,93.661,24c1.545,0,3.053-0.292,4.478-0.87c1.477-0.598,2.8-1.475,3.934-2.608
|
||||
c1.743-1.744,2.887-3.949,3.304-6.378c0.307-1.777,0.211-3.574-0.273-5.281l0.939,0.439c0.061,0.028,0.124,0.042,0.187,0.042
|
||||
c0.164,0,0.322-0.094,0.396-0.253l0.34-0.727C107.015,8.258,107.021,8.138,106.979,8.028z"/>
|
||||
</g>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14">
|
||||
<path fill="#6729A8" fill-rule="evenodd" d="M0 14v-1.75c0-2.362 4.638-3.5 7-3.5 2.363 0 7 1.138 7 3.5V14H0zm7-8a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 219 B |
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "__MSG_appName__",
|
||||
"short_name": "__MSG_appName__",
|
||||
"version": "4.8.2",
|
||||
"version": "4.8.3",
|
||||
"manifest_version": 2,
|
||||
"author": "https://metamask.io",
|
||||
"description": "__MSG_appDescription__",
|
||||
|
|
|
@ -56,11 +56,11 @@ class ExtensionPlatform {
|
|||
|
||||
this._subscribeToNotificationClicked()
|
||||
|
||||
const url = explorerLink(txMeta.hash, parseInt(txMeta.metamaskNetworkId))
|
||||
const { url, explorerName } = this._getExplorer(txMeta.hash, parseInt(txMeta.metamaskNetworkId))
|
||||
const nonce = parseInt(txMeta.txParams.nonce, 16)
|
||||
|
||||
const title = 'Confirmed transaction'
|
||||
const message = `Transaction ${nonce} confirmed! View on EtherScan`
|
||||
const message = `Transaction ${nonce} confirmed! View on ${explorerName}`
|
||||
this._showNotification(title, message, url)
|
||||
}
|
||||
|
||||
|
@ -90,10 +90,30 @@ class ExtensionPlatform {
|
|||
}
|
||||
|
||||
_viewOnEtherScan (txId) {
|
||||
if (txId.startsWith('http://')) {
|
||||
if (txId.startsWith('http://') || txId.startsWith('https://')) {
|
||||
global.metamaskController.platform.openWindow({ url: txId })
|
||||
}
|
||||
}
|
||||
|
||||
_getExplorer (hash, networkId) {
|
||||
if (networkId === 99) {
|
||||
return {
|
||||
explorerName: 'POA explorer',
|
||||
url: `https://poaexplorer.com/txid/search/${hash}`,
|
||||
}
|
||||
} else if (networkId === 77) {
|
||||
return {
|
||||
explorerName: 'POA explorer',
|
||||
url: `https://sokol.poaexplorer.com/txid/search/${hash}`,
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
explorerName: 'Etherscan',
|
||||
url: explorerLink(hash, networkId),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = ExtensionPlatform
|
||||
|
|
|
@ -1,55 +1,55 @@
|
|||
const GITHUB_TOKEN = process.env.GITHUB_TOKEN;
|
||||
const request = require('request-promise');
|
||||
const VERSION = require('../dist/chrome/manifest.json').version;
|
||||
const fs = require('fs');
|
||||
const GITHUB_TOKEN = process.env.GITHUB_TOKEN
|
||||
const request = require('request-promise')
|
||||
const VERSION = require('../dist/chrome/manifest.json').version
|
||||
const fs = require('fs')
|
||||
|
||||
publishRelease().then(function () {
|
||||
console.log("Published");
|
||||
});
|
||||
console.log('Published')
|
||||
})
|
||||
|
||||
/**
|
||||
* Creates release. Adds tag from the current commit, current version is used as part of the tag name.
|
||||
* Then uploads assets that were created while building.
|
||||
* @returns {Promise.<void>}
|
||||
*/
|
||||
async function publishRelease() {
|
||||
async function publishRelease () {
|
||||
const CIRCLE_SHA1 = process.env.CIRCLE_SHA1
|
||||
console.log(`VERSION: ${VERSION}, CIRCLE_SHA1: ${CIRCLE_SHA1}`);
|
||||
let releaseId;
|
||||
const CREATE_RELEASE_URI = `https://api.github.com/repos/poanetwork/metamask-extension/releases`;
|
||||
console.log(`VERSION: ${VERSION}, CIRCLE_SHA1: ${CIRCLE_SHA1}`)
|
||||
let releaseId
|
||||
const CREATE_RELEASE_URI = `https://api.github.com/repos/poanetwork/metamask-extension/releases`
|
||||
console.log(`CREATE_RELEASE_URI: ${CREATE_RELEASE_URI}`)
|
||||
let changelog = "";
|
||||
let changelog = ''
|
||||
try {
|
||||
changelog = fs.readFileSync('./CHANGELOG.md').toString().split(VERSION)[1].split('##')[0].trim();
|
||||
changelog = fs.readFileSync('./CHANGELOG.md').toString().split(VERSION)[1].split('##')[0].trim()
|
||||
} catch (err) {
|
||||
console.error(`Error in getting changelog: ${err}`)
|
||||
}
|
||||
// remove first line with date
|
||||
let newLineIndex = changelog.indexOf('\n');
|
||||
let changes = "New release is ready.";
|
||||
const newLineIndex = changelog.indexOf('\n')
|
||||
let changes = 'New release is ready.'
|
||||
if (newLineIndex !== -1) {
|
||||
changes = changelog.slice(newLineIndex + 1);
|
||||
changes = changelog.slice(newLineIndex + 1)
|
||||
}
|
||||
console.log(`changes: ${changes}`);
|
||||
console.log(`changes: ${changes}`)
|
||||
|
||||
request({
|
||||
method: 'POST',
|
||||
uri: CREATE_RELEASE_URI,
|
||||
headers: {
|
||||
'User-Agent': 'Nifty Wallet',
|
||||
'Authorization': `token ${GITHUB_TOKEN}`
|
||||
'Authorization': `token ${GITHUB_TOKEN}`,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
body: changes,
|
||||
tag_name: `v${VERSION}`,
|
||||
name: `Version ${VERSION}`,
|
||||
target_commitish: CIRCLE_SHA1,
|
||||
draft: true
|
||||
})
|
||||
draft: true,
|
||||
}),
|
||||
}).then(async function (response) {
|
||||
console.log('response: ' + response);
|
||||
releaseId = JSON.parse(response).id;
|
||||
console.log(`releaseId: ${releaseId}`);
|
||||
console.log('response: ' + response)
|
||||
releaseId = JSON.parse(response).id
|
||||
console.log(`releaseId: ${releaseId}`)
|
||||
|
||||
return uploadAsset(`./builds/metamask-chrome-${VERSION}.zip`, `metamask-chrome-${VERSION}.zip`, releaseId)
|
||||
.then(() => {
|
||||
|
@ -62,9 +62,9 @@ async function publishRelease() {
|
|||
return uploadAsset(`./builds/metamask-opera-${VERSION}.zip`, `metamask-opera-${VERSION}.zip`, releaseId)
|
||||
})
|
||||
}).catch(function (err) {
|
||||
console.error('error in request:' + err);
|
||||
throw err;
|
||||
});
|
||||
console.error('error in request:' + err)
|
||||
throw err
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -74,17 +74,17 @@ async function publishRelease() {
|
|||
* @param releaseId - id or the release obtained after release creation
|
||||
* @returns {Promise.<*>}
|
||||
*/
|
||||
async function uploadAsset(path, name, releaseId) {
|
||||
const UPLOAD_ASSET_URL = `https://uploads.github.com/repos/poanetwork/metamask-extension/releases/${releaseId}/assets?name=${name}&label=${name}`;
|
||||
console.log(`UPLOAD_ASSET_URL: ${UPLOAD_ASSET_URL}`);
|
||||
async function uploadAsset (path, name, releaseId) {
|
||||
const UPLOAD_ASSET_URL = `https://uploads.github.com/repos/poanetwork/metamask-extension/releases/${releaseId}/assets?name=${name}&label=${name}`
|
||||
console.log(`UPLOAD_ASSET_URL: ${UPLOAD_ASSET_URL}`)
|
||||
return request({
|
||||
method: 'POST',
|
||||
uri: UPLOAD_ASSET_URL,
|
||||
body: fs.readFileSync(path),
|
||||
headers: {
|
||||
'Authorization': `token ${GITHUB_TOKEN}`,
|
||||
"Content-Type": "application/zip",
|
||||
'User-Agent': 'Nifty Wallet'
|
||||
}
|
||||
'Content-Type': 'application/zip',
|
||||
'User-Agent': 'Nifty Wallet',
|
||||
},
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
Dear Nifty Wallet Users,
|
||||
|
||||
Nifty Wallet is beta software.
|
||||
|
||||
When you log in to Nifty Wallet, your current account's address is visible to every new site you visit. This can be used to look up your account balances of Ether and other tokens.
|
||||
|
||||
For your privacy, for now, please sign out of Nifty Wallet when you're done using a site.
|
||||
|
||||
There have been several instances of high-profile legitimate websites such as BTC Manager and Games Workshop that have had their websites temporarily compromised. This involves showing a fake Nifty Wallet window on the page asking for user's seed phrases. Nifty Wallet will never open itself in this way.
|
||||
|
||||
## Related Links ##
|
||||
|
||||
**[Terms of Use](https://github.com/poanetwork/metamask-extension/wiki)**
|
||||
|
||||
**[Privacy](https://github.com/poanetwork/metamask-extension/wiki)**
|
||||
|
||||
**[Attributions](https://github.com/poanetwork/metamask-extension/wiki)**
|
||||
**[Terms of Service](https://github.com/poanetwork/metamask-extension/wiki/Terms-of-Service)**
|
|
@ -10,26 +10,4 @@ module.exports = [
|
|||
title: 'Terms of Use',
|
||||
body: fs.readFileSync(path.join(__dirname, '/archive', 'notice_0.md'), 'utf8'),
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
read: false,
|
||||
date: 'Mon May 08 2017',
|
||||
title: 'Privacy Notice',
|
||||
body: fs.readFileSync(path.join(__dirname, '/archive', 'notice_2.md'), 'utf8'),
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
read: false,
|
||||
date: 'Tue Nov 28 2017',
|
||||
title: 'Seed Phrase Alert',
|
||||
firstVersion: '<=3.12.0',
|
||||
body: fs.readFileSync(path.join(__dirname, '/archive', 'notice_3.md'), 'utf8'),
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
read: false,
|
||||
date: 'Wed Jun 13 2018',
|
||||
title: 'Phishing Warning',
|
||||
body: fs.readFileSync(path.join(__dirname, '/archive', 'notice_4.md'), 'utf8'),
|
||||
},
|
||||
]
|
||||
|
|
|
@ -56,8 +56,9 @@ AccountDetailScreen.prototype.render = function () {
|
|||
// identicon, label, balance, etc
|
||||
h('.account-data-subsection', {
|
||||
style: {
|
||||
margin: '0 20px',
|
||||
padding: '0 20px',
|
||||
flex: '1 0 auto',
|
||||
background: 'linear-gradient(rgb(84, 36, 147), rgb(104, 45, 182))',
|
||||
},
|
||||
}, [
|
||||
|
||||
|
@ -74,7 +75,7 @@ AccountDetailScreen.prototype.render = function () {
|
|||
// large identicon and addresses
|
||||
h('.identicon-wrapper.select-none', [
|
||||
h(Identicon, {
|
||||
diameter: 62,
|
||||
diameter: 60,
|
||||
address: selected,
|
||||
}),
|
||||
]),
|
||||
|
@ -122,6 +123,7 @@ AccountDetailScreen.prototype.render = function () {
|
|||
textOverflow: 'ellipsis',
|
||||
padding: '5px 0px',
|
||||
lineHeight: '25px',
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, [
|
||||
identity && identity.name,
|
||||
|
@ -132,7 +134,7 @@ AccountDetailScreen.prototype.render = function () {
|
|||
AccountDropdowns,
|
||||
{
|
||||
style: {
|
||||
marginRight: '8px',
|
||||
marginRight: '-7px',
|
||||
marginLeft: 'auto',
|
||||
cursor: 'pointer',
|
||||
},
|
||||
|
@ -162,16 +164,16 @@ AccountDetailScreen.prototype.render = function () {
|
|||
paddingTop: '3px',
|
||||
width: '5em',
|
||||
height: '15px',
|
||||
fontSize: '13px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
fontSize: '14px',
|
||||
fontFamily: 'Nunito Bold',
|
||||
textRendering: 'geometricPrecision',
|
||||
marginBottom: '15px',
|
||||
color: '#AEAEAE',
|
||||
color: 'rgba(255, 255, 255, 0.7)',
|
||||
},
|
||||
}, checksumAddress),
|
||||
]),
|
||||
|
||||
// account ballence
|
||||
// account ballance
|
||||
|
||||
]),
|
||||
]),
|
||||
|
@ -198,7 +200,7 @@ AccountDetailScreen.prototype.render = function () {
|
|||
h('button', {
|
||||
onClick: () => props.dispatch(actions.buyEthView(selected)),
|
||||
style: { marginRight: '10px' },
|
||||
}, 'BUY'),
|
||||
}, 'Buy'),
|
||||
|
||||
h('button', {
|
||||
onClick: () => props.dispatch(actions.showSendPage()),
|
||||
|
@ -206,7 +208,7 @@ AccountDetailScreen.prototype.render = function () {
|
|||
marginBottom: '20px',
|
||||
marginRight: '8px',
|
||||
},
|
||||
}, 'SEND'),
|
||||
}, 'Send'),
|
||||
|
||||
]),
|
||||
]),
|
||||
|
|
|
@ -34,12 +34,20 @@ AccountImportSubview.prototype.render = function () {
|
|||
const { type } = state
|
||||
|
||||
return (
|
||||
h('div', [
|
||||
h('div', {
|
||||
style: {
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
h('.section-title.flex-row.flex-center', [
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
onClick: (event) => {
|
||||
props.dispatch(actions.goHome())
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Import Accounts'),
|
||||
]),
|
||||
|
@ -47,31 +55,18 @@ AccountImportSubview.prototype.render = function () {
|
|||
style: {
|
||||
display: 'inline-block',
|
||||
alignItems: 'center',
|
||||
padding: '5px 15px 0px 15px',
|
||||
padding: '5px 30px 0px 30px',
|
||||
},
|
||||
}, [
|
||||
h('span', 'Imported accounts will not be associated with your originally created Nifty Wallet account seedphrase. Learn more about imported accounts '),
|
||||
h('span', {
|
||||
style: {
|
||||
color: 'rgba(247, 134, 28, 1)',
|
||||
cursor: 'pointer',
|
||||
textDecoration: 'underline',
|
||||
},
|
||||
onClick: () => {
|
||||
global.platform.openWindow({
|
||||
url: 'https://metamask.helpscoutdocs.com/article/17-what-are-loose-accounts',
|
||||
})
|
||||
},
|
||||
}, 'here.'),
|
||||
h('span', 'Imported accounts will not be associated with your originally created Nifty Wallet account seedphrase.'),
|
||||
]),
|
||||
h('div', {
|
||||
style: {
|
||||
padding: '10px',
|
||||
color: 'rgb(174, 174, 174)',
|
||||
padding: '10px 30px',
|
||||
},
|
||||
}, [
|
||||
|
||||
h('h3', { style: { padding: '3px' } }, 'SELECT TYPE'),
|
||||
h('h3', { style: { padding: '3px' } }, 'Select Type'),
|
||||
|
||||
h('style', `
|
||||
.has-value.Select--single > .Select-control .Select-value .Select-value-label, .Select-value-label {
|
||||
|
|
|
@ -5,8 +5,6 @@ const actions = require('../../../../ui/app/actions')
|
|||
const FileInput = require('react-simple-file-input').default
|
||||
const PropTypes = require('prop-types')
|
||||
|
||||
const HELP_LINK = 'https://github.com/MetaMask/faq/blob/master/README.md#q-i-cant-use-the-import-feature-for-uploading-a-json-file-the-window-keeps-closing-when-i-try-to-select-a-file'
|
||||
|
||||
class JsonImportSubview extends Component {
|
||||
constructor (props) {
|
||||
super(props)
|
||||
|
@ -26,15 +24,11 @@ class JsonImportSubview extends Component {
|
|||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
padding: '5px 15px 0px 15px',
|
||||
padding: '5px 30px 0px 30px',
|
||||
},
|
||||
}, [
|
||||
|
||||
h('p', 'Used by a variety of different clients'),
|
||||
h('a.warning', {
|
||||
href: HELP_LINK,
|
||||
target: '_blank',
|
||||
}, 'File import not working? Click here!'),
|
||||
|
||||
h(FileInput, {
|
||||
readAs: 'text',
|
||||
|
@ -51,15 +45,16 @@ class JsonImportSubview extends Component {
|
|||
id: 'json-password-box',
|
||||
onKeyPress: this.createKeyringOnEnter.bind(this),
|
||||
style: {
|
||||
width: 260,
|
||||
width: '100%',
|
||||
marginTop: 12,
|
||||
border: '1px solid #e2e2e2',
|
||||
},
|
||||
}),
|
||||
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: this.createNewKeychain.bind(this),
|
||||
style: {
|
||||
margin: 12,
|
||||
margin: 20,
|
||||
},
|
||||
}, 'Import'),
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ PrivateKeyImportView.prototype.render = function () {
|
|||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
padding: '5px 15px 0px 15px',
|
||||
padding: '5px 30px 0px 30px',
|
||||
},
|
||||
}, [
|
||||
h('span', 'Paste your private key string here'),
|
||||
|
@ -36,15 +36,16 @@ PrivateKeyImportView.prototype.render = function () {
|
|||
id: 'private-key-box',
|
||||
onKeyPress: this.createKeyringOnEnter.bind(this),
|
||||
style: {
|
||||
width: 260,
|
||||
width: '100%',
|
||||
marginTop: 12,
|
||||
border: '1px solid #e2e2e2',
|
||||
},
|
||||
}),
|
||||
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: this.createNewKeychain.bind(this),
|
||||
style: {
|
||||
margin: 12,
|
||||
margin: 20,
|
||||
},
|
||||
}, 'Import'),
|
||||
|
||||
|
|
|
@ -46,6 +46,10 @@ AddTokenScreen.prototype.render = function () {
|
|||
onClick: (event) => {
|
||||
props.dispatch(actions.goHome())
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Add Token'),
|
||||
]),
|
||||
|
@ -62,23 +66,16 @@ AddTokenScreen.prototype.render = function () {
|
|||
h('.flex-column.flex-justify-center.flex-grow.select-none', [
|
||||
h('.flex-space-around', {
|
||||
style: {
|
||||
padding: '20px',
|
||||
padding: '30px',
|
||||
},
|
||||
}, [
|
||||
|
||||
h('div', [
|
||||
h(Tooltip, {
|
||||
position: 'top',
|
||||
title: 'The contract of the actual token contract. Click for more info.',
|
||||
title: 'The contract of the actual token contract.',
|
||||
}, [
|
||||
h('a', {
|
||||
style: { fontWeight: 'bold', paddingRight: '10px'},
|
||||
href: 'https://support.metamask.io/kb/article/24-what-is-a-token-contract-address',
|
||||
target: '_blank',
|
||||
}, [
|
||||
h('span', 'Token Contract Address '),
|
||||
h('i.fa.fa-question-circle'),
|
||||
]),
|
||||
h('span', 'Token Contract Address '),
|
||||
]),
|
||||
]),
|
||||
|
||||
|
@ -91,7 +88,10 @@ AddTokenScreen.prototype.render = function () {
|
|||
width: 'inherit',
|
||||
flex: '1 0 auto',
|
||||
height: '30px',
|
||||
margin: '8px',
|
||||
margin: '10px 0',
|
||||
borderRadius: '3px',
|
||||
border: '1px solid #e2e2e2',
|
||||
padding: '10px',
|
||||
},
|
||||
}),
|
||||
]),
|
||||
|
@ -110,7 +110,10 @@ AddTokenScreen.prototype.render = function () {
|
|||
width: 'inherit',
|
||||
flex: '1 0 auto',
|
||||
height: '30px',
|
||||
margin: '8px',
|
||||
margin: '10px 0',
|
||||
borderRadius: '3px',
|
||||
border: '1px solid #e2e2e2',
|
||||
padding: '10px',
|
||||
},
|
||||
onChange: (event) => {
|
||||
var element = event.target
|
||||
|
@ -136,7 +139,10 @@ AddTokenScreen.prototype.render = function () {
|
|||
width: 'inherit',
|
||||
flex: '1 0 auto',
|
||||
height: '30px',
|
||||
margin: '8px',
|
||||
margin: '10px 0',
|
||||
borderRadius: '3px',
|
||||
border: '1px solid #e2e2e2',
|
||||
padding: '10px',
|
||||
},
|
||||
onChange: (event) => {
|
||||
var element = event.target
|
||||
|
@ -149,6 +155,8 @@ AddTokenScreen.prototype.render = function () {
|
|||
h('button', {
|
||||
style: {
|
||||
alignSelf: 'center',
|
||||
float: 'right',
|
||||
marginTop: '10px',
|
||||
},
|
||||
onClick: (event) => {
|
||||
const valid = this.validateInputs()
|
||||
|
|
|
@ -26,7 +26,6 @@ const RemoveTokenScreen = require('./remove-token')
|
|||
const Import = require('./accounts/import')
|
||||
const InfoScreen = require('./info')
|
||||
const Loading = require('./components/loading')
|
||||
const SandwichExpando = require('sandwich-expando')
|
||||
const Dropdown = require('./components/dropdown').Dropdown
|
||||
const DropdownMenuItem = require('./components/dropdown').DropdownMenuItem
|
||||
const NetworkIndicator = require('./components/network')
|
||||
|
@ -102,6 +101,7 @@ App.prototype.render = function () {
|
|||
overflow: 'hidden',
|
||||
position: 'relative',
|
||||
alignItems: 'center',
|
||||
background: (props.isUnlocked || props.currentView.name === 'restoreVault' || props.currentView.name === 'config') ? 'white' : 'linear-gradient(rgb(84, 36, 147), rgb(104, 45, 182))',
|
||||
},
|
||||
}, [
|
||||
|
||||
|
@ -115,7 +115,7 @@ App.prototype.render = function () {
|
|||
// panel content
|
||||
h('.app-primary' + (transForward ? '.from-right' : '.from-left'), {
|
||||
style: {
|
||||
width: '100%',
|
||||
background: (props.isUnlocked || props.currentView.name === 'restoreVault' || props.currentView.name === 'config') ? 'white' : 'transparent',
|
||||
},
|
||||
}, [
|
||||
this.renderPrimary(),
|
||||
|
@ -124,6 +124,13 @@ App.prototype.render = function () {
|
|||
)
|
||||
}
|
||||
|
||||
App.prototype.changeState = function (isMainMenuOpen) {
|
||||
this.setState({
|
||||
isMainMenuOpen,
|
||||
sandwichClass: isMainMenuOpen ? 'sandwich-expando expanded' : 'sandwich-expando',
|
||||
})
|
||||
}
|
||||
|
||||
App.prototype.renderAppBar = function () {
|
||||
if (window.METAMASK_UI_TYPE === 'notification') {
|
||||
return null
|
||||
|
@ -154,10 +161,20 @@ App.prototype.renderAppBar = function () {
|
|||
style: {
|
||||
alignItems: 'center',
|
||||
visibility: props.isUnlocked ? 'visible' : 'none',
|
||||
background: props.isUnlocked ? 'white' : 'none',
|
||||
background: 'white',
|
||||
height: '38px',
|
||||
position: 'relative',
|
||||
zIndex: 12,
|
||||
/* borderBottom: (
|
||||
props.currentView.name === 'config' ||
|
||||
props.currentView.name === 'add-token' ||
|
||||
props.currentView.name === 'info' ||
|
||||
props.currentView.name === 'qr' ||
|
||||
props.currentView.name === 'reveal-seed-conf' ||
|
||||
props.currentView.name === 'createVaultComplete' ||
|
||||
props.currentView.name === 'restoreVault' ||
|
||||
props.currentView.name === 'import-menu'
|
||||
) ? '1px solid #e2e2e2' : 'none',*/
|
||||
},
|
||||
}, [
|
||||
|
||||
|
@ -206,18 +223,14 @@ App.prototype.renderAppBar = function () {
|
|||
}, []),
|
||||
|
||||
// hamburger
|
||||
props.isUnlocked && h(SandwichExpando, {
|
||||
className: 'sandwich-expando',
|
||||
width: 16,
|
||||
barHeight: 2,
|
||||
padding: 0,
|
||||
isOpen: state.isMainMenuOpen,
|
||||
color: 'rgb(247,146,30)',
|
||||
onClick: () => {
|
||||
this.setState({
|
||||
isMainMenuOpen: !state.isMainMenuOpen,
|
||||
})
|
||||
props.isUnlocked && h('div', {
|
||||
className: state.sandwichClass || 'sandwich-expando',
|
||||
style: {
|
||||
width: 16,
|
||||
height: 16,
|
||||
padding: 0,
|
||||
},
|
||||
onClick: () => this.changeState(!state.isMainMenuOpen),
|
||||
}),
|
||||
]),
|
||||
]),
|
||||
|
@ -266,13 +279,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('poa')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: providerType === 'poa' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('.menu-icon.purple-square'),
|
||||
[h(providerType === 'poa' ? 'div.selected-network' : ''),
|
||||
'POA Network',
|
||||
providerType === 'poa' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -283,13 +296,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('sokol')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: providerType === 'sokol' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('.menu-icon.green-square'),
|
||||
[h(providerType === 'sokol' ? 'div.selected-network' : ''),
|
||||
'POA Sokol Test Network',
|
||||
providerType === 'sokol' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -300,13 +313,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('mainnet')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: providerType === 'mainnet' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('.menu-icon.diamond'),
|
||||
[h(providerType === 'mainnet' ? 'div.selected-network' : ''),
|
||||
'Main Ethereum Network',
|
||||
providerType === 'mainnet' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -317,13 +330,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('ropsten')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: providerType === 'ropsten' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('.menu-icon.red-dot'),
|
||||
[h(providerType === 'ropsten' ? 'div.selected-network' : ''),
|
||||
'Ropsten Test Network',
|
||||
providerType === 'ropsten' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -334,13 +347,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('kovan')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: providerType === 'kovan' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('.menu-icon.hollow-diamond'),
|
||||
[h(providerType === 'kovan' ? 'div.selected-network' : ''),
|
||||
'Kovan Test Network',
|
||||
providerType === 'kovan' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -351,13 +364,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('rinkeby')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: providerType === 'rinkeby' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('.menu-icon.golden-square'),
|
||||
[h(providerType === 'rinkeby' ? 'div.selected-network' : ''),
|
||||
'Rinkeby Test Network',
|
||||
providerType === 'rinkeby' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -368,13 +381,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => props.dispatch(actions.setProviderType('localhost')),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: activeNetwork === 'http://localhost:8545' ? 'white' : '',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('i.fa.fa-question-circle.fa-lg.menu-icon'),
|
||||
[h(activeNetwork === 'http://localhost:8545' ? 'div.selected-network' : ''),
|
||||
'Localhost 8545',
|
||||
activeNetwork === 'http://localhost:8545' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -387,13 +400,13 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }),
|
||||
onClick: () => this.props.dispatch(actions.showConfigPage()),
|
||||
style: {
|
||||
fontSize: '18px',
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: '#8fdc97',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('i.fa.fa-question-circle.fa-lg.menu-icon'),
|
||||
'Custom RPC',
|
||||
activeNetwork === 'custom' ? h('.check', '✓') : null,
|
||||
]
|
||||
),
|
||||
|
||||
|
@ -403,6 +416,7 @@ App.prototype.renderNetworkDropdown = function () {
|
|||
App.prototype.renderDropdown = function () {
|
||||
const state = this.state || {}
|
||||
const isOpen = state.isMainMenuOpen
|
||||
const isMainMenuOpen = !isOpen
|
||||
|
||||
return h(Dropdown, {
|
||||
useCssTransition: true,
|
||||
|
@ -416,7 +430,10 @@ App.prototype.renderDropdown = function () {
|
|||
parentClassList.contains('sandwich-expando')
|
||||
|
||||
if (isOpen && !isToggleElement) {
|
||||
this.setState({ isMainMenuOpen: false })
|
||||
this.setState({
|
||||
isMainMenuOpen: false,
|
||||
sandwichClass: 'sandwich-expando',
|
||||
})
|
||||
}
|
||||
},
|
||||
style: {
|
||||
|
@ -427,17 +444,17 @@ App.prototype.renderDropdown = function () {
|
|||
innerStyle: {},
|
||||
}, [
|
||||
h(DropdownMenuItem, {
|
||||
closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }),
|
||||
closeMenu: () => this.changeState(isMainMenuOpen),
|
||||
onClick: () => { this.props.dispatch(actions.showConfigPage()) },
|
||||
}, 'Settings'),
|
||||
|
||||
h(DropdownMenuItem, {
|
||||
closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }),
|
||||
closeMenu: () => this.changeState(isMainMenuOpen),
|
||||
onClick: () => { this.props.dispatch(actions.lockMetamask()) },
|
||||
}, 'Log Out'),
|
||||
|
||||
h(DropdownMenuItem, {
|
||||
closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }),
|
||||
closeMenu: () => this.changeState(isMainMenuOpen),
|
||||
onClick: () => { this.props.dispatch(actions.showInfoPage()) },
|
||||
}, 'Info/Help'),
|
||||
])
|
||||
|
@ -600,19 +617,31 @@ App.prototype.renderPrimary = function () {
|
|||
log.debug('rendering show qr screen')
|
||||
return h('div', {
|
||||
style: {
|
||||
position: 'absolute',
|
||||
height: '100%',
|
||||
top: '0px',
|
||||
left: '0px',
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', {
|
||||
onClick: () => props.dispatch(actions.backToAccountDetail(props.selectedAddress)),
|
||||
style: {
|
||||
marginLeft: '10px',
|
||||
marginTop: '50px',
|
||||
},
|
||||
}),
|
||||
h('.section-title.flex-row.flex-center', [
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
onClick: () => props.dispatch(actions.backToAccountDetail(props.selectedAddress)),
|
||||
style: {
|
||||
marginLeft: '30px',
|
||||
marginTop: '5px',
|
||||
position: 'absolute',
|
||||
left: '0',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', {
|
||||
style: {
|
||||
fontFamily: 'Nunito SemiBold',
|
||||
marginTop: '10px',
|
||||
marginBottom: '0px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, 'QR Code'),
|
||||
]),
|
||||
h('div', {
|
||||
style: {
|
||||
position: 'absolute',
|
||||
|
@ -669,11 +698,14 @@ App.prototype.renderCustomOption = function (provider) {
|
|||
key: rpcTarget,
|
||||
onClick: () => props.dispatch(actions.setRpcTarget(rpcTarget)),
|
||||
closeMenu: () => this.setState({ isNetworkMenuOpen: false }),
|
||||
style: {
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
color: 'white',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('i.fa.fa-question-circle.fa-lg.menu-icon'),
|
||||
[h('div.selected-network'),
|
||||
label,
|
||||
h('.check', '✓'),
|
||||
]
|
||||
)
|
||||
}
|
||||
|
@ -718,9 +750,12 @@ App.prototype.renderCommonRpc = function (rpcList, provider) {
|
|||
key: `common${rpc}`,
|
||||
closeMenu: () => this.setState({ isNetworkMenuOpen: false }),
|
||||
onClick: () => props.dispatch(actions.setRpcTarget(rpc)),
|
||||
style: {
|
||||
paddingLeft: '20px',
|
||||
fontSize: '16px',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('i.fa.fa-question-circle.fa-lg.menu-icon'),
|
||||
rpc,
|
||||
]
|
||||
)
|
||||
|
|
|
@ -18,7 +18,7 @@ class AccountDropdowns extends Component {
|
|||
optionsMenuActive: false,
|
||||
}
|
||||
this.accountSelectorToggleClassName = 'accounts-selector'
|
||||
this.optionsMenuToggleClassName = 'fa-ellipsis-h'
|
||||
this.optionsMenuToggleClassName = 'account-dropdown'
|
||||
}
|
||||
|
||||
renderAccounts () {
|
||||
|
@ -45,13 +45,23 @@ class AccountDropdowns extends Component {
|
|||
},
|
||||
style: {
|
||||
marginTop: index === 0 ? '5px' : '',
|
||||
fontSize: '24px',
|
||||
fontSize: '16px',
|
||||
},
|
||||
},
|
||||
[
|
||||
isSelected ? h('div', {
|
||||
style: {
|
||||
width: '4px',
|
||||
height: '32px',
|
||||
background: '#8fdc97',
|
||||
position: 'absolute',
|
||||
left: '-25px',
|
||||
},
|
||||
}) : null,
|
||||
h(
|
||||
Identicon,
|
||||
{
|
||||
overflow: 'none',
|
||||
address: identity.address,
|
||||
diameter: 32,
|
||||
style: {
|
||||
|
@ -63,14 +73,14 @@ class AccountDropdowns extends Component {
|
|||
h('span', {
|
||||
style: {
|
||||
marginLeft: '20px',
|
||||
fontSize: '24px',
|
||||
fontSize: '16px',
|
||||
maxWidth: '145px',
|
||||
whiteSpace: 'nowrap',
|
||||
overflow: 'hidden',
|
||||
textOverflow: 'ellipsis',
|
||||
color: isSelected ? 'white' : '',
|
||||
},
|
||||
}, identity.name || ''),
|
||||
h('span', { style: { marginLeft: '20px', fontSize: '24px' } }, isSelected ? h('.check', '✓') : null),
|
||||
]
|
||||
)
|
||||
})
|
||||
|
@ -93,12 +103,12 @@ class AccountDropdowns extends Component {
|
|||
{
|
||||
useCssTransition: true, // Hardcoded because account selector is temporarily in app-header
|
||||
style: {
|
||||
marginLeft: '-238px',
|
||||
marginTop: '38px',
|
||||
marginLeft: '-168px',
|
||||
marginTop: '32px',
|
||||
minWidth: '180px',
|
||||
overflowY: 'auto',
|
||||
maxHeight: '300px',
|
||||
width: '300px',
|
||||
width: '220px',
|
||||
},
|
||||
innerStyle: {
|
||||
padding: '8px 25px',
|
||||
|
@ -121,16 +131,7 @@ class AccountDropdowns extends Component {
|
|||
onClick: () => actions.addNewAccount(),
|
||||
},
|
||||
[
|
||||
h(
|
||||
Identicon,
|
||||
{
|
||||
style: {
|
||||
marginLeft: '10px',
|
||||
},
|
||||
diameter: 32,
|
||||
},
|
||||
),
|
||||
h('span', { style: { marginLeft: '20px', fontSize: '24px' } }, 'Create Account'),
|
||||
h('span', { style: { fontSize: '16px', color: '#8fdc97' } }, 'Create Account'),
|
||||
],
|
||||
),
|
||||
h(
|
||||
|
@ -140,20 +141,11 @@ class AccountDropdowns extends Component {
|
|||
onClick: () => actions.showImportPage(),
|
||||
},
|
||||
[
|
||||
h(
|
||||
Identicon,
|
||||
{
|
||||
style: {
|
||||
marginLeft: '10px',
|
||||
},
|
||||
diameter: 32,
|
||||
},
|
||||
),
|
||||
h('span', {
|
||||
style: {
|
||||
marginLeft: '20px',
|
||||
fontSize: '24px',
|
||||
fontSize: '16px',
|
||||
marginBottom: '5px',
|
||||
color: '#8fdc97',
|
||||
},
|
||||
}, 'Import Account'),
|
||||
]
|
||||
|
@ -187,8 +179,9 @@ class AccountDropdowns extends Component {
|
|||
Dropdown,
|
||||
{
|
||||
style: {
|
||||
marginLeft: '-215px',
|
||||
marginLeft: '-237px',
|
||||
minWidth: '180px',
|
||||
marginTop: '30px',
|
||||
},
|
||||
isOpen: optionsMenuActive,
|
||||
onClickOutside: (event) => {
|
||||
|
@ -262,14 +255,13 @@ class AccountDropdowns extends Component {
|
|||
[
|
||||
enableAccountsSelector && h(
|
||||
// 'i.fa.fa-angle-down',
|
||||
'div.cursor-pointer.color-orange.accounts-selector',
|
||||
'div.accounts-selector',
|
||||
{
|
||||
style: {
|
||||
// fontSize: '1.8em',
|
||||
background: 'url(images/switch_acc.svg) white center center no-repeat',
|
||||
height: '25px',
|
||||
width: '25px',
|
||||
transform: 'scale(0.75)',
|
||||
marginRight: '3px',
|
||||
},
|
||||
onClick: (event) => {
|
||||
|
@ -283,11 +275,14 @@ class AccountDropdowns extends Component {
|
|||
this.renderAccountSelector(),
|
||||
),
|
||||
enableAccountOptions && h(
|
||||
'i.fa.fa-ellipsis-h',
|
||||
'div.account-dropdown',
|
||||
{
|
||||
style: {
|
||||
margin: '0.5em',
|
||||
fontSize: '1.8em',
|
||||
backgroundImage: 'url(../images/more.svg)',
|
||||
width: '30px',
|
||||
height: '24px',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundPosition: 'center',
|
||||
},
|
||||
onClick: (event) => {
|
||||
event.stopPropagation()
|
||||
|
|
|
@ -2,10 +2,10 @@ const Component = require('react').Component
|
|||
const h = require('react-hyperscript')
|
||||
const inherits = require('util').inherits
|
||||
const exportAsFile = require('../util').exportAsFile
|
||||
const copyToClipboard = require('copy-to-clipboard')
|
||||
const actions = require('../../../ui/app/actions')
|
||||
const ethUtil = require('ethereumjs-util')
|
||||
const connect = require('react-redux').connect
|
||||
const CopyButton = require('./copyButton')
|
||||
|
||||
module.exports = connect(mapStateToProps)(ExportAccountView)
|
||||
|
||||
|
@ -35,49 +35,59 @@ ExportAccountView.prototype.render = function () {
|
|||
if (notExporting) return h('div')
|
||||
|
||||
if (exportRequested) {
|
||||
const warning = `Export private keys at your own risk.`
|
||||
const warning = `Export private keys at your own risk`
|
||||
return (
|
||||
h('div', {
|
||||
style: {
|
||||
display: 'inline-block',
|
||||
textAlign: 'center',
|
||||
textAlign: 'right',
|
||||
width: '100%',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('div', {
|
||||
key: 'exporting',
|
||||
style: {
|
||||
margin: '0 20px',
|
||||
margin: '0 30px',
|
||||
},
|
||||
}, [
|
||||
h('p.error', warning),
|
||||
h('p.error', {
|
||||
style: {
|
||||
color: '#333333',
|
||||
marginBottom: '0px',
|
||||
marginTop: '30px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, warning),
|
||||
h('input#exportAccount.sizing-input', {
|
||||
type: 'password',
|
||||
placeholder: 'confirm password',
|
||||
placeholder: 'Confirm Password',
|
||||
onKeyPress: this.onExportKeyPress.bind(this),
|
||||
style: {
|
||||
position: 'relative',
|
||||
top: '1.5px',
|
||||
marginBottom: '7px',
|
||||
top: '27px',
|
||||
marginBottom: '20px',
|
||||
width: '100%',
|
||||
padding: '10px',
|
||||
},
|
||||
}),
|
||||
]),
|
||||
h('div', {
|
||||
key: 'buttons',
|
||||
style: {
|
||||
margin: '0 20px',
|
||||
margin: '25px 30px',
|
||||
},
|
||||
},
|
||||
[
|
||||
h('button', {
|
||||
onClick: () => this.onExportKeyPress({ key: 'Enter', preventDefault: () => {} }),
|
||||
h('button.btn-violet', {
|
||||
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
||||
style: {
|
||||
marginRight: '10px',
|
||||
},
|
||||
}, 'Submit'),
|
||||
h('button', {
|
||||
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
||||
}, 'Cancel'),
|
||||
h('button', {
|
||||
onClick: () => this.onExportKeyPress({ key: 'Enter', preventDefault: () => {} }),
|
||||
}, 'Submit'),
|
||||
]),
|
||||
(this.props.warning) && (
|
||||
h('span.error', {
|
||||
|
@ -95,30 +105,54 @@ ExportAccountView.prototype.render = function () {
|
|||
|
||||
return h('div.privateKey', {
|
||||
style: {
|
||||
margin: '0 20px',
|
||||
margin: '30px 30px',
|
||||
width: '100%',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, [
|
||||
h('label', 'Your private key (click to copy):'),
|
||||
h('p.error.cursor-pointer', {
|
||||
h('label', {
|
||||
style: {
|
||||
textOverflow: 'ellipsis',
|
||||
overflow: 'hidden',
|
||||
webkitUserSelect: 'text',
|
||||
maxWidth: '275px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
onClick: function (event) {
|
||||
copyToClipboard(ethUtil.stripHexPrefix(accountDetail.privateKey))
|
||||
},
|
||||
}, plainKey),
|
||||
h('button', {
|
||||
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
||||
}, 'Done'),
|
||||
h('button', {
|
||||
}, 'Your private key'),
|
||||
h('div.flex-row', [
|
||||
h('p.error', {
|
||||
style: {
|
||||
paddingTop: '25px',
|
||||
textOverflow: 'ellipsis',
|
||||
overflow: 'hidden',
|
||||
webkitUserSelect: 'text',
|
||||
maxWidth: '275px',
|
||||
color: '#333333',
|
||||
textAlign: 'center',
|
||||
marginBottom: '0px',
|
||||
},
|
||||
}, plainKey),
|
||||
h('div', {
|
||||
style: {
|
||||
paddingTop: '25px',
|
||||
},
|
||||
}, h(CopyButton, {
|
||||
value: accountDetail.privateKey,
|
||||
})
|
||||
),
|
||||
]),
|
||||
h('div', {
|
||||
style: {
|
||||
marginLeft: '10px',
|
||||
textAlign: 'right',
|
||||
marginTop: '30px',
|
||||
},
|
||||
onClick: () => exportAsFile(`Nifty Wallet ${nickname} Private Key`, plainKey),
|
||||
}, 'Save as File'),
|
||||
}, [
|
||||
h('button.btn-violet', {
|
||||
onClick: () => exportAsFile(`Nifty Wallet ${nickname} Private Key`, plainKey),
|
||||
}, 'Save as File'),
|
||||
h('button', {
|
||||
style: {
|
||||
marginLeft: '10px',
|
||||
},
|
||||
onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)),
|
||||
}, 'Done'),
|
||||
]),
|
||||
])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,8 @@ AccountPanel.prototype.render = function () {
|
|||
|
||||
h('.identity-panel.flex-row.flex-space-between', {
|
||||
style: {
|
||||
background: 'linear-gradient(rgb(84, 36, 147), rgb(104, 45, 182))',
|
||||
padding: '20px 20px',
|
||||
flex: '1 0 auto',
|
||||
cursor: panelState.onClick ? 'pointer' : undefined,
|
||||
},
|
||||
|
@ -48,7 +50,11 @@ AccountPanel.prototype.render = function () {
|
|||
address: panelState.identiconKey,
|
||||
imageify: state.imageifyIdenticons,
|
||||
}),
|
||||
h('span.font-small', panelState.identiconLabel.substring(0, 7) + '...'),
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, panelState.identiconLabel.substring(0, 7) + '...'),
|
||||
]),
|
||||
|
||||
// account address, balance
|
||||
|
@ -58,8 +64,16 @@ AccountPanel.prototype.render = function () {
|
|||
return h('.flex-row.flex-space-between', {
|
||||
key: '' + Math.round(Math.random() * 1000000),
|
||||
}, [
|
||||
h('label.font-small.no-select', attr.key),
|
||||
h('span.font-small', attr.value),
|
||||
h('label.font-small.no-select', {
|
||||
style: {
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, attr.key),
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, attr.value),
|
||||
])
|
||||
}),
|
||||
]),
|
||||
|
|
|
@ -62,8 +62,8 @@ EthBalanceComponent.prototype.renderBalance = function (value) {
|
|||
h('.flex-row', {
|
||||
style: {
|
||||
alignItems: 'flex-end',
|
||||
lineHeight: '13px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
lineHeight: '14px',
|
||||
fontFamily: 'Nunito Bold',
|
||||
textRendering: 'geometricPrecision',
|
||||
},
|
||||
}, [
|
||||
|
|
|
@ -41,7 +41,6 @@ BnAsDecimalInput.prototype.render = function () {
|
|||
style: {
|
||||
alignItems: 'flex-end',
|
||||
lineHeight: '13px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
textRendering: 'geometricPrecision',
|
||||
},
|
||||
}, [
|
||||
|
@ -55,8 +54,11 @@ BnAsDecimalInput.prototype.render = function () {
|
|||
display: 'block',
|
||||
textAlign: 'right',
|
||||
backgroundColor: 'transparent',
|
||||
border: '1px solid #bdbdbd',
|
||||
|
||||
height: '32px',
|
||||
borderRadius: '3px',
|
||||
border: '1px solid #e2e2e2',
|
||||
fontFamily: 'Nunito Regular',
|
||||
fontSize: '14px',
|
||||
}, style),
|
||||
value: newValue,
|
||||
onBlur: (event) => {
|
||||
|
@ -83,11 +85,12 @@ BnAsDecimalInput.prototype.render = function () {
|
|||
}),
|
||||
h('div', {
|
||||
style: {
|
||||
color: ' #AEAEAE',
|
||||
fontSize: '12px',
|
||||
color: ' #333333',
|
||||
fontFamily: 'Nunito Regular',
|
||||
fontSize: '14px',
|
||||
marginLeft: '5px',
|
||||
marginRight: '6px',
|
||||
width: '20px',
|
||||
width: '29px',
|
||||
lineHeight: '32px',
|
||||
},
|
||||
}, suffix),
|
||||
]),
|
||||
|
|
|
@ -65,18 +65,18 @@ BuyButtonSubview.prototype.headerSubview = function () {
|
|||
justifyContent: 'center',
|
||||
},
|
||||
}, [
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', {
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
onClick: this.backButtonContext.bind(this),
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '10px',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.text-transform-uppercase.flex-center', {
|
||||
h('h2.flex-center', {
|
||||
style: {
|
||||
width: '100vw',
|
||||
background: 'rgb(235, 235, 235)',
|
||||
color: 'rgb(174, 174, 174)',
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
paddingTop: '4px',
|
||||
paddingBottom: '4px',
|
||||
},
|
||||
|
@ -97,7 +97,7 @@ BuyButtonSubview.prototype.headerSubview = function () {
|
|||
// account panel
|
||||
h('div', {
|
||||
style: {
|
||||
width: '80%',
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
h(AccountPanel, {
|
||||
|
@ -114,13 +114,13 @@ BuyButtonSubview.prototype.headerSubview = function () {
|
|||
justifyContent: 'center',
|
||||
},
|
||||
}, [
|
||||
h('h3.text-transform-uppercase.flex-center', {
|
||||
h('h3.flex-center', {
|
||||
style: {
|
||||
paddingLeft: '15px',
|
||||
width: '100vw',
|
||||
background: 'rgb(235, 235, 235)',
|
||||
color: 'rgb(174, 174, 174)',
|
||||
paddingTop: '4px',
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
paddingTop: '30px',
|
||||
paddingBottom: '4px',
|
||||
},
|
||||
}, 'Select Service'),
|
||||
|
@ -158,25 +158,25 @@ BuyButtonSubview.prototype.primarySubview = function () {
|
|||
margin: '20px 50px',
|
||||
},
|
||||
}, [
|
||||
network !== '99' ? h('button.text-transform-uppercase', {
|
||||
network !== '99' ? h('button', {
|
||||
onClick: () => this.props.dispatch(actions.buyEth({ network })),
|
||||
style: {
|
||||
marginTop: '15px',
|
||||
},
|
||||
}, label) : null,
|
||||
network === '99' ? h('button.text-transform-uppercase', {
|
||||
network === '99' ? h('button', {
|
||||
onClick: () => this.props.dispatch(actions.buyEth({ network, exchange: 'binance' })),
|
||||
style: {
|
||||
marginTop: '15px',
|
||||
},
|
||||
}, 'Binance') : null,
|
||||
network === '99' ? h('button.text-transform-uppercase', {
|
||||
network === '99' ? h('button', {
|
||||
onClick: () => this.props.dispatch(actions.buyEth({ network, exchange: 'bibox' })),
|
||||
style: {
|
||||
marginTop: '15px',
|
||||
},
|
||||
}, 'BiBox') : null,
|
||||
network === '99' ? h('button.text-transform-uppercase', {
|
||||
network === '99' ? h('button', {
|
||||
onClick: () => this.props.dispatch(actions.buyEth({ network, exchange: 'cex.plus' })),
|
||||
style: {
|
||||
marginTop: '15px',
|
||||
|
@ -184,7 +184,7 @@ BuyButtonSubview.prototype.primarySubview = function () {
|
|||
}, 'CEX Plus') : null,
|
||||
// Kovan only: Dharma loans beta
|
||||
network === '42' ? (
|
||||
h('button.text-transform-uppercase', {
|
||||
h('button', {
|
||||
onClick: () => this.navigateTo('https://borrow.dharma.io/'),
|
||||
style: {
|
||||
marginTop: '15px',
|
||||
|
@ -235,13 +235,13 @@ BuyButtonSubview.prototype.mainnetSubview = function () {
|
|||
}),
|
||||
]),
|
||||
|
||||
h('h3.text-transform-uppercase', {
|
||||
h('h3', {
|
||||
style: {
|
||||
paddingLeft: '15px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
fontFamily: 'Nunito Light',
|
||||
width: '100vw',
|
||||
background: 'rgb(235, 235, 235)',
|
||||
color: 'rgb(174, 174, 174)',
|
||||
background: '#6729a8',
|
||||
color: '#ffffff',
|
||||
paddingTop: '4px',
|
||||
paddingBottom: '4px',
|
||||
},
|
||||
|
|
|
@ -23,8 +23,7 @@ CoinbaseForm.prototype.render = function () {
|
|||
|
||||
return h('.flex-column', {
|
||||
style: {
|
||||
marginTop: '35px',
|
||||
padding: '25px',
|
||||
marginTop: '30px',
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
|
@ -37,6 +36,9 @@ CoinbaseForm.prototype.render = function () {
|
|||
}, [
|
||||
h('button.btn-green', {
|
||||
onClick: this.toCoinbase.bind(this),
|
||||
style: {
|
||||
marginRight: '10px',
|
||||
},
|
||||
}, 'Continue to Coinbase'),
|
||||
|
||||
h('button.btn-red', {
|
||||
|
|
|
@ -34,7 +34,7 @@ CopyButton.prototype.render = function () {
|
|||
h(Tooltip, {
|
||||
title: message,
|
||||
}, [
|
||||
h('i.fa.fa-clipboard.cursor-pointer.color-orange', {
|
||||
h('i.fa.fa-clipboard.cursor-pointer.color-violet', {
|
||||
style: {
|
||||
margin: '5px',
|
||||
},
|
||||
|
|
|
@ -30,6 +30,10 @@ DeleteRpc.prototype.render = function () {
|
|||
onClick: () => {
|
||||
this.props.dispatch(actions.showConfigPage())
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Delete Custom RPC'),
|
||||
]),
|
||||
|
|
|
@ -12,8 +12,8 @@ class Dropdown extends Component {
|
|||
|
||||
const innerStyleDefaults = extend({
|
||||
borderRadius: '4px',
|
||||
padding: '8px 16px',
|
||||
background: 'rgba(0, 0, 0, 0.8)',
|
||||
padding: '15px 30px',
|
||||
background: 'rgba(71, 28, 115, 0.95)',
|
||||
boxShadow: 'rgba(0, 0, 0, 0.15) 0px 2px 2px 2px',
|
||||
}, innerStyle)
|
||||
|
||||
|
@ -31,8 +31,8 @@ class Dropdown extends Component {
|
|||
h(
|
||||
'style',
|
||||
`
|
||||
li.dropdown-menu-item:hover { color:rgb(225, 225, 225); }
|
||||
li.dropdown-menu-item { color: rgb(185, 185, 185); position: relative }
|
||||
li.dropdown-menu-item:hover { color:#ffffff; }
|
||||
li.dropdown-menu-item { color: rgba(255, 255, 255, 0.5); position: relative }
|
||||
`
|
||||
),
|
||||
...children,
|
||||
|
@ -70,10 +70,10 @@ class DropdownMenuItem extends Component {
|
|||
},
|
||||
style: Object.assign({
|
||||
listStyle: 'none',
|
||||
padding: '8px 0px 8px 0px',
|
||||
fontSize: '18px',
|
||||
padding: '15px 0px 15px 0px',
|
||||
fontSize: '16px',
|
||||
fontStyle: 'normal',
|
||||
fontFamily: 'Montserrat Regular',
|
||||
fontFamily: 'Nunito Regular',
|
||||
cursor: 'pointer',
|
||||
display: 'flex',
|
||||
justifyContent: 'flex-start',
|
||||
|
|
|
@ -54,6 +54,17 @@ EthBalanceComponent.prototype.renderBalance = function (value) {
|
|||
}
|
||||
|
||||
var label = balanceObj.label
|
||||
const valueStyle = props.valueStyle ? props.valueStyle : {
|
||||
color: '#ffffff',
|
||||
width: '100%',
|
||||
fontSize: props.fontSize || '14px',
|
||||
textAlign: 'right',
|
||||
}
|
||||
const dimStyle = props.dimStyle ? props.dimStyle : {
|
||||
color: ' #60db97',
|
||||
fontSize: props.fontSize || '14px',
|
||||
marginLeft: '5px',
|
||||
}
|
||||
|
||||
return (
|
||||
h(Tooltip, {
|
||||
|
@ -63,27 +74,19 @@ EthBalanceComponent.prototype.renderBalance = function (value) {
|
|||
h('.flex-row', {
|
||||
style: {
|
||||
alignItems: 'flex-end',
|
||||
lineHeight: '13px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
lineHeight: '20px',
|
||||
textRendering: 'geometricPrecision',
|
||||
},
|
||||
}, [
|
||||
h('div', {
|
||||
style: {
|
||||
width: '100%',
|
||||
textAlign: 'right',
|
||||
},
|
||||
style: valueStyle,
|
||||
}, incoming ? `+${balance}` : balance),
|
||||
h('div', {
|
||||
style: {
|
||||
color: ' #AEAEAE',
|
||||
fontSize: '12px',
|
||||
marginLeft: '5px',
|
||||
},
|
||||
style: dimStyle,
|
||||
}, label),
|
||||
]),
|
||||
|
||||
showFiat ? h(FiatValue, { value: props.value, conversionRate, currentCurrency, network: props.network }) : null,
|
||||
showFiat ? h(FiatValue, { valueStyle, dimStyle, value: props.value, conversionRate, currentCurrency, network: props.network }) : null,
|
||||
]))
|
||||
)
|
||||
}
|
||||
|
|
|
@ -29,33 +29,37 @@ FiatValue.prototype.render = function () {
|
|||
fiatTooltipNumber = Number(splitBalance[0]) * conversionRate
|
||||
fiatDisplayNumber = fiatTooltipNumber.toFixed(2)
|
||||
|
||||
return fiatDisplay(fiatDisplayNumber, renderedCurrency.toUpperCase())
|
||||
const valueStyle = props.valueStyle ? props.valueStyle : {
|
||||
width: '100%',
|
||||
textAlign: 'right',
|
||||
fontSize: '14px',
|
||||
color: '#ffffff',
|
||||
}
|
||||
|
||||
const dimStyle = props.dimStyle ? props.dimStyle : {
|
||||
color: '#60db97',
|
||||
marginLeft: '5px',
|
||||
fontSize: '14px',
|
||||
}
|
||||
|
||||
return fiatDisplay(fiatDisplayNumber, valueStyle, dimStyle, renderedCurrency.toUpperCase())
|
||||
}
|
||||
|
||||
function fiatDisplay (fiatDisplayNumber, fiatSuffix) {
|
||||
function fiatDisplay (fiatDisplayNumber, valueStyle, dimStyle, fiatSuffix) {
|
||||
|
||||
if (fiatDisplayNumber !== 'N/A') {
|
||||
return h('.flex-row', {
|
||||
style: {
|
||||
alignItems: 'flex-end',
|
||||
lineHeight: '13px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
lineHeight: '14px',
|
||||
textRendering: 'geometricPrecision',
|
||||
},
|
||||
}, [
|
||||
h('div', {
|
||||
style: {
|
||||
width: '100%',
|
||||
textAlign: 'right',
|
||||
fontSize: '12px',
|
||||
color: '#333333',
|
||||
},
|
||||
style: valueStyle,
|
||||
}, fiatDisplayNumber),
|
||||
h('div', {
|
||||
style: {
|
||||
color: '#AEAEAE',
|
||||
marginLeft: '5px',
|
||||
fontSize: '12px',
|
||||
},
|
||||
style: dimStyle,
|
||||
}, fiatSuffix),
|
||||
])
|
||||
} else {
|
||||
|
|
|
@ -38,8 +38,8 @@ HexAsDecimalInput.prototype.render = function () {
|
|||
h('.flex-row', {
|
||||
style: {
|
||||
alignItems: 'flex-end',
|
||||
lineHeight: '13px',
|
||||
fontFamily: 'Montserrat Light',
|
||||
lineHeight: '14px',
|
||||
fontFamily: 'Nunito Bold',
|
||||
textRendering: 'geometricPrecision',
|
||||
},
|
||||
}, [
|
||||
|
|
|
@ -29,7 +29,7 @@ IdenticonComponent.prototype.render = function () {
|
|||
height: diameter,
|
||||
width: diameter,
|
||||
borderRadius: diameter / 2,
|
||||
overflow: 'hidden',
|
||||
overflow: (props.overflow || 'hidden'),
|
||||
},
|
||||
})
|
||||
)
|
||||
|
|
|
@ -18,7 +18,7 @@ AccountPanel.prototype.render = function () {
|
|||
|
||||
return (
|
||||
|
||||
h('.identity-panel.flex-row.flex-left', {
|
||||
h('.identity-panel.flex-row.flex-center.flex-left', {
|
||||
style: {
|
||||
cursor: props.onClick ? 'pointer' : undefined,
|
||||
},
|
||||
|
@ -66,6 +66,7 @@ AccountPanel.prototype.genIcon = function (seed, picOrder) {
|
|||
},
|
||||
}, [
|
||||
h(Identicon, {
|
||||
diameter: 40,
|
||||
address: seed,
|
||||
imageify: props.imageifyIdenticons,
|
||||
}),
|
||||
|
|
|
@ -76,77 +76,71 @@ Network.prototype.render = function () {
|
|||
switch (iconName) {
|
||||
case 'ethereum-network':
|
||||
return h('.network-indicator', [
|
||||
h('.menu-icon.diamond'),
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#039396',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
'Main Network'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
])
|
||||
case 'sokol-test-network':
|
||||
return h('.network-indicator', [
|
||||
h('.menu-icon.green-square'),
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#62c9ba',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
[ h('div', 'Sokol'),
|
||||
h('div', 'Test Net') ]),
|
||||
'Sokol Network'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
])
|
||||
case 'ropsten-test-network':
|
||||
return h('.network-indicator', [
|
||||
h('.menu-icon.red-dot'),
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#ff6666',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
'Ropsten Test Net'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
])
|
||||
case 'kovan-test-network':
|
||||
return h('.network-indicator', [
|
||||
h('.menu-icon.hollow-diamond'),
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#690496',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
'Kovan Test Net'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
])
|
||||
case 'rinkeby-test-network':
|
||||
return h('.network-indicator', [
|
||||
h('.menu-icon.golden-square'),
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#e7a218',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
'Rinkeby Test Net'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
])
|
||||
case 'poa-network':
|
||||
return h('.network-indicator', [
|
||||
h('.menu-icon.purple-square'),
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#5c34a2',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
'POA Network'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
])
|
||||
default:
|
||||
return h('.network-indicator', [
|
||||
h('i.fa.fa-question-circle.fa-lg', {
|
||||
style: {
|
||||
margin: '10px',
|
||||
color: 'rgb(125, 128, 130)',
|
||||
},
|
||||
}),
|
||||
|
||||
h('.network-name', {
|
||||
style: {
|
||||
color: '#AEAEAE',
|
||||
paddingLeft: '9px',
|
||||
color: '#6729a8',
|
||||
}},
|
||||
'Private Network'),
|
||||
props.onClick && h('i.fa.fa-caret-down.fa-lg'),
|
||||
|
|
|
@ -14,8 +14,8 @@ function Notice () {
|
|||
|
||||
Notice.prototype.render = function () {
|
||||
const { notice, onConfirm } = this.props
|
||||
const { title, date, body } = notice
|
||||
const state = this.state || { disclaimerDisabled: false }
|
||||
const { title, body } = notice
|
||||
const state = this.state || { disclaimerDisabled: true }
|
||||
const disabled = state.disclaimerDisabled
|
||||
|
||||
return (
|
||||
|
@ -24,33 +24,20 @@ Notice.prototype.render = function () {
|
|||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
h('h3.flex-center.text-transform-uppercase.terms-header', {
|
||||
h('h3.flex-center.terms-header.section-title', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
width: '100%',
|
||||
fontSize: '20px',
|
||||
fontSize: '16px',
|
||||
textAlign: 'center',
|
||||
padding: 6,
|
||||
marginBottom: 24,
|
||||
},
|
||||
}, [
|
||||
title,
|
||||
]),
|
||||
|
||||
h('h5.flex-center.text-transform-uppercase.terms-header', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
marginBottom: 24,
|
||||
width: '100%',
|
||||
fontSize: '20px',
|
||||
textAlign: 'center',
|
||||
padding: 6,
|
||||
},
|
||||
}, [
|
||||
date,
|
||||
]),
|
||||
|
||||
h('style', `
|
||||
|
||||
.markdown {
|
||||
|
@ -74,7 +61,7 @@ Notice.prototype.render = function () {
|
|||
}
|
||||
|
||||
.markdown a {
|
||||
color: #df6b0e;
|
||||
color: #8fdc97;
|
||||
}
|
||||
|
||||
`),
|
||||
|
@ -87,12 +74,13 @@ Notice.prototype.render = function () {
|
|||
}
|
||||
},
|
||||
style: {
|
||||
background: 'rgb(235, 235, 235)',
|
||||
background: '#ffffff',
|
||||
height: '310px',
|
||||
padding: '6px',
|
||||
width: '90%',
|
||||
overflowY: 'scroll',
|
||||
scroll: 'auto',
|
||||
borderRadius: '3px',
|
||||
},
|
||||
}, [
|
||||
h(ReactMarkdown, {
|
||||
|
@ -105,7 +93,7 @@ Notice.prototype.render = function () {
|
|||
h('button', {
|
||||
disabled,
|
||||
onClick: () => {
|
||||
this.setState({disclaimerDisabled: false})
|
||||
this.setState({disclaimerDisabled: true})
|
||||
onConfirm()
|
||||
},
|
||||
style: {
|
||||
|
@ -120,7 +108,7 @@ Notice.prototype.componentDidMount = function () {
|
|||
// eslint-disable-next-line react/no-find-dom-node
|
||||
var node = findDOMNode(this)
|
||||
linker.setupListener(node)
|
||||
if (document.getElementsByClassName('notice-box')[0].clientHeight < 310) {
|
||||
if (document.getElementsByClassName('notice-box')[0].clientHeight < 300) {
|
||||
this.setState({disclaimerDisabled: false})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,13 +13,18 @@ const MiniAccountPanel = require('./mini-account-panel')
|
|||
const Copyable = require('./copyable')
|
||||
const EthBalance = require('./eth-balance')
|
||||
const addressSummary = util.addressSummary
|
||||
const accountSummary = util.accountSummary
|
||||
const nameForAddress = require('../../lib/contract-namer')
|
||||
const BNInput = require('./bn-as-decimal-input')
|
||||
const { getEnvironmentType } = require('../../../app/scripts/lib/util')
|
||||
const NetworkIndicator = require('../components/network')
|
||||
const { ENVIRONMENT_TYPE_NOTIFICATION } = require('../../../app/scripts/lib/enums')
|
||||
const connect = require('react-redux').connect
|
||||
|
||||
const MIN_GAS_PRICE_BN = new BN('0')
|
||||
const MIN_GAS_LIMIT_BN = new BN('21000')
|
||||
|
||||
module.exports = PendingTx
|
||||
module.exports = connect(mapStateToProps)(PendingTx)
|
||||
inherits(PendingTx, Component)
|
||||
function PendingTx () {
|
||||
Component.call(this)
|
||||
|
@ -30,9 +35,29 @@ function PendingTx () {
|
|||
}
|
||||
}
|
||||
|
||||
function mapStateToProps (state) {
|
||||
return {
|
||||
identities: state.metamask.identities,
|
||||
accounts: state.metamask.accounts,
|
||||
selectedAddress: state.metamask.selectedAddress,
|
||||
unapprovedTxs: state.metamask.unapprovedTxs,
|
||||
unapprovedMsgs: state.metamask.unapprovedMsgs,
|
||||
unapprovedPersonalMsgs: state.metamask.unapprovedPersonalMsgs,
|
||||
unapprovedTypedMessages: state.metamask.unapprovedTypedMessages,
|
||||
index: state.appState.currentView.context,
|
||||
warning: state.appState.warning,
|
||||
network: state.metamask.network,
|
||||
provider: state.metamask.provider,
|
||||
conversionRate: state.metamask.conversionRate,
|
||||
currentCurrency: state.metamask.currentCurrency,
|
||||
blockGasLimit: state.metamask.currentBlockGasLimit,
|
||||
computedBalances: state.metamask.computedBalances,
|
||||
}
|
||||
}
|
||||
|
||||
PendingTx.prototype.render = function () {
|
||||
const props = this.props
|
||||
const { currentCurrency, blockGasLimit, network } = props
|
||||
const { currentCurrency, blockGasLimit, network, provider } = props
|
||||
|
||||
const conversionRate = props.conversionRate
|
||||
const txMeta = this.gatherTxMeta()
|
||||
|
@ -83,8 +108,26 @@ PendingTx.prototype.render = function () {
|
|||
const buyDisabled = insufficientBalance || !this.state.valid || !isValidAddress || this.state.submitting
|
||||
const showRejectAll = props.unconfTxListLength > 1
|
||||
|
||||
var isNotification = getEnvironmentType(window.location.href) === ENVIRONMENT_TYPE_NOTIFICATION
|
||||
|
||||
this.inputs = []
|
||||
|
||||
const valueStyle = {
|
||||
fontFamily: 'Nunito Bold',
|
||||
width: '100%',
|
||||
textAlign: 'right',
|
||||
fontSize: '14px',
|
||||
color: '#333333',
|
||||
}
|
||||
|
||||
const dimStyle = {
|
||||
color: '#333333',
|
||||
marginLeft: '5px',
|
||||
fontSize: '14px',
|
||||
}
|
||||
|
||||
const isError = txMeta.simulationFails || !isValidAddress || insufficientBalance || (dangerousGasLimit && !gasLimitSpecified)
|
||||
|
||||
return (
|
||||
|
||||
h('div', {
|
||||
|
@ -102,42 +145,87 @@ PendingTx.prototype.render = function () {
|
|||
h('.flex-row.flex-center', {
|
||||
style: {
|
||||
maxWidth: '100%',
|
||||
padding: showRejectAll ? '20px 20px 50px 20px' : '20px 20px 20px 20px',
|
||||
background: 'linear-gradient(rgb(84, 36, 147), rgb(104, 45, 182))',
|
||||
position: 'relative',
|
||||
},
|
||||
}, [
|
||||
|
||||
h('div', {
|
||||
style: {
|
||||
position: 'absolute',
|
||||
bottom: '20px',
|
||||
width: '100%',
|
||||
textAlign: 'center',
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, [
|
||||
h('h3', {
|
||||
style: {
|
||||
alignSelf: 'center',
|
||||
display: props.unconfTxListLength > 1 ? 'block' : 'none',
|
||||
fontSize: '14px',
|
||||
},
|
||||
}, [
|
||||
h('i.fa.white-arrow-left.fa-lg.cursor-pointer', {
|
||||
style: {
|
||||
display: props.index === 0 ? 'none' : 'inline-block',
|
||||
},
|
||||
onClick: () => props.dispatch(actions.previousTx()),
|
||||
}),
|
||||
` ${props.index + 1} of ${props.unconfTxListLength} `,
|
||||
h('i.fa.white-arrow-right.fa-lg.cursor-pointer', {
|
||||
style: {
|
||||
display: props.index + 1 === props.unconfTxListLength ? 'none' : 'inline-block',
|
||||
},
|
||||
onClick: () => props.dispatch(actions.nextTx()),
|
||||
}),
|
||||
])]
|
||||
),
|
||||
|
||||
h(MiniAccountPanel, {
|
||||
imageSeed: address,
|
||||
picOrder: 'right',
|
||||
picOrder: 'left',
|
||||
}, [
|
||||
h('span.font-small', {
|
||||
h('div', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Bold, Montserrat, sans-serif',
|
||||
marginLeft: '10px',
|
||||
},
|
||||
}, identity.name),
|
||||
|
||||
h(Copyable, {
|
||||
value: ethUtil.toChecksumAddress(address),
|
||||
}, [
|
||||
h('div.font-pre-medium', {
|
||||
style: {
|
||||
fontFamily: 'Nunito SemiBold',
|
||||
color: '#ffffff',
|
||||
whiteSpace: 'nowrap',
|
||||
},
|
||||
}, accountSummary(identity.name, 6, 4)),
|
||||
|
||||
h(Copyable, {
|
||||
value: ethUtil.toChecksumAddress(address),
|
||||
}, [
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
fontFamily: 'Nunito Regular',
|
||||
color: 'rgba(255, 255, 255, 0.7)',
|
||||
},
|
||||
}, addressSummary(address, 6, 4, false)),
|
||||
]),
|
||||
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Light, Montserrat, sans-serif',
|
||||
fontFamily: 'Nunito Regular',
|
||||
},
|
||||
}, addressSummary(address, 6, 4, false)),
|
||||
]),
|
||||
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Light, Montserrat, sans-serif',
|
||||
},
|
||||
}, [
|
||||
h(EthBalance, {
|
||||
value: balance,
|
||||
conversionRate,
|
||||
currentCurrency,
|
||||
network,
|
||||
inline: true,
|
||||
labelColor: '#F7861C',
|
||||
}),
|
||||
}, [
|
||||
h(EthBalance, {
|
||||
fontSize: '12px',
|
||||
value: balance,
|
||||
conversionRate,
|
||||
currentCurrency,
|
||||
network,
|
||||
inline: true,
|
||||
labelColor: '#F7861C',
|
||||
}),
|
||||
]),
|
||||
]),
|
||||
]),
|
||||
|
||||
|
@ -150,29 +238,93 @@ PendingTx.prototype.render = function () {
|
|||
.table-box {
|
||||
margin: 7px 0px 0px 0px;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
.table-box .row {
|
||||
margin: 0px;
|
||||
background: rgb(236,236,236);
|
||||
background: #ffffff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-family: Montserrat Light, sans-serif;
|
||||
font-size: 13px;
|
||||
padding: 5px 25px;
|
||||
font-family: Nunito Regular;
|
||||
font-size: 14px;
|
||||
padding: 5px 30px;
|
||||
}
|
||||
.table-box .row .value {
|
||||
font-family: Montserrat Regular;
|
||||
font-family: Nunito Regular;
|
||||
}
|
||||
`),
|
||||
|
||||
h('.table-box', [
|
||||
|
||||
h('.flex-row.flex-center', {
|
||||
style: {
|
||||
marginTop: '20px',
|
||||
marginBottom: '30px',
|
||||
},
|
||||
}, [
|
||||
!isNotification ? h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
onClick: this.goHome.bind(this),
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}) : null,
|
||||
'Confirm Transaction',
|
||||
isNotification ? h(NetworkIndicator, {
|
||||
network: network,
|
||||
provider: provider,
|
||||
}) : null,
|
||||
]),
|
||||
|
||||
isError ? h('div', {
|
||||
style: {
|
||||
textAlign: 'center',
|
||||
position: 'absolute',
|
||||
top: '25px',
|
||||
background: 'rgba(255, 255, 255, 0.85)',
|
||||
border: '2px solid rgb(226, 2, 2)',
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
txMeta.simulationFails ?
|
||||
h('.error', {
|
||||
style: {
|
||||
fontSize: '12px',
|
||||
},
|
||||
}, 'Transaction Error. Exception thrown in contract code.')
|
||||
: null,
|
||||
|
||||
!isValidAddress ?
|
||||
h('.error', {
|
||||
style: {
|
||||
fontSize: '12px',
|
||||
},
|
||||
}, 'Recipient address is invalid. Sending this transaction will result in a loss of ETH. ')
|
||||
: null,
|
||||
|
||||
insufficientBalance ?
|
||||
h('span.error', {
|
||||
style: {
|
||||
fontSize: '12px',
|
||||
},
|
||||
}, 'Insufficient balance for transaction. ')
|
||||
: null,
|
||||
|
||||
(dangerousGasLimit && !gasLimitSpecified) ?
|
||||
h('span.error', {
|
||||
style: {
|
||||
fontSize: '12px',
|
||||
},
|
||||
}, 'Gas limit set dangerously high. Approving this transaction is liable to fail. ')
|
||||
: null,
|
||||
]) : null,
|
||||
|
||||
// Ether Value
|
||||
// Currently not customizable, but easily modified
|
||||
// in the way that gas and gasLimit currently are.
|
||||
h('.row', [
|
||||
h('.cell.label', 'Amount'),
|
||||
h(EthBalance, { value: txParams.value, currentCurrency, conversionRate, network }),
|
||||
h(EthBalance, { valueStyle, dimStyle, value: txParams.value, currentCurrency, conversionRate, network }),
|
||||
]),
|
||||
|
||||
// Gas Limit (customizable)
|
||||
|
@ -191,7 +343,6 @@ PendingTx.prototype.render = function () {
|
|||
suffix: 'UNITS',
|
||||
style: {
|
||||
position: 'relative',
|
||||
top: '5px',
|
||||
},
|
||||
onChange: this.gasLimitChanged.bind(this),
|
||||
|
||||
|
@ -214,7 +365,6 @@ PendingTx.prototype.render = function () {
|
|||
min: forceGasMin || MIN_GAS_PRICE_BN,
|
||||
style: {
|
||||
position: 'relative',
|
||||
top: '5px',
|
||||
},
|
||||
onChange: this.gasPriceChanged.bind(this),
|
||||
ref: (hexInput) => { this.inputs.push(hexInput) },
|
||||
|
@ -225,14 +375,12 @@ PendingTx.prototype.render = function () {
|
|||
// Max Transaction Fee (calculated)
|
||||
h('.cell.row', [
|
||||
h('.cell.label', 'Max Transaction Fee'),
|
||||
h(EthBalance, { value: txFeeBn.toString(16), currentCurrency, conversionRate, network }),
|
||||
h(EthBalance, { valueStyle, dimStyle, value: txFeeBn.toString(16), currentCurrency, conversionRate, network }),
|
||||
]),
|
||||
|
||||
h('.cell.row', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Regular',
|
||||
background: 'white',
|
||||
padding: '10px 25px',
|
||||
fontFamily: 'Nunito Regular',
|
||||
},
|
||||
}, [
|
||||
h('.cell.label', 'Max Total'),
|
||||
|
@ -243,6 +391,8 @@ PendingTx.prototype.render = function () {
|
|||
},
|
||||
}, [
|
||||
h(EthBalance, {
|
||||
valueStyle,
|
||||
dimStyle,
|
||||
value: maxCost.toString(16),
|
||||
currentCurrency,
|
||||
conversionRate,
|
||||
|
@ -257,15 +407,15 @@ PendingTx.prototype.render = function () {
|
|||
// Data size row:
|
||||
h('.cell.row', {
|
||||
style: {
|
||||
background: '#f7f7f7',
|
||||
background: '#ffffff',
|
||||
paddingBottom: '0px',
|
||||
},
|
||||
}, [
|
||||
h('.cell.label'),
|
||||
h('.cell.value', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Light',
|
||||
fontSize: '11px',
|
||||
fontFamily: 'Nunito Regular',
|
||||
fontSize: '14px',
|
||||
},
|
||||
}, `Data included: ${dataLength} bytes`),
|
||||
]),
|
||||
|
@ -276,57 +426,18 @@ PendingTx.prototype.render = function () {
|
|||
h('style', `
|
||||
.conf-buttons button {
|
||||
margin-left: 10px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
`),
|
||||
h('.cell.row', {
|
||||
style: {
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, [
|
||||
txMeta.simulationFails ?
|
||||
h('.error', {
|
||||
style: {
|
||||
fontSize: '0.9em',
|
||||
},
|
||||
}, 'Transaction Error. Exception thrown in contract code.')
|
||||
: null,
|
||||
|
||||
!isValidAddress ?
|
||||
h('.error', {
|
||||
style: {
|
||||
fontSize: '0.9em',
|
||||
},
|
||||
}, 'Recipient address is invalid. Sending this transaction will result in a loss of ETH.')
|
||||
: null,
|
||||
|
||||
insufficientBalance ?
|
||||
h('span.error', {
|
||||
style: {
|
||||
fontSize: '0.9em',
|
||||
},
|
||||
}, 'Insufficient balance for transaction')
|
||||
: null,
|
||||
|
||||
(dangerousGasLimit && !gasLimitSpecified) ?
|
||||
h('span.error', {
|
||||
style: {
|
||||
fontSize: '0.9em',
|
||||
},
|
||||
}, 'Gas limit set dangerously high. Approving this transaction is liable to fail.')
|
||||
: null,
|
||||
]),
|
||||
|
||||
|
||||
// send + cancel
|
||||
h('.flex-row.flex-space-around.conf-buttons', {
|
||||
style: {
|
||||
display: 'flex',
|
||||
justifyContent: 'flex-end',
|
||||
margin: '14px 25px',
|
||||
margin: '14px 30px',
|
||||
},
|
||||
}, [
|
||||
h('button', {
|
||||
h('button.btn-violet', {
|
||||
onClick: (event) => {
|
||||
this.resetGasFields()
|
||||
event.preventDefault()
|
||||
|
@ -335,9 +446,9 @@ PendingTx.prototype.render = function () {
|
|||
|
||||
// Accept Button or Buy Button
|
||||
insufficientBalance ? h('button.btn-green', { onClick: props.buyEth }, 'Buy Ether') :
|
||||
h('input.confirm.btn-green', {
|
||||
h('input.confirm', {
|
||||
type: 'submit',
|
||||
value: 'SUBMIT',
|
||||
value: 'Submit',
|
||||
style: { marginLeft: '10px' },
|
||||
disabled: buyDisabled,
|
||||
}),
|
||||
|
@ -350,7 +461,7 @@ PendingTx.prototype.render = function () {
|
|||
style: {
|
||||
display: 'flex',
|
||||
justifyContent: 'flex-end',
|
||||
margin: '14px 25px',
|
||||
margin: '14px 30px',
|
||||
},
|
||||
}, [
|
||||
h('button.cancel.btn-red', {
|
||||
|
@ -371,27 +482,35 @@ PendingTx.prototype.miniAccountPanelForRecipient = function () {
|
|||
// If it's not a contract deploy, send to the account
|
||||
if (!isContractDeploy) {
|
||||
return h(MiniAccountPanel, {
|
||||
imageSeed: txParams.to,
|
||||
picOrder: 'left',
|
||||
}, [
|
||||
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Bold, Montserrat, sans-serif',
|
||||
},
|
||||
}, nameForAddress(txParams.to, props.identities)),
|
||||
|
||||
h(Copyable, {
|
||||
value: ethUtil.toChecksumAddress(txParams.to),
|
||||
imageSeed: txParams.to,
|
||||
picOrder: 'right',
|
||||
}, [
|
||||
h('span.font-small', {
|
||||
h('div', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Light, Montserrat, sans-serif',
|
||||
marginRight: '10px',
|
||||
},
|
||||
}, addressSummary(txParams.to, 6, 4, false)),
|
||||
]),
|
||||
}, [
|
||||
h('span.font-pre-medium', {
|
||||
style: {
|
||||
fontFamily: 'Nunito SemiBold',
|
||||
color: '#ffffff',
|
||||
display: 'inline-block',
|
||||
whiteSpace: 'nowrap',
|
||||
},
|
||||
}, accountSummary(nameForAddress(txParams.to, props.identities)), 6, 4),
|
||||
|
||||
])
|
||||
h(Copyable, {
|
||||
value: ethUtil.toChecksumAddress(txParams.to),
|
||||
}, [
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
fontFamily: 'Nunito Regular',
|
||||
color: 'rgba(255, 255, 255, 0.7)',
|
||||
},
|
||||
}, addressSummary(txParams.to, 6, 4, false)),
|
||||
]),
|
||||
]),
|
||||
])
|
||||
} else {
|
||||
return h(MiniAccountPanel, {
|
||||
picOrder: 'left',
|
||||
|
@ -399,7 +518,8 @@ PendingTx.prototype.miniAccountPanelForRecipient = function () {
|
|||
|
||||
h('span.font-small', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Bold, Montserrat, sans-serif',
|
||||
fontFamily: 'Nunito Bold',
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, 'New Contract'),
|
||||
|
||||
|
@ -500,13 +620,24 @@ PendingTx.prototype.bnMultiplyByFraction = function (targetBN, numerator, denomi
|
|||
return targetBN.mul(numBN).div(denomBN)
|
||||
}
|
||||
|
||||
PendingTx.prototype.goHome = function (event) {
|
||||
this.stopPropagation(event)
|
||||
this.props.dispatch(actions.goHome())
|
||||
}
|
||||
|
||||
PendingTx.prototype.stopPropagation = function (event) {
|
||||
if (event.stopPropagation) {
|
||||
event.stopPropagation()
|
||||
}
|
||||
}
|
||||
|
||||
function forwardCarrat () {
|
||||
return (
|
||||
h('img', {
|
||||
src: 'images/forward-carrat.svg',
|
||||
src: 'images/forward-carrat-light.svg',
|
||||
style: {
|
||||
padding: '5px 6px 0px 10px',
|
||||
height: '37px',
|
||||
padding: '5px 30px 0px 30px',
|
||||
height: '62px',
|
||||
},
|
||||
})
|
||||
)
|
||||
|
|
|
@ -52,7 +52,7 @@ QrCodeView.prototype.render = function () {
|
|||
|
||||
h('#qr-container.flex-column', {
|
||||
style: {
|
||||
marginTop: '25px',
|
||||
marginTop: '15px',
|
||||
marginBottom: '15px',
|
||||
},
|
||||
dangerouslySetInnerHTML: {
|
||||
|
|
|
@ -16,12 +16,13 @@ TabBar.prototype.render = function () {
|
|||
const { subview = defaultTab } = state
|
||||
|
||||
return (
|
||||
h('.flex-row.space-around.text-transform-uppercase', {
|
||||
h('.flex-row.space-around', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
background: '#60269c',
|
||||
color: '#AEAEAE',
|
||||
paddingTop: '4px',
|
||||
minHeight: '30px',
|
||||
paddingTop: '10px',
|
||||
minHeight: '45px',
|
||||
lineHeight: '45px',
|
||||
},
|
||||
}, tabs.map((tab) => {
|
||||
const { key, content } = tab
|
||||
|
|
|
@ -17,7 +17,12 @@ TokenCell.prototype.render = function () {
|
|||
|
||||
return (
|
||||
h('li.token-cell', {
|
||||
style: { cursor: network === '1' ? 'pointer' : 'default' },
|
||||
style: {
|
||||
cursor: network === '1' ? 'pointer' : 'default',
|
||||
borderBottom: props.isLastTokenCell ? 'none' : '1px solid #e2e2e2',
|
||||
padding: '20px 0',
|
||||
margin: '0 20px',
|
||||
},
|
||||
onClick: this.view.bind(this, address, userAddress, network),
|
||||
}, [
|
||||
|
||||
|
@ -27,11 +32,16 @@ TokenCell.prototype.render = function () {
|
|||
network,
|
||||
}),
|
||||
|
||||
h('h3', `${string || 0} ${symbol}`),
|
||||
h('h3', {
|
||||
style: {
|
||||
fontFamily: 'Nunito Bold',
|
||||
fontSize: '14px',
|
||||
},
|
||||
}, `${string || 0} ${symbol}`),
|
||||
|
||||
h('span', { style: { flex: '1 0 auto' } }),
|
||||
|
||||
h('span.fa.fa-trash', {
|
||||
h('span.trash', {
|
||||
style: { cursor: 'pointer' },
|
||||
onClick: (event) => {
|
||||
event.stopPropagation()
|
||||
|
@ -39,6 +49,8 @@ TokenCell.prototype.render = function () {
|
|||
},
|
||||
}, ''),
|
||||
|
||||
h('hr'),
|
||||
|
||||
/*
|
||||
h('button', {
|
||||
onClick: this.send.bind(this, address),
|
||||
|
|
|
@ -48,11 +48,13 @@ TokenList.prototype.render = function () {
|
|||
])
|
||||
}
|
||||
|
||||
const tokenViews = tokens.map((tokenData) => {
|
||||
const tokenViews = tokens.map((tokenData, ind) => {
|
||||
tokenData.network = network
|
||||
tokenData.userAddress = userAddress
|
||||
const isLastTokenCell = ind === (tokens.length - 1)
|
||||
return h(TokenCell, {
|
||||
...tokenData,
|
||||
isLastTokenCell,
|
||||
removeToken: this.props.removeToken,
|
||||
})
|
||||
})
|
||||
|
@ -123,13 +125,11 @@ TokenList.prototype.renderTokenStatusBar = function () {
|
|||
},
|
||||
style: {
|
||||
display: 'flex',
|
||||
height: '40px',
|
||||
padding: '10px',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
},
|
||||
}, [
|
||||
'ADD TOKEN',
|
||||
'Add Token',
|
||||
]),
|
||||
])
|
||||
}
|
||||
|
|
|
@ -19,18 +19,8 @@ TransactionIcon.prototype.render = function () {
|
|||
return h(!isMsg ? '.unapproved-tx-icon' : 'i.fa.fa-certificate.fa-lg')
|
||||
|
||||
case 'rejected':
|
||||
return h('i.fa.fa-exclamation-triangle.fa-lg.warning', {
|
||||
style: {
|
||||
width: '24px',
|
||||
},
|
||||
})
|
||||
|
||||
case 'failed':
|
||||
return h('i.fa.fa-exclamation-triangle.fa-lg.error', {
|
||||
style: {
|
||||
width: '24px',
|
||||
},
|
||||
})
|
||||
return h('i.tx-warning')
|
||||
|
||||
case 'submitted':
|
||||
return h(Tooltip, {
|
||||
|
@ -48,20 +38,20 @@ TransactionIcon.prototype.render = function () {
|
|||
if (isMsg) {
|
||||
return h('i.fa.fa-certificate.fa-lg', {
|
||||
style: {
|
||||
width: '24px',
|
||||
width: '40px',
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if (txParams.to) {
|
||||
return h(Identicon, {
|
||||
diameter: 24,
|
||||
diameter: 40,
|
||||
address: txParams.to || transaction.hash,
|
||||
})
|
||||
} else {
|
||||
return h('i.fa.fa-file-text-o.fa-lg', {
|
||||
style: {
|
||||
width: '24px',
|
||||
width: '40px',
|
||||
},
|
||||
})
|
||||
}
|
||||
|
|
|
@ -84,6 +84,20 @@ TransactionListItem.prototype.render = function () {
|
|||
const nonce = txParams.nonce ? numberToBN(txParams.nonce).toString(10) : ''
|
||||
|
||||
const isClickable = ('hash' in transaction && isLinkable) || isPending
|
||||
const valueStyle = {
|
||||
fontFamily: 'Nunito Bold',
|
||||
width: '100%',
|
||||
textAlign: 'right',
|
||||
fontSize: '14px',
|
||||
color: '#333333',
|
||||
}
|
||||
|
||||
const dimStyle = {
|
||||
fontFamily: 'Nunito Regular',
|
||||
color: '#333333',
|
||||
marginLeft: '5px',
|
||||
fontSize: '14px',
|
||||
}
|
||||
return (
|
||||
h('.transaction-list-item.flex-column', {
|
||||
onClick: (event) => {
|
||||
|
@ -122,6 +136,7 @@ TransactionListItem.prototype.render = function () {
|
|||
}, [
|
||||
h('span', {
|
||||
style: {
|
||||
fontFamily: 'Nunito Bold',
|
||||
display: 'flex',
|
||||
cursor: 'normal',
|
||||
flexDirection: 'column',
|
||||
|
@ -132,16 +147,29 @@ TransactionListItem.prototype.render = function () {
|
|||
}, nonce),
|
||||
]),
|
||||
|
||||
h('.flex-column', {style: {width: '200px', overflow: 'hidden'}}, [
|
||||
h('.flex-column', {
|
||||
style: {
|
||||
overflow: 'hidden',
|
||||
textAlign: 'left',
|
||||
},
|
||||
}, [
|
||||
domainField(txParams),
|
||||
h('div', date),
|
||||
recipientField(txParams, transaction, isTx, isMsg),
|
||||
h('div.flex-row', [
|
||||
recipientField(txParams, transaction, isTx, isMsg),
|
||||
// Places a copy button if tx is successful, else places a placeholder empty div.
|
||||
transaction.hash ? h(CopyButton, { value: transaction.hash }) : h('div', {style: { display: 'flex', alignItems: 'center', width: '26px' }}),
|
||||
]),
|
||||
h('div', {
|
||||
style: {
|
||||
fontSize: '12px',
|
||||
color: '#777777',
|
||||
},
|
||||
}, date),
|
||||
]),
|
||||
|
||||
// Places a copy button if tx is successful, else places a placeholder empty div.
|
||||
transaction.hash ? h(CopyButton, { value: transaction.hash }) : h('div', {style: { display: 'flex', alignItems: 'center', width: '26px' }}),
|
||||
|
||||
isTx ? h(EthBalance, {
|
||||
valueStyle,
|
||||
dimStyle,
|
||||
value: txParams.value,
|
||||
conversionRate,
|
||||
currentCurrency,
|
||||
|
@ -149,7 +177,9 @@ TransactionListItem.prototype.render = function () {
|
|||
shorten: true,
|
||||
showFiat: false,
|
||||
network,
|
||||
style: {fontSize: '15px'},
|
||||
style: {
|
||||
margin: '0 auto',
|
||||
},
|
||||
}) : h('.flex-column'),
|
||||
]),
|
||||
|
||||
|
@ -218,8 +248,8 @@ function recipientField (txParams, transaction, isTx, isMsg) {
|
|||
|
||||
return h('div', {
|
||||
style: {
|
||||
fontSize: 'x-small',
|
||||
color: '#ABA9AA',
|
||||
fontSize: '14px',
|
||||
color: '#333333',
|
||||
},
|
||||
}, [
|
||||
message,
|
||||
|
|
|
@ -44,7 +44,7 @@ TransactionList.prototype.render = function () {
|
|||
style: {
|
||||
overflowY: 'auto',
|
||||
height: '100%',
|
||||
padding: '0 25px 0 15px',
|
||||
padding: '0 20px 0 20px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, [
|
||||
|
|
|
@ -3,12 +3,9 @@ const Component = require('react').Component
|
|||
const h = require('react-hyperscript')
|
||||
const connect = require('react-redux').connect
|
||||
const actions = require('../../ui/app/actions')
|
||||
const NetworkIndicator = require('./components/network')
|
||||
const LoadingIndicator = require('./components/loading')
|
||||
const txHelper = require('../lib/tx-helper')
|
||||
const log = require('loglevel')
|
||||
const { ENVIRONMENT_TYPE_NOTIFICATION } = require('../../app/scripts/lib/enums')
|
||||
const { getEnvironmentType } = require('../../app/scripts/lib/util')
|
||||
|
||||
const PendingTx = require('./components/pending-tx')
|
||||
const PendingMsg = require('./components/pending-msg')
|
||||
|
@ -45,7 +42,7 @@ function ConfirmTxScreen () {
|
|||
|
||||
ConfirmTxScreen.prototype.render = function () {
|
||||
const props = this.props
|
||||
const { network, provider, unapprovedTxs, currentCurrency, computedBalances,
|
||||
const { network, unapprovedTxs, currentCurrency, computedBalances,
|
||||
unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, blockGasLimit } = props
|
||||
let { conversionRate } = props
|
||||
|
||||
|
@ -58,7 +55,6 @@ ConfirmTxScreen.prototype.render = function () {
|
|||
|
||||
var txData = unconfTxList[props.index] || {}
|
||||
var txParams = txData.params || {}
|
||||
var isNotification = getEnvironmentType(window.location.href) === ENVIRONMENT_TYPE_NOTIFICATION
|
||||
|
||||
log.info(`rendering a combined ${unconfTxList.length} unconf msg & txs`)
|
||||
if (unconfTxList.length === 0) return h(Loading, { isLoading: true })
|
||||
|
@ -67,7 +63,11 @@ ConfirmTxScreen.prototype.render = function () {
|
|||
|
||||
return (
|
||||
|
||||
h('.flex-column.flex-grow', [
|
||||
h('.flex-column.flex-grow', {
|
||||
style: {
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
|
||||
h(LoadingIndicator, {
|
||||
isLoading: this.state ? !this.state.bypassLoadingScreen : txData.loadingDefaults,
|
||||
|
@ -79,37 +79,6 @@ ConfirmTxScreen.prototype.render = function () {
|
|||
}),
|
||||
|
||||
// subtitle and nav
|
||||
h('.section-title.flex-row.flex-center', [
|
||||
!isNotification ? h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
onClick: this.goHome.bind(this),
|
||||
}) : null,
|
||||
h('h2.page-subtitle', 'Confirm Transaction'),
|
||||
isNotification ? h(NetworkIndicator, {
|
||||
network: network,
|
||||
provider: provider,
|
||||
}) : null,
|
||||
]),
|
||||
|
||||
h('h3', {
|
||||
style: {
|
||||
alignSelf: 'center',
|
||||
display: unconfTxList.length > 1 ? 'block' : 'none',
|
||||
},
|
||||
}, [
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
style: {
|
||||
display: props.index === 0 ? 'none' : 'inline-block',
|
||||
},
|
||||
onClick: () => props.dispatch(actions.previousTx()),
|
||||
}),
|
||||
` ${props.index + 1} of ${unconfTxList.length} `,
|
||||
h('i.fa.fa-arrow-right.fa-lg.cursor-pointer', {
|
||||
style: {
|
||||
display: props.index + 1 === unconfTxList.length ? 'none' : 'inline-block',
|
||||
},
|
||||
onClick: () => props.dispatch(actions.nextTx()),
|
||||
}),
|
||||
]),
|
||||
|
||||
warningIfExists(props.warning),
|
||||
|
||||
|
@ -236,11 +205,6 @@ ConfirmTxScreen.prototype.cancelTypedMessage = function (msgData, event) {
|
|||
this.props.dispatch(actions.cancelTypedMsg(msgData))
|
||||
}
|
||||
|
||||
ConfirmTxScreen.prototype.goHome = function (event) {
|
||||
this.stopPropagation(event)
|
||||
this.props.dispatch(actions.goHome())
|
||||
}
|
||||
|
||||
function warningIfExists (warning) {
|
||||
if (warning &&
|
||||
// Do not display user rejections on this screen:
|
||||
|
|
|
@ -45,6 +45,10 @@ ConfigScreen.prototype.render = function () {
|
|||
onClick: () => {
|
||||
state.dispatch(actions.goHome())
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Settings'),
|
||||
]),
|
||||
|
@ -61,7 +65,7 @@ ConfigScreen.prototype.render = function () {
|
|||
h('.flex-column.flex-justify-center.flex-grow.select-none', [
|
||||
h('.flex-space-around', {
|
||||
style: {
|
||||
padding: '20px',
|
||||
padding: '30px',
|
||||
overflow: 'auto',
|
||||
},
|
||||
}, [
|
||||
|
@ -74,8 +78,11 @@ ConfigScreen.prototype.render = function () {
|
|||
style: {
|
||||
width: 'inherit',
|
||||
flex: '1 0 auto',
|
||||
height: '30px',
|
||||
margin: '8px',
|
||||
height: '32px',
|
||||
margin: '20px 20px 0 0',
|
||||
borderRadius: '3px',
|
||||
border: '1px solid #e2e2e2',
|
||||
padding: '10px',
|
||||
},
|
||||
onKeyPress (event) {
|
||||
if (event.key === 'Enter') {
|
||||
|
@ -88,6 +95,7 @@ ConfigScreen.prototype.render = function () {
|
|||
h('button', {
|
||||
style: {
|
||||
alignSelf: 'center',
|
||||
marginTop: '20px',
|
||||
},
|
||||
onClick (event) {
|
||||
event.preventDefault()
|
||||
|
@ -102,7 +110,11 @@ ConfigScreen.prototype.render = function () {
|
|||
|
||||
currentConversionInformation(metamaskState, state),
|
||||
|
||||
h('hr.horizontal-line'),
|
||||
h('hr.horizontal-line', {
|
||||
style: {
|
||||
marginTop: '20px',
|
||||
},
|
||||
}),
|
||||
|
||||
h('div', {
|
||||
style: {
|
||||
|
@ -111,8 +123,9 @@ ConfigScreen.prototype.render = function () {
|
|||
}, [
|
||||
h('p', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Light',
|
||||
fontSize: '13px',
|
||||
fontFamily: 'Nunito Regular',
|
||||
fontSize: '14px',
|
||||
lineHeight: '18px',
|
||||
},
|
||||
}, `State logs contain your public account addresses and sent transactions.`),
|
||||
h('br'),
|
||||
|
@ -132,7 +145,11 @@ ConfigScreen.prototype.render = function () {
|
|||
}, 'Download State Logs'),
|
||||
]),
|
||||
|
||||
h('hr.horizontal-line'),
|
||||
h('hr.horizontal-line', {
|
||||
style: {
|
||||
marginTop: '20px',
|
||||
},
|
||||
}),
|
||||
|
||||
h('div', {
|
||||
style: {
|
||||
|
@ -150,7 +167,11 @@ ConfigScreen.prototype.render = function () {
|
|||
}, 'Reveal Seed Words'),
|
||||
]),
|
||||
|
||||
h('hr.horizontal-line'),
|
||||
h('hr.horizontal-line', {
|
||||
style: {
|
||||
marginTop: '20px',
|
||||
},
|
||||
}),
|
||||
|
||||
h('div', {
|
||||
style: {
|
||||
|
@ -160,8 +181,9 @@ ConfigScreen.prototype.render = function () {
|
|||
|
||||
h('p', {
|
||||
style: {
|
||||
fontFamily: 'Montserrat Light',
|
||||
fontSize: '13px',
|
||||
fontFamily: 'Nunito Regular',
|
||||
fontSize: '14px',
|
||||
lineHeight: '18px',
|
||||
},
|
||||
}, [
|
||||
'Resetting is for developer use only. ',
|
||||
|
|
|
@ -370,3 +370,31 @@
|
|||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito Regular';
|
||||
src: url('/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito SemiBold';
|
||||
src: url('/fonts/Nunito/Nunito-SemiBold.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito Bold';
|
||||
src: url('/fonts/Nunito/Nunito-Bold.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito Light';
|
||||
src: url('/fonts/Nunito/Nunito-Light.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
|
@ -14,8 +14,8 @@ application specific styles
|
|||
}
|
||||
|
||||
html, body {
|
||||
font-family: 'Montserrat Regular', Arial;
|
||||
color: #4D4D4D;
|
||||
font-family: 'Nunito Regular';
|
||||
color: #333333;
|
||||
font-weight: 300;
|
||||
line-height: 1.4em;
|
||||
background: #F7F7F7;
|
||||
|
@ -35,6 +35,8 @@ html {
|
|||
|
||||
.app-primary {
|
||||
display: flex;
|
||||
background: #ffffff;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input:focus, textarea:focus {
|
||||
|
@ -65,30 +67,37 @@ input:focus, textarea:focus {
|
|||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
button, input[type="submit"] {
|
||||
font-family: 'Montserrat Bold';
|
||||
font-family: 'Nunito Bold';
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
padding: 8px 12px;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
height: 32px;
|
||||
border: none;
|
||||
color: white;
|
||||
transform-origin: center center;
|
||||
transition: transform 50ms ease-in;
|
||||
/* default orange */
|
||||
background: rgba(247, 134, 28, 1);
|
||||
box-shadow: 0px 3px 6px rgba(247, 134, 28, 0.36);
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
/* default green */
|
||||
background: #8fdc97;
|
||||
/*box-shadow: 0px 5px 10px 0px rgba(92, 52, 162, 0.3);*/
|
||||
}
|
||||
|
||||
.btn-green, input[type="submit"].btn-green {
|
||||
background: rgba(106, 195, 96, 1);
|
||||
box-shadow: 0px 3px 6px rgba(106, 195, 96, 0.36);
|
||||
background: #8fdc97;
|
||||
}
|
||||
|
||||
.btn-red {
|
||||
background: rgba(254, 35, 17, 1);
|
||||
box-shadow: 0px 3px 6px rgba(254, 35, 17, 0.36);
|
||||
background: #df2265;
|
||||
}
|
||||
|
||||
.btn-violet {
|
||||
background: #6729a8;
|
||||
}
|
||||
|
||||
button[disabled], input[type="submit"][disabled] {
|
||||
|
@ -118,7 +127,7 @@ a {
|
|||
}
|
||||
|
||||
a:hover{
|
||||
color: #df6b0e;
|
||||
color: rgba(143, 220, 151, 0.5);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -135,8 +144,8 @@ button.primary {
|
|||
box-shadow: 0px 3px 6px rgba(247, 134, 28, 0.36);
|
||||
color: white;
|
||||
font-size: 1.1em;
|
||||
font-family: 'Montserrat Regular';
|
||||
text-transform: uppercase;
|
||||
font-family: 'Nunito Regular';
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button.btn-thin {
|
||||
|
@ -156,15 +165,15 @@ button.btn-thin {
|
|||
}
|
||||
|
||||
.app-header h1 {
|
||||
font-family: 'Montserrat Regular';
|
||||
font-family: 'Nunito Regular';
|
||||
text-transform: uppercase;
|
||||
color: #AEAEAE;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
h2.page-subtitle {
|
||||
font-family: 'Montserrat Regular';
|
||||
text-transform: uppercase;
|
||||
color: #AEAEAE;
|
||||
font-family: 'Nunito Regular';
|
||||
color: #333333;
|
||||
font-size: 1em;
|
||||
margin: 12px;
|
||||
}
|
||||
|
@ -182,11 +191,17 @@ h2.page-subtitle {
|
|||
border: 3px solid gray;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border: 1px solid #e2e2e2;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
textarea.twelve-word-phrase {
|
||||
font-family: 'Nunito Regular';
|
||||
padding: 12px;
|
||||
width: 300px;
|
||||
height: 140px;
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
background: white;
|
||||
resize: none;
|
||||
}
|
||||
|
@ -206,7 +221,7 @@ textarea.twelve-word-phrase {
|
|||
|
||||
.check {
|
||||
margin-left: 12px;
|
||||
color: #F7861C;
|
||||
color: #8fdc97;
|
||||
flex: 1 0 auto;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
|
@ -239,12 +254,12 @@ app sections
|
|||
|
||||
/* unlock */
|
||||
.error {
|
||||
color: #f7861c;
|
||||
color: #db60a4;
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
|
||||
.warning {
|
||||
color: #FFAE00;
|
||||
color: #8fdc97;
|
||||
}
|
||||
|
||||
.dropped {
|
||||
|
@ -284,8 +299,71 @@ app sections
|
|||
background: #c3c3c3;
|
||||
}
|
||||
|
||||
.fa-arrow-left {
|
||||
content: url('../images/icon-back.svg');
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
.fa-clipboard {
|
||||
content: url('../images/copy.svg');
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
.sandwich-expando {
|
||||
background-image: url('../images/menu.svg');
|
||||
background-size: 14px 12px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right;
|
||||
}
|
||||
|
||||
.sandwich-expando.expanded {
|
||||
background-image: url('../images/close.svg');
|
||||
background-size: 12px 12px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right;
|
||||
}
|
||||
|
||||
@media (min--moz-device-pixel-ratio: 1.3),
|
||||
(-o-min-device-pixel-ratio: 2.6/2),
|
||||
(-webkit-min-device-pixel-ratio: 1.3),
|
||||
(min-device-pixel-ratio: 1.3),
|
||||
(min-resolution: 1.3dppx) {
|
||||
.logo {
|
||||
background-image: url(../images/logo-1@2x.png);
|
||||
background-size: 146px 134px;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
background-image: url(../images/logo-1.png);
|
||||
background-repeat: no-repeat;
|
||||
width: 146px;
|
||||
height: 134px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.selected-network {
|
||||
width: 4px;
|
||||
height: 26px;
|
||||
background: #8fdc97;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
border-top: 1px solid #e2e2e2;
|
||||
}
|
||||
|
||||
.trash {
|
||||
content: url('../images/close.svg');
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
.section-title .fa-arrow-left {
|
||||
margin: -2px 8px 0px -8px;
|
||||
/*margin: -2px 8px 0px -8px;*/
|
||||
}
|
||||
|
||||
.unlock-screen #metamask-mascot-container {
|
||||
|
@ -298,7 +376,9 @@ app sections
|
|||
}
|
||||
|
||||
.unlock-screen input[type=password] {
|
||||
width: 260px;
|
||||
width: 210px;
|
||||
border-radius: 3px;
|
||||
border: none;
|
||||
/*height: 36px;
|
||||
margin-bottom: 24px;
|
||||
padding: 8px;*/
|
||||
|
@ -306,47 +386,59 @@ app sections
|
|||
|
||||
.sizing-input{
|
||||
font-size: 14px;
|
||||
height: 30px;
|
||||
height: 32px;
|
||||
padding-left: 5px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #e2e2e2;
|
||||
}
|
||||
.editable-label{
|
||||
display: flex;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.editable-button{
|
||||
margin-left: 10px;
|
||||
}
|
||||
/* Webkit */
|
||||
.unlock-screen input::-webkit-input-placeholder {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
}
|
||||
/* Firefox 18- */
|
||||
.unlock-screen input:-moz-placeholder {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
text-align: left;
|
||||
font-size: 14pxm;
|
||||
}
|
||||
/* Firefox 19+ */
|
||||
.unlock-screen input::-moz-placeholder {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
}
|
||||
/* IE */
|
||||
.unlock-screen input:-ms-input-placeholder {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
input.large-input, textarea.large-input {
|
||||
/*margin-bottom: 24px;*/
|
||||
padding: 8px;
|
||||
padding: 10px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #e2e2e2;
|
||||
font-family: 'Nunito Regular';
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
input.large-input {
|
||||
height: 36px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.letter-spacey {
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
|
||||
.in-progress-notification {
|
||||
color: #db60a4;
|
||||
}
|
||||
|
||||
/* accounts */
|
||||
|
||||
|
@ -355,7 +447,7 @@ input.large-input {
|
|||
}
|
||||
|
||||
.accounts-section .horizontal-line {
|
||||
margin: 0px 18px;
|
||||
margin: 0px 20px;
|
||||
}
|
||||
|
||||
.accounts-list-option {
|
||||
|
@ -375,6 +467,18 @@ input.large-input {
|
|||
margin: 0px -8px 0px 8px;
|
||||
}
|
||||
|
||||
.white-arrow-left {
|
||||
content: url('../images/arrow-left-white.svg');
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
.white-arrow-right {
|
||||
content: url('../images/arrow-right-white.svg');
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
/* identity panel */
|
||||
|
||||
.identity-panel {
|
||||
|
@ -382,8 +486,8 @@ input.large-input {
|
|||
}
|
||||
|
||||
.identity-panel .identicon-wrapper {
|
||||
margin: 4px;
|
||||
margin-top: 8px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
@ -399,7 +503,7 @@ input.large-input {
|
|||
.identity-panel i {
|
||||
margin-top: 32px;
|
||||
margin-right: 6px;
|
||||
color: #B9B9B9;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.identity-panel .arrow-right {
|
||||
|
@ -451,10 +555,6 @@ input.large-input {
|
|||
flex-direction: inherit;
|
||||
}
|
||||
|
||||
.account-detail-section .name-label {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.grow-tenx {
|
||||
flex-grow: 10;
|
||||
}
|
||||
|
@ -471,6 +571,29 @@ input.large-input {
|
|||
border-radius: 13px;
|
||||
}
|
||||
|
||||
.tx-warning {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 30px;
|
||||
background: #6729a8;
|
||||
background-image: url('../images/invalid-name.svg');
|
||||
background-size: 2px 18px;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
line-height: 60px;
|
||||
}
|
||||
|
||||
.cell.label {
|
||||
font-family: 'Nunito Regular';
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.cell.value {
|
||||
font-family: 'Nunito Bold';
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.edit-text {
|
||||
height: 100%;
|
||||
visibility: hidden;
|
||||
|
@ -482,7 +605,7 @@ input.large-input {
|
|||
margin-bottom: 2px;
|
||||
font-size: 11px;
|
||||
text-rendering: geometricPrecision;
|
||||
color: #F7861C;
|
||||
color: #60db97;
|
||||
}
|
||||
.name-label:hover .edit-text {
|
||||
visibility: visible;
|
||||
|
@ -506,37 +629,28 @@ input.large-input {
|
|||
}
|
||||
|
||||
.send-screen section {
|
||||
margin: 8px 16px;
|
||||
margin: 10px 30px;
|
||||
}
|
||||
|
||||
.send-screen input {
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
font-size: 14px;
|
||||
border: 1px solid #e2e2e2;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* Ether Balance Widget */
|
||||
|
||||
.ether-balance-amount {
|
||||
color: #F7861C;
|
||||
}
|
||||
|
||||
.ether-balance-label {
|
||||
color: #ABA9AA;
|
||||
}
|
||||
|
||||
/* Info screen */
|
||||
.info-gray{
|
||||
font-family: 'Montserrat Regular';
|
||||
text-transform: uppercase;
|
||||
color: #AEAEAE;
|
||||
}
|
||||
|
||||
.icon-size{
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.info{
|
||||
font-family: 'Montserrat Regular', Arial;
|
||||
font-family: 'Nunito Regular';
|
||||
padding-bottom: 10px;
|
||||
display: inline-block;
|
||||
padding-left: 5px;
|
||||
|
@ -556,7 +670,7 @@ input.large-input {
|
|||
border-style: double;
|
||||
border-radius: 15px;
|
||||
border-width: 5px;
|
||||
background: rgba(247, 134, 28, 1);
|
||||
background: #8fdc97;
|
||||
border-color: #F7F7F7;
|
||||
}
|
||||
|
||||
|
@ -570,7 +684,7 @@ input.large-input {
|
|||
}
|
||||
|
||||
.radio-titles {
|
||||
color: rgba(247, 134, 28, 1);
|
||||
color: #8fdc97;
|
||||
}
|
||||
|
||||
.radio-titles-subtext {
|
||||
|
@ -598,7 +712,7 @@ input.large-input {
|
|||
}
|
||||
|
||||
.buy-inputs{
|
||||
font-family: 'Montserrat Light';
|
||||
font-family: 'Nunito Light';
|
||||
font-size: 13px;
|
||||
height: 20px;
|
||||
background: transparent;
|
||||
|
@ -625,25 +739,25 @@ input.large-input {
|
|||
}
|
||||
|
||||
.activeForm {
|
||||
background: #F7F7F7;
|
||||
background: #ffffff;
|
||||
color: #333333;
|
||||
border: none;
|
||||
border-radius: 8px 8px 0px 0px;
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
padding-bottom: 4px;
|
||||
|
||||
}
|
||||
|
||||
.inactiveForm {
|
||||
background: #60269c;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
border-radius: 8px 8px 0px 0px;
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.ex-coins {
|
||||
font-family: 'Montserrat Regular';
|
||||
font-family: 'Nunito Regular';
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
font-size: 33px;
|
||||
|
@ -654,7 +768,7 @@ input.large-input {
|
|||
}
|
||||
|
||||
.marketinfo{
|
||||
font-family: 'Montserrat light';
|
||||
font-family: 'Nunito light';
|
||||
color: #AEAEAE;
|
||||
font-size: 15px;
|
||||
line-height: 17px;
|
||||
|
@ -696,13 +810,15 @@ input.large-input {
|
|||
text-overflow: ellipsis;
|
||||
width: 5em;
|
||||
font-size: 14px;
|
||||
font-family: "Montserrat Light";
|
||||
font-family: "Nunito Regular";
|
||||
margin-left: 5px;
|
||||
color: #777777;
|
||||
}
|
||||
|
||||
.qr-header {
|
||||
font-size: 25px;
|
||||
margin-top: 40px;
|
||||
font-family: "Nunito SemiBold";
|
||||
font-size: 16px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.qr-message {
|
||||
|
|
|
@ -4,6 +4,15 @@
|
|||
color: #F7861C;
|
||||
}
|
||||
|
||||
.color-green {
|
||||
color: #8fdc97;
|
||||
}
|
||||
|
||||
.color-violet {
|
||||
color: #6729a8;
|
||||
}
|
||||
|
||||
|
||||
.color-forest {
|
||||
color: #0A5448;
|
||||
}
|
||||
|
@ -158,8 +167,12 @@
|
|||
font-size: 12px;
|
||||
}
|
||||
|
||||
.font-pre-medium {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.font-medium {
|
||||
font-size: 1.2em;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
hr.horizontal-line {
|
||||
|
@ -253,7 +266,7 @@ hr.horizontal-line {
|
|||
}
|
||||
|
||||
i.fa.fa-question-circle.fa-lg.menu-icon {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.ether-icon {
|
||||
|
|
|
@ -49,12 +49,13 @@ InitializeMenuScreen.prototype.renderMenu = function (state) {
|
|||
animationEventEmitter: this.animationEventEmitter,
|
||||
}),*/
|
||||
|
||||
h('.logo'),
|
||||
|
||||
h('h1', {
|
||||
style: {
|
||||
paddingTop: '50px',
|
||||
fontSize: '1.3em',
|
||||
textTransform: 'uppercase',
|
||||
color: '#7F8082',
|
||||
color: '#ffffff',
|
||||
marginBottom: 10,
|
||||
},
|
||||
}, 'Nifty Wallet'),
|
||||
|
@ -64,7 +65,7 @@ InitializeMenuScreen.prototype.renderMenu = function (state) {
|
|||
h('h3', {
|
||||
style: {
|
||||
fontSize: '0.8em',
|
||||
color: '#7F8082',
|
||||
color: '#ffffff',
|
||||
display: 'inline',
|
||||
},
|
||||
}, 'Encrypt your new DEN'),
|
||||
|
@ -76,7 +77,7 @@ InitializeMenuScreen.prototype.renderMenu = function (state) {
|
|||
style: {
|
||||
fontSize: '18px',
|
||||
position: 'relative',
|
||||
color: 'rgb(247, 134, 28)',
|
||||
color: '#8fdc97',
|
||||
top: '2px',
|
||||
marginLeft: '4px',
|
||||
},
|
||||
|
@ -95,6 +96,7 @@ InitializeMenuScreen.prototype.renderMenu = function (state) {
|
|||
style: {
|
||||
width: 260,
|
||||
marginTop: 12,
|
||||
border: 'none',
|
||||
},
|
||||
}),
|
||||
|
||||
|
@ -108,11 +110,12 @@ InitializeMenuScreen.prototype.renderMenu = function (state) {
|
|||
style: {
|
||||
width: 260,
|
||||
marginTop: 16,
|
||||
border: 'none',
|
||||
},
|
||||
}),
|
||||
|
||||
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: this.createNewVaultAndKeychain.bind(this),
|
||||
style: {
|
||||
margin: 12,
|
||||
|
@ -124,7 +127,7 @@ InitializeMenuScreen.prototype.renderMenu = function (state) {
|
|||
onClick: this.showRestoreVault.bind(this),
|
||||
style: {
|
||||
fontSize: '0.8em',
|
||||
color: 'rgb(247, 134, 28)',
|
||||
color: '#8fdc97',
|
||||
textDecoration: 'underline',
|
||||
},
|
||||
}, 'Import Existing DEN'),
|
||||
|
|
|
@ -32,6 +32,10 @@ InfoScreen.prototype.render = function () {
|
|||
onClick: (event) => {
|
||||
state.dispatch(actions.goHome())
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Info'),
|
||||
]),
|
||||
|
@ -40,12 +44,12 @@ InfoScreen.prototype.render = function () {
|
|||
h('.flex-column.flex-justify-center.flex-grow.select-none', [
|
||||
h('.flex-space-around', {
|
||||
style: {
|
||||
padding: '20px',
|
||||
padding: '30px',
|
||||
},
|
||||
}, [
|
||||
// current version number
|
||||
|
||||
h('.info.info-gray', [
|
||||
h('.info', [
|
||||
h('div', 'Nifty Wallet'),
|
||||
h('div', {
|
||||
style: {
|
||||
|
|
|
@ -32,15 +32,14 @@ CreateVaultCompleteScreen.prototype.render = function () {
|
|||
// h('h2.page-subtitle', 'Vault Created'),
|
||||
// ]),
|
||||
|
||||
h('h3.flex-center.text-transform-uppercase', {
|
||||
h('h3.flex-center.section-title', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
marginTop: 36,
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
marginBottom: 8,
|
||||
width: '100%',
|
||||
fontSize: '20px',
|
||||
padding: 6,
|
||||
padding: '30px 6px 6px 6px',
|
||||
},
|
||||
}, [
|
||||
'Vault Created',
|
||||
|
@ -49,7 +48,7 @@ CreateVaultCompleteScreen.prototype.render = function () {
|
|||
h('div', {
|
||||
style: {
|
||||
fontSize: '1em',
|
||||
marginTop: '10px',
|
||||
margin: '10px 30px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, [
|
||||
|
@ -61,7 +60,7 @@ CreateVaultCompleteScreen.prototype.render = function () {
|
|||
value: seed,
|
||||
}),
|
||||
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: () => this.confirmSeedWords()
|
||||
.then(account => this.showAccountDetail(account)),
|
||||
style: {
|
||||
|
@ -71,7 +70,7 @@ CreateVaultCompleteScreen.prototype.render = function () {
|
|||
},
|
||||
}, 'I\'ve copied it somewhere safe'),
|
||||
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: () => exportAsFile(`Nifty Wallet Seed Words`, seed),
|
||||
style: {
|
||||
margin: '10px',
|
||||
|
|
|
@ -27,24 +27,24 @@ RevealSeedConfirmation.prototype.render = function () {
|
|||
style: { maxWidth: '420px' },
|
||||
}, [
|
||||
|
||||
h('h3.flex-center.text-transform-uppercase', {
|
||||
h('h3.flex-center.section-title', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
marginBottom: 24,
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
width: '100%',
|
||||
fontSize: '20px',
|
||||
fontSize: '16px',
|
||||
padding: 6,
|
||||
fontFamily: 'Nunito Semibold',
|
||||
},
|
||||
}, [
|
||||
'Reveal Seed Words',
|
||||
h('.page-subtitle', 'Reveal Seed Words'),
|
||||
]),
|
||||
|
||||
h('.div', {
|
||||
style: {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
padding: '20px',
|
||||
padding: '30px',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
}, [
|
||||
|
@ -58,30 +58,10 @@ RevealSeedConfirmation.prototype.render = function () {
|
|||
placeholder: 'Enter your password to confirm',
|
||||
onKeyPress: this.checkConfirmation.bind(this),
|
||||
style: {
|
||||
width: 260,
|
||||
marginTop: '12px',
|
||||
marginTop: '20px',
|
||||
},
|
||||
}),
|
||||
|
||||
h('.flex-row.flex-start', {
|
||||
style: {
|
||||
marginTop: 30,
|
||||
width: '50%',
|
||||
},
|
||||
}, [
|
||||
// cancel
|
||||
h('button.primary', {
|
||||
onClick: this.goHome.bind(this),
|
||||
}, 'CANCEL'),
|
||||
|
||||
// submit
|
||||
h('button.primary', {
|
||||
style: { marginLeft: '10px' },
|
||||
onClick: this.revealSeedWords.bind(this),
|
||||
}, 'OK'),
|
||||
|
||||
]),
|
||||
|
||||
(props.warning) && (
|
||||
h('span.error', {
|
||||
style: {
|
||||
|
@ -93,6 +73,25 @@ RevealSeedConfirmation.prototype.render = function () {
|
|||
props.inProgress && (
|
||||
h('span.in-progress-notification', 'Generating Seed...')
|
||||
),
|
||||
|
||||
h('.flex-row.flex-start.flex-right', {
|
||||
style: {
|
||||
marginTop: 20,
|
||||
width: '100%',
|
||||
},
|
||||
}, [
|
||||
// cancel
|
||||
h('button.btn-violet', {
|
||||
onClick: this.goHome.bind(this),
|
||||
}, 'Cancel'),
|
||||
|
||||
// submit
|
||||
h('button', {
|
||||
style: { marginLeft: '10px' },
|
||||
onClick: this.revealSeedWords.bind(this),
|
||||
}, 'Ok'),
|
||||
|
||||
]),
|
||||
]),
|
||||
])
|
||||
)
|
||||
|
|
|
@ -26,21 +26,28 @@ RestoreVaultScreen.prototype.render = function () {
|
|||
|
||||
h('.initialize-screen.flex-column.flex-center.flex-grow', [
|
||||
|
||||
h('h3.flex-center.text-transform-uppercase', {
|
||||
h('h3.flex-center.section-title', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
fontFamily: 'Nunito SemiBold',
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
marginBottom: 24,
|
||||
width: '100%',
|
||||
fontSize: '20px',
|
||||
fontSize: '16px',
|
||||
padding: 6,
|
||||
},
|
||||
}, [
|
||||
'Restore Vault',
|
||||
h('.page-subtitle', 'Restore Vault'),
|
||||
]),
|
||||
|
||||
// wallet seed entry
|
||||
h('h3', 'Wallet Seed'),
|
||||
h('h3.flex-left', {
|
||||
style: {
|
||||
width: '100%',
|
||||
marginBottom: '20px',
|
||||
marginLeft: '60px',
|
||||
},
|
||||
}, 'Wallet Seed'),
|
||||
h('textarea.twelve-word-phrase.letter-spacey', {
|
||||
placeholder: 'Enter your secret twelve word phrase here to restore your vault.',
|
||||
}),
|
||||
|
@ -54,8 +61,9 @@ RestoreVaultScreen.prototype.render = function () {
|
|||
persistentFormId: 'password',
|
||||
},
|
||||
style: {
|
||||
width: 260,
|
||||
marginTop: 12,
|
||||
width: 300,
|
||||
marginTop: 20,
|
||||
border: '1px solid #e2e2e2',
|
||||
},
|
||||
}),
|
||||
|
||||
|
@ -69,8 +77,9 @@ RestoreVaultScreen.prototype.render = function () {
|
|||
persistentFormId: 'password-confirmation',
|
||||
},
|
||||
style: {
|
||||
width: 260,
|
||||
marginTop: 16,
|
||||
width: 300,
|
||||
marginTop: 20,
|
||||
border: '1px solid #e2e2e2',
|
||||
},
|
||||
}),
|
||||
|
||||
|
@ -80,22 +89,26 @@ RestoreVaultScreen.prototype.render = function () {
|
|||
|
||||
// submit
|
||||
|
||||
h('.flex-row.flex-space-between', {
|
||||
h('.flex-row.flex-space-between.flex-right', {
|
||||
style: {
|
||||
marginTop: 30,
|
||||
width: '50%',
|
||||
marginTop: 20,
|
||||
width: '100%',
|
||||
marginRight: '60px',
|
||||
},
|
||||
}, [
|
||||
|
||||
// cancel
|
||||
h('button.primary', {
|
||||
h('button.btn-violet', {
|
||||
onClick: this.showInitializeMenu.bind(this),
|
||||
}, 'CANCEL'),
|
||||
style: {
|
||||
marginRight: '10px',
|
||||
},
|
||||
}, 'Cancel'),
|
||||
|
||||
// submit
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: this.createNewVaultAndRestore.bind(this),
|
||||
}, 'OK'),
|
||||
}, 'Ok'),
|
||||
|
||||
]),
|
||||
])
|
||||
|
|
|
@ -30,6 +30,10 @@ RemoveTokenScreen.prototype.render = function () {
|
|||
onClick: (event) => {
|
||||
props.dispatch(actions.goHome())
|
||||
},
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Remove Token'),
|
||||
]),
|
||||
|
@ -44,9 +48,9 @@ RemoveTokenScreen.prototype.render = function () {
|
|||
]),
|
||||
|
||||
h('.flex-column.flex-justify-center.flex-grow.select-none', [
|
||||
h('.flex-space-around', {
|
||||
h('.flex-space-around.flex-right', {
|
||||
style: {
|
||||
padding: '20px',
|
||||
padding: '30px',
|
||||
},
|
||||
}, [
|
||||
h('button', {
|
||||
|
|
|
@ -64,23 +64,20 @@ SendTransactionScreen.prototype.render = function () {
|
|||
|
||||
h('.account-data-subsection.flex-row.flex-grow', {
|
||||
style: {
|
||||
margin: '0 20px',
|
||||
background: 'linear-gradient(rgb(84, 36, 147), rgb(104, 45, 182))',
|
||||
padding: '20px 20px',
|
||||
},
|
||||
}, [
|
||||
|
||||
// header - identicon + nav
|
||||
h('.flex-row.flex-space-between', {
|
||||
style: {
|
||||
marginTop: '15px',
|
||||
},
|
||||
}, [
|
||||
// back button
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', {
|
||||
onClick: this.back.bind(this),
|
||||
}),
|
||||
h('.flex-row.flex-space-between', [
|
||||
|
||||
// large identicon
|
||||
h('.identicon-wrapper.flex-column.flex-center.select-none', [
|
||||
h('.identicon-wrapper.flex-column.flex-center.select-none', {
|
||||
style: {
|
||||
display: 'inline-block',
|
||||
},
|
||||
}, [
|
||||
h(Identicon, {
|
||||
diameter: 62,
|
||||
address: address,
|
||||
|
@ -100,12 +97,12 @@ SendTransactionScreen.prototype.render = function () {
|
|||
|
||||
h('.flex-column', {
|
||||
style: {
|
||||
marginTop: '10px',
|
||||
alignItems: 'flex-start',
|
||||
},
|
||||
}, [
|
||||
h('h2.font-medium.color-forest.flex-center', {
|
||||
h('h2.font-medium.flex-center', {
|
||||
style: {
|
||||
color: '#ffffff',
|
||||
paddingTop: '8px',
|
||||
marginBottom: '8px',
|
||||
},
|
||||
|
@ -114,13 +111,15 @@ SendTransactionScreen.prototype.render = function () {
|
|||
// address and getter actions
|
||||
h('.flex-row.flex-center', {
|
||||
style: {
|
||||
marginBottom: '8px',
|
||||
color: 'rgba(255, 255, 255, 0.7)',
|
||||
marginBottom: '30px',
|
||||
},
|
||||
}, [
|
||||
|
||||
h('div', {
|
||||
style: {
|
||||
lineHeight: '16px',
|
||||
fontSize: '14px',
|
||||
},
|
||||
}, addressSummary(address)),
|
||||
|
||||
|
@ -144,14 +143,21 @@ SendTransactionScreen.prototype.render = function () {
|
|||
// Required Fields
|
||||
//
|
||||
|
||||
h('h3.flex-center.text-transform-uppercase', {
|
||||
h('h3.flex-center', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
marginTop: '15px',
|
||||
marginBottom: '16px',
|
||||
color: '#333333',
|
||||
marginTop: '18px',
|
||||
marginBottom: '14px',
|
||||
},
|
||||
}, [
|
||||
// back button
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
onClick: this.back.bind(this),
|
||||
}),
|
||||
'Send Transaction',
|
||||
]),
|
||||
|
||||
|
@ -185,11 +191,8 @@ SendTransactionScreen.prototype.render = function () {
|
|||
},
|
||||
}),
|
||||
|
||||
h('button.primary', {
|
||||
h('button', {
|
||||
onClick: this.onSubmit.bind(this),
|
||||
style: {
|
||||
textTransform: 'uppercase',
|
||||
},
|
||||
}, 'Next'),
|
||||
|
||||
]),
|
||||
|
@ -197,10 +200,10 @@ SendTransactionScreen.prototype.render = function () {
|
|||
//
|
||||
// Optional Fields
|
||||
//
|
||||
h('h3.flex-center.text-transform-uppercase', {
|
||||
h('h3.flex-center', {
|
||||
style: {
|
||||
background: '#EBEBEB',
|
||||
color: '#AEAEAE',
|
||||
background: '#ffffff',
|
||||
color: '#333333',
|
||||
marginTop: '16px',
|
||||
marginBottom: '16px',
|
||||
},
|
||||
|
|
|
@ -24,6 +24,10 @@ AppSettingsPage.prototype.render = function () {
|
|||
h('.flex-row.flex-center', [
|
||||
h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', {
|
||||
onClick: this.navigateToAccounts.bind(this),
|
||||
style: {
|
||||
position: 'absolute',
|
||||
left: '30px',
|
||||
},
|
||||
}),
|
||||
h('h2.page-subtitle', 'Settings'),
|
||||
]),
|
||||
|
|
|
@ -38,49 +38,52 @@ UnlockScreen.prototype.render = function () {
|
|||
animationEventEmitter: this.animationEventEmitter,
|
||||
}),*/
|
||||
|
||||
h('.logo'),
|
||||
|
||||
h('h1', {
|
||||
style: {
|
||||
paddingTop: '50px',
|
||||
fontSize: '1.4em',
|
||||
textTransform: 'uppercase',
|
||||
color: '#7F8082',
|
||||
fontSize: '30px',
|
||||
color: '#ffffff',
|
||||
},
|
||||
}, 'Nifty Wallet'),
|
||||
|
||||
h('input.large-input', {
|
||||
type: 'password',
|
||||
id: 'password-box',
|
||||
placeholder: 'enter password',
|
||||
style: {
|
||||
h('div', [
|
||||
h('input.large-input', {
|
||||
type: 'password',
|
||||
id: 'password-box',
|
||||
placeholder: 'Enter password',
|
||||
style: {
|
||||
|
||||
},
|
||||
onKeyPress: this.onKeyPress.bind(this),
|
||||
onInput: this.inputChanged.bind(this),
|
||||
}),
|
||||
},
|
||||
onKeyPress: this.onKeyPress.bind(this),
|
||||
onInput: this.inputChanged.bind(this),
|
||||
}),
|
||||
|
||||
h('.error', {
|
||||
style: {
|
||||
display: warning ? 'block' : 'none',
|
||||
padding: '0 20px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, warning),
|
||||
h('button.cursor-pointer', {
|
||||
onClick: this.onSubmit.bind(this),
|
||||
style: {
|
||||
margin: '10px 0 10px 10px',
|
||||
},
|
||||
}, 'Log In'),
|
||||
|
||||
h('.error', {
|
||||
style: {
|
||||
display: warning ? 'block' : 'none',
|
||||
padding: '0 20px',
|
||||
textAlign: 'center',
|
||||
},
|
||||
}, warning),
|
||||
]),
|
||||
|
||||
h('button.primary.cursor-pointer', {
|
||||
onClick: this.onSubmit.bind(this),
|
||||
style: {
|
||||
margin: 10,
|
||||
},
|
||||
}, 'Log In'),
|
||||
]),
|
||||
|
||||
h('.flex-row.flex-center.flex-grow', [
|
||||
h('p.pointer', {
|
||||
onClick: () => this.props.dispatch(actions.forgotPassword()),
|
||||
style: {
|
||||
fontSize: '0.8em',
|
||||
color: 'rgb(247, 134, 28)',
|
||||
textDecoration: 'underline',
|
||||
fontSize: '14px',
|
||||
color: '#8fdc97',
|
||||
},
|
||||
}, 'Restore from seed phrase'),
|
||||
]),
|
||||
|
|
|
@ -21,6 +21,7 @@ for (var currency in valueTable) {
|
|||
module.exports = {
|
||||
valuesFor: valuesFor,
|
||||
addressSummary: addressSummary,
|
||||
accountSummary: accountSummary,
|
||||
miniAddressSummary: miniAddressSummary,
|
||||
isAllOneCase: isAllOneCase,
|
||||
isValidAddress: isValidAddress,
|
||||
|
@ -55,6 +56,14 @@ function addressSummary (address, firstSegLength = 10, lastSegLength = 4, includ
|
|||
return checked ? checked.slice(0, firstSegLength) + '...' + checked.slice(checked.length - lastSegLength) : '...'
|
||||
}
|
||||
|
||||
function accountSummary (acc, firstSegLength = 6, lastSegLength = 4) {
|
||||
if (!acc) return ''
|
||||
if (acc.length < 12) return acc
|
||||
let posOfLastPart = acc.length - lastSegLength
|
||||
if (posOfLastPart < (firstSegLength + 1)) posOfLastPart += (firstSegLength + 1) - posOfLastPart
|
||||
return acc.slice(0, firstSegLength) + '...' + acc.slice(posOfLastPart)
|
||||
}
|
||||
|
||||
function miniAddressSummary (address) {
|
||||
if (!address) return ''
|
||||
var checked = ethUtil.toChecksumAddress(address)
|
||||
|
|