Merge branch 'ref/design' of github.com:bitpay/bitpay-wallet into scanHandling

This commit is contained in:
Marty Alcala 2016-10-20 16:46:54 -04:00
commit 41e1d99609
88 changed files with 237 additions and 167 deletions

View file

@ -210,7 +210,7 @@ module.exports = function(grunt) {
files: [{
expand: true,
cwd: 'webkitbuilds/',
src: ['.desktop', '../www/img/app/favicon.ico', '../www/img/app/512x512.png'],
src: ['.desktop', '../www/img/app/favicon.ico', '../resources/<%= pkg.name %>/linux/512x512.png'],
dest: 'webkitbuilds/<%= pkg.title %>/linux64/',
flatten: true,
filter: 'isFile'
@ -223,7 +223,7 @@ module.exports = function(grunt) {
platforms: ['win64', 'osx64', 'linux64'],
buildDir: './webkitbuilds',
version: '0.16.0',
macIcns: './www/img/app/logo.icns',
macIcns: './resources/<%= pkg.name %>/mac/app.icns',
exeIco: './www/img/app/logo.ico'
},
src: ['./package.json', './www/**/*']

View file

@ -65,6 +65,10 @@ Object.keys(templates).forEach(function(k) {
if(k === 'config-template.xml'){
k = 'config.xml';
}
if (!fs.existsSync('../' + targetDir)){
fs.mkdirSync('../' + targetDir);
}
fs.writeFileSync('../' + targetDir + k, content, 'utf8');
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

View file

@ -17,13 +17,18 @@ fi
# set up your app name, architecture, and background image file name
APP_NAME="*USERVISIBLENAME*"
DMG_BACKGROUND_IMG="Background.png"
rm dmg-background.tiff
ln -s ../resources/*PACKAGENAME*/mac/dmg-background.tiff dmg-background.tiff
rm volume-icon.icns
ln -s ../resources/*PACKAGENAME*/mac/volume-icon.icns volume-icon.icns
DMG_VOLUME_ICON="volume-icon.icns"
DMG_BACKGROUND_IMG="dmg-background.tiff"
PATH_NAME="${APP_NAME}/osx64/"
# you should not need to change these
APP_EXE="${PATH_NAME}${APP_NAME}.app/Contents/MacOS/nwjs"
VOL_NAME="${APP_NAME}-osx"
VOL_NAME="${APP_NAME}"
DMG_TMP="${VOL_NAME}-temp.dmg"
DMG_FINAL="${VOL_NAME}.dmg"
STAGING_DIR="tmp"
@ -95,17 +100,43 @@ DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \
sleep 2
# add a link to the Applications dir
echo "Add link to /Applications"
echo "Adding link to /Applications"
pushd /Volumes/"${VOL_NAME}"
ln -s /Applications
# We name the symlink with a *non-breaking space* to avoid displaying extra text
ln -s /Applications " " # <- not your ordinary space
popd
# "bless" the folder to open it in Finder automatically when the volume is mounted
echo "Blessing disk image"
bless --folder /Volumes/"${VOL_NAME}" --openfolder /Volumes/"${VOL_NAME}"
# add a background image
echo "Adding background to disk image"
mkdir /Volumes/"${VOL_NAME}"/.background
cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/
echo "Adding volume icon to disk image"
# use fileicon node_module
cp "${DMG_VOLUME_ICON}" /Volumes/"${VOL_NAME}"/.VolumeIcon.icns
`npm bin`/fileicon set /Volumes/"${VOL_NAME}"/ /Volumes/"${VOL_NAME}"/.VolumeIcon.icns
# tell the Finder to resize the window, set the background,
# change the icon size, place the icons in the right position, etc.
echo "Designing the unboxing experience..."
WINDOW_X=400
WINDOW_Y=100
WINDOW_WIDTH=500
WINDOW_HEIGHT=375
ICON_SIZE=100
ICON_LR_PADDING=140
ICON_Y=185
WINDOW_RIGHT=$(expr $WINDOW_X + $WINDOW_WIDTH)
WINDOW_BOTTOM=$(expr $WINDOW_Y + $WINDOW_HEIGHT)
RIGHT_ICON_PADDING_RIGHT=$(expr $WINDOW_WIDTH - $ICON_LR_PADDING)
HIDE_X=100 # no need to exceed WINDOW_WIDTH will only create another scrollbar
HIDE_Y=$(expr $WINDOW_HEIGHT + $ICON_SIZE)
echo '
tell application "Finder"
tell disk "'${VOL_NAME}'"
@ -113,13 +144,17 @@ echo '
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {400, 100, 920, 440}
set the bounds of container window to {'${WINDOW_X}', '${WINDOW_Y}', '${WINDOW_RIGHT}', '${WINDOW_BOTTOM}'}
set viewOptions to the icon view options of container window
set arrangement of viewOptions to not arranged
set icon size of viewOptions to 72
set icon size of viewOptions to '${ICON_SIZE}'
set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'"
set position of item "'${APP_NAME}'.app" of container window to {160, 205}
set position of item "Applications" of container window to {360, 205}
set position of item "'${APP_NAME}'.app" of container window to {'${ICON_LR_PADDING}', '${ICON_Y}'}
set position of item " " of container window to {'${RIGHT_ICON_PADDING_RIGHT}', '${ICON_Y}'}
set position of item ".background" of container window to {'${HIDE_X}', '${HIDE_Y}'}
set position of item ".VolumeIcon.icns" of container window to {'${HIDE_X}', '${HIDE_Y}'}
set position of item ".fseventsd" of container window to {'${HIDE_X}', '${HIDE_Y}'}
set position of item "Icon?" of container window to {'${HIDE_X}', '${HIDE_Y}'}
close
open
update without registering applications

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

View file

@ -79,8 +79,8 @@
"shelljs": "^0.3.0"
},
"scripts": {
"preinstall": "bower install && npm install fs-extra",
"postinstall": "echo && echo \"To finish, choose a distribution by running 'npm run apply:copay' or 'npm run apply:bitpay'.\" && echo",
"postinstall": "bower install && npm run postapply",
"postapply": "echo && echo \"To finish, choose a distribution by running 'npm run apply:copay' or 'npm run apply:bitpay'.\" && echo",
"start": "npm run build:www && ionic serve --nolivereload --nogulp -s",
"start:ios": "npm run build:www && npm run build:ios && npm run open:ios",
"start:android": "npm run build:www && npm run build:android && npm run run:android",
@ -98,21 +98,25 @@
"final:www": "npm run build:www-release",
"final:ios": "npm run final:www && npm run build:ios-release && npm run open:ios",
"final:android": "npm run final:www && npm run build:android-release && npm run run:android",
"final:desktop": "grunt desktop",
"sign:android": "rm -f platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../copay.keystore -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk copay_play && ../android-sdk-macosx/build-tools/21.1.1/zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-signed-aligned.apk",
"final:desktop": "npm run build:desktop && npm run build:macos",
"run:android": "cordova run android --device",
"log:android": "adb logcat | grep chromium",
"sign:android": "rm -f platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../copay.keystore -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk copay_play && ../android-sdk-macosx/build-tools/21.1.1/zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-signed-aligned.apk",
"apply:copay": "cd app-template && node apply.js copay && cordova prepare",
"apply:bitpay": "cd app-template && node apply.js bitpay && cordova prepare",
"test": "./node_modules/.bin/grunt test-coveralls",
"clean": "trash platforms && trash plugins && cordova prepare",
"clean-all": "git clean -dfx && npm install"
"unstage-package": "git reset package.json",
"clean-all": "git clean -dfx"
},
"devDependencies": {
"cordova": "^6.3.1",
"grunt": "^1.0.1",
"ionic": "^2.1.0",
"trash-cli": "^1.4.0",
"lodash": "^4.3.0"
}
"lodash": "^4.3.0",
"fileicon": "^0.1.8",
"pre-commit": "^1.1.3"
},
"pre-commit": "unstage-package"
}

View file

@ -1,116 +1,20 @@
{
"//":"Changes to this file will be overwritten",
"//":" Modify it in the app-template directory",
"name": "bitpay",
"description": "Secure Bitcoin Wallet",
"author": "BitPay",
"version": "0.14.0",
"keywords": [
"bitcoin",
"wallet",
"bitpay",
"copay",
"multisignature",
"bitcore"
],
"main": "www/index.html",
"window": {
"title": "BitPay - Secure Bitcoin Wallet",
"icon": "www/img/icon-128.png",
"toolbar": false,
"show": true,
"visible": true,
"resizable": true,
"frame": true,
"width": 400,
"height": 650,
"position": "center",
"fullscreen": false
{
"name": "distribution-not-selected",
"description": "Choose a distribution by running 'npm run apply:copay' or 'npm run apply:bitpay'.",
"primary-package-json": "See the tempate in app-template/package.json",
"scripts": {
"postinstall": "npm run apply:copay",
"start": "echo && echo \"Choose a distribution by running 'npm run apply:copay' or 'npm run apply:bitpay'.\" && echo",
"preapply": "npm i fs-extra",
"apply:copay": "npm run preapply && cd app-template && node apply.js copay && cd .. && npm i && npm run postapply",
"apply:bitpay": "npm run preapply && cd app-template && node apply.js bitpay && cd .. && npm i && npm run postapply",
"clean-all": "git clean -dfx"
},
"webkit": {
"page-cache": false,
"java": false,
"plugin": false
},
"dom_storage_quota": 200,
"id": "jid1-x7bV5evAaI1P9Q",
"homepage": "https://bitpay.com",
"license": "MIT",
"repository": {
"url": "git://github.com/bitpay/copay.git",
"url": "git://github.com/bitpay/bitpay-wallet.git",
"type": "git"
},
"bugs": {
"url": "https://github.com/bitpay/bitpay-wallet/issues"
},
"dependencies": {
"adm-zip": "^0.4.7",
"angular": "1.4.6",
"angular-mocks": "1.4.10",
"bezier-easing": "^2.0.3",
"bhttp": "^1.2.1",
"bitauth": "^0.3.2",
"bitcore-wallet-client": "4.3.2",
"bower": "^1.7.9",
"chai": "^3.5.0",
"cordova-android": "5.1.1",
"cordova-custom-config": "^3.0.5",
"cordova-plugin-qrscanner": "^2.3.1",
"coveralls": "^2.11.9",
"express": "^4.11.2",
"fs": "0.0.2",
"fs-extra": "^0.30.0",
"grunt-angular-gettext": "^2.2.3",
"grunt-browserify": "^5.0.0",
"grunt-cli": "^1.2.0",
"grunt-contrib-compress": "^1.3.0",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-uglify": "^2.0.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-exec": "^1.0.0",
"grunt-nw-builder": "^2.0.3",
"grunt-sass": "^1.2.0",
"load-grunt-tasks": "^3.5.0",
"mocha": "^2.4.5",
"phantomjs-prebuilt": "^2.1.7",
"shelljs": "^0.3.0"
},
"scripts": {
"preinstall": "bower install && npm install fs-extra",
"postinstall": "echo && echo \"To finish, choose a distribution by running 'npm run apply:copay' or 'npm run apply:bitpay'.\" && echo",
"start": "npm run build:www && ionic serve --nolivereload --nogulp -s",
"start:ios": "npm run build:www && npm run build:ios && npm run open:ios",
"start:android": "npm run build:www && npm run build:android && npm run run:android",
"start:desktop": "grunt desktop",
"watch": "grunt watch",
"build:www": "grunt",
"build:www-release": "grunt prod",
"build:ios": "cordova prepare ios && cordova build ios --debug",
"build:android": "cordova prepare android && cordova build android --debug",
"build:ios-release": "cordova prepare ios && cordova build ios --release",
"build:android-release": "cordova prepare android && cordova build android --release",
"open:ios": "open platforms/ios/*.xcodeproj",
"open:android": "open -a open -a /Applications/Android\\ Studio.app platforms/android",
"final:www": "npm run build:www-release",
"final:ios": "npm run final:www && npm run build:ios-release && npm run open:ios",
"final:android": "npm run final:www && npm run build:android-release && npm run run:android",
"final:desktop": "grunt desktop",
"sign:android": "rm -f platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../copay.keystore -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk copay_play && ../android-sdk-macosx/build-tools/21.1.1/zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-signed-aligned.apk",
"run:android": "cordova run android --device",
"log:android": "adb logcat | grep chromium",
"apply:copay": "cd app-template && node apply.js copay && cordova prepare",
"apply:bitpay": "cd app-template && node apply.js bitpay && cordova prepare",
"test": "./node_modules/.bin/grunt test-coveralls",
"clean": "trash platforms && trash plugins && cordova prepare",
"clean-all": "git clean -dfx && npm install"
},
"devDependencies": {
"cordova": "^6.3.1",
"grunt": "^1.0.1",
"ionic": "^2.1.0",
"trash-cli": "^1.4.0",
"lodash": "^4.3.0"
}
"changes": "changes to this file can be commited with the --no-verify option"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 KiB

After

Width:  |  Height:  |  Size: 373 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 KiB

After

Width:  |  Height:  |  Size: 725 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 526 KiB

After

Width:  |  Height:  |  Size: 526 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 KiB

After

Width:  |  Height:  |  Size: 550 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

28
resources/generate.sh Normal file
View file

@ -0,0 +1,28 @@
# This script requires Sketch on macOS see readme.md for details
# export all slices marked for export to the proper directory
echo "Exporting all assets from src.sketch..."
sketchtool export layers src.sketch
function postprocess {
echo "Beginning postprocessing for $1..."
echo "Postprocessing assets for macOS..."
iconset $1 app
iconset $1 volume-icon
echo "Creating Retina-ready DMG background..."
tiffutil -cathidpicheck $1/mac/dmg-background.png $1/mac/dmg-background@2x.png -out $1/mac/dmg-background.tiff
echo "Removing raw background pngs..."
rm $1/mac/dmg-background.png $1/mac/dmg-background@2x.png
}
function iconset {
echo "Converting $1 $2 iconset to icns..."
iconutil --convert icns $1/mac/$2.iconset --output $1/mac/$2.icns
echo "Removing $1 $2 iconset..."
rm -r $1/mac/$2.iconset
}
postprocess copay
postprocess bitpay

2
resources/install.sh Normal file
View file

@ -0,0 +1,2 @@
# This installs sketchtool: https://www.sketchapp.com/tool/
sh /Applications/Sketch.app/Contents/Resources/sketchtool/install.sh

29
resources/readme.md Normal file
View file

@ -0,0 +1,29 @@
# Copay Project Resources
This directory contains a `src.sketch` file from which all other assets are exported or derived.
## Requirements
You'll need [Sketch](https://www.sketchapp.com/) to make any changes to this directory.
Sketch is only available for macOS, and several processes in `generate.sh` require utilities that ship with the OS, so this process must be performed on macOS.
## Install sketchtool
If you do not have `sketchtool` installed, you'll first need to install it.
```sh
sh install.sh
```
## Generate assets
To make an update, first make the change in `src.sketch`, then run:
```sh
sh generate.sh
```
## Commit the changes
Be sure to commit the modified `src.sketch`, as well as any modified exported assets.

Binary file not shown.

View file

@ -106,7 +106,7 @@ angular.module('copayApp.controllers').controller('advancedSettingsController',
});
};
$scope.$on("$ionicView.enter", function(event, data) {
$scope.$on("$ionicView.beforeEnter", function(event, data) {
updateConfig();
});

View file

@ -83,8 +83,6 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
time: $scope.btx.time,
description: actionDescriptions['broadcasted'],
});
$scope.actionList.reverse();
};
$scope.showCommentPopup = function() {

View file

@ -59,8 +59,6 @@ angular.module('copayApp.controllers').controller('txpDetailsController', functi
by: action.copayerName
});
});
$scope.actionList.reverse();
};
$scope.$on('accepted', function(event) {

View file

@ -23,4 +23,11 @@ angular.module('copayApp.controllers').controller('preferencesAliasController',
$ionicHistory.goBack();
});
};
$scope.valueCheck = function() {
if ($scope.alias.value == wallet.credentials.walletName || $scope.alias.value == '') $scope.disableSave = true;
else $scope.disableSave = false;
};
$scope.$watch('alias.value', function(newvalue, oldvalue) {
$scope.valueCheck();
});
});

