Merge pull request #6944 from cmgustavo/v4-05

V4 05
This commit is contained in:
Gabriel Edgardo Bazán 2017-10-23 09:44:44 -03:00 committed by GitHub
commit 63debd5722
25 changed files with 638 additions and 822 deletions

View File

@ -61,11 +61,21 @@
<plugin name="cordova-plugin-transport-security" spec="0.1.2" /> <plugin name="cordova-plugin-transport-security" spec="0.1.2" />
<plugin name="cordova-ios-requires-fullscreen" spec="0.0.2" /> <plugin name="cordova-ios-requires-fullscreen" spec="0.0.2" />
<plugin name="cordova-plugin-screen-orientation" spec="1.4.3" /> <plugin name="cordova-plugin-screen-orientation" spec="1.4.3" />
<plugin name="cordova-custom-config" spec="4.0.2" />
<plugin name="cordova-plugin-customurlscheme" spec="https://github.com/cmgustavo/Custom-URL-scheme.git">
<variable name="URL_SCHEME" value="bitcoin" />
<variable name="SECOND_URL_SCHEME" value="*APPURI*" />
<variable name="THIRD_URL_SCHEME" value="bitcoincash" />
</plugin>
<plugin name="cordova-plugin-fcm" spec="https://github.com/cmgustavo/cordova-plugin-fcm.git" />
<plugin name="cordova-plugin-ionic-webview" spec="1.1.15" /> <plugin name="cordova-plugin-ionic-webview" spec="1.1.15" />
<!-- Platform Specific Settings --> <!-- Platform Specific Settings -->
<platform name="ios"> <platform name="ios">
<config-file platform="ios" target="*-Info.plist" parent="UIStatusBarHidden"><true/></config-file>
<config-file platform="ios" target="*-Info.plist" parent="UIViewControllerBasedStatusBarAppearance"><false/></config-file>
<config-file target="*-Info.plist" parent="ITSAppUsesNonExemptEncryption"><false/></config-file>
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60@3x.png" width="180" height="180" /> <icon src="resources/*PACKAGENAME*/ios/icon/icon-60@3x.png" width="180" height="180" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60.png" width="60" height="60" /> <icon src="resources/*PACKAGENAME*/ios/icon/icon-60.png" width="60" height="60" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60@2x.png" width="120" height="120" /> <icon src="resources/*PACKAGENAME*/ios/icon/icon-60@2x.png" width="120" height="120" />

626
package-lock.json generated
View File