View file

@ -30,3 +30,8 @@ $placeholder-icon-padding: 10px;
.item-input-wrapper {
background: none transparent;
}
// the default .item p color of #666 cannot be modified by a variable
.item p {
color: $mid-gray;
}

View file

@ -5,6 +5,7 @@ $fill-blue: #D5DFFF;
$subtle-gray: darken(#fff, 5%);
$roboto: "Roboto", sans-serif;
$roboto-light: "Roboto-Light", sans-serif-light;
$light-green: rgb(19, 229, 182);
$success-green: #17ae8c;
$warning-orange: #ffa500;
$dark-gray: #445;

View file

@ -1,3 +1,12 @@
#terms {
.terms {
&__heading {
font-weight: bold;
color: $dark-gray;
}
}
}
#terms-of-use {
ion-header-bar {
background: #fff;
@ -41,16 +50,16 @@
}
.checkbox input:checked:before,
.checkbox input:checked + .checkbox-icon:before {
border-color: rgb(19, 229, 182);
border-color: $light-green;
}
.checkbox input:checked:after,
input:checked + .checkbox-icon:after {
border-color: rgb(19, 229, 182);
border-color: $light-green;
top: 20%;
left: 11%;
}
.item {
color: rgb(58, 58, 58);
color: $dark-gray;
padding-bottom: 1.2rem;
padding-bottom: 2.5rem;
float: left;
@ -64,7 +73,7 @@
}
}
p {
color: rgb(58, 58, 58);
color: $dark-gray;
}
.checkbox input:before,
.checkbox .checkbox-icon:before {
@ -72,7 +81,7 @@
}
.checkbox input:checked:before,
.checkbox input:checked + .checkbox-icon:before {
border-color: rgb(19, 229, 182);
border-color: $light-green;
}
button {
margin-top: 1.5rem;

View file

@ -1 +0,0 @@
../www/img/app/Background.png

View file

@ -1,2 +0,0 @@

View file

@ -61,15 +61,19 @@
ng-repeat="tx in bitpayCard.bitpayCardTransactionHistory | orderBy: ['pending','-timestamp']"
class="item row">
<div class="col col-10">
<img class="m5t" ng-src="img/mcc-icons/{{tx.icon}}.svg" width="22">
<img class="m5t" ng-src="img/mcc-icons/{{tx.icon}}.svg" width="28">
</div>
<div class="col col-50">
<div class="size-12 text-bold">
{{tx.merchant.name}}
</div>
<div class="size-12">
{{tx.merchant.city}}, {{tx.merchant.state}}
<div class="size-10">
<span ng-show="tx.merchant.city && tx.merchant.state">{{tx.merchant.city}}, {{tx.merchant.state}}</span>
<span ng-show="tx.desc">
<span ng-show="tx.merchant.city && tx.merchant.state"> - </span>
{{tx.desc}}
</span>
</div>
</div>
<!--
@ -81,15 +85,16 @@
<img ng-show="!tx.pending" ng-src="img/check.svg" width="14">
<img ng-show="tx.pending" ng-src="img/sync.svg" width="14">
</div>
<div class="col text-right size-12 text-gray">
<div class="size-14"
<div class="col text-right size-14 text-gray">
<div ng-show="tx.fee != '0.00'">{{tx.fee | currency:'$':2}}</div>
<div ng-show="tx.fee == '0.00'"
ng-class="{
'text-success': tx.amount.indexOf('-') == -1 && !tx.pending,
'text-gray': tx.amount.indexOf('-') == -1 && tx.pending}">
{{tx.amount | currency:'$':2 }}
</div>
<time ng-if="!tx.pending">{{tx.timestamp | amTimeAgo}}</time>
<span ng-if="tx.pending" class="tu" translate>Pending</span>
<time class="size-12" ng-if="!tx.pending">{{tx.timestamp | amTimeAgo}}</time>
<span class="size-12" ng-if="tx.pending" class="tu" translate>Pending</span>
</div>
</div>
</div>