@ -65,7 +65,7 @@
"raw-loader": "0.5.1", "raw-loader": "0.5.1",
"resolve": "1.4.0", "resolve": "1.4.0",
"rsvp": "3.6.2", "rsvp": "3.6.2",
"rxjs": "5.4.3", "rxjs": "5.5.0",
"sass-loader": "6.0.6", "sass-loader": "6.0.6",
"script-loader": "0.7.2", "script-loader": "0.7.2",
"semver": "5.4.1", "semver": "5.4.1",
@ -99,7 +99,7 @@
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"normalize-range": "0.1.2", "normalize-range": "0.1.2",
"num2fraction": "1.2.2", "num2fraction": "1.2.2",
"postcss": "5.2.18", "postcss": "5.2.18",
@ -112,7 +112,7 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"electron-to-chromium": "1.3.25" "electron-to-chromium": "1.3.25"
} }
}, },
@ -172,9 +172,9 @@
} }
}, },
"rxjs": { "rxjs": {
"version": "5.4.3", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.3.tgz", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.0.tgz",
"integrity": "sha512-fSNi+y+P9ss+EZuV0GcIIqPUK07DEaMRUtLJvdcvMyFjc9dizuDjere+A4V7JrLGnm9iCc+nagV/4QdMTkqC4A==", "integrity": "sha512-vmvP5y/oJIJmXKHY36PIjVeI/46Sny6BMBa7/ou2zsNz1PiqU/Gtcz1GujnHz5Qlxncv+J9VlWmttnshqFj3Kg==",
"dev": true, "dev": true,
"requires": { "requires": {
"symbol-observable": "1.0.4" "symbol-observable": "1.0.4"
@ -188,64 +188,79 @@
"requires": { "requires": {
"has-flag": "1.0.0" "has-flag": "1.0.0"
} }
},
"zone.js": {
"version": "0.8.18",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz",
"integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q==",
"dev": true
} }
} }
}, },
"@angular/common": { "@angular/common": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.4.3.tgz",
"integrity": "sha1-58R5HjITHPdMI5QowqZ9qrLu8Bc=" "integrity": "sha1-+SrGiwK+xfDm02A6hDKU3JbJYHQ=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/compiler": { "@angular/compiler": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.3.tgz",
"integrity": "sha1-0t0whTsM9KVHWLSjFGMsIx+clMM=" "integrity": "sha1-jwEWPa19s0CEl9mdOHVUtrGFrWY=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/compiler-cli": { "@angular/compiler-cli": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.3.tgz",
"integrity": "sha1-wjYv/fZXVkcUgfg5+rZ1vKwhP5Y=", "integrity": "sha1-GDr4HxQRhrjWYLBkKVktQLdUCko=",
"requires": { "requires": {
"@angular/tsc-wrapped": "4.1.3", "@angular/tsc-wrapped": "4.4.3",
"minimist": "1.2.0", "minimist": "1.2.0",
"reflect-metadata": "0.1.10" "reflect-metadata": "0.1.10"
} }
}, },
"@angular/core": { "@angular/core": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.3.tgz",
"integrity": "sha1-KFSY64arfQtvmC+Pn0h+9hABOzU=" "integrity": "sha1-5x0rB76qy6tIq39R1OIobqXXDhU=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/forms": { "@angular/forms": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.4.3.tgz",
"integrity": "sha1-OAq0w6+ExdHXSMKn0EFRx9yOSYI=" "integrity": "sha1-JbQburWL8dqHJBHIUXwQ18U3PY4=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/http": { "@angular/http": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/http/-/http-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.3.tgz",
"integrity": "sha1-650cMCoBcoFfmlczENm+C964Ra4=" "integrity": "sha1-tVftJBRKrMRLE2zUd+hNL1eAiQM=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/platform-browser": { "@angular/platform-browser": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.3.tgz",
"integrity": "sha1-T6HbURndF4sxXdrlsym+4akypb0=" "integrity": "sha1-I/mkW9Pcf0TZeHf7+OYDLez8ncs=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/platform-browser-dynamic": { "@angular/platform-browser-dynamic": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.4.3.tgz",
"integrity": "sha1-PBP9z1kdSH9u/cHUaRPygMbYwuw=" "integrity": "sha1-5B3dglJDJ3UxDqtZQM3Y3wYY8IQ=",
"requires": {
"tslib": "1.8.0"
}
}, },
"@angular/tsc-wrapped": { "@angular/tsc-wrapped": {
"version": "4.1.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.1.3.tgz", "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.3.tgz",
"integrity": "sha1-LWNyyRh78WIerNlguUs5xPlSk80=", "integrity": "sha1-LT84IQodTbA/yG3PHglYErhc0Rk=",
"requires": { "requires": {
"tsickle": "0.21.6" "tsickle": "0.21.6"
} }
@ -891,6 +906,138 @@
} }
} }
}, },
"@ionic/cli-utils": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.13.1.tgz",
"integrity": "sha512-r6yTJ0EmC5MDGqQsR1ItGSLOHCssLRISpqECBbDtINrBa36fdDigcspzEJAJ9xXoWwyXbY+suTtvc5Jb7YFZNQ==",
"dev": true,
"requires": {
"archiver": "2.1.0",
"basic-auth": "1.1.0",
"body-parser": "1.18.2",
"chalk": "2.1.0",
"chokidar": "1.7.0",
"ci-info": "1.1.1",
"cross-spawn": "5.1.0",
"dargs": "5.1.0",
"diff": "3.4.0",
"elementtree": "0.1.7",
"express": "4.16.2",
"inquirer": "3.3.0",
"leek": "0.0.24",
"lodash": "4.17.4",
"minimist": "1.2.0",
"ncp": "2.0.0",
"opn": "5.1.0",
"proxy-middleware": "0.15.0",
"semver": "5.4.1",
"slice-ansi": "1.0.0",
"ssh-config": "1.1.3",
"string-width": "2.1.1",
"strip-ansi": "4.0.0",
"superagent": "3.6.3",
"tar": "2.2.1",
"tiny-lr": "1.0.5",
"tslib": "1.8.0",
"uuid": "3.1.0",
"wrap-ansi": "3.0.1",
"ws": "3.2.0"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "4.1.1",
"shebang-command": "1.2.0",
"which": "1.3.0"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
}
},
"tiny-lr": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.0.5.tgz",
"integrity": "sha512-YrxUSiMgOVh3PnAqtdAUQuUVEVRnqcRCxJ3BHrl/aaWV2fplKKB60oClM0GH2Gio2hcXvkxMUxsC/vXZrQePlg==",
"dev": true,
"requires": {
"body": "5.1.0",
"debug": "2.6.9",
"faye-websocket": "0.10.0",
"livereload-js": "2.2.2",
"object-assign": "4.1.1",
"qs": "6.5.1"
}
},
"ultron": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
"integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=",
"dev": true
},
"wrap-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
"integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
"dev": true,
"requires": {
"string-width": "2.1.1",
"strip-ansi": "4.0.0"
}
},
"ws": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.2.0.tgz",
"integrity": "sha512-hTS3mkXm/j85jTQOIcwVz3yK3up9xHgPtgEhDBOH3G18LDOZmSAG1omJeXejLKJakx+okv8vS1sopgs7rw0kVw==",
"dev": true,
"requires": {
"async-limiter": "1.0.0",
"safe-buffer": "5.1.1",
"ultron": "1.1.0"
}
}
}
},
"@ionic/discover": { "@ionic/discover": {
"version": "0.3.3", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@ionic/discover/-/discover-0.3.3.tgz", "resolved": "https://registry.npmjs.org/@ionic/discover/-/discover-0.3.3.tgz",
@ -1186,9 +1333,9 @@
"dev": true "dev": true
}, },
"archiver": { "archiver": {
"version": "2.0.3", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.3.tgz", "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.0.tgz",
"integrity": "sha1-tDYLtYSvFDeZGUJxbyHXxSPR270=", "integrity": "sha1-0t8ujVdzqCwdzOklzMQUUOqZmv0=",
"dev": true, "dev": true,
"requires": { "requires": {
"archiver-utils": "1.3.0", "archiver-utils": "1.3.0",
@ -1198,7 +1345,6 @@
"lodash": "4.17.4", "lodash": "4.17.4",
"readable-stream": "2.3.3", "readable-stream": "2.3.3",
"tar-stream": "1.5.4", "tar-stream": "1.5.4",
"walkdir": "0.0.11",
"zip-stream": "1.2.0" "zip-stream": "1.2.0"
}, },
"dependencies": { "dependencies": {
@ -12118,7 +12264,7 @@
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"lodash.memoize": "4.1.2", "lodash.memoize": "4.1.2",
"lodash.uniq": "4.5.0" "lodash.uniq": "4.5.0"
}, },
@ -12129,16 +12275,16 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"electron-to-chromium": "1.3.25" "electron-to-chromium": "1.3.25"
} }
} }
} }
}, },
"caniuse-db": { "caniuse-db": {
"version": "1.0.30000746", "version": "1.0.30000748",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000746.tgz", "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000748.tgz",
"integrity": "sha1-UBCYxm9fu/Y0wC8lUIsF6ICZEPQ=", "integrity": "sha1-eF2e381kW/eVxv887TPEXVgMSKA=",
"dev": true "dev": true
}, },
"caniuse-lite": { "caniuse-lite": {
@ -12415,7 +12561,7 @@
"integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
"dev": true, "dev": true,
"requires": { "requires": {
"q": "1.5.0" "q": "1.5.1"
} }
}, },
"code-point-at": { "code-point-at": {
@ -12654,8 +12800,7 @@
"colors": { "colors": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
"dev": true
}, },
"colour": { "colour": {
"version": "0.7.1", "version": "0.7.1",
@ -12911,9 +13056,9 @@
} }
}, },
"connect-history-api-fallback": { "connect-history-api-fallback": {
"version": "1.3.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.4.0.tgz",
"integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", "integrity": "sha1-PbJPlz9LkjsOgvYZzg3wJBHKYj0=",
"dev": true "dev": true
}, },
"console-browserify": { "console-browserify": {
@ -13192,6 +13337,53 @@
"resolved": "https://registry.npmjs.org/cordova-clipboard/-/cordova-clipboard-1.1.0.tgz", "resolved": "https://registry.npmjs.org/cordova-clipboard/-/cordova-clipboard-1.1.0.tgz",
"integrity": "sha512-vC6lIUBA6IYKaTngnd58LSmwykeD51TyUR4DM2rhmBxikoXpM7QPrHb14dtlfW6OhJxSvda4nhRnO59KG+LpTQ==" "integrity": "sha512-vC6lIUBA6IYKaTngnd58LSmwykeD51TyUR4DM2rhmBxikoXpM7QPrHb14dtlfW6OhJxSvda4nhRnO59KG+LpTQ=="
}, },
"cordova-custom-config": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/cordova-custom-config/-/cordova-custom-config-4.0.2.tgz",
"integrity": "sha1-duiKQK0hN1QGny5kmB6RZ6WX3+4=",
"requires": {
"colors": "1.1.2",
"elementtree": "0.1.7",
"lodash": "4.17.4",
"plist": "1.2.0",
"shelljs": "0.7.8",
"tostr": "0.1.0",
"xcode": "0.8.9"
},
"dependencies": {
"base64-js": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
"integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg="
},
"plist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
"integrity": "sha1-CEtQk93JJQbiWfh0uNmxr7jHlZM=",
"requires": {
"base64-js": "0.0.8",
"util-deprecate": "1.0.2",
"xmlbuilder": "4.0.0",
"xmldom": "0.1.27"
}
},
"xmlbuilder": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
"integrity": "sha1-mLj2UcowqmJANvEn0RzGbce5B6M=",
"requires": {
"lodash": "3.10.1"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
}
}
}
}
},
"cordova-ios": { "cordova-ios": {
"version": "4.5.2", "version": "4.5.2",
"resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-4.5.2.tgz", "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-4.5.2.tgz",
@ -13520,6 +13712,9 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-console/-/cordova-plugin-console-1.1.0.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-console/-/cordova-plugin-console-1.1.0.tgz",
"integrity": "sha1-4vusECkBeeRMtyxf28QQpTHBzW0=" "integrity": "sha1-4vusECkBeeRMtyxf28QQpTHBzW0="
}, },
"cordova-plugin-customurlscheme": {
"version": "git+https://github.com/cmgustavo/Custom-URL-scheme.git#4d49f0c75f472cbe144ada8408c064b376bdc733"
},
"cordova-plugin-device": { "cordova-plugin-device": {
"version": "1.1.6", "version": "1.1.6",
"resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-1.1.6.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-1.1.6.tgz",
@ -13530,6 +13725,9 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-dialogs/-/cordova-plugin-dialogs-1.3.3.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-dialogs/-/cordova-plugin-dialogs-1.3.3.tgz",
"integrity": "sha1-Uy/y61yGEzpYeFUNrlnHarOX+Mk=" "integrity": "sha1-Uy/y61yGEzpYeFUNrlnHarOX+Mk="
}, },
"cordova-plugin-fcm": {
"version": "git+https://github.com/cmgustavo/cordova-plugin-fcm.git#85e84c315bdb973ff7e7fbfcf522f970f27499e5"
},
"cordova-plugin-file": { "cordova-plugin-file": {
"version": "4.3.3", "version": "4.3.3",
"resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-4.3.3.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-4.3.3.tgz",
@ -13620,9 +13818,9 @@
"integrity": "sha1-W2M1/rn1MB88ATuQlsuIhb29UHY=" "integrity": "sha1-W2M1/rn1MB88ATuQlsuIhb29UHY="
}, },
"cordova-plugin-x-socialsharing": { "cordova-plugin-x-socialsharing": {
"version": "5.2.0", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/cordova-plugin-x-socialsharing/-/cordova-plugin-x-socialsharing-5.2.0.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-x-socialsharing/-/cordova-plugin-x-socialsharing-5.2.1.tgz",
"integrity": "sha1-GiJHa8WNRsHSqahMTxIeYpysqxQ=" "integrity": "sha1-28NUuZP5t7FgA5aCLYICtzzFgfM="
}, },
"cordova-plugin-x-toast": { "cordova-plugin-x-toast": {
"version": "2.6.0", "version": "2.6.0",
@ -14049,7 +14247,7 @@
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"normalize-range": "0.1.2", "normalize-range": "0.1.2",
"num2fraction": "1.2.2", "num2fraction": "1.2.2",
"postcss": "5.2.18", "postcss": "5.2.18",
@ -14062,7 +14260,7 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"electron-to-chromium": "1.3.25" "electron-to-chromium": "1.3.25"
} }
}, },
@ -14546,7 +14744,6 @@
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
"integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=",
"dev": true,
"requires": { "requires": {
"sax": "1.1.4" "sax": "1.1.4"
}, },
@ -14554,8 +14751,7 @@
"sax": { "sax": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
"integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=", "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk="
"dev": true
} }
} }
}, },
@ -15612,8 +15808,7 @@
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"dev": true
}, },
"fsevents": { "fsevents": {
"version": "1.1.2", "version": "1.1.2",
@ -17556,8 +17751,7 @@
"interpret": { "interpret": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
"integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA="
"dev": true
}, },
"invariant": { "invariant": {
"version": "2.2.2", "version": "2.2.2",
@ -17574,12 +17768,12 @@
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
}, },
"ionic": { "ionic": {
"version": "3.13.0", "version": "3.13.2",
"resolved": "https://registry.npmjs.org/ionic/-/ionic-3.13.0.tgz", "resolved": "https://registry.npmjs.org/ionic/-/ionic-3.13.2.tgz",
"integrity": "sha512-jDjGaKCo+9FCDqcOuXdb4syui7lSXpgM/w28wmMUAQGJB2aaEBHPCk1hWfLQQu0cDnRiFvZyV/accT7cONRUww==", "integrity": "sha512-YbWW0UuZS7nidz9IQh2TIH21YPJNlSZAju23qUFFM4XSK/SMZJPWvaI9tLHJ9PoFqtcakNmkug29iDqwLOnTuA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@ionic/cli-utils": "1.13.0", "@ionic/cli-utils": "1.13.1",
"@ionic/discover": "0.3.3", "@ionic/discover": "0.3.3",
"chalk": "2.1.0", "chalk": "2.1.0",
"opn": "5.1.0", "opn": "5.1.0",
@ -17587,144 +17781,12 @@
"rimraf": "2.6.2", "rimraf": "2.6.2",
"semver": "5.4.1", "semver": "5.4.1",
"tslib": "1.8.0" "tslib": "1.8.0"
},
"dependencies": {
"@ionic/cli-utils": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.13.0.tgz",
"integrity": "sha512-IsIzzcgeJgrYelT/gM4o15IWsVJSsKhiCb/27lO2n897VNobTqI1O2nXmtr16F6orB4T4N5QtnEKZlCoCZynzQ==",
"dev": true,
"requires": {
"archiver": "2.0.3",
"basic-auth": "1.1.0",
"body-parser": "1.18.2",
"chalk": "2.1.0",
"chokidar": "1.7.0",
"ci-info": "1.1.1",
"cross-spawn": "5.1.0",
"dargs": "5.1.0",
"diff": "3.4.0",
"elementtree": "0.1.7",
"express": "4.16.2",
"inquirer": "3.3.0",
"leek": "0.0.24",
"lodash": "4.17.4",
"minimist": "1.2.0",
"ncp": "2.0.0",
"opn": "5.1.0",
"proxy-middleware": "0.15.0",
"semver": "5.4.1",
"slice-ansi": "1.0.0",
"ssh-config": "1.1.3",
"string-width": "2.1.1",
"strip-ansi": "4.0.0",
"superagent": "3.6.3",
"tar": "2.2.1",
"tiny-lr": "1.0.5",
"tslib": "1.8.0",
"uuid": "3.1.0",
"wrap-ansi": "3.0.1",
"ws": "3.2.0"
}
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "4.1.1",
"shebang-command": "1.2.0",
"which": "1.3.0"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
}
},
"tiny-lr": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.0.5.tgz",
"integrity": "sha512-YrxUSiMgOVh3PnAqtdAUQuUVEVRnqcRCxJ3BHrl/aaWV2fplKKB60oClM0GH2Gio2hcXvkxMUxsC/vXZrQePlg==",
"dev": true,
"requires": {
"body": "5.1.0",
"debug": "2.6.9",
"faye-websocket": "0.10.0",
"livereload-js": "2.2.2",
"object-assign": "4.1.1",
"qs": "6.5.1"
}
},
"ultron": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
"integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=",
"dev": true
},
"wrap-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
"integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
"dev": true,
"requires": {
"string-width": "2.1.1",
"strip-ansi": "4.0.0"
}
},
"ws": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.2.0.tgz",
"integrity": "sha512-hTS3mkXm/j85jTQOIcwVz3yK3up9xHgPtgEhDBOH3G18LDOZmSAG1omJeXejLKJakx+okv8vS1sopgs7rw0kVw==",
"dev": true,
"requires": {
"async-limiter": "1.0.0",
"safe-buffer": "5.1.1",
"ultron": "1.1.0"
}
}
} }
}, },
"ionic-angular": { "ionic-angular": {
"version": "3.6.0", "version": "3.7.1",
"resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.6.0.tgz", "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.7.1.tgz",
"integrity": "sha512-V6NNax+X8CihwCerb+IlSTKe+GOfLyp/AYtD7zYkGqu1euL++LxepCCUo5Cn1UWn4aif+rUr0/JC2TQ0iwduOw==" "integrity": "sha512-FNRf+rR+R9aoS5BZfd5uO0ffjuJDi00WCM3rsXGsu0m26IVYHWDW3qvVpGkyljirowqRuGp01u3CSgkPSq5VBg=="
}, },
"ionic-plugin-keyboard": { "ionic-plugin-keyboard": {
"version": "2.2.1", "version": "2.2.1",
@ -20470,8 +20532,7 @@
"path-parse": { "path-parse": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
"dev": true
}, },
"path-to-regexp": { "path-to-regexp": {
"version": "1.7.0", "version": "1.7.0",
@ -21653,7 +21714,7 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-db": "1.0.30000746", "caniuse-db": "1.0.30000748",
"electron-to-chromium": "1.3.25" "electron-to-chromium": "1.3.25"
} }
}, },
@ -22847,9 +22908,9 @@
"dev": true "dev": true
}, },
"q": { "q": {
"version": "1.5.0", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true "dev": true
}, },
"qjobs": { "qjobs": {
@ -23126,6 +23187,14 @@
} }
} }
}, },
"rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"requires": {
"resolve": "1.4.0"
}
},
"redent": { "redent": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
@ -23416,7 +23485,6 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
"integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
"dev": true,
"requires": { "requires": {
"path-parse": "1.0.5" "path-parse": "1.0.5"
} }
@ -23674,9 +23742,9 @@
} }
}, },
"rxjs": { "rxjs": {
"version": "5.4.0", "version": "5.4.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.0.tgz", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.3.tgz",
"integrity": "sha1-p9sUqxV/nXqsalbmVeejhg05vyY=", "integrity": "sha512-fSNi+y+P9ss+EZuV0GcIIqPUK07DEaMRUtLJvdcvMyFjc9dizuDjere+A4V7JrLGnm9iCc+nagV/4QdMTkqC4A==",
"requires": { "requires": {
"symbol-observable": "1.0.4" "symbol-observable": "1.0.4"
} }
@ -24011,6 +24079,31 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true "dev": true
}, },
"shelljs": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
"integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
"requires": {
"glob": "7.1.2",
"interpret": "1.0.4",
"rechoir": "0.6.2"
},
"dependencies": {
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
}
}
},
"signal-exit": { "signal-exit": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
@ -25044,6 +25137,11 @@
"integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=",
"dev": true "dev": true
}, },
"tostr": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/tostr/-/tostr-0.1.0.tgz",
"integrity": "sha1-cjm6H6gHyBAMlTLNIxvwQat3lik="
},
"tough-cookie": { "tough-cookie": {
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
@ -25194,8 +25292,7 @@
"tslib": { "tslib": {
"version": "1.8.0", "version": "1.8.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz",
"integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg=="
"dev": true
}, },
"tslint": { "tslint": {
"version": "5.5.0", "version": "5.5.0",
@ -25757,12 +25854,6 @@
"matcher-collection": "1.0.5" "matcher-collection": "1.0.5"
} }
}, },
"walkdir": {
"version": "0.0.11",
"resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
"integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
"dev": true
},
"watchpack": { "watchpack": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
@ -26005,7 +26096,7 @@
"bonjour": "3.5.0", "bonjour": "3.5.0",
"chokidar": "1.7.0", "chokidar": "1.7.0",
"compression": "1.7.1", "compression": "1.7.1",
"connect-history-api-fallback": "1.3.0", "connect-history-api-fallback": "1.4.0",
"del": "3.0.0", "del": "3.0.0",
"express": "4.16.2", "express": "4.16.2",
"html-entities": "1.2.1", "html-entities": "1.2.1",
@ -26236,6 +26327,85 @@
"integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
"dev": true "dev": true
}, },
"xcode": {
"version": "0.8.9",
"resolved": "https://registry.npmjs.org/xcode/-/xcode-0.8.9.tgz",
"integrity": "sha1-7Gdl9w6dzMzJ9umlubTn6BS0zzU=",
"requires": {
"node-uuid": "1.4.7",
"pegjs": "0.9.0",
"simple-plist": "0.1.4"
},
"dependencies": {
"base64-js": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
"integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg="
},
"bplist-creator": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.4.tgz",
"integrity": "sha1-SsBJZ4LhJ6hcHSAmpPXrIqev+ZE=",
"requires": {
"stream-buffers": "0.2.6"
}
},
"bplist-parser": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz",
"integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk="
},
"lodash": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
},
"node-uuid": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz",
"integrity": "sha1-baWhdmjEs91ZYjvaEc9/pMH2Cm8="
},
"pegjs": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.9.0.tgz",
"integrity": "sha1-9q76LjzlYWkgjlIXnf5B+JFBo2k="
},
"plist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz",
"integrity": "sha1-CEtQk93JJQbiWfh0uNmxr7jHlZM=",
"requires": {
"base64-js": "0.0.8",
"util-deprecate": "1.0.2",
"xmlbuilder": "4.0.0",
"xmldom": "0.1.27"
}
},
"simple-plist": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.1.4.tgz",
"integrity": "sha1-EOtRtH4zxVbrjsRtXuZNZOcX210=",
"requires": {
"bplist-creator": "0.0.4",
"bplist-parser": "0.0.6",
"plist": "1.2.0"
}
},
"stream-buffers": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-0.2.6.tgz",
"integrity": "sha1-GBwI1bs2kARfaUAbmuanoM8zE/w="
},
"xmlbuilder": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
"integrity": "sha1-mLj2UcowqmJANvEn0RzGbce5B6M=",
"requires": {
"lodash": "3.10.1"
}
}
}
},
"xdg-basedir": { "xdg-basedir": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz",
@ -26425,9 +26595,9 @@
} }
}, },
"zone.js": { "zone.js": {
"version": "0.8.12", "version": "0.8.18",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.12.tgz", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz",
"integrity": "sha1-hv9QU8mK7CkaC/S7rFAdaUoFz7s=" "integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q=="
} }
} }
} }

View File

@ -49,27 +49,27 @@
"apply:bitpay": "npm i && cd app-template && node apply.js bitpay && npm run build" "apply:bitpay": "npm i && cd app-template && node apply.js bitpay && npm run build"
}, },
"dependencies": { "dependencies": {
"@angular/common": "4.1.3", "@angular/common": "4.4.3",
"@angular/compiler": "4.1.3", "@angular/compiler": "4.4.3",
"@angular/compiler-cli": "4.1.3", "@angular/compiler-cli": "4.4.3",
"@angular/core": "4.1.3", "@angular/core": "4.4.3",
"@angular/forms": "4.1.3", "@angular/forms": "4.4.3",
"@angular/http": "4.1.3", "@angular/http": "4.4.3",
"@angular/platform-browser": "4.1.3", "@angular/platform-browser": "4.4.3",
"@angular/platform-browser-dynamic": "4.1.3", "@angular/platform-browser-dynamic": "4.4.3",
"@angular/tsc-wrapped": "4.1.3", "@angular/tsc-wrapped": "4.4.3",
"@biesbjerg/ngx-translate-po-http-loader": "1.0.1", "@biesbjerg/ngx-translate-po-http-loader": "1.0.1",
"@ionic-native/android-fingerprint-auth": "4.2.1", "@ionic-native/android-fingerprint-auth": "^4.2.1",
"@ionic-native/clipboard": "4.1.0", "@ionic-native/clipboard": "^4.1.0",
"@ionic-native/core": "3.12.1", "@ionic-native/core": "^3.12.1",
"@ionic-native/file": "4.1.0", "@ionic-native/file": "^4.1.0",
"@ionic-native/qr-scanner": "4.1.0", "@ionic-native/qr-scanner": "^4.1.0",
"@ionic-native/social-sharing": "4.1.0", "@ionic-native/social-sharing": "^4.1.0",
"@ionic-native/splash-screen": "3.12.1", "@ionic-native/splash-screen": "^3.12.1",
"@ionic-native/status-bar": "3.12.1", "@ionic-native/status-bar": "^3.12.1",
"@ionic-native/toast": "4.1.0", "@ionic-native/toast": "^4.1.0",
"@ionic-native/touch-id": "4.2.1", "@ionic-native/touch-id": "^4.2.1",
"@ionic/storage": "2.0.1", "@ionic/storage": "^2.0.1",
"@ngx-translate/core": "6.0.1", "@ngx-translate/core": "6.0.1",
"@nsalaun/ng-logger": "2.0.1", "@nsalaun/ng-logger": "2.0.1",
"ajv": "5.2.2", "ajv": "5.2.2",
@ -81,13 +81,16 @@
"buffer-compare": "1.1.1", "buffer-compare": "1.1.1",
"cordova-android": "6.2.3", "cordova-android": "6.2.3",
"cordova-clipboard": "^1.1.0", "cordova-clipboard": "^1.1.0",
"cordova-custom-config": "^4.0.2",
"cordova-ios": "4.5.2", "cordova-ios": "4.5.2",
"cordova-ios-requires-fullscreen": "0.0.2", "cordova-ios-requires-fullscreen": "0.0.2",
"cordova-plugin-android-fingerprint-auth": "^1.4.0", "cordova-plugin-android-fingerprint-auth": "^1.4.0",
"cordova-plugin-compat": "^1.2.0", "cordova-plugin-compat": "^1.2.0",
"cordova-plugin-console": "^1.1.0", "cordova-plugin-console": "^1.1.0",
"cordova-plugin-customurlscheme": "git+https://github.com/cmgustavo/Custom-URL-scheme.git",
"cordova-plugin-device": "^1.1.6", "cordova-plugin-device": "^1.1.6",
"cordova-plugin-dialogs": "^1.3.3", "cordova-plugin-dialogs": "^1.3.3",
"cordova-plugin-fcm": "git+https://github.com/cmgustavo/cordova-plugin-fcm.git",
"cordova-plugin-file": "^4.3.3", "cordova-plugin-file": "^4.3.3",
"cordova-plugin-ionic-webview": "^1.1.15", "cordova-plugin-ionic-webview": "^1.1.15",
"cordova-plugin-network-information": "^1.3.3", "cordova-plugin-network-information": "^1.3.3",
@ -101,19 +104,19 @@
"cordova-plugin-transport-security": "^0.1.2", "cordova-plugin-transport-security": "^0.1.2",
"cordova-plugin-uniquedeviceid": "^1.3.2", "cordova-plugin-uniquedeviceid": "^1.3.2",
"cordova-plugin-whitelist": "^1.3.2", "cordova-plugin-whitelist": "^1.3.2",
"cordova-plugin-x-socialsharing": "^5.2.0", "cordova-plugin-x-socialsharing": "^5.2.1",
"cordova-plugin-x-toast": "^2.6.0", "cordova-plugin-x-toast": "^2.6.0",
"cordova-sqlite-storage": "^2.0.4", "cordova-sqlite-storage": "^2.0.4",
"es6-promise-plugin": "^4.1.0", "es6-promise-plugin": "^4.1.0",
"ionic-angular": "3.6.0", "ionic-angular": "3.7.1",
"ionic-plugin-keyboard": "^2.2.1", "ionic-plugin-keyboard": "^2.2.1",
"ionicons": "3.0.0", "ionicons": "3.0.0",
"lodash": "4.17.4", "lodash": "4.17.4",
"ngx-clipboard": "8.0.3", "ngx-clipboard": "8.0.3",
"rxjs": "5.4.0", "rxjs": "5.4.3",
"simple-plist": "0.2.1", "simple-plist": "0.2.1",
"sw-toolbox": "3.6.0", "sw-toolbox": "3.6.0",
"zone.js": "0.8.12" "zone.js": "0.8.18"
}, },
"devDependencies": { "devDependencies": {
"@angular/cli": "1.3.0", "@angular/cli": "1.3.0",
@ -172,7 +175,14 @@
"cordova-plugin-transport-security": {}, "cordova-plugin-transport-security": {},
"cordova-ios-requires-fullscreen": {}, "cordova-ios-requires-fullscreen": {},
"cordova-plugin-screen-orientation": {}, "cordova-plugin-screen-orientation": {},
"cordova-plugin-ionic-webview": {} "cordova-plugin-ionic-webview": {},
"cordova-custom-config": {},
"cordova-plugin-customurlscheme": {
"URL_SCHEME": "bitcoin",
"SECOND_URL_SCHEME": "copay",
"THIRD_URL_SCHEME": "bitcoincash"
},
"cordova-plugin-fcm": {}
}, },
"platforms": [ "platforms": [
"android", "android",

View File

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="247px" height="247px" viewBox="0 0 247 247" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>tour-control</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="89.4673583%" id="linearGradient-1">
<stop stop-color="#192C3A" offset="0%"></stop>
<stop stop-color="#192C3A" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="tour-control">
<g id="Onboarding">
<g id="0.2.3---Tour-3">
<g id="bg-3">
<path d="M123.5,247 C191.707167,247 247,191.707167 247,123.5 C247,55.2928334 191.707167,1.42108547e-14 123.5,1.42108547e-14 C55.2928334,1.42108547e-14 1.42108547e-14,55.2928334 1.42108547e-14,123.5 C1.42108547e-14,191.707167 55.2928334,247 123.5,247 Z" id="Oval-2" fill="url(#linearGradient-1)" fill-rule="nonzero" opacity="0.300000012"></path>
<rect id="Combined-Shape" stroke="#707D89" stroke-width="2" fill-opacity="0.65" fill="#192C3A" fill-rule="nonzero" x="63" y="24" width="99.8310062" height="183.875349" rx="8"></rect>
<path d="M63.5199532,180.634556 L162.311053,180.634556" id="Line" stroke="#707D89" stroke-width="2" stroke-linecap="square"></path>
<path d="M104.076299,194.254952 L122.794613,194.254952" id="Line" stroke="#707D89" stroke-width="2" stroke-linecap="square"></path>
<g id="Group-4" transform="translate(98.000000, 79.000000)" stroke="#FFFFFF">
<g id="top-up">
<g id="shopping-48px-outline_bitcoin" transform="translate(0.666667, 0.180606)">
<g id="Group" transform="translate(0.619048, 0.627502)">
<path d="M12.3809524,0 L12.3809524,7.5300202" id="Shape"></path>
<path d="M17.3333333,0 L17.3333333,7.5300202" id="Shape"></path>
<path d="M12.3809524,47.6901279 L12.3809524,55.2201481" id="Shape"></path>
<path d="M17.3333333,47.6901279 L17.3333333,55.2201481" id="Shape"></path>
<path d="M0,47.6901279 L7.42857143,47.6901279" id="Shape-Copy"></path>
<path d="M0,7.5300202 L7.42857143,7.5300202" id="Shape-Copy-2"></path>
<path d="M7.42857143,25.1000673 L7.42857143,7.5300202 L21.8042328,7.5300202 C26.9010582,7.5300202 30.952381,11.4205306 30.952381,16.3150438 C30.952381,21.2095569 26.9010582,25.1000673 21.8042328,25.1000673" id="Shape"></path>
<path d="M7.42857143,47.6901279 L7.42857143,25.1000673 L23.6785714,25.1000673 C29.0952381,25.1000673 33.4285714,30.1200808 33.4285714,36.3950976 C33.4285714,42.6701145 29.0952381,47.6901279 23.6785714,47.6901279 L7.42857143,47.6901279 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
<g id="Group-3" transform="translate(125.000000, 122.000000)" stroke="#12E5B6" stroke-width="2">
<rect id="Rectangle-path" fill="#192C3A" fill-rule="nonzero" x="0.00547760651" y="37.6483369" width="74.7600358" height="65.7214967" rx="4"></rect>
<path d="M18.6954866,37.6483369 L18.6954866,18.8707664 C18.6954866,8.54310266 27.1059906,0.0931959432 37.3854955,0.0931959432 L37.3854955,0.0931959432 C47.6650004,0.0931959432 56.0755044,8.54310266 56.0755044,18.8707664 L56.0755044,37.6483369" id="Shape"></path>
<path d="M36.6300769,65.8146926 L36.6300769,75.2034779" id="Shape" fill="#F9F9F9" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="377px" height="247px" viewBox="0 0 377 247" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>tour-currency</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="50.0034413%" y1="0.00943319838%" x2="50.0034413%" y2="89.4694332%" id="linearGradient-1">
<stop stop-color="#192C3A" offset="0%"></stop>
<stop stop-color="#192C3A" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="100.020333%" x2="50%" y2="0.0203333333%" id="linearGradient-2">
<stop stop-color="#192C3A" offset="0%"></stop>
<stop stop-color="#192C3A" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="tour-currency" transform="translate(-1.000000, 0.000000)">
<path d="M189.5,247 C257.7,247 313,191.7 313,123.5 C313,55.3 257.7,0 189.5,0 C121.3,0 66,55.3 66,123.5 C66,191.7 121.3,247 189.5,247 Z" id="Shape" fill="url(#linearGradient-1)" fill-rule="nonzero" opacity="0.3"></path>
<polygon id="Shape" fill="url(#linearGradient-2)" fill-rule="nonzero" opacity="0.3" points="56.3 127.3 99.7 97.8 142.1 119.9 186.6 80.7 224.9 80.7 249.7 47.5 282.8 67.2 323.2 56.1 377 35 377 185 152.1 185 2.4 185 2 133.5"></polygon>
<g id="Group" opacity="0.3" transform="translate(76.000000, 61.000000)" fill-rule="nonzero" fill="#13E5B6">
<path d="M226.2,124 L225.7,124 L225.7,120 L226.2,120 L226.2,124 Z M226.2,116 L225.7,116 L225.7,112 L226.2,112 L226.2,116 Z M226.2,108 L225.7,108 L225.7,104 L226.2,104 L226.2,108 Z M226.2,100 L225.7,100 L225.7,96 L226.2,96 L226.2,100 Z M226.2,92 L225.7,92 L225.7,88 L226.2,88 L226.2,92 Z M226.2,84 L225.7,84 L225.7,80 L226.2,80 L226.2,84 Z M226.2,76 L225.7,76 L225.7,72 L226.2,72 L226.2,76 Z M226.2,68 L225.7,68 L225.7,64 L226.2,64 L226.2,68 Z M226.2,60 L225.7,60 L225.7,56 L226.2,56 L226.2,60 Z M226.2,52 L225.7,52 L225.7,48 L226.2,48 L226.2,52 Z M226.2,44 L225.7,44 L225.7,40 L226.2,40 L226.2,44 Z M226.2,36 L225.7,36 L225.7,32 L226.2,32 L226.2,36 Z M226.2,28 L225.7,28 L225.7,24 L226.2,24 L226.2,28 Z M226.2,20 L225.7,20 L225.7,16 L226.2,16 L226.2,20 Z M226.2,12 L225.7,12 L225.7,8 L226.2,8 L226.2,12 Z M226.2,4 L225.7,4 L225.7,0 L226.2,0 L226.2,4 Z" id="Shape"></path>
<path d="M151.2,124 L150.7,124 L150.7,120 L151.2,120 L151.2,124 Z M151.2,116 L150.7,116 L150.7,112 L151.2,112 L151.2,116 Z M151.2,108 L150.7,108 L150.7,104 L151.2,104 L151.2,108 Z M151.2,100 L150.7,100 L150.7,96 L151.2,96 L151.2,100 Z M151.2,92 L150.7,92 L150.7,88 L151.2,88 L151.2,92 Z M151.2,84 L150.7,84 L150.7,80 L151.2,80 L151.2,84 Z M151.2,76 L150.7,76 L150.7,72 L151.2,72 L151.2,76 Z M151.2,68 L150.7,68 L150.7,64 L151.2,64 L151.2,68 Z M151.2,60 L150.7,60 L150.7,56 L151.2,56 L151.2,60 Z M151.2,52 L150.7,52 L150.7,48 L151.2,48 L151.2,52 Z M151.2,44 L150.7,44 L150.7,40 L151.2,40 L151.2,44 Z M151.2,36 L150.7,36 L150.7,32 L151.2,32 L151.2,36 Z M151.2,28 L150.7,28 L150.7,24 L151.2,24 L151.2,28 Z M151.2,20 L150.7,20 L150.7,16.8 L151.2,16.8 L151.2,20 Z" id="Shape"></path>
<path d="M76.2,124 L75.7,124 L75.7,120 L76.2,120 L76.2,124 Z M76.2,116 L75.7,116 L75.7,112 L76.2,112 L76.2,116 Z M76.2,108 L75.7,108 L75.7,104 L76.2,104 L76.2,108 Z M76.2,100 L75.7,100 L75.7,96 L76.2,96 L76.2,100 Z M76.2,92 L75.7,92 L75.7,88 L76.2,88 L76.2,92 Z M76.2,84 L75.7,84 L75.7,80 L76.2,80 L76.2,84 Z M76.2,76 L75.7,76 L75.7,72 L76.2,72 L76.2,76 Z M76.2,68 L75.7,68 L75.7,64 L76.2,64 L76.2,68 Z M76.2,60 L75.7,60 L75.7,56 L76.2,56 L76.2,60 Z M76.2,52 L75.7,52 L75.7,50 L76.2,50 L76.2,52 Z" id="Shape"></path>
<path d="M1.2,124 L0.7,124 L0.7,120 L1.2,120 L1.2,124 Z M1.2,116 L0.7,116 L0.7,112 L1.2,112 L1.2,116 Z M1.2,108 L0.7,108 L0.7,104 L1.2,104 L1.2,108 Z M1.2,100 L0.7,100 L0.7,96 L1.2,96 L1.2,100 Z M1.2,92 L0.7,92 L0.7,88 L1.2,88 L1.2,92 Z M1.2,84 L0.7,84 L0.7,80 L1.2,80 L1.2,84 Z M1.2,76 L0.7,76 L0.7,72 L1.2,72 L1.2,76 Z M1.2,68 L0.7,68 L0.7,64 L1.2,64 L1.2,68 Z M1.2,60 L0.7,60 L0.7,56 L1.2,56 L1.2,60 Z" id="Shape"></path>
</g>
<path d="M2,134.5 C1.5,134.5 1.1,134.1 1,133.6 C0.9,133.1 1.3,132.6 1.9,132.5 L56,126.3 L99.1,97 C99.4,96.8 99.8,96.8 100.1,96.9 L141.9,118.7 L185.9,80 C186.1,79.8 186.3,79.8 186.6,79.8 L224.4,79.8 L248.9,47 C249.2,46.6 249.8,46.5 250.2,46.7 L282.9,66.2 L322.8,55.2 L376.6,34.1 C377.1,33.9 377.7,34.2 377.9,34.7 C378.1,35.2 377.8,35.8 377.3,36 L323.5,57.1 L323.4,57.1 L283,68.2 C282.7,68.3 282.5,68.2 282.2,68.1 L250,48.9 L225.7,81.4 C225.5,81.7 225.2,81.8 224.9,81.8 L187,81.8 L142.8,120.8 C142.5,121.1 142,121.1 141.7,120.9 L99.8,99 L56.9,128.2 C56.8,128.3 56.6,128.3 56.5,128.4 L2.2,134.6 C2.1,134.5 2,134.5 2,134.5 Z" id="Shape" fill="#13E5B6" fill-rule="nonzero"></path>
<g id="Group" transform="translate(185.000000, 38.000000)">
<path d="M4.5,0.5 L4.5,146.5" id="Line_1_" stroke="#0085FF" stroke-width="2" stroke-linecap="square" opacity="0.64"></path>
<circle id="dot" stroke="#FFFFFF" stroke-width="3" fill="#1A2A71" fill-rule="nonzero" cx="4.5" cy="41.5" r="4.5"></circle>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="247px" height="247px" viewBox="0 0 247 247" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>onboarding-tour-phone</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="50.0034413%" y1="-0.00291497976%" x2="50.0034413%" y2="75.267085%" id="linearGradient-1">
<stop stop-color="#192C3A" offset="0%"></stop>
<stop stop-color="#192C3A" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="onboarding-tour-phone">
<path d="M123.5,247 C191.7,247 247,191.7 247,123.5 C247,55.3 191.7,0 123.5,0 C55.3,0 0,55.3 0,123.5 C0,191.7 55.3,247 123.5,247 Z" id="Shape" fill="url(#linearGradient-1)" fill-rule="nonzero" opacity="0.3"></path>
<g id="Group" transform="translate(69.000000, 32.000000)" stroke="#707D89" stroke-width="2">
<path d="M8,0 L91.8,0 C96.2,0 99.8,3.6 99.8,8 L99.8,175.9 C99.8,180.3 96.2,183.9 91.8,183.9 L8,183.9 C3.6,183.9 0,180.3 0,175.9 L0,8 C0,3.6 3.6,0 8,0 Z" id="Shape" fill-opacity="0.6548" fill="#192C3A" fill-rule="nonzero"></path>
<path d="M0.5,156 L99.3,156" id="Shape" stroke-linecap="square"></path>
<path d="M44.1,170.3 L62.8,170.3" id="Shape" stroke-linecap="square"></path>
</g>
<g id="Group" transform="translate(102.000000, 66.000000)" fill-rule="nonzero" fill="#5BC2A7">
<path d="M31.8,0 L0,0 L0,31.8 L31.8,31.8 L31.8,0 L31.8,0 Z M27.3,27.3 L4.6,27.3 L4.6,4.5 L27.3,4.5 L27.3,27.3 L27.3,27.3 Z" id="Shape"></path>
<polygon id="Shape" points="65.9 90.9 61.4 90.9 61.4 100 100 100 100 95.5 65.9 95.5"></polygon>
<rect id="Rectangle-path" x="9.1" y="9.1" width="13.6" height="13.6"></rect>
<path d="M0,100 L31.8,100 L31.8,68.2 L0,68.2 L0,100 L0,100 Z M4.5,72.7 L27.2,72.7 L27.2,95.4 L4.5,95.4 L4.5,72.7 L4.5,72.7 Z" id="Shape"></path>
<rect id="Rectangle-path" x="9.1" y="77.3" width="13.6" height="13.6"></rect>
<path d="M68.2,0 L68.2,31.8 L100,31.8 L100,0 L68.2,0 L68.2,0 Z M95.5,27.3 L72.8,27.3 L72.8,4.5 L95.5,4.5 L95.5,27.3 L95.5,27.3 Z" id="Shape"></path>
<rect id="Rectangle-path" x="77.3" y="9.1" width="13.6" height="13.6"></rect>
<rect id="Rectangle-path" x="90.9" y="36.4" width="9.1" height="9.1"></rect>
<rect id="Rectangle-path" x="0" y="54.5" width="9.1" height="9.1"></rect>
<polygon id="Shape" points="47.7 36.4 29.5 36.4 29.5 40.9 52.3 40.9 52.3 31.8 52.3 27.3 56.8 27.3 56.8 18.2 52.3 18.2 47.7 18.2 43.2 18.2 43.2 9.1 47.7 9.1 47.7 13.6 63.6 13.6 63.6 0 59.1 0 59.1 9.1 52.3 9.1 52.3 0 50 0 40.9 0 38.6 0 38.6 22.7 47.7 22.7 47.7 27.3 38.6 27.3 38.6 31.8 47.7 31.8"></polygon>
<polygon id="Shape" points="6.8 50 15.9 50 20.5 50 22.7 50 22.7 54.5 13.6 54.5 13.6 59.1 22.7 59.1 22.7 63.6 40.9 63.6 40.9 59.1 27.3 59.1 27.3 54.5 27.3 45.5 20.5 45.5 20.5 38.6 15.9 38.6 15.9 45.5 11.4 45.5 11.4 36.4 0 36.4 0 40.9 6.8 40.9"></polygon>
<polygon id="Shape" points="50 90.9 50 79.5 40.9 79.5 40.9 70.5 36.4 70.5 36.4 84.1 45.5 84.1 45.5 90.9 36.4 90.9 36.4 95.5 45.5 95.5 45.5 100 56.8 100 56.8 95.5 50 95.5"></polygon>
<polygon id="Shape" points="72.7 45.5 63.6 45.5 63.6 34.1 59.1 34.1 59.1 50 81.8 50 81.8 45.5 77.3 45.5 77.3 40.9 84.1 40.9 84.1 36.4 77.3 36.4 72.7 36.4 68.2 36.4 68.2 40.9 72.7 40.9"></polygon>
<polygon id="Shape" points="68.2 86.4 75 86.4 75 90.9 84.1 90.9 84.1 86.4 84.1 81.8 84.1 75 75 75 75 81.8 68.2 81.8 68.2 75 63.6 75 63.6 81.8 59.1 81.8 59.1 63.6 54.5 63.6 54.5 59.1 50 59.1 50 45.5 34.1 45.5 34.1 54.5 38.6 54.5 38.6 50 45.5 50 45.5 59.1 45.5 68.2 54.5 68.2 54.5 81.8 54.5 86.4 59.1 86.4 63.6 86.4"></polygon>
<polygon id="Shape" points="95.5 56.8 88.6 56.8 84.1 56.8 72.7 56.8 72.7 65.9 68.2 65.9 68.2 56.8 63.6 56.8 63.6 70.5 77.3 70.5 77.3 61.4 84.1 61.4 84.1 68.2 88.6 68.2 88.6 61.4 95.5 61.4 95.5 75 88.6 75 88.6 88.6 100 88.6 100 84.1 93.2 84.1 93.2 79.5 100 79.5 100 61.4 100 56.8 100 50 95.5 50"></polygon>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -1,13 +1,13 @@
<ion-content class="backup-request"> <ion-content>
<div id="warning"> <div class="header">
<img class="svg" src="assets/img/warning.svg" id="alert-icon" /> <img src="assets/img/warning.svg" />
<div class="onboarding-topic" translate>No backup, no bitcoin.</div> <p translate>No backup, no bitcoin.</p>
<div class="onboarding-description" id="backup-description" translate>Since only you control your money, youll need to save your backup phrase in case this app is deleted.</div> <p translate>Since only you control your money, youll need to save your backup phrase in case this app is deleted.</p>
</div> </div>
<div class="buttons"> <div class="buttons">
<ion-icon name="arrow-round-down"></ion-icon> <ion-icon name="arrow-round-down"></ion-icon>
<div class="onboarding-tldr" id="backup-tldr" translate>Your wallet is never saved to cloud storage or standard device backups.</div> <p translate>Your wallet is never saved to cloud storage or standard device backups.</p>
<button class="primary" ion-button block (click)="initBackupFlow()" translate>Backup wallet</button> <button class="primary" ion-button block (click)="initBackupFlow()" translate>Backup wallet</button>
<button class="secondary" ion-button block outline (click)="later()" translate>Do it later</button> <button class="secondary" ion-button block outline (click)="doBackupLater()" translate>Do it later</button>
</div> </div>
</ion-content> </ion-content>

View File

@ -1,64 +1,17 @@
page-backup-request { page-backup-request {
.backup-request {
#warning {
padding-top: 15%;
display: block;
flex-direction: column;
height: calc(100vh - 320px);
justify-content: center;
align-content: center;
}
#alert-icon {
margin: 20px auto 5px;
height: 10vh;
}
#arrow-down {
font-size: 4.2rem;
color: $v-accent-color;
}
#backup-tldr {
font-size: 16px;
}
#backup-description {
max-width: 500px;
margin: auto;
padding: 1rem 0.5rem 0 1rem;
@media (max-height: 480px) {
padding-top: 40px;
}
}
.buttons { .buttons {
text-align: center;
width: 100%;
position: absolute; position: absolute;
bottom: 0px; bottom: 0px;
padding: 15px; padding: 15px 15px 4vh 15px;
} }
@media (max-height: 568px) { .header {
#warning { margin: 5vh 3vh;
padding-top: 5%; text-align: center;
} font-size: 3vh;
#backup-description { img {
font-size: 14px; width: 50px;
}
#backup-tldr {
font-size: 14px;
}
}
@media (max-height: 480px) {
#warning {
padding-top: 5%;
}
#backup-description {
font-size: 14px;
}
#backup-tldr {
font-size: 14px;
}
#arrow-down {
display: none;
} }
} }
} }
.header-md::after {
background: none;
}
}