View file

@ -26,10 +26,10 @@
<img ng-if="!cardId" src="img/icon-bitcoin-small.svg">
<img ng-if="cardId" src="img/icon-card.svg" width="34">
<contact ng-if="!toName && !_paypro" class="ellipsis" address="{{toAddress}}" copy-to-clipboard="toAddress">
</contact>
<span class="m15l size-14" ng-if="toName && !_paypro" copy-to-clipboard="toAddress">{{toName}}</span>
<div copy-to-clipboard="toAddress" ng-if="!_paypro" class="ellipsis">
<contact ng-if="!toName" address="{{toAddress}}"></contact>
<span class="m15l size-14" ng-if="toName">{{toName}}</span>
</div>
<div ng-if="_paypro" ng-click="openPPModal(_paypro)" class="m15l size-14 w100p pointer">
<i ng-show="_paypro.verified && _paypro.caTrusted" class="ion-locked" style="color:green"></i>

View file

@ -1,12 +1,56 @@
<p translate>
This software functions as a free, open source, and multi-signature digital wallet. The software does not constitute an account where BitPay or other third parties serve as financial intermediaries or custodians of your bitcoin.
</p>
<p translate>
While the software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, we cannot guarantee that there will be no bugs in the software. You acknowledge that your use of this software is at your own discretion and in compliance with all applicable laws. You are responsible for safekeeping your passwords, private key pairs, PINs, and any other codes you use to access the software.
</p>
<p translate>
IF YOU LOSE ACCESS TO YOUR BITCOIN WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The authors of the software, employees and affiliates of BitPay, copyright holders, and BitPay, Inc. cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction confirmation as they do not have control over the Bitcoin network.
</p>
<p translate>
To the fullest extent permitted by law, this software is provided “as is” and no representations or warranties can be made of any kind, express or implied, including but not limited to the warranties of merchantability, fitness or a particular purpose and noninfringement. You assume any and all risks associated with the use of the software. In no event shall the authors of the software, employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the software. We reserve the right to modify this disclaimer from time to time.
</p>
<div id="terms">
<p translate>
This is a binding Agreement between BitPay, Inc. (&ldquo;BitPay&rdquo; or &ldquo;We&rdquo;) and the person, persons, or entity (&ldquo;You&rdquo; or &ldquo;Your&rdquo;) using the service, Software, or application (&ldquo;Software&rdquo;).
</p>
<p class="terms__heading" translate>
RIGHTS AND OBLIGATIONS
</p>
<p translate>
BitPay provides the Software solely on the terms and conditions set forth in this Agreement and on the condition that You accept and comply with them. By using the Software You (a) accept this Agreement and agree that You are legally bound by its terms; and (b) represent and warrant that: (i) You are of legal age to enter into a binding agreement; and (ii) if You are a corporation, governmental organization or other legal entity, You have the right, power and authority to enter into this Agreement on behalf of the corporation, governmental organization or other legal entity and bind them to these terms.
</p>
<p translate>
This Software functions as a free, open source, and multi-signature digital wallet. The Software does not constitute an account where We or other third parties serve as financial intermediaries or custodians of Your bitcoin(s).
</p>
<p translate>
While the Software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, We cannot guarantee there will not be bugs in the Software. You acknowledge that Your use of this Software is at Your own discretion and in compliance with all applicable laws. You are responsible for safekeeping Your passwords, private key pairs, PINs, and any other codes You use to access the Software.
</p>
<p translate>
IF YOU LOSE ACCESS TO YOUR BITCOIN WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The authors of the Software, employees and affiliates of BitPay, copyright holders, and BitPay, Inc. cannot retrieve Your private keys or passwords if You lose or forget them and cannot guarantee transaction confirmation as they do not have control over the bitcoin network.
</p>
<p class="terms__heading" translate>
DISCLAIMER
</p>
<p translate>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OF THE SOFTWARE, EMPLOYEES AND AFFILIATES OF BITPAY, COPYRIGHT HOLDERS, OR BITPAY, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</p>
<p translate>
IN NO EVENT WILL BITPAY OR ITS AFFILIATES, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
</p>
<p class="terms__heading" translate>
INTELLECTUAL PROPERTY
</p>
<p translate>
We retain all right, title, and interest in and to the Content and all of BitPays brands, logos, and trademarks, including, but not limited to, BitPay, Inc., BitPay, BitPay &ndash; Secure Bitcoin Wallet, BitPay Wallet, BitPay App, Copay, BitPay Prepaid Card, and variations of the wording of the aforementioned brands, logos, and trademarks.
</p>
<p class="terms__heading" translate>
CHOICE OF LAW
</p>
<p translate>
This Agreement, and its application and interpretation, shall be governed exclusively by the laws of the State of Georgia, without regard to its conflict of law rules. You consent to the exclusive jurisdiction of the federal and state courts located in or near Atlanta, Georgia for any dispute arising under this Agreement.
</p>
<p class="terms__heading" translate>
SEVERABILITY
</p>
<p translate>
In the event any court shall declare any section or sections of this Agreement invalid or void, such declaration shall not invalidate the entire Agreement and all other paragraphs of the Agreement shall remain in full force and effect.
</p>
<p class="terms__heading" translate>
BINDING AGREEMENT
</p>
<p translate>
The terms and provisions of this Agreement are binding upon Your heirs, successors, assigns, and other representatives. This Agreement may be executed in counterparts, each of which shall be considered to be an original, but both of which constitute the same Agreement.
</p>
<p translate>
You assume any and all risks associated with the use of the Software. We reserve the right to modify this Agreement from time to time.
</p>
</div>