View File

@ -1,5 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { NavController, NavParams, AlertController} from 'ionic-angular'; import { NavController, NavParams, AlertController} from 'ionic-angular';
import { Logger } from '@nsalaun/ng-logger';
import { DisclaimerPage } from '../disclaimer/disclaimer'; import { DisclaimerPage } from '../disclaimer/disclaimer';
@ -10,7 +11,12 @@ import { DisclaimerPage } from '../disclaimer/disclaimer';
export class BackupRequestPage { export class BackupRequestPage {
private opts: any; private opts: any;
constructor(public navCtrl: NavController, public navParams: NavParams, public alertCtrl: AlertController) { constructor(
public navCtrl: NavController,
public navParams: NavParams,
public alertCtrl: AlertController,
private log: Logger
) {
this.opts = { this.opts = {
title: '', title: '',
message: '', message: '',
@ -19,13 +25,14 @@ export class BackupRequestPage {
} }
ionViewDidLoad() { ionViewDidLoad() {
this.log.info('ionViewDidLoad BackupRequestPage');
} }
initBackupFlow() { initBackupFlow() {
// TODO navigate to backupFlow // TODO navigate to backupFlow
} }
later(confirmed: boolean) { doBackupLater(confirmed: boolean) {
this.opts.title = !confirmed ? '¡Watch Out!' : 'Are you sure you want to skip it?'; this.opts.title = !confirmed ? '¡Watch Out!' : 'Are you sure you want to skip it?';
this.opts.message = !confirmed ? 'If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup.' : 'You can create a backup later from your wallet settings.'; this.opts.message = !confirmed ? 'If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a backup.' : 'You can create a backup later from your wallet settings.';
this.opts.buttons = [{ this.opts.buttons = [{
@ -37,7 +44,7 @@ export class BackupRequestPage {
handler: () => { handler: () => {
if (!confirmed) { if (!confirmed) {
setTimeout(() => { setTimeout(() => {
this.later(true); this.doBackupLater(true);
}, 300); }, 300);
} else { } else {
this.navCtrl.push(DisclaimerPage); this.navCtrl.push(DisclaimerPage);

View File

@ -1,17 +1,8 @@
<ion-header> <ion-content>
<div class="content">
<ion-navbar transparent class="navbarc"> <div *ngIf="resume" translate>Quick review!</div>
</ion-navbar> <div *ngIf="!resume" translate>Almost done! Let's review.</div>
<p translate>Bitcoin is different &ndash; it cannot be safely held with a bank or web service.</p>
</ion-header>
<ion-content class="onboarding disclaimer">
<div id="onboarding-disclaimer-container">
<div *ngIf="resume" class="onboarding-topic" id="disclaimer-topic" translate>Quick review!</div>
<div *ngIf="!resume" class="onboarding-topic" id="disclaimer-topic" translate>Almost done! Let's review.</div>
<div class="onboarding-description" id="disclaimer-description" translate>Bitcoin is different &ndash; it cannot be safely held with a bank or web service.</div>
<div class="options">
<ion-item> <ion-item>
<ion-label>I understand that my funds are held securely on this device, not by a company.</ion-label> <ion-label>I understand that my funds are held securely on this device, not by a company.</ion-label>
<ion-checkbox [(ngModel)]="accepted.first"></ion-checkbox> <ion-checkbox [(ngModel)]="accepted.first"></ion-checkbox>
@ -20,16 +11,17 @@
<ion-label>I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase.</ion-label> <ion-label>I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the backup phrase.</ion-label>
<ion-checkbox [(ngModel)]="accepted.second"></ion-checkbox> <ion-checkbox [(ngModel)]="accepted.second"></ion-checkbox>
</ion-item> </ion-item>
</div> <div *ngIf="accepted.first && accepted.second">
</div> <div class="terms">
<div id="agree-to-terms" *ngIf="accepted.first && accepted.second"> <a class="link" (click)="openDisclaimer()" translate>Terms of Use</a>
<div class="terms-check"> <ion-item>
<ion-label>
<span translate>I have read, understood, and agree to the </span>
</ion-label>
<ion-checkbox [(ngModel)]="terms.accepted"></ion-checkbox> <ion-checkbox [(ngModel)]="terms.accepted"></ion-checkbox>
<div class="modal-text"> </ion-item>
<label (click)="selectTerms()" translate>I have read, understood, and agree to the </label> <button ion-button block [disabled]="!accepted.first || !accepted.second || !terms.accepted" (click)="confirm()" translate>Confirm &amp; Finish</button>
<a (click)="openDisclaimer()" translate>Terms of Use.</a>
</div> </div>
</div> </div>
<button class="primary" ion-button block [disabled]="!accepted.first || !accepted.second || !terms.accepted" (click)="confirm()" translate>Confirm &amp; Finish</button>
</div> </div>
</ion-content> </ion-content>

View File

@ -1,54 +1,17 @@
page-disclaimer { page-disclaimer {
.disclaimer { .terms {
.options {
padding-top: 20px;
}
.item {
background-color: transparent;
color: $v-onboarding-color;
}
.item-md.item-block .item-inner {
border-bottom: 0;
}
ion-label {
white-space: normal;
}
#agree-to-terms {
position: absolute;
bottom: 0;
width: 100%; width: 100%;
padding: 15px; position: absolute;
.item { bottom: 0px;
padding-left: 0px; padding: 15px 15px 4vh 15px;
} .link {
.terms-check { font-size: 2vh;
text-align: left;
margin-bottom: 25px;
display: flex;
label {
font-size: 16px;
cursor: pointer; cursor: pointer;
} }
a {
cursor: pointer;
} }
.checkbox { .content {
margin: auto; padding-top: 5vh;
padding: 5px; text-align: center;
} font-size: 3vh;
.modal-text {
margin-left: 30px;
}
}
}
}
.navbarc {
.bar-button {
color: $v-accent-color;
}
}
.header-md::after {
background: none;
} }
} }

View File

@ -1,5 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { NavController, NavParams} from 'ionic-angular'; import { NavController, NavParams} from 'ionic-angular';
import { Logger } from '@nsalaun/ng-logger';
import { TermsOfUsePage } from '../../settings/about/terms-of-use/terms-of-use'; import { TermsOfUsePage } from '../../settings/about/terms-of-use/terms-of-use';
import { TabsPage } from '../../tabs/tabs'; import { TabsPage } from '../../tabs/tabs';
@ -12,7 +13,11 @@ export class DisclaimerPage {
public accepted: any; public accepted: any;
public terms: any; public terms: any;
constructor(public navCtrl: NavController, public navParams: NavParams) { constructor(
public navCtrl: NavController,
public navParams: NavParams,
private log: Logger
) {
this.accepted = { this.accepted = {
first: false, first: false,
second: false, second: false,
@ -23,6 +28,7 @@ export class DisclaimerPage {
} }
ionViewDidLoad() { ionViewDidLoad() {
this.log.info('ionViewDidLoad DisclaimerPage');
} }
selectTerms() { selectTerms() {

View File

@ -1,29 +1,45 @@
<ion-content class="email"> <ion-header>
<div id="success-container">
<img src="assets/img/onboarding-success.svg" id="success-image" /> <ion-navbar hideBackButton="true" transparent>
<div id="success-message" translate>Wallet Created</div> <ion-buttons end>
<button ion-button icon-only (click)="skip()">
Skip
</button>
</ion-buttons>
</ion-navbar>
</ion-header>
<ion-content>
<div class="email-title" translate>Wallet Created</div>
<div *ngIf="!showConfirmForm">
<div class="email-content">
<p translate>Notifications by email</p>
<p translate>Where would you like to receive email notifications about payments?</p>
</div> </div>
<div id="collect-email"> <form (ngSubmit)="showConfirm()" novalidate>
<div id="collect-email-inner" *ngIf="!showConfirmForm">
<div class="heading" translate>Notifications by email</div>
<div class="prompt" translate>Where would you like to receive email notifications about payments?</div>
<form id="email-form" name="emailForm" (ngSubmit)="showConfirm()" novalidate>
<label class="item item-input" id="email-label">
<ion-input type="email" placeholder="Email Input" name="email" [(ngModel)]="data.email"></ion-input>
</label>
<ion-item> <ion-item>
<ion-label class="prompt">Get news and updates from BitPay</ion-label> <ion-label>Email</ion-label>
<ion-input type="email" [(ngModel)]="data.email" name="email" required></ion-input>
</ion-item>
<ion-item>
<ion-label >Get news and updates from BitPay</ion-label>
<ion-checkbox name="accept" [(ngModel)]="data.accept"></ion-checkbox> <ion-checkbox name="accept" [(ngModel)]="data.accept"></ion-checkbox>
</ion-item> </ion-item>
<button class="primary" ion-button block type="submit">Continue &rarr;</button> <div class="buttons">
<button ion-button block type="submit">Continue &rarr;</button>
</div>
</form> </form>
</div> </div>
<div id="collect-email-confirm" *ngIf="showConfirmForm"> <div *ngIf="showConfirmForm">
<p translate class="confirm">Is this email address correct?</p> <div class="email-content">
<p class="user-email">{{data.email}}</p> <p translate>Is this email address correct?</p>
<p>{{data.email}}</p>
</div>
<div class="buttons">
<div class="row"> <div class="row">
<div class="col col-50"> <div class="col col-50">
<button class="primary" block ion-button (click)="showConfirm()">Edit</button> <button class="primary" block ion-button (click)="showConfirm()">Edit</button>
@ -34,10 +50,4 @@
</div> </div>
</div> </div>
</div> </div>
<div class="overlay collect-overlay">
<button (click)="skip()">
Skip
</button>
</div>
</ion-content> </ion-content>

View File

@ -1,201 +1,17 @@
page-email { page-email {
ion-label { .buttons {
text-align: left !important; width: 100%;
white-space: normal; position: absolute;
bottom: 0px;
padding: 15px 15px 4vh 15px;
} }
.email { .email-title {
color: $v-onboarding-color; margin: 5vh 0;
background: rgb(17, 209, 166) !important;
$relish-success: 1.3s;
button {
&.primary {
border-color: transparent;
background-color: $v-accent-color;
color: $v-onboarding-color;
}
&.secondary {
background-color: transparent;
border-color: transparent;
color: $v-accent-color;
}
}
#success-container {
text-align: center; text-align: center;
top: 41vh;
position: relative;
animation-name: emailCollectSlideUp;
animation-iteration-count: 1;
animation-timing-function: ease-in;
animation-duration: .5s;
animation-delay: $relish-success;
animation-fill-mode: forwards;
}
#success-image {
width: 13vh;
margin: 0 auto 2vh;
}
#success-message {
font-size: 3vh; font-size: 3vh;
} }
.collect-overlay { .email-content {
position: absolute;
top:0;
left:0;
width:100%;
height: 100%;
background: rgba(0,0,0,.4);
z-index: 4;
animation-name: emailCollectOpacity;
animation-iteration-count: 1;
animation-timing-function: ease-in;
animation-duration: .2s;
animation-delay: $relish-success;
animation-fill-mode: forwards;
opacity: 0;
button {
position: absolute;
right: 0;
margin: 5% 1% 0 0;
background-color: transparent;
font-size: initial;
color: $v-light-gray;
text-transform: uppercase;
}
}
.heading {
text-align: center; text-align: center;
color: $v-dark-gray; padding: 0 4vh;
font-size: 2rem;
font-weight: bold;
margin: 2rem 0 1rem;
}
.prompt {
text-align: center;
margin: 1rem 1.5rem;
color: $v-mid-gray;
}
#email-form {
margin: 0 1.5rem 1rem;
}
#email-label {
border-radius: $v-visible-radius;
background: rgba(200, 200, 200, 0.20);
height: 3rem;
margin-top:0;
}
#collect-email {
opacity: 1;
background: #fff;
animation-name: topBottom;
animation-iteration-count: 1;
animation-timing-function: ease-in;
animation-duration: .4s;
animation-delay: $relish-success + .2s;
position: absolute;
bottom: -100%;
animation-fill-mode: forwards;
z-index: 5;
margin-top: 0;
width: 100%;
}
#collect-email-inner {
max-width: 400px;
margin: 0 auto;
input[type="email"] {
display: block;
padding-left: 0;
color: #445;
vertical-align: middle;
font-size: 16px;
line-height: 18px;
}
#email-label {
border-radius: 6px;
background: rgba(200, 200, 200, 0.2);
height: 4rem;
margin-top: 0;
}
}
#collect-email-confirm {
text-align: center;
p.confirm {
margin: 2rem 0;
color: $v-mid-gray;
}
p.user-email {
color: $v-dark-gray;
margin-bottom: 2rem;
}
.row, .col {
padding: 0;
}
.button {
padding: 2.5rem;
margin-bottom: 0;
}
}
#news-updates {
padding-top: 0;
}
.item {
border: none;
label {
background: none;
}
.checkbox input:before,
.checkbox .checkbox-icon:before {
border-radius: 50% !important;
background: none;
border-width: 2px;
padding: 12px;
position: relative;
right: 2px;
bottom: 2px;
}
.checkbox input:checked:after,
input:checked + .checkbox-icon:after {
border-color: $v-onboarding-checkbox-on-border;
top: 8px;
left: 6px;
}
.item-content {
color: $v-mid-gray;
text-align: left;
margin-left: 75px;
white-space: initial;
}
}
.item-checkbox {
padding: 1rem 0;
margin: 1rem 0;
}
.item-checkbox .checkbox {
margin-left: 15px;
}
.checkbox input:before,
.checkbox .checkbox-icon:before{
border-color: $v-onboarding-checkbox-on-border;
}
.checkbox input:checked:before,
.checkbox input:checked + .checkbox-icon:before {
border-color: $v-onboarding-checkbox-on-border;
}
@keyframes topBottom {
0% { bottom: -100%; }
100% { bottom: 0; }
}
@keyframes emailCollectOpacity {
0% { opacity: 0; }
100% { opacity: 1; }
}
@keyframes emailCollectSlideUp {
0% { top: 41vh; }
100% { top: calc((100vh - 20rem) / 2 - 11vh);}
}
} }
} }

View File

@ -1,5 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { NavController, NavParams, ActionSheetController } from 'ionic-angular'; import { NavController, NavParams, ActionSheetController } from 'ionic-angular';
import { Logger } from '@nsalaun/ng-logger';
import { BackupRequestPage } from '../backup-request/backup-request'; import { BackupRequestPage } from '../backup-request/backup-request';
@ -11,7 +12,12 @@ export class EmailPage {
public data: any; public data: any;
public showConfirmForm: boolean; public showConfirmForm: boolean;
constructor(public navCtrl: NavController, public navParams: NavParams, public actionSheet: ActionSheetController) { constructor(
public navCtrl: NavController,
public navParams: NavParams,
public actionSheet: ActionSheetController,
private log: Logger
) {
this.data = { this.data = {
accept: true, accept: true,
email: '', email: '',
@ -19,6 +25,10 @@ export class EmailPage {
this.showConfirmForm = false; this.showConfirmForm = false;
} }
ionViewDidLoad() {
this.log.info('ionViewDidLoad EmailPage');
}
skip() { skip() {
this.navCtrl.push(BackupRequestPage); this.navCtrl.push(BackupRequestPage);
} }
@ -39,6 +49,7 @@ export class EmailPage {
} }
showConfirm() { showConfirm() {
// TODO Fix form validation
if (!this.data.email) return; if (!this.data.email) return;
this.showConfirmForm = !this.showConfirmForm; this.showConfirmForm = !this.showConfirmForm;
} }

View File

@ -1,7 +1,7 @@
<ion-content> <ion-content>
<div class="logo-tagline"> <div class="logo-tagline">
<img src='assets/img/logo-negative.svg' id="logo" /> <img src='assets/img/app/logo.svg' id="logo" />
<p class="onboarding-description" translate>Take control of your money,<br />get started with bitcoin.</p> <p class="onboarding-description" translate>Take control of your money,<br />get started with bitcoin.</p>
</div> </div>
<button ion-button block clear (click)="skipOnboarding()">Skip Onboarding</button> <button ion-button block clear (click)="skipOnboarding()">Skip Onboarding</button>

View File

@ -1,16 +1,13 @@
page-onboarding { page-onboarding {
.logo-tagline { .logo-tagline {
text-align: center;
img { img {
width: 50%;
max-width: 200px; max-width: 200px;
margin: 5rem auto 0; margin: 5rem 0;
} }
p { p {
line-height: 1.6; line-height: 1.6;
font-size: 18px; font-size: 18px;
text-align: center;
} }
} }

View File

@ -1,5 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular'; import { NavController } from 'ionic-angular';
import { Logger } from '@nsalaun/ng-logger';
import { TourPage } from './tour/tour'; import { TourPage } from './tour/tour';
import { TabsPage } from '../tabs/tabs'; import { TabsPage } from '../tabs/tabs';
@ -12,12 +13,12 @@ export class OnboardingPage {
constructor( constructor(
public navCtrl: NavController, public navCtrl: NavController,
public navParams: NavParams private log: Logger
) { ) {
} }
ionViewDidLoad() { ionViewDidLoad() {
console.log('ionViewDidLoad OnboardingPage'); this.log.info('ionViewDidLoad OnboardingPage');
} }
getStarted() { getStarted() {
@ -28,8 +29,8 @@ export class OnboardingPage {
// TODO navigate to backupFlow // TODO navigate to backupFlow
} }
// TODO: Testing purpose
skipOnboarding() { skipOnboarding() {
// TODO: Testing purpose
this.navCtrl.setRoot(TabsPage); this.navCtrl.setRoot(TabsPage);
this.navCtrl.popToRoot(); this.navCtrl.popToRoot();
} }

View File

@ -1,8 +1,8 @@
<ion-header> <ion-header>
<ion-navbar transparent class="navbarc"> <ion-navbar transparent>
<ion-buttons end> <ion-buttons end>
<button ion-button icon-only (click)="skip()" *ngIf="currentIndex == 0"> <button ion-button icon-only (click)="skip()">
Skip Skip
</button> </button>
</ion-buttons> </ion-buttons>
@ -10,44 +10,44 @@
</ion-header> </ion-header>
<ion-content class="onboarding"> <ion-content>
<ion-slides pager="true" class="pages"> <ion-slides pager="true" (ionSlideDidChange)="slideChanged()">
<ion-slide> <ion-slide>
<div> <div>
<p class="onboarding-topic" translate>Bitcoin is secure,<br/>digital money.</p> <p translate>Bitcoin is secure,<br/>digital money.</p>
<p class="onboarding-description" translate>You can spend bitcoin at millions of websites and stores worldwide.</p> <p translate>You can spend bitcoin at millions of websites and stores worldwide.</p>
</div>
<div class="img-content">
<img src='assets/img/tour-phone.svg' />
</div> </div>
<img src='assets/img/app/onboarding/tour-phone.svg' />
<div class="buttons"> <div class="buttons">
<div class="onboarding-tldr" translate>Just scan the code to pay.</div> <div translate>Just scan the code to pay.</div>
<button class="primary" ion-button block (click)="slideNext()" translate> <button ion-button block (click)="slideNext()" translate>Got it</button>
Got it
</button>
</div> </div>
</ion-slide> </ion-slide>
<ion-slide> <ion-slide>
<div class="onboarding-topic" translate>Bitcoin is a currency.</div> <div>
<div class="onboarding-description" translate>You can trade it for other currencies like US Dollars, Euros, or Pounds.</div> <p translate>Bitcoin is a currency.</p>
<img src='assets/img/tour-currency.svg' /> <p translate>You can trade it for other currencies like US Dollars, Euros, or Pounds.</p>
<div>1 BTC = 2000 USD</div> </div>
<img src='assets/img/app/onboarding/tour-currency.svg' />
<p>1 BTC = 6000 USD</p>
<div class="buttons"> <div class="buttons">
<div class="onboarding-tldr" translate>The exchange rate changes with the market.</div> <div translate>The exchange rate changes with the market.</div>
<button class="primary" ion-button block (click)="slideNext()" translate> <button ion-button block (click)="slideNext()" translate>
Makes sense Makes sense
</button> </button>
</div> </div>
</ion-slide> </ion-slide>
<ion-slide> <ion-slide>
<div class="onboarding-topic" translate>You control your bitcoin.</div> <div>
<div class="onboarding-description" translate>This app stores your bitcoin with cutting-edge security.</div> <p translate>You control your bitcoin.</p>
<img src='assets/img/tour-control.svg' /> <p translate>This app stores your bitcoin with cutting-edge security.</p>
</div>
<img src='assets/img/app/onboarding/tour-control.svg' />
<div class="buttons"> <div class="buttons">
<div class="onboarding-tldr" translate>Not even BitPay can access it.</div> <div translate>Not even BitPay can access it.</div>
<button class="primary" ion-button block (click)="createDefaultWallet()" translate> <button ion-button block (click)="createDefaultWallet()" translate>
Create bitcoin wallet Create bitcoin wallet
</button> </button>
</div> </div>

View File

@ -1,11 +1,5 @@
page-tour { page-tour {
position: relative;
.pages {
position: absolute;
}
.buttons { .buttons {
padding: 15px;
width: 100%; width: 100%;
position: absolute; position: absolute;
bottom: 0px; bottom: 0px;
@ -13,18 +7,5 @@ page-tour {
} }
.slide-zoom { .slide-zoom {
height: inherit; height: inherit;
img {
padding-top: 10%;
width: 65%;
}
}
.navbarc {
.bar-button {
color: $v-accent-color;
}
}
.header-md::after {
background: none;
} }
} }

View File

@ -1,5 +1,6 @@
import { Component, ViewChild } from '@angular/core'; import { Component, ViewChild } from '@angular/core';
import { NavController, NavParams, LoadingController, Slides, Navbar } from 'ionic-angular'; import { NavController, LoadingController, Slides, Navbar } from 'ionic-angular';
import { Logger } from '@nsalaun/ng-logger';
import { EmailPage } from '../email/email'; import { EmailPage } from '../email/email';
@ -11,21 +12,29 @@ export class TourPage {
@ViewChild(Slides) slides: Slides; @ViewChild(Slides) slides: Slides;
@ViewChild(Navbar) navBar: Navbar; @ViewChild(Navbar) navBar: Navbar;
public currentIndex: number; public currentIndex: number = 0;
constructor(public navCtrl: NavController, public navParams: NavParams, public loadingCtrl: LoadingController) { constructor(
public navCtrl: NavController,
public loadingCtrl: LoadingController,
private log: Logger
) {
} }
ionViewDidLoad() { ionViewDidLoad() {
this.log.info('ionViewDidLoad TourPage');
} }
ngOnInit() { ngOnInit() {
this.currentIndex = this.slides.getActiveIndex() || 0;
this.navBar.backButtonClick = (e: UIEvent) => { this.navBar.backButtonClick = (e: UIEvent) => {
this.slidePrev(); this.slidePrev();
} }
} }
slideChanged() {
this.currentIndex = this.slides.getActiveIndex();
}
skip() { skip() {
this.navCtrl.push(EmailPage); this.navCtrl.push(EmailPage);
} }
@ -34,13 +43,11 @@ export class TourPage {
if (this.currentIndex == 0) this.navCtrl.pop(); if (this.currentIndex == 0) this.navCtrl.pop();
else { else {
this.slides.slidePrev(); this.slides.slidePrev();
this.currentIndex = this.slides.getActiveIndex();
} }
} }
slideNext() { slideNext() {
this.slides.slideNext(); this.slides.slideNext();
this.currentIndex = this.slides.getActiveIndex();
} }
createDefaultWallet() { createDefaultWallet() {

View File

@ -1,7 +1,7 @@
<ion-tabs> <ion-tabs>
<ion-tab [root]="homeRoot" tabTitle="{{'Home'|translate}}" tabIcon="home"></ion-tab> <ion-tab [root]="homeRoot" tabTitle="{{'Home'|translate}}" tabIcon="home"></ion-tab>
<ion-tab [root]="receiveRoot" tabTitle="{{'Receive'|translate}}" tabIcon="archive"></ion-tab> <ion-tab [root]="receiveRoot" tabTitle="{{'Receive'|translate}}" tabIcon="archive"></ion-tab>
<ion-tab [root]="scanRoot" tabTitle="{{'Scan'|translate}}" tabIcon="md-qr-scanner"></ion-tab> <ion-tab [root]="scanRoot" tabTitle="{{'Scan'|translate}}" tabIcon="qr-scanner"></ion-tab>
<ion-tab [root]="sendRoot" tabTitle="{{'Send'|translate}}" tabIcon="send"></ion-tab> <ion-tab [root]="sendRoot" tabTitle="{{'Send'|translate}}" tabIcon="send"></ion-tab>
<ion-tab [root]="settingsRoot" tabTitle="{{'Settings'|translate}}" tabIcon="settings"></ion-tab> <ion-tab [root]="settingsRoot" tabTitle="{{'Settings'|translate}}" tabIcon="settings"></ion-tab>
</ion-tabs> </ion-tabs>

View File

@ -46,13 +46,13 @@ export class LanguageProvider {
private current: string; private current: string;
constructor( constructor(
private logger: Logger, private log: Logger,
private translate: TranslateService, private translate: TranslateService,
private config: ConfigProvider private config: ConfigProvider
) { ) {
this.logger.info('LanguageProvider initialized.'); this.log.info('LanguageProvider initialized.');
this.translate.onLangChange.subscribe((event) => { this.translate.onLangChange.subscribe((event) => {
this.logger.info('Settings language changed to: ' + event.lang); this.log.info('Setting new default language to: ' + event.lang);
}); });
} }
@ -66,6 +66,7 @@ export class LanguageProvider {
if (validBrowserLang) this.current = browserLang; if (validBrowserLang) this.current = browserLang;
else this.current = this.getDefault(); else this.current = this.getDefault();
} }
this.log.info('Default language: ' + this.current);
this.translate.setDefaultLang(this.current); this.translate.setDefaultLang(this.current);
} }

View File

@ -1,6 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Inject } from '@angular/core'; import { Inject } from '@angular/core';
import { Logger } from '@nsalaun/ng-logger'; import { Logger } from '@nsalaun/ng-logger';
import { File } from '@ionic-native/file';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { IStorage, ISTORAGE } from './storage/istorage'; import { IStorage, ISTORAGE } from './storage/istorage';
@ -38,26 +39,24 @@ const Keys = {
TX_HISTORY: walletId => 'txsHistory-' + walletId, TX_HISTORY: walletId => 'txsHistory-' + walletId,
}; };
export let persistenceProviderFactory = (platform: PlatformProvider, log: Logger) => { export let persistenceProviderFactory = (platform: PlatformProvider, log: Logger, file: File) => {
// TODO: select appropriate storage service based on platform
let storage; let storage;
/* if (platform.isCordova) {
if (this.platform.isChromeApp) { log.info('Persistence mode: FileStorage.');
storage = new ChromeStorage(log); storage = new FileStorage(this.log, this.platform.platform, this.file);
} else if (this.platform.isCordova) {
storage = new FileStorage(log);
} else { } else {
log.info('Persistence mode: LocalStorage.');
storage = new LocalStorage(log); storage = new LocalStorage(log);
} }
*/
// Testing in RAM // Testing in RAM
storage = new LocalStorage(log); // storage = new RamStorage(log);
return new PersistenceProvider(storage, log); return new PersistenceProvider(storage, log);
}; };
@Injectable() @Injectable()
export class PersistenceProvider { export class PersistenceProvider {
constructor( @Inject(ISTORAGE) public storage: IStorage, private log: Logger) { constructor( @Inject(ISTORAGE) public storage: IStorage, private log: Logger) {
this.log.info('PersistenceProvider initialized.');
}; };
storeNewProfile(profile): Promise<void> { storeNewProfile(profile): Promise<void> {

View File

@ -15,7 +15,6 @@ export class PlatformProvider {
isDevel: boolean; isDevel: boolean;
constructor(private platform: Platform, private log: Logger) { constructor(private platform: Platform, private log: Logger) {
let chrome: any;
var ua = navigator ? navigator.userAgent : null; var ua = navigator ? navigator.userAgent : null;
if (!ua) { if (!ua) {
@ -34,6 +33,8 @@ export class PlatformProvider {
this.isNW = this.isNodeWebkit(); this.isNW = this.isNodeWebkit();
this.isMobile = platform.is('mobile'); this.isMobile = platform.is('mobile');
this.isDevel = !this.isMobile && !this.isNW; this.isDevel = !this.isMobile && !this.isNW;
this.log.info('PlatformProvider initialized.');
} }
getBrowserName(): string { getBrowserName(): string {