View file

@ -156,10 +156,10 @@
<div ng-if="actionList[0]">
<div class="item item-divider" translate>Timeline</div>
<div class="item" ng-class="{'action-created' : a.type == 'created' || a.type == 'accept', 'action-rejected' : a.type == 'reject'}" ng-repeat="a in actionList track by $index">
<div class="item" ng-class="{'action-created' : a.type == 'created' || a.type == 'accept', 'action-rejected' : a.type == 'reject'}" ng-repeat="a in actionList | orderBy: 'time' :true track by $index">
<div class="row">
<div class="col col-10">
<span id="timeline-icon">{{$index + 1}}</span>
<span id="timeline-icon">{{actionList.length - $index}}</span>
</div>
<div class="col">
<div>{{a.description}}</div>

View file

@ -129,11 +129,11 @@
</div>
<div ng-if="actionList[0]">
<div class="item item-divider" translate>Timeline</div>
<div class="item timeline-item" ng-class="{'action-created' : a.type == 'created' || a.type == 'accept', 'action-rejected' : a.type == 'reject'}" ng-repeat="a in actionList | orderBy: 'time' track by $index">
<div class="item timeline-item" ng-class="{'action-created' : a.type == 'created' || a.type == 'accept', 'action-rejected' : a.type == 'reject'}" ng-repeat="a in actionList | orderBy: 'time' :true track by $index">
<div class="timeline-content">
<div class="timeline-content__icon">
<div class="rejected" ng-if="a.type === 'reject'">!</div>
<div ng-if="a.type !== 'reject'">{{$index + 1}}</div>
<div ng-if="a.type !== 'reject'">{{actionList.length - $index}}</div>
</div>
<div class="timeline-content__label">
<div class="action">{{a.description}}</div>

View file

@ -20,7 +20,7 @@
</div>
<button type="submit"
class="button button-standard button-primary"
ng-disabled="aliasForm.$invalid" translate>
ng-disabled="disableSave" translate>
Save
</button>
</form>