· 8 years ago · Apr 05, 2018, 08:30 AM
1webpackJsonp([17],{
2
3/***/ 100:
4/***/ (function(module, __webpack_exports__, __webpack_require__) {
5
6"use strict";
7/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsReferralPage; });
8/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
9/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
10/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__ = __webpack_require__(141);
11/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__ = __webpack_require__(13);
12/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__ = __webpack_require__(21);
13/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__help_help__ = __webpack_require__(84);
14var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18 return c > 3 && r && Object.defineProperty(target, key, r), r;
19};
20var __metadata = (this && this.__metadata) || function (k, v) {
21 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22};
23
24
25
26
27
28
29
30/**
31 * Generated class for the SettingsReferralPage page.
32 *
33 * See http://ionicframework.com/docs/components/#navigation for more info
34 * on Ionic pages and navigation.
35 */
36var SettingsReferralPage = (function () {
37 function SettingsReferralPage(navCtrl, navParams, barcode, alertCtrl, translateService, loaderCrtl, apiServer, modalCtrl, platform) {
38 var _this = this;
39 this.navCtrl = navCtrl;
40 this.navParams = navParams;
41 this.barcode = barcode;
42 this.alertCtrl = alertCtrl;
43 this.translateService = translateService;
44 this.loaderCrtl = loaderCrtl;
45 this.apiServer = apiServer;
46 this.modalCtrl = modalCtrl;
47 this.platform = platform;
48 this.showReferralCode = false;
49 this.usedRefCode = false;
50 this.referralsAllTime = 0;
51 this.referralsThisPeriod = 0;
52 this.referralDataLoaded = false;
53 this.currentPrize = {
54 frequency: 0,
55 odds: 5,
56 reward: 0,
57 tiers: {}
58 };
59 this.apiServer.getReferStats().then(function (resp) {
60 if (resp.status == 1) {
61 _this.code = resp.qr.code;
62 _this.qrcode = resp.qr.url;
63 _this.referralsAllTime = resp.totals.all;
64 _this.referralsThisPeriod = resp.totals.period;
65 _this.showReferralCode = false;
66 _this.usedRefCode = resp.beenReferredBy;
67 // Get current prize
68 _this.currentPrize.frequency = resp.current.frequency;
69 _this.currentPrize.odds = resp.current.odds;
70 _this.currentPrize.reward = resp.current.reward;
71 _this.currentPrize.tiers = resp.current.tiers;
72 _this.referralDataLoaded = true;
73 }
74 else {
75 var alert_1 = _this.alertCtrl.create({
76 title: _this.trans("global.alert.title.error"),
77 subTitle: _this.trans("global.alert.error.code") + '6000',
78 message: _this.trans("global.alert.error.generic"),
79 buttons: [{
80 text: _this.trans('global.alert.button.ok'),
81 handler: function () {
82 }
83 }]
84 });
85 alert_1.present();
86 }
87 }, function (err) {
88 var alert = _this.alertCtrl.create({
89 title: _this.trans("global.alert.title.error"),
90 subTitle: _this.trans("global.alert.error.code") + '6001',
91 message: _this.trans("global.alert.error.unable.to.connect"),
92 buttons: [{
93 text: _this.trans('global.alert.button.ok'),
94 handler: function () {
95 }
96 }]
97 });
98 alert.present();
99 });
100 }
101 // Function to shorthand translations
102 SettingsReferralPage.prototype.trans = function (key) {
103 return this.translateService.instant(key);
104 };
105 // Show the referral details popup
106 SettingsReferralPage.prototype.showRefDetails = function () {
107 this.showReferralCode = true;
108 };
109 // Hide the referral details popup
110 SettingsReferralPage.prototype.hideRefDetails = function () {
111 this.showReferralCode = false;
112 };
113 // The referral code from the scanner and input is passed into here to validate it
114 SettingsReferralPage.prototype.validateRefCode = function (code) {
115 var _this = this;
116 var loader = this.loaderCrtl.create({
117 content: this.trans('settings.referral.ts.loader.validating')
118 });
119 loader.present();
120 this.apiServer.checkReferCode(code)
121 .then(function (resp) {
122 if (resp.status == 1) {
123 _this.showAlert(_this.trans('settings.referral.ts.alert.code.success.title'), _this.trans('settings.referral.ts.alert.code.success.p'));
124 _this.usedRefCode = true;
125 }
126 else {
127 _this.showAlert(_this.trans('settings.referral.ts.alert.code.error.title'), resp.message);
128 }
129 loader.dismiss();
130 }, function (err) {
131 // If there is no internet connection
132 var alert;
133 switch (err.status) {
134 case 0:
135 _this.showAlert(_this.trans('settings.referral.ts.alert.code.error.title'), err.message);
136 loader.dismiss();
137 case 2:
138 // Your Offline
139 alert = _this.alertCtrl.create({
140 title: err.title,
141 message: err.message,
142 buttons: [{
143 text: err.buttons.cancel,
144 role: 'cancel',
145 handler: function () {
146 // Close the alert
147 loader.dismiss();
148 return;
149 }
150 }, {
151 text: err.buttons.retry,
152 handler: function () {
153 // UserServiceProvider
154 if (_this.apiServer.isOnline()) {
155 loader.dismiss();
156 _this.validateRefCode(code);
157 return;
158 }
159 alert.present();
160 return false;
161 }
162 }]
163 });
164 alert.present();
165 case 3:
166 _this.showAlert(_this.trans('settings.referral.ts.alert.code.error.title'), err.message);
167 default:
168 alert = _this.alertCtrl.create({
169 title: _this.trans("global.alert.title.error"),
170 subTitle: _this.trans("global.alert.error.code") + '6010',
171 message: _this.trans("global.alert.error.generic"),
172 buttons: [{
173 text: _this.trans('global.alert.button.retry'),
174 handler: function () {
175 // this.validateRefCode(code);
176 loader.dismiss();
177 return;
178 }
179 }]
180 });
181 alert.present();
182 }
183 loader.dismiss();
184 });
185 };
186 // Launch QR scanner for referral code
187 SettingsReferralPage.prototype.scanRef = function () {
188 var _this = this;
189 if (this.platform.is('mobileweb') || this.platform.is('core')) {
190 return false;
191 }
192 else {
193 this.barcode.scan({
194 "formats": "QR_CODE",
195 "prompt": this.trans("settings.referral.ts.qr.scanner.text")
196 }).then(function (data) {
197 if (data.cancelled) {
198 return false;
199 }
200 else {
201 _this.validateRefCode(data.text);
202 }
203 });
204 }
205 };
206 // Referral code success/error alert
207 SettingsReferralPage.prototype.showAlert = function (title, message) {
208 var alert = this.alertCtrl.create({
209 title: title,
210 subTitle: message,
211 buttons: [this.trans('global.alert.button.ok')]
212 });
213 alert.present();
214 };
215 // Prompt for entering the referral code manually
216 SettingsReferralPage.prototype.showRefPrompt = function () {
217 var _this = this;
218 var prompt = this.alertCtrl.create({
219 title: this.trans('settings.referral.ts.prompt.title'),
220 message: this.trans('settings.referral.ts.prompt.text'),
221 inputs: [
222 {
223 name: 'code',
224 placeholder: this.trans('settings.referral.ts.prompt.label')
225 },
226 ],
227 buttons: [
228 {
229 text: this.trans('global.alert.button.cancel'),
230 handler: function (data) {
231 prompt.dismiss();
232 return false;
233 }
234 },
235 {
236 text: this.trans('global.alert.button.submit'),
237 handler: function (data) {
238 prompt.dismiss().then(function () {
239 _this.validateRefCode(data.code);
240 });
241 return false;
242 }
243 }
244 ]
245 });
246 prompt.present();
247 };
248 SettingsReferralPage.prototype.openHelp = function (option) {
249 var _this = this;
250 //Present the loader and wait to see if we have the data we need
251 var loading = this.loaderCrtl.create({
252 content: this.trans("global.loading")
253 });
254 loading.present();
255 //Is the data loaded? If so then load the modal help page
256 if (this.referralDataLoaded) {
257 loading.dismiss();
258 var modal = this.modalCtrl.create(__WEBPACK_IMPORTED_MODULE_5__help_help__["a" /* HelpPage */], { option: option, information: this.currentPrize });
259 modal.present();
260 }
261 else {
262 //If the data is not loaded then continuously check to see if it is
263 var interval_1 = setInterval(function () {
264 //If the data is loaded then present the help message otherwise re-loop and check again.
265 if (_this.referralDataLoaded) {
266 loading.dismiss();
267 var modal = _this.modalCtrl.create(__WEBPACK_IMPORTED_MODULE_5__help_help__["a" /* HelpPage */], { option: option, information: _this.currentPrize });
268 modal.present();
269 clearInterval(interval_1);
270 }
271 }, 1000);
272 }
273 };
274 return SettingsReferralPage;
275}());
276SettingsReferralPage = __decorate([
277 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
278 selector: 'page-settings-referral',template:/*ion-inline-start:"/usr/src/app/src/pages/settings-referral/settings-referral.html"*/'<!--\n Generated template for the SettingsReferralPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-title>{{ "settings.referral.navbar.title" | translate }}</ion-title>\n </ion-navbar>\n\n</ion-header>\n\n<div class="custom-popup" [ngClass]=\'{show : showReferralCode}\'>\n <div class="custom-popup-content">\n <h4 class="cf"><span float-left>{{ "settings.referral.popup.code.title" | translate }}</span><span float-right>{{ code }}</span></h4>\n <ion-grid text-center>\n <ion-row class="border-bottom">\n <ion-col>\n <img class="referral-qr" src=\'{{ qrcode }}\' alt=\'\'>\n <p>{{ "settings.referral.popup.code.text" | translate }}</p>\n </ion-col>\n </ion-row>\n </ion-grid>\n <button ion-button full (click)="hideRefDetails()">{{ "global.nav.button.close" | translate }}</button>\n </div>\n</div>\n\n<ion-content>\n <img class="hidden-qr-preload" src=\'{{ qrcode }}\'>\n <ion-grid class="referral-info" text-center>\n <ion-row>\n <ion-col>\n <h5>{{ "settings.referral.main.heading" | translate }}</h5>\n <button ion-button small outline icon-left margin-bottom (click)="openHelp(\'referralInfo\')">\n {{ "settings.referral.how.do.i.win.btn" | translate }}\n </button>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ion-grid padding>\n <!-- Only show this section if the have referred someone or have used a referral code! -->\n <ion-row margin-bottom>\n <ion-col col-12>\n <h3>{{ "settings.referral.your.ref.details.title" | translate }}</h3>\n <div class="referral-table">\n <div class="table-row">\n <div class="item-left">{{ "settings.referral.total.all.time" | translate }}</div>\n <div class="item-right">{{ referralsAllTime | number }}</div>\n </div>\n <div class="table-row">\n <div class="item-left">{{ "settings.referral.total.this.period" | translate }}</div>\n <div class="item-right">{{ referralsThisPeriod | number }}</div>\n </div>\n </div>\n <button ion-button full color="success" (click)="showRefDetails()">\n {{ "settings.referral.show.my.code.btn" | translate }}\n </button>\n </ion-col>\n </ion-row>\n <!-- This row will only show if the have NOT used a referral code -->\n <ion-row *ngIf="usedRefCode == false" margin-bottom>\n <ion-col col-12>\n <h3>{{ "settings.referral.enter.code.title" | translate }}</h3>\n <p>{{ "settings.referral.enter.code.p1" | translate }}</p>\n </ion-col>\n <ion-col col-6>\n <button ion-button full icon-left (click)="scanRef()">\n <ion-icon name="qr-scanner"></ion-icon>\n {{ "settings.referral.button.scan.code" | translate }}\n </button>\n </ion-col>\n <ion-col col-6>\n <button ion-button full (click)="showRefPrompt()">\n {{ "settings.referral.button.enter.code" | translate }}\n </button>\n </ion-col>\n </ion-row>\n <!-- This row will only show if the have used a referral code -->\n <ion-row *ngIf="usedRefCode == true" margin-bottom>\n <ion-col col-12>\n <h3>{{ "settings.referral.enter.code.title" | translate }}</h3>\n <p>{{ "settings.referral.stats.p1" | translate }}</p>\n </ion-col>\n </ion-row> \n </ion-grid>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/settings-referral/settings-referral.html"*/,
279 providers: [__WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__["a" /* BarcodeScanner */]]
280 }),
281 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */],
282 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
283 __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__["a" /* BarcodeScanner */],
284 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
285 __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__["c" /* TranslateService */],
286 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
287 __WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__["a" /* UserServiceProvider */],
288 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["l" /* ModalController */],
289 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */]])
290], SettingsReferralPage);
291
292//# sourceMappingURL=settings-referral.js.map
293
294/***/ }),
295
296/***/ 101:
297/***/ (function(module, __webpack_exports__, __webpack_require__) {
298
299"use strict";
300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UpdateRequiredPage; });
301/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
302/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
303var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
304 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
305 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
306 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
307 return c > 3 && r && Object.defineProperty(target, key, r), r;
308};
309var __metadata = (this && this.__metadata) || function (k, v) {
310 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
311};
312
313
314/**
315 * Generated class for the UpdateRequiredPage page.
316 *
317 * See http://ionicframework.com/docs/components/#navigation for more info
318 * on Ionic pages and navigation.
319 */
320var UpdateRequiredPage = (function () {
321 function UpdateRequiredPage(navCtrl, navParams, platform) {
322 this.navCtrl = navCtrl;
323 this.navParams = navParams;
324 this.platform = platform;
325 }
326 UpdateRequiredPage.prototype.ionViewDidLoad = function () {
327 };
328 return UpdateRequiredPage;
329}());
330UpdateRequiredPage = __decorate([
331 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
332 selector: 'page-update-required',template:/*ion-inline-start:"/usr/src/app/src/pages/update-required/update-required.html"*/'<!--\n Generated template for the UpdateRequiredPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-content padding text-center>\n <div class="update-image">\n <img src="assets/images/update.png"> \n </div>\n <h1>{{ "update.required.h1" | translate }}</h1>\n <p>{{ "update.required.p" | translate }}</p>\n</ion-content>\n<ion-footer no-border padding>\n <div *ngIf="platform.is(\'android\')">\n <button ion-button full onClick="window.open(\'https://play.google.com/store/apps/details?id=com.electroneum.mobile\',\'_system\',\'location=yes\');return false;">{{ "update.required.button.update" | translate }}</button>\n </div>\n <!-- <div *ngIf="platform.is(\'ios\')">\n <button ion-button full onClick="window.open(\'https://play.google.com/store/apps/details?id=com.electroneum.mobile\',\'_system\',\'location=yes\');return false;">{{ "update.required.button.update" | translate }}</button>\n </div> -->\n</ion-footer> \n'/*ion-inline-end:"/usr/src/app/src/pages/update-required/update-required.html"*/,
333 }),
334 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */]])
335], UpdateRequiredPage);
336
337//# sourceMappingURL=update-required.js.map
338
339/***/ }),
340
341/***/ 133:
342/***/ (function(module, __webpack_exports__, __webpack_require__) {
343
344"use strict";
345/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return JwtHelper; });
346/* unused harmony export tokenNotExpired */
347/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
348var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
349 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
350 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
351 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
352 return c > 3 && r && Object.defineProperty(target, key, r), r;
353};
354
355/**
356 * Helper class to decode and find JWT expiration.
357 */
358var JwtHelper = (function () {
359 function JwtHelper() {
360 }
361 JwtHelper.prototype.urlBase64Decode = function (str) {
362 var output = str.replace(/-/g, '+').replace(/_/g, '/');
363 switch (output.length % 4) {
364 case 0: {
365 break;
366 }
367 case 2: {
368 output += '==';
369 break;
370 }
371 case 3: {
372 output += '=';
373 break;
374 }
375 default: {
376 throw 'Illegal base64url string!';
377 }
378 }
379 return this.b64DecodeUnicode(output);
380 };
381 // credits for decoder goes to https://github.com/atk
382 JwtHelper.prototype.b64decode = function (str) {
383 var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
384 var output = '';
385 str = String(str).replace(/=+$/, '');
386 if (str.length % 4 == 1) {
387 throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");
388 }
389 for (
390 // initialize result and counters
391 var bc = 0, bs = void 0, buffer = void 0, idx = 0;
392 // get next character
393 buffer = str.charAt(idx++);
394 // character found in table? initialize bit storage and add its ascii value;
395 ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
396 // and if not first of each 4 characters,
397 // convert the first 8 bits to one ascii character
398 bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {
399 // try to find character in table (0-63, not found => -1)
400 buffer = chars.indexOf(buffer);
401 }
402 return output;
403 };
404 // https://developer.mozilla.org/en/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem
405 JwtHelper.prototype.b64DecodeUnicode = function (str) {
406 return decodeURIComponent(Array.prototype.map.call(this.b64decode(str), function (c) {
407 return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
408 }).join(''));
409 };
410 JwtHelper.prototype.decodeToken = function (token) {
411 var parts = token.split('.');
412 if (parts.length !== 3) {
413 throw new Error('JWT must have 3 parts');
414 }
415 var decoded = this.urlBase64Decode(parts[1]);
416 if (!decoded) {
417 throw new Error('Cannot decode the token');
418 }
419 return JSON.parse(decoded);
420 };
421 JwtHelper.prototype.getTokenExpirationDate = function (token) {
422 var decoded;
423 var date;
424 try {
425 decoded = this.decodeToken(token);
426 if (!decoded.hasOwnProperty('exp')) {
427 return null;
428 }
429 date = new Date(0); // The 0 here is the key, which sets the date to the epoch
430 date.setUTCSeconds(decoded.exp);
431 }
432 catch (err) {
433 date = new Date(0);
434 }
435 return date;
436 };
437 JwtHelper.prototype.isTokenExpired = function (token, offsetSeconds) {
438 var date = this.getTokenExpirationDate(token);
439 offsetSeconds = offsetSeconds || 0;
440 if (date == null) {
441 return false;
442 }
443 // Token expired?
444 return !(date.valueOf() > (new Date().valueOf() + (offsetSeconds * 1000)));
445 };
446 return JwtHelper;
447}());
448JwtHelper = __decorate([
449 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B" /* Injectable */])()
450], JwtHelper);
451
452/**
453 * Checks for presence of token and that token hasn't expired.
454 * For use with the @CanActivate router decorator and NgIf
455 */
456function tokenNotExpired(tokenName, jwt) {
457 if (tokenName === void 0) { tokenName = "_token"; }
458 var token = jwt || localStorage.getItem(tokenName);
459 var jwtHelper = new JwtHelper();
460 return token != null && !jwtHelper.isTokenExpired(token);
461}
462//# sourceMappingURL=jwt-helper.js.map
463
464/***/ }),
465
466/***/ 173:
467/***/ (function(module, __webpack_exports__, __webpack_require__) {
468
469"use strict";
470/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BlockedPage; });
471/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
472/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
473/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__services_service_helper__ = __webpack_require__(82);
474var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
475 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
476 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
477 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
478 return c > 3 && r && Object.defineProperty(target, key, r), r;
479};
480var __metadata = (this && this.__metadata) || function (k, v) {
481 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
482};
483
484
485
486/**
487 * Generated class for the BlockedPage page.
488 *
489 * See https://ionicframework.com/docs/components/#navigation for more info on
490 * Ionic pages and navigation.
491 */
492var BlockedPage = (function () {
493 function BlockedPage(navCtrl, navParams, serviceHelper) {
494 this.navCtrl = navCtrl;
495 this.navParams = navParams;
496 this.serviceHelper = serviceHelper;
497 this.serviceHelper.enabledOrDisableAlert(true);
498 }
499 return BlockedPage;
500}());
501BlockedPage = __decorate([
502 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
503 selector: 'page-blocked',template:/*ion-inline-start:"/usr/src/app/src/pages/blocked/blocked.html"*/'<!--\n Generated template for the BlockedPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-content padding text-center>\n <div class="blocked-image">\n <svg-icon src="assets/images/cross.svg"></svg-icon>\n </div>\n <h1>You are blocked</h1>\n <p>You are currently blocked from accessing the Electroneum app.</p>\n <p>If you have entered the wrong password or PIN too many times, please try again later today.</p>\n <!-- <ion-footer no-border padding>\n <button ion-button full>Try again</button>\n </ion-footer> -->\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/blocked/blocked.html"*/,
504 }),
505 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */], __WEBPACK_IMPORTED_MODULE_2__services_service_helper__["a" /* ServiceHelper */]])
506], BlockedPage);
507
508//# sourceMappingURL=blocked.js.map
509
510/***/ }),
511
512/***/ 174:
513/***/ (function(module, __webpack_exports__, __webpack_require__) {
514
515"use strict";
516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LoginPage; });
517/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
518/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
519/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__login_pin_login_pin__ = __webpack_require__(52);
520/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__account_not_confirmed_account_not_confirmed__ = __webpack_require__(51);
521/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__ = __webpack_require__(21);
522/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ngx_translate_core__ = __webpack_require__(13);
523var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
524 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
525 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
526 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
527 return c > 3 && r && Object.defineProperty(target, key, r), r;
528};
529var __metadata = (this && this.__metadata) || function (k, v) {
530 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
531};
532
533
534
535
536
537
538/**
539 * Generated class for the LoginPage page.
540 *
541 * See http://ionicframework.com/docs/components/#navigation for more info
542 * on Ionic pages and navigation.
543 */
544var LoginPage = (function () {
545 function LoginPage(navCtrl, navParams, alertCtrl, loaderCrtl, api, translateService) {
546 this.navCtrl = navCtrl;
547 this.navParams = navParams;
548 this.alertCtrl = alertCtrl;
549 this.loaderCrtl = loaderCrtl;
550 this.api = api;
551 this.translateService = translateService;
552 this.frmEmail = '';
553 this.frmPassword = '';
554 }
555 // Function to shorthand translations
556 LoginPage.prototype.trans = function (key) {
557 return this.translateService.instant(key);
558 };
559 LoginPage.prototype.loginNow = function () {
560 var _this = this;
561 if (this.frmEmail === '' || this.frmPassword === '') {
562 var alert_1 = this.alertCtrl.create({
563 title: this.trans("login.ts.alert.login.error.title"),
564 message: this.trans("login.ts.alert.login.error.message"),
565 buttons: [this.trans("global.alert.button.ok")]
566 });
567 alert_1.present();
568 return;
569 }
570 var loader = this.loaderCrtl.create({
571 content: this.trans("login.ts.loader.logging.in")
572 });
573 loader.present();
574 // Let login to the system
575 this.api.login(this.frmEmail, this.frmPassword)
576 .then(function (res) {
577 if (res.account_active != '') {
578 _this.navCtrl.push(__WEBPACK_IMPORTED_MODULE_3__account_not_confirmed_account_not_confirmed__["a" /* AccountNotConfirmedPage */]);
579 }
580 else {
581 _this.navCtrl.setRoot(__WEBPACK_IMPORTED_MODULE_2__login_pin_login_pin__["a" /* LoginPinPage */]);
582 }
583 loader.dismiss();
584 }, function (err) {
585 var alert;
586 switch (err.status) {
587 case 0:
588 alert = _this.alertCtrl.create({
589 title: _this.trans("login.ts.alert.login.error.title"),
590 subTitle: '',
591 message: err.message,
592 buttons: [_this.trans("global.alert.button.retry")]
593 });
594 break;
595 case 2:
596 alert = _this.alertCtrl.create({
597 title: err.title,
598 message: err.message,
599 buttons: [{
600 text: err.buttons.cancel,
601 role: 'cancel',
602 handler: function () {
603 // Close the alert
604 return;
605 }
606 }, {
607 text: err.buttons.retry,
608 handler: function () {
609 // UserServiceProvider
610 if (_this.api.isOnline()) {
611 _this.loginNow();
612 alert.dismiss();
613 }
614 else {
615 alert.present();
616 }
617 return false;
618 }
619 }]
620 });
621 break;
622 case 3:
623 alert = _this.alertCtrl.create({
624 title: _this.trans("login.ts.alert.login.error.title"),
625 subTitle: '',
626 message: err.message,
627 buttons: [_this.trans("global.alert.button.ok")]
628 });
629 break;
630 default:
631 alert = _this.alertCtrl.create({
632 title: _this.trans("global.alert.error.occured.title"),
633 subTitle: _this.trans("global.alert.error.code") + '2010',
634 message: _this.trans("global.alert.error.unable.to.connect"),
635 buttons: [_this.trans("global.alert.button.retry")]
636 });
637 }
638 alert.present();
639 loader.dismiss();
640 }).catch(function (e) {
641 var alert = _this.alertCtrl.create({
642 title: _this.trans("global.alert.error.occured.title"),
643 subTitle: _this.trans("global.alert.error.code") + '2011',
644 message: _this.trans("global.alert.error.unable.to.connect"),
645 buttons: [_this.trans("global.alert.button.retry")]
646 });
647 alert.present();
648 loader.dismiss();
649 });
650 };
651 return LoginPage;
652}());
653LoginPage = __decorate([
654 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
655 selector: 'page-login',template:/*ion-inline-start:"/usr/src/app/src/pages/login/login.html"*/'<!--\n Generated template for the LoginPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-title>{{ "login.navbar.title" | translate }}</ion-title>\n </ion-navbar> \n \n</ion-header>\n\n<ion-content text-center>\n <div padding>\n <ion-row>\n <ion-col>\n <img class="intro-logo" src="assets/images/logo-dark.png" />\n <div class="intro-text">\n <div>{{ "global.logo.text" | translate }}</div>\n <div>{{ "global.strapline" | translate }}</div>\n </div>\n </ion-col>\n </ion-row>\n <ion-row margin-bottom>\n <ion-item class="full-input">\n <ion-label floating>{{ "global.label.email.address" | translate }}</ion-label> \n <ion-input type="email" [(ngModel)]="frmEmail"></ion-input>\n </ion-item>\n <ion-item class="full-input">\n <ion-label floating>{{ "global.label.password" | translate }}</ion-label> \n <ion-input type="password" [(ngModel)]="frmPassword"></ion-input>\n </ion-item>\n </ion-row>\n\n <div margin-bottom>\n <button ion-button class="login-button" color="success" (click)="loginNow()">{{ "login.button.login" | translate }}</button>\n </div>\n\n <a class="forgot-password-website" text-center onClick="window.open(\'https://my.electroneum.com/resetting/request\',\'_system\',\'location=yes\');return false;">{{ "login.forgot.password.reset.on.website" | translate }}</a>\n\n </div>\n\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/login/login.html"*/,
656 providers: [__WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__["a" /* UserServiceProvider */]]
657 }),
658 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
659 __WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_5__ngx_translate_core__["c" /* TranslateService */]])
660], LoginPage);
661
662//# sourceMappingURL=login.js.map
663
664/***/ }),
665
666/***/ 175:
667/***/ (function(module, __webpack_exports__, __webpack_require__) {
668
669"use strict";
670/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsLanguagePage; });
671/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
672/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
673/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__ = __webpack_require__(13);
674/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ionic_native_background_mode__ = __webpack_require__(140);
675var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
676 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
677 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
678 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
679 return c > 3 && r && Object.defineProperty(target, key, r), r;
680};
681var __metadata = (this && this.__metadata) || function (k, v) {
682 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
683};
684
685
686
687
688/**
689 * Generated class for the SettingsLanguagePage page.
690 *
691 * See http://ionicframework.com/docs/components/#navigation for more info
692 * on Ionic pages and navigation.
693 */
694var SettingsLanguagePage = (function () {
695 function SettingsLanguagePage(navCtrl, navParams, translateService, BackgroundMode) {
696 this.navCtrl = navCtrl;
697 this.navParams = navParams;
698 this.translateService = translateService;
699 this.BackgroundMode = BackgroundMode;
700 this.language = '';
701 this.language = translateService.currentLang;
702 }
703 // Function to shorthand translations
704 SettingsLanguagePage.prototype.trans = function (key) {
705 return this.translateService.instant(key);
706 };
707 SettingsLanguagePage.prototype.translateSelected = function (lang) {
708 this.translateService.use(lang);
709 localStorage.setItem('_lang', lang);
710 this.BackgroundMode.setDefaults({
711 title: this.trans("background.notification.title"),
712 text: this.trans("background.notification.text")
713 });
714 };
715 return SettingsLanguagePage;
716}());
717SettingsLanguagePage = __decorate([
718 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
719 selector: 'page-settings-language',template:/*ion-inline-start:"/usr/src/app/src/pages/settings-language/settings-language.html"*/'<!--\n Generated template for the SettingsLanguagePage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n <ion-navbar>\n <ion-title>{{ "settings.language.navbar.title" | translate }}</ion-title>\n </ion-navbar>\n</ion-header>\n\n<ion-content>\n\n <ion-list radio-group [(ngModel)]="language" margin-top>\n <ion-item>\n <ion-label>عربى</ion-label>\n <ion-radio value="ar" (ionSelect)="translateSelected(\'ar\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Deutsch</ion-label>\n <ion-radio value="de" (ionSelect)="translateSelected(\'de\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>English</ion-label>\n <ion-radio value="en" (ionSelect)="translateSelected(\'en\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Español</ion-label>\n <ion-radio value="es" (ionSelect)="translateSelected(\'es\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Français</ion-label>\n <ion-radio value="fr" (ionSelect)="translateSelected(\'fr\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>עִברִית</ion-label>\n <ion-radio value="he" (ionSelect)="translateSelected(\'he\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>हिंदी</ion-label>\n <ion-radio value="hi" (ionSelect)="translateSelected(\'hi\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Indonesian</ion-label>\n <ion-radio value="id" (ionSelect)="translateSelected(\'id\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Italiano</ion-label>\n <ion-radio value="it" (ionSelect)="translateSelected(\'it\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>日本語</ion-label>\n <ion-radio value="ja" (ionSelect)="translateSelected(\'ja\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>한êµì–´</ion-label>\n <ion-radio value="ko" (ionSelect)="translateSelected(\'ko\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Netherlands</ion-label>\n <ion-radio value="nl" (ionSelect)="translateSelected(\'nl\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Português</ion-label>\n <ion-radio value="pt" (ionSelect)="translateSelected(\'pt\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Portugues do Brasil</ion-label>\n <ion-radio value="pt-br" (ionSelect)="translateSelected(\'pt-br\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Română</ion-label>\n <ion-radio value="ro" (ionSelect)="translateSelected(\'ro\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>руÑÑкий</ion-label>\n <ion-radio value="ru" (ionSelect)="translateSelected(\'ru\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>ภาษาไทย</ion-label>\n <ion-radio value="th" (ionSelect)="translateSelected(\'th\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Türk</ion-label>\n <ion-radio value="tr" (ionSelect)="translateSelected(\'tr\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>اردو</ion-label>\n <ion-radio value="ur" (ionSelect)="translateSelected(\'ur\')"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>䏿–‡</ion-label>\n <ion-radio value="zh" (ionSelect)="translateSelected(\'zh\')"></ion-radio>\n </ion-item>\n \n </ion-list>\n\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/settings-language/settings-language.html"*/,
720 }),
721 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */],
722 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
723 __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__["c" /* TranslateService */],
724 __WEBPACK_IMPORTED_MODULE_3__ionic_native_background_mode__["a" /* BackgroundMode */]])
725], SettingsLanguagePage);
726
727//# sourceMappingURL=settings-language.js.map
728
729/***/ }),
730
731/***/ 176:
732/***/ (function(module, __webpack_exports__, __webpack_require__) {
733
734"use strict";
735/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsPasswordPage; });
736/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
737/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
738var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
739 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
740 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
741 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
742 return c > 3 && r && Object.defineProperty(target, key, r), r;
743};
744var __metadata = (this && this.__metadata) || function (k, v) {
745 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
746};
747
748
749/**
750 * Generated class for the SettingsPasswordPage page.
751 *
752 * See http://ionicframework.com/docs/components/#navigation for more info
753 * on Ionic pages and navigation.
754 */
755var SettingsPasswordPage = (function () {
756 function SettingsPasswordPage(navCtrl, navParams) {
757 this.navCtrl = navCtrl;
758 this.navParams = navParams;
759 }
760 return SettingsPasswordPage;
761}());
762SettingsPasswordPage = __decorate([
763 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
764 selector: 'page-settings-password',template:/*ion-inline-start:"/usr/src/app/src/pages/settings-password/settings-password.html"*/'<!--\n Generated template for the SettingsPasswordPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-title>{{ "settings.password.navbar.title" | translate }}</ion-title>\n </ion-navbar>\n\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n\n <ion-item>\n <ion-label floating>{{ "settings.password.label.current.pass" | translate }}</ion-label>\n <ion-input type="text"></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label floating>{{ "settings.password.label.new.pass" | translate }}</ion-label>\n <ion-input type="password"></ion-input>\n </ion-item>\n <ion-item>\n <ion-label floating>{{ "settings.password.label.confirm.new.pass" | translate }}</ion-label>\n <ion-input type="password"></ion-input>\n </ion-item>\n\n </ion-list>\n\n <div padding>\n <button ion-button full>{{ "settings.password.button.change.pass" | translate }}</button>\n </div>\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/settings-password/settings-password.html"*/,
765 }),
766 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */]])
767], SettingsPasswordPage);
768
769//# sourceMappingURL=settings-password.js.map
770
771/***/ }),
772
773/***/ 177:
774/***/ (function(module, __webpack_exports__, __webpack_require__) {
775
776"use strict";
777/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsPinPage; });
778/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
779/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
780/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__ = __webpack_require__(13);
781var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
782 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
783 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
784 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
785 return c > 3 && r && Object.defineProperty(target, key, r), r;
786};
787var __metadata = (this && this.__metadata) || function (k, v) {
788 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
789};
790
791
792
793/**
794 * Generated class for the SettingsPinPage page.
795 *
796 * See https://ionicframework.com/docs/components/#navigation for more info on
797 * Ionic pages and navigation.
798 */
799var SettingsPinPage = (function () {
800 function SettingsPinPage(navCtrl, translateService) {
801 this.navCtrl = navCtrl;
802 this.translateService = translateService;
803 }
804 SettingsPinPage.prototype.ionViewDidLoad = function () {
805 };
806 // Function to shorthand translations
807 SettingsPinPage.prototype.trans = function (key, variables) {
808 if (variables === void 0) { variables = null; }
809 return this.translateService.instant(key, variables);
810 };
811 return SettingsPinPage;
812}());
813SettingsPinPage = __decorate([
814 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
815 selector: 'page-settings-pin',template:/*ion-inline-start:"/usr/src/app/src/pages/settings-pin/settings-pin.html"*/'<!--\n Generated template for the SettingsPinPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-title>{{ "settings.pin.navbar.title" | translate }}</ion-title>\n </ion-navbar>\n\n</ion-header>\n\n<ion-content>\n <div padding text-center *ngIf="recoveryEnabled == false">\n <h1>{{ "settings.pin.enable.recovery.title" | translate }}</h1>\n <p>{{ "settings.pin.enable.recovery.p" | translate }}</p>\n <button ion-button full (click)="openPinCode(\'EnablePinRecovery\')">{{ "settings.pin.enable.recovery.button" | translate }}</button>\n </div>\n <div *ngIf="recoveryEnabled == true">\n <ion-item-group>\n <ion-item>\n {{ "settings.pin.item.recovery.email" | translate }}\n <p>{{recoveryEmail}}</p>\n </ion-item>\n <a ion-item (click)="openPinCode(\'ChangePin\')">\n {{ "settings.pin.item.change.pin" | translate }}\n </a>\n </ion-item-group>\n </div>\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/settings-pin/settings-pin.html"*/,
816 }),
817 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__["c" /* TranslateService */]])
818], SettingsPinPage);
819
820//# sourceMappingURL=settings-pin.js.map
821
822/***/ }),
823
824/***/ 178:
825/***/ (function(module, __webpack_exports__, __webpack_require__) {
826
827"use strict";
828/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ValuePage; });
829/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
830/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
831/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map__ = __webpack_require__(142);
832/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map__);
833/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__ = __webpack_require__(13);
834/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__ = __webpack_require__(21);
835/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__help_help__ = __webpack_require__(84);
836var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
837 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
838 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
839 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
840 return c > 3 && r && Object.defineProperty(target, key, r), r;
841};
842var __metadata = (this && this.__metadata) || function (k, v) {
843 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
844};
845
846
847
848
849
850
851/**
852 * Generated class for the ValuePage page.
853 *
854 * See https://ionicframework.com/docs/components/#navigation for more info on
855 * Ionic pages and navigation.
856 */
857var ValuePage = (function () {
858 function ValuePage(navCtrl, navParams, toastCtrl, loadingCtrl, alertCtrl, translateService, apiServer, modalCtrl) {
859 this.navCtrl = navCtrl;
860 this.navParams = navParams;
861 this.toastCtrl = toastCtrl;
862 this.loadingCtrl = loadingCtrl;
863 this.alertCtrl = alertCtrl;
864 this.translateService = translateService;
865 this.apiServer = apiServer;
866 this.modalCtrl = modalCtrl;
867 this.active_currency = 'USD';
868 this.amount_calculated = '0.00';
869 this.valueTabs = 'stats';
870 this.calcSelectedCurr = 'USD';
871 this.fromEtn = true;
872 // dummy prices object
873 this.prices = [{
874 currency: 'BTC',
875 price: 0,
876 decimals: 0
877 }, {
878 currency: 'USD',
879 price: 0,
880 decimals: 0
881 }, {
882 currency: 'GBP',
883 price: 0,
884 decimals: 0
885 }, {
886 currency: 'EUR',
887 price: 0,
888 decimals: 0
889 }, {
890 currency: 'AUD',
891 price: 0,
892 decimals: 0
893 }];
894 }
895 ValuePage.prototype.ionViewDidLoad = function () {
896 this.getData();
897 };
898 // Function to shorthand translations
899 ValuePage.prototype.trans = function (key) {
900 return this.translateService.instant(key);
901 };
902 ValuePage.prototype.openHelp = function (option) {
903 var modal = this.modalCtrl.create(__WEBPACK_IMPORTED_MODULE_5__help_help__["a" /* HelpPage */], { option: option });
904 modal.present();
905 };
906 ValuePage.prototype.getData = function () {
907 var _this = this;
908 this.loading = this.loadingCtrl.create({
909 content: this.trans("global.loading")
910 });
911 this.loading.present();
912 //If there is a previous response then check how old it is and possibly re-use it
913 if (this.last_response != null) {
914 var now = Math.floor(Date.now() / 1000);
915 if ((now - 360) < this.last_response['last_updated']) {
916 this.loading.dismiss();
917 return;
918 }
919 }
920 this.apiServer.getCoinValueData()
921 .then(function (data) {
922 _this.circulation = _this.numberWithCommas(data["total_supply"]);
923 _this.price_exchange = data['price_' + _this.active_currency.toLowerCase()];
924 _this.exchanges = data['exchanges'];
925 for (var i = 0; i < _this.prices.length; ++i) {
926 _this.prices[i]['price'] = data['price_' + _this.prices[i]['currency'].toLowerCase()];
927 _this.prices[i]['decimals'] = data['price_' + _this.prices[i]['currency'].toLowerCase()].toString().split(".")[1].length;
928 }
929 _this.name = data['name'];
930 _this.symbol = data['symbol'];
931 _this.rank = data['rank'];
932 _this.price = data['price_' + _this.active_currency.toLowerCase()];
933 _this.volume = _this.addCurrencySymbol(_this.numberWithCommas(data['24h_volume_' + _this.active_currency.toLowerCase()]), _this.active_currency);
934 // this.volume = this.numberWithCommas(data['24h_volume_'+this.active_currency.toLowerCase()]);
935 _this.market_cap = (data['market_cap_usd'] == null ? '?' : _this.numberWithCommas(data['market_cap_usd']));
936 // this.market_cap = (data['market_cap_'+this.active_currency.toLowerCase()] == null ? '?' : this.numberWithCommas(data['market_cap_'+this.active_currency.toLowerCase()]));
937 _this.percent_change_1h = data['percent_change_1h'];
938 _this.percent_change_24h = data['percent_change_24h'];
939 _this.percent_change_7d = (data['percent_change_7d'] == null ? '?' : data['percent_change_7d']);
940 _this.estimated_market_cap = _this.numberWithCommas((_this.removeCommas(_this.circulation) * _this.price).toFixed(2));
941 _this.estimated_rank = data['rank'];
942 _this.last_response = data;
943 if (_this.valueTabs == 'calculator') {
944 _this.calc();
945 }
946 if (localStorage.getItem('_calc_currency') != null) {
947 _this.handleCurrencyChange(localStorage.getItem('_calc_currency'), true);
948 }
949 else {
950 _this.loading.dismiss();
951 }
952 }, function (err) {
953 _this.loading.dismiss();
954 // If there is no internet connection
955 if (err.status == 2) {
956 var alertOffline_1 = _this.alertCtrl.create({
957 title: err.title,
958 message: err.message,
959 buttons: [{
960 text: err.buttons.cancel,
961 role: 'cancel',
962 handler: function () {
963 // Close the alert
964 _this.loading.dismiss();
965 return;
966 }
967 }, {
968 text: err.buttons.retry,
969 handler: function () {
970 // UserServiceProvider
971 if (_this.apiServer.isOnline()) {
972 alertOffline_1.dismiss();
973 _this.getData();
974 }
975 else {
976 alertOffline_1.present();
977 }
978 return false;
979 }
980 }]
981 });
982 alertOffline_1.present();
983 }
984 }).catch(function (e) {
985 _this.loading.dismiss();
986 });
987 };
988 // Add commas to a passed number
989 ValuePage.prototype.numberWithCommas = function (num) {
990 var a = num.split(".");
991 if (typeof a[1] == "undefined") {
992 return a[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + ".00";
993 }
994 else {
995 return a[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "." + a[1];
996 }
997 };
998 // Remove commas to a passed number
999 ValuePage.prototype.removeCommas = function (num) {
1000 return parseFloat(num.toString().replace(/,/g, ""));
1001 };
1002 ValuePage.prototype.currencySelect = function (currency) {
1003 var _this = this;
1004 var alert = this.alertCtrl.create();
1005 alert.setTitle(this.trans("value.popup.select.currency.title"));
1006 alert.addInput({ type: 'radio', label: this.trans("global.currency.bitcoin") + ' (BTC)', value: 'BTC', checked: currency === 'BTC' });
1007 alert.addInput({ type: 'radio', label: this.trans("global.currency.dollars") + ' (USD)', value: 'USD', checked: currency === 'USD' });
1008 alert.addInput({ type: 'radio', label: this.trans("global.currency.pounds") + ' (GBP)', value: 'GBP', checked: currency === 'GBP' });
1009 alert.addInput({ type: 'radio', label: this.trans("global.currency.euro") + ' (EUR)', value: 'EUR', checked: currency === 'EUR' });
1010 alert.addInput({ type: 'radio', label: this.trans("global.currency.australian.dollars") + ' (AUD)', value: 'AUD', checked: currency === 'AUD' });
1011 alert.addButton(this.trans("global.alert.button.cancel"));
1012 alert.addButton({
1013 text: this.trans("global.alert.button.ok"),
1014 handler: function (currency) {
1015 _this.handleCurrencyChange(currency);
1016 localStorage.setItem('_calc_currency', currency);
1017 }
1018 });
1019 alert.present();
1020 };
1021 ValuePage.prototype.handleCurrencyChange = function (currency, loaderActive) {
1022 if (loaderActive === void 0) { loaderActive = null; }
1023 var loader = this.loadingCtrl.create({
1024 content: this.trans("global.loading")
1025 });
1026 if (loaderActive != true) {
1027 loader.present();
1028 }
1029 this.price_exchange = this.last_response['price_' + currency.toLowerCase()];
1030 this.active_currency = currency;
1031 this.calcSelectedCurr = currency;
1032 this.price = this.addCurrencySymbol(this.last_response['price_' + this.active_currency.toLowerCase()], currency);
1033 this.volume = this.addCurrencySymbol(this.numberWithCommas(this.last_response['24h_volume_' + this.active_currency.toLowerCase()]), currency);
1034 this.market_cap = (this.last_response['market_cap_usd'] == null ? '?' : this.numberWithCommas(this.last_response['market_cap_usd']));
1035 // this.market_cap = (this.last_response['market_cap_'+this.active_currency.toLowerCase()] == null ? '?' : this.numberWithCommas(this.last_response['market_cap_'+this.active_currency.toLowerCase()]));
1036 this.calcSelectedCurr = currency;
1037 if (this.valueTabs == 'calculator') {
1038 this.amount_calculated = "0";
1039 document.getElementById("calcAmount").value = "0";
1040 this.calc();
1041 }
1042 if (loaderActive == true) {
1043 this.loading.dismiss();
1044 }
1045 else {
1046 loader.dismiss();
1047 }
1048 };
1049 ValuePage.prototype.addCurrencySymbol = function (value, currency) {
1050 switch (currency) {
1051 case 'AUD':
1052 return '$' + value;
1053 case 'BTC':
1054 return value + ' BTC';
1055 case 'EUR':
1056 return '€' + value;
1057 case 'GBP':
1058 return '£' + value;
1059 case 'USD':
1060 return '$' + value;
1061 }
1062 };
1063 // Calculator function
1064 ValuePage.prototype.calc = function () {
1065 var value = parseFloat(document.getElementById("calcAmount").value);
1066 if (isNaN(value)) {
1067 value = 0;
1068 }
1069 for (var i = 0; i < this.prices.length; ++i) {
1070 if (this.prices[i]['currency'] == this.active_currency) {
1071 if (this.fromEtn == true) {
1072 this.amount_calculated = (value * this.prices[i]['price']).toFixed(this.prices[i]['decimals']);
1073 }
1074 else {
1075 this.amount_calculated = (value / this.prices[i]['price']).toFixed(2);
1076 }
1077 break;
1078 }
1079 }
1080 };
1081 ValuePage.prototype.calcSwap = function () {
1082 var _this = this;
1083 var calcBox = document.getElementsByClassName("calculator")[0];
1084 var child0 = calcBox.children[0];
1085 var child1 = calcBox.children[1];
1086 var child2 = calcBox.children[2];
1087 calcBox.insertBefore(child1, child0);
1088 calcBox.insertBefore(child2, child1);
1089 this.fromEtn = this.fromEtn != true ? true : false;
1090 setTimeout(function () {
1091 var input = document.getElementById("calcAmount");
1092 input.value = _this.amount_calculated;
1093 _this.calc();
1094 }, 10);
1095 };
1096 ValuePage.prototype.openExchangeLink = function (link) {
1097 window.open(link, '_system', 'location=yes');
1098 return false;
1099 };
1100 return ValuePage;
1101}());
1102ValuePage = __decorate([
1103 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
1104 selector: 'page-value',template:/*ion-inline-start:"/usr/src/app/src/pages/value/value.html"*/'<!--\n Generated template for the ValuePage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header no-border>\n <ion-navbar>\n <ion-title>{{ "tabs.value" | translate }}</ion-title>\n <ion-buttons end>\n <button ion-button icon-only (click)="getData()">\n <ion-icon name="refresh"></ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n</ion-header>\n\n<ion-content>\n <div>\n <ion-grid class="page-header">\n <ion-row>\n <ion-col>\n <h6 class="primary-txt" (click)="currencySelect(active_currency)">ETN <ion-icon name="md-swap" class="swap-icon"></ion-icon>{{ active_currency }} <ion-icon class="currency-dropdown" name="md-arrow-dropdown"></ion-icon></h6>\n <h3 class="w-txt">\n 1 ETN = {{ price_exchange }} {{ active_currency }}\n </h3>\n </ion-col>\n </ion-row>\n <ion-toolbar no-border-top>\n <ion-segment [(ngModel)]="valueTabs" (ngModelChange)="fromEtn = true; amount_calculated = \'0.00\'">\n <ion-segment-button value="stats">\n {{ "value.segment.stats" | translate }}\n </ion-segment-button>\n <ion-segment-button value="calculator">\n {{ "value.segment.calculator" | translate }}\n </ion-segment-button>\n <ion-segment-button value="exchanges">\n {{ "value.segment.exchanges" | translate }}\n </ion-segment-button>\n </ion-segment>\n </ion-toolbar>\n </ion-grid>\n\n <div [ngSwitch]="valueTabs">\n <div *ngSwitchCase="\'stats\'">\n\n <ion-item-group class="stats-list">\n <ion-item>\n {{ "value.stats.rank" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valueRank\')"></ion-icon>\n <ion-note item-end>{{rank}}</ion-note>\n </ion-item>\n\n <!-- <ion-item *ngIf="market_cap == \'?\'">\n {{ "value.stats.estimated.rank" | translate }}\n <ion-note item-end>{{estimated_rank}}</ion-note>\n </ion-item> -->\n\n <!-- <ion-item>\n {{ "value.stats.volume" | translate }} (24H)\n <ion-note item-end>$ {{volume_usd}}</ion-note>\n </ion-item> -->\n\n <ion-item>\n {{ "value.stats.volume" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valueVolume\')"></ion-icon>\n <ion-note item-end>{{volume}}</ion-note>\n </ion-item>\n\n <ion-item>\n {{ "value.stats.circulation" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valueCirculation\')"></ion-icon>\n <ion-note item-end>{{circulation}}</ion-note>\n </ion-item>\n\n <!-- <ion-item *ngIf="market_cap_usd != \'?\'">\n {{ "value.stats.market.cap" | translate }}\n <ion-note item-end>$ {{market_cap_usd}}</ion-note>\n </ion-item> -->\n\n <ion-item *ngIf="market_cap != \'?\'">\n {{ "value.stats.market.cap" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valueMarketCap\')"></ion-icon>\n <ion-note item-end>${{market_cap}}</ion-note>\n </ion-item>\n\n <ion-item *ngIf="market_cap_usd == \'?\'">\n {{ "value.stats.estimated.market.cap" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valueMarketCap\')"></ion-icon>\n <ion-note item-end>$ {{estimated_market_cap}}</ion-note>\n </ion-item>\n\n <ion-item>\n {{ "value.stats.change.1h" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valuePercentChange\')"></ion-icon>\n <ion-note item-end [ngClass]="(percent_change_1h >= 0) ? \'text-success\' : \'text-error\'">{{percent_change_1h}}%</ion-note>\n </ion-item>\n\n <ion-item>\n {{ "value.stats.change.24h" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valuePercentChange\')"></ion-icon>\n <ion-note item-end [ngClass]="(percent_change_24h >= 0) ? \'text-success\' : \'text-error\'">{{percent_change_24h}}%</ion-note>\n </ion-item>\n\n <ion-item>\n {{ "value.stats.change.7d" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'valuePercentChange\')"></ion-icon>\n <ion-note item-end [ngClass]="(percent_change_7d >= 0) ? \'text-success\' : \'text-error\'">{{percent_change_7d}}%</ion-note>\n </ion-item>\n\n </ion-item-group>\n </div>\n\n <div class="calculator" *ngSwitchCase="\'calculator\'">\n <div class="calc-row cf">\n <div class="calc-currency" float-left>\n <div class="currency-title" *ngIf="fromEtn == true">{{ "value.calculator.from" | translate }}</div>\n <div class="currency-title" *ngIf="fromEtn != true">{{ "value.calculator.to" | translate }}</div>\n ETN\n </div>\n <input *ngIf="fromEtn == true" float-right class="calc-input" id="calcAmount" type="number" pattern="[0-9]*" (input)=calc() placeholder="Enter amount">\n <div *ngIf="fromEtn != true" float-right class="calc-input disabled-input">{{amount_calculated}}</div>\n </div>\n <div class="calc-row calc-separator">\n <button class="swap-button" (click)="calcSwap()" ion-button icon-only>\n <ion-icon name="md-swap"></ion-icon>\n </button>\n </div>\n <div class="calc-row cf">\n <div class="calc-currency" float-left (click)="currencySelect(active_currency)">\n <div class="currency-title" *ngIf="fromEtn == true">{{ "value.calculator.to" | translate }}</div>\n <div class="currency-title" *ngIf="fromEtn != true">{{ "value.calculator.from" | translate }}</div>\n {{ calcSelectedCurr }} <ion-icon name="md-arrow-dropdown"></ion-icon>\n </div>\n <div float-right *ngIf="fromEtn == true" class="calc-input disabled-input">{{amount_calculated}}</div>\n <input float-right *ngIf="fromEtn != true" class="calc-input" id="calcAmount" type="number" pattern="[0-9]*" (input)=calc() placeholder="Enter amount">\n </div>\n </div>\n\n <div *ngSwitchCase="\'exchanges\'">\n <ion-list>\n <ion-item *ngFor="let exchange of exchanges">\n <h2>{{ exchange.name }}</h2>\n <button (click)="openExchangeLink(exchange.link)" ion-button clear item-end>{{ "value.exchanges.visit.btn" | translate }}</button>\n </ion-item>\n </ion-list>\n </div>\n </div>\n\n </div>\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/value/value.html"*/,
1105 }),
1106 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
1107 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["p" /* ToastController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
1108 __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__["c" /* TranslateService */], __WEBPACK_IMPORTED_MODULE_4__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["l" /* ModalController */]])
1109], ValuePage);
1110
1111//# sourceMappingURL=value.js.map
1112
1113/***/ }),
1114
1115/***/ 179:
1116/***/ (function(module, __webpack_exports__, __webpack_require__) {
1117
1118"use strict";
1119/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return WalletSendPage; });
1120/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
1121/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
1122/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__ = __webpack_require__(141);
1123/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__ = __webpack_require__(21);
1124/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_ionic2_pincode_input_dist_pincode__ = __webpack_require__(86);
1125/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__wallet_wallet__ = __webpack_require__(85);
1126/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__intro_intro__ = __webpack_require__(43);
1127/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__ = __webpack_require__(13);
1128/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__providers_error_alerts_error_alerts__ = __webpack_require__(87);
1129var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1130 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1131 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1132 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1133 return c > 3 && r && Object.defineProperty(target, key, r), r;
1134};
1135var __metadata = (this && this.__metadata) || function (k, v) {
1136 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1137};
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147/**
1148 * Generated class for the WalletSendPage page.
1149 *
1150 * See http://ionicframework.com/docs/components/#navigation for more info
1151 * on Ionic pages and navigation.
1152 */
1153var WalletSendPage = WalletSendPage_1 = (function () {
1154 function WalletSendPage(navCtrl, navParams, apiServer, barcode, loaderCrtl, pincodeCtrl, app, platform, alertCtrl, translateService, errorCtrl) {
1155 var _this = this;
1156 this.navCtrl = navCtrl;
1157 this.navParams = navParams;
1158 this.apiServer = apiServer;
1159 this.barcode = barcode;
1160 this.loaderCrtl = loaderCrtl;
1161 this.pincodeCtrl = pincodeCtrl;
1162 this.app = app;
1163 this.platform = platform;
1164 this.alertCtrl = alertCtrl;
1165 this.translateService = translateService;
1166 this.errorCtrl = errorCtrl;
1167 this.frmSend = {
1168 txtWallet: '',
1169 txtPaymentID: '',
1170 txtAmount: '',
1171 currentBalance: '',
1172 workerToken: '',
1173 pinCode: ''
1174 };
1175 // translation variables
1176 this.fees = {
1177 transFee: localStorage.getItem('_fee')
1178 };
1179 this.minSendAmount = 0.01;
1180 this.navbarEnabled = true;
1181 this.nextPage = this.navParams.get('nextPage');
1182 this.availableBalance = this.navParams.get('balance');
1183 this.userWalletAddress = this.navParams.get('wallet_address');
1184 if (this.nextPage > 1) {
1185 this.frmSend = this.navParams.get('frmSend');
1186 }
1187 // disable the navbar if we are at the transaction success or error page
1188 if (this.nextPage == 5 || this.nextPage == 6) {
1189 this.navbarEnabled = false;
1190 }
1191 this.apiServer.getExchangeWallets().then(function (resp) {
1192 if (resp.status == 1) {
1193 _this.exchangeAddresses = resp.exchanges;
1194 }
1195 }, function (err) {
1196 });
1197 }
1198 // Function to shorthand translations
1199 WalletSendPage.prototype.trans = function (key, variables) {
1200 if (variables === void 0) { variables = null; }
1201 return this.translateService.instant(key, variables);
1202 };
1203 WalletSendPage.prototype.ionViewDidEnter = function () {
1204 // fix content height if the keyboard was used on the previous slide
1205 this.content.resize();
1206 };
1207 WalletSendPage.prototype.ionViewWillLeave = function () {
1208 if (this.nextPage == 4) {
1209 if (typeof this.pinCode == "object") {
1210 this.pinCode.dismiss('cancel');
1211 }
1212 }
1213 };
1214 WalletSendPage.prototype.scan = function (keyType, fromPage, toPage) {
1215 var _this = this;
1216 // if running on ionic lab browser
1217 if (this.platform.is('mobileweb') || this.platform.is('core')) {
1218 return false;
1219 }
1220 else {
1221 // if running the app on phone trigger the actual scanner
1222 var prompt_1 = '';
1223 if (keyType == 'txtWallet') {
1224 prompt_1 = 'Scan the QR code of the wallet address you are sending ETN to';
1225 }
1226 else if (keyType == 'txtPaymentID') {
1227 prompt_1 = 'Scan the QR code of the Payment ID';
1228 }
1229 this.barcode.scan({
1230 "formats": "QR_CODE",
1231 "prompt": prompt_1
1232 }).then(function (data) {
1233 if (data.cancelled) {
1234 return false;
1235 }
1236 _this.frmSend[keyType] = data.text;
1237 _this.navigate(fromPage, toPage);
1238 });
1239 }
1240 };
1241 WalletSendPage.prototype.validationAlert = function (message) {
1242 var alert = this.alertCtrl.create({
1243 title: this.trans("global.alert.title.error"),
1244 subTitle: message,
1245 buttons: [this.trans("global.alert.button.ok")]
1246 });
1247 alert.present();
1248 };
1249 WalletSendPage.prototype.receiveValidation = function (pageNumber) {
1250 switch (pageNumber) {
1251 // checking the send to wallet address
1252 case "1":
1253 case 1:
1254 // regex for wallet address
1255 var walletCharsTest = /^[0-9a-zA-Z]*$/;
1256 if (this.frmSend['txtWallet'].indexOf("electroneum:etn") == 0) {
1257 var split = this.frmSend['txtWallet'].split("?");
1258 this.frmSend['txtWallet'] = split[0].replace("electroneum:", "");
1259 this.frmSend['txtPaymentID'] = split[1].replace("tx_payment_id=", "");
1260 }
1261 if (this.frmSend['txtWallet'] == this.userWalletAddress) {
1262 this.validationAlert(this.trans("wallet.send.ts.validation.error.wallet.same.as.own.wallet"));
1263 return false;
1264 }
1265 else if (this.frmSend['txtWallet'].length < 98) {
1266 this.validationAlert(this.trans("wallet.send.ts.validation.error.wallet.too.short"));
1267 return false;
1268 }
1269 else if (this.frmSend['txtWallet'].length > 109) {
1270 this.validationAlert(this.trans("wallet.send.ts.validation.error.wallet.too.long"));
1271 return false;
1272 }
1273 else if (this.frmSend['txtWallet'].length > 98 && this.frmSend['txtWallet'].length < 109) {
1274 this.validationAlert(this.trans("wallet.send.ts.validation.error.wallet.invalid.length"));
1275 return false;
1276 }
1277 else if (!walletCharsTest.test(this.frmSend['txtWallet'])) {
1278 this.validationAlert(this.trans("wallet.send.ts.validation.error.wallet.invalid.chars"));
1279 return false;
1280 }
1281 else if (this.frmSend['txtWallet'].indexOf('etn') == 0 && this.frmSend['txtWallet'].length == 98) {
1282 this.inputClass = 'verified';
1283 this.walletType = 'etn';
1284 }
1285 else if (this.frmSend['txtWallet'].length == 109) {
1286 this.inputClass = 'verified';
1287 this.walletType = 'integrated';
1288 }
1289 break;
1290 case "2":
1291 case 2:
1292 // regex for payment ID
1293 var paymentIdTest = /^[0-9a-fA-F]{64}$/;
1294 var paymentIdCharsTest = /^[0-9a-fA-F]*$/;
1295 var exchangeTest = false;
1296 var exchange = 'exchange';
1297 if (this.exchangeAddresses != undefined) {
1298 for (var index = 0; index < Object.keys(this.exchangeAddresses).length; index++) {
1299 for (var arrIndex = 0; arrIndex < this.exchangeAddresses[Object.keys(this.exchangeAddresses)[index]].wallets.length; arrIndex++) {
1300 if (this.exchangeAddresses[Object.keys(this.exchangeAddresses)[index]].wallets.indexOf(this.frmSend['txtWallet']) != -1) {
1301 exchangeTest = true;
1302 exchange = Object.keys(this.exchangeAddresses)[index];
1303 break;
1304 }
1305 }
1306 }
1307 }
1308 if (this.frmSend['txtPaymentID'].length == 0 && exchangeTest == true) {
1309 this.validationAlert(this.trans("wallet.send.ts.validation.error.exchange.warning", { exchangeName: exchange }));
1310 return false;
1311 }
1312 else if (this.frmSend['txtPaymentID'].length == 0) {
1313 return true;
1314 }
1315 else if (this.frmSend['txtPaymentID'].length < 64) {
1316 this.validationAlert(this.trans("wallet.send.ts.validation.error.payment.id.too.short"));
1317 return false;
1318 }
1319 else if (this.frmSend['txtPaymentID'].length > 64) {
1320 this.validationAlert(this.trans("wallet.send.ts.validation.error.payment.id.too.long"));
1321 return false;
1322 }
1323 else if (!paymentIdCharsTest.test(this.frmSend['txtPaymentID'])) {
1324 this.validationAlert(this.trans("wallet.send.ts.validation.error.payment.id.invalid.chars"));
1325 return false;
1326 }
1327 else if (paymentIdTest.test(this.frmSend['txtPaymentID'])) {
1328 this.inputClass = 'verified';
1329 }
1330 break;
1331 case "3":
1332 case 3:
1333 var amountCharTest = /^[0-9\.]*$/;
1334 var amountDecimalTest = /^[0-9]*(?:.[0-9]{1,2})?$/;
1335 var amount = parseFloat(this.frmSend['txtAmount']);
1336 var totalBalance = parseFloat(this.availableBalance);
1337 var transactionFee = parseFloat(this.fees['transFee']);
1338 var maxAmount = parseFloat((totalBalance - transactionFee).toFixed(2));
1339 if (totalBalance < transactionFee) {
1340 this.validationAlert(this.trans("wallet.send.ts.validation.error.amount.not.enough.for.fee"));
1341 return false;
1342 }
1343 else if (!amountCharTest.test(this.frmSend['txtAmount'])) {
1344 this.validationAlert(this.trans("wallet.send.ts.validation.error.amount.only.numbers.allowed"));
1345 return false;
1346 }
1347 else if (!amountDecimalTest.test(this.frmSend['txtAmount'])) {
1348 this.validationAlert(this.trans("wallet.send.ts.validation.error.amount.only.two.decimals.allowed"));
1349 return false;
1350 }
1351 else if (this.frmSend['txtAmount'].length < 1) {
1352 this.validationAlert(this.trans("wallet.send.ts.validation.error.amount.is.empty"));
1353 return false;
1354 }
1355 else if (amount < this.minSendAmount) {
1356 this.validationAlert(this.trans("wallet.send.ts.validation.error.amount.less.than.min", { minSend: this.minSendAmount }));
1357 return false;
1358 }
1359 else if (amount > maxAmount) {
1360 this.validationAlert(this.trans("wallet.send.ts.validation.error.amount.more.than.max", { maxSend: maxAmount }));
1361 return false;
1362 }
1363 break;
1364 }
1365 return true;
1366 };
1367 WalletSendPage.prototype.setRoot = function (page) {
1368 this.app.getRootNav().getActiveChildNav().select(1);
1369 };
1370 WalletSendPage.prototype.openPinCode = function () {
1371 var _this = this;
1372 this.pinCode = this.pincodeCtrl.create({
1373 title: this.trans("wallet.send.ts.pincode.title"),
1374 passSize: 5,
1375 hideForgotPassword: true
1376 });
1377 this.pinCode.present();
1378 this.pinCode.onDidDismiss(function (code, status) {
1379 if (status === "done") {
1380 var loader_1 = _this.loaderCrtl.create({
1381 content: _this.trans("wallet.send.ts.loader.validating.title")
1382 });
1383 loader_1.present();
1384 _this.apiServer.checkPinCredentials(code).then(function (resp) {
1385 if (resp.status == 1 && resp.valid) {
1386 _this.frmSend['pinCode'] = code;
1387 // We need to navigate on succcess of the API response NOT ON SEND
1388 _this.apiServer.sendCurrentwallet(_this.frmSend).then(function (data) {
1389 loader_1.dismissAll();
1390 if (data['status'] == 1) {
1391 _this.navCtrl.setRoot(WalletSendPage_1, { nextPage: 5 });
1392 }
1393 else {
1394 _this.navCtrl.setRoot(WalletSendPage_1, { nextPage: 6 });
1395 }
1396 }, function (err) {
1397 // Alert
1398 loader_1.dismissAll();
1399 _this.navCtrl.setRoot(WalletSendPage_1, { nextPage: 6 });
1400 });
1401 }
1402 else if (resp.status == 0) {
1403 loader_1.dismissAll();
1404 _this.navCtrl.setRoot(WalletSendPage_1, { nextPage: 6 });
1405 }
1406 else {
1407 loader_1.dismissAll();
1408 if (resp.status == 1 && resp.valid == false) {
1409 var message = '';
1410 if (resp.total == 1) {
1411 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts.last.attempt");
1412 }
1413 else {
1414 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts", { totalLeft: resp.total });
1415 }
1416 var alert_1 = _this.alertCtrl.create({
1417 title: _this.trans("global.alert.title.error"),
1418 subTitle: message,
1419 buttons: [{
1420 text: _this.trans("global.alert.button.retry"),
1421 handler: function () {
1422 _this.openPinCode();
1423 loader_1.dismiss();
1424 }
1425 },]
1426 });
1427 alert_1.present();
1428 }
1429 else {
1430 loader_1.dismissAll();
1431 var alert_2 = _this.alertCtrl.create({
1432 title: _this.trans("global.alert.error.occured.title"),
1433 subTitle: _this.trans("global.alert.error.code") + '3050',
1434 message: _this.trans("global.alert.error.unable.to.connect"),
1435 buttons: [{
1436 text: _this.trans("login.pin.ts.alert.button.reenter.pin"),
1437 handler: function () {
1438 _this.openPinCode();
1439 }
1440 }]
1441 });
1442 alert_2.present();
1443 }
1444 }
1445 }, function (err) {
1446 var alert;
1447 switch (err.status) {
1448 case 1:
1449 var message = '';
1450 if (err.total == 1) {
1451 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts.last.attempt");
1452 }
1453 else {
1454 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts", { totalLeft: err.total });
1455 }
1456 alert = _this.alertCtrl.create({
1457 title: _this.trans("global.alert.title.error"),
1458 subTitle: message,
1459 buttons: [{
1460 text: _this.trans("global.alert.button.retry"),
1461 handler: function () {
1462 _this.openPinCode();
1463 loader_1.dismiss();
1464 }
1465 },]
1466 });
1467 break;
1468 case 2:
1469 alert = _this.alertCtrl.create({
1470 title: err.title,
1471 message: err.message,
1472 buttons: [{
1473 text: err.buttons.cancel,
1474 role: 'cancel',
1475 handler: function () {
1476 // Close the alert, dimiss the loader & show PIN input
1477 _this.openPinCode();
1478 loader_1.dismiss();
1479 return;
1480 }
1481 }, {
1482 text: err.buttons.retry,
1483 handler: function () {
1484 // UserServiceProvider
1485 if (_this.apiServer.isOnline()) {
1486 _this.openPinCode();
1487 return;
1488 }
1489 alert.present();
1490 return false;
1491 }
1492 }]
1493 });
1494 case 3:
1495 alert = _this.alertCtrl.create({
1496 title: err.title,
1497 message: err.message,
1498 buttons: [{
1499 text: _this.trans("global.alert.button.ok"),
1500 role: 'cancel',
1501 handler: function () {
1502 // Close the alert
1503 return;
1504 }
1505 }]
1506 });
1507 ;
1508 default:
1509 alert = _this.alertCtrl.create({
1510 title: _this.trans("login.pin.ts.alert.locked.title"),
1511 subTitle: _this.trans("login.pin.ts.alert.locked.subtitle"),
1512 message: _this.trans("login.pin.ts.alert.locked.message"),
1513 buttons: [{
1514 text: _this.trans("global.alert.button.ok"),
1515 handler: function () {
1516 // Take them to the account been locked page.
1517 _this.apiServer.logout().then(function (resp) {
1518 _this.app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_6__intro_intro__["a" /* IntroPage */]);
1519 }, function (err) {
1520 _this.app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_6__intro_intro__["a" /* IntroPage */]);
1521 });
1522 return;
1523 }
1524 }]
1525 });
1526 }
1527 alert.present();
1528 loader_1.dismiss();
1529 }).catch(function (e) {
1530 _this.errorCtrl.showCode(6500, false);
1531 });
1532 }
1533 });
1534 };
1535 WalletSendPage.prototype.navigate = function (currentPage, navigateToPage) {
1536 var _this = this;
1537 if (this.receiveValidation(currentPage) == false) {
1538 return false;
1539 }
1540 // We need to check if it's a integrated address or ETN wallet and show the payment ID option
1541 if (this.walletType == 'etn') {
1542 navigateToPage = 2;
1543 }
1544 else if (this.walletType == 'integrated') {
1545 navigateToPage = 3;
1546 this.frmSend['txtPaymentID'] = '';
1547 }
1548 this.walletType = '';
1549 var navLoader = this.loaderCrtl.create({
1550 content: this.trans("global.loading")
1551 });
1552 navLoader.present();
1553 setTimeout(function () {
1554 navLoader.dismiss();
1555 _this.navCtrl.push(WalletSendPage_1, {
1556 nextPage: navigateToPage,
1557 frmSend: _this.frmSend,
1558 balance: _this.availableBalance,
1559 paymentId: _this.paymentId
1560 });
1561 }, 800);
1562 };
1563 WalletSendPage.prototype.backToWallet = function () {
1564 var _this = this;
1565 if (this.nextPage == 5) {
1566 var alert_3 = this.alertCtrl.create({
1567 title: this.trans("global.alert.title.info"),
1568 subTitle: this.trans("wallet.send.ts.send.balance.info"),
1569 buttons: [{
1570 text: this.trans("global.alert.button.ok"),
1571 handler: function () {
1572 _this.navCtrl.setRoot(__WEBPACK_IMPORTED_MODULE_5__wallet_wallet__["a" /* WalletPage */]);
1573 }
1574 },]
1575 });
1576 alert_3.present();
1577 }
1578 else {
1579 this.navCtrl.setRoot(__WEBPACK_IMPORTED_MODULE_5__wallet_wallet__["a" /* WalletPage */]);
1580 }
1581 };
1582 return WalletSendPage;
1583}());
1584__decorate([
1585 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["_14" /* ViewChild */])(__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["e" /* Content */]),
1586 __metadata("design:type", __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["e" /* Content */])
1587], WalletSendPage.prototype, "content", void 0);
1588WalletSendPage = WalletSendPage_1 = __decorate([
1589 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
1590 selector: 'page-wallet-send',template:/*ion-inline-start:"/usr/src/app/src/pages/wallet-send/wallet-send.html"*/'<!--\n Generated template for the WalletSendPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header *ngIf="navbarEnabled == true">\n <ion-navbar>\n <ion-title>{{ "wallet.send.navbar.title" | translate }}</ion-title>\n </ion-navbar>\n</ion-header>\n\n<ion-content text-center>\n\n <!-- Enter Wallet Addresss Page -->\n <div class="slide" *ngIf="nextPage == 1">\n <div class="slide-top">\n <h5 padding>{{ "wallet.send.step.wallet.address.heading" | translate }}</h5>\n </div>\n <button ion-button small outline (click)="scan(\'txtWallet\', 1, 2)" class="scan-qr">\n <ion-icon name="md-qr-scanner"></ion-icon>\n {{ "wallet.send.step.wallet.address.scan.btn" | translate }}\n </button>\n <div padding>\n <ion-item class="full-input">\n <ion-label floating>{{ "wallet.send.step.wallet.address.label" | translate }}</ion-label>\n <ion-input type="text" [(ngModel)]="frmSend.txtWallet" class="{{inputClass}}"></ion-input>\n </ion-item>\n </div>\n <div class="slider-buttons">\n <button ion-button (click)="navigate(1, 2)">{{ "global.nav.button.next" | translate }}</button>\n </div>\n </div>\n\n <!-- Enter payment ID Page -->\n <div class="slide" *ngIf="nextPage == 2">\n <div class="slide-top">\n <h5 padding>{{ "wallet.send.step.payment.id.heading" | translate }}</h5>\n <p>{{ "wallet.send.step.payment.id.subheading" | translate }}</p>\n </div>\n <button ion-button small outline (click)="scan(\'txtPaymentID\', 2, 3)" class="scan-qr">\n <ion-icon name="md-qr-scanner"></ion-icon>\n {{ "wallet.send.step.payment.id.scan.btn" | translate }}\n </button>\n <div padding>\n <ion-item class="full-input">\n <ion-label floating>{{ "wallet.send.step.payment.id.label" | translate }}</ion-label>\n <ion-input type="text" [(ngModel)]="frmSend.txtPaymentID" class="{{inputClass}}"></ion-input>\n </ion-item>\n </div>\n <div class="slider-buttons">\n <button ion-button margin-bottom (click)="navigate(2, 3)">{{ "global.nav.button.next" | translate }}</button>\n <div>\n <button ion-button clear small (click)="navigate(2, 3)">{{ "wallet.send.step.payment.id.button.skip" | translate }}</button>\n </div>\n </div>\n </div>\n\n <!-- Enter Amount Page -->\n <div class="slide" *ngIf="nextPage == 3">\n <div class="slide-top">\n <h5>{{ "wallet.send.step.amount.heading" | translate }}</h5>\n <div>({{ "wallet.send.step.amount.available.balance" | translate }} {{ availableBalance|number }} ETN)</div>\n <p class="note" [innerHTML]="\'wallet.send.step.amount.transaction.fee.note\' | translate:fees"></p> \n </div>\n <div padding>\n <ion-item class="full-input">\n <ion-label floating>{{ "wallet.send.step.amount.label.amount" | translate }}</ion-label>\n <ion-input type="number" [(ngModel)]="frmSend.txtAmount" ></ion-input>\n </ion-item>\n </div>\n <div class="slider-buttons">\n <button ion-button (click)="navigate(3, 4)">{{ "wallet.send.step.amount.button.review" | translate }}</button>\n </div>\n </div>\n\n <!-- Review Transfer Page -->\n <div class="slide" *ngIf="nextPage == 4">\n <div class="slide-top">\n <h5>{{ "wallet.send.step.review.heading" | translate }}</h5>\n </div>\n <ion-list>\n <ion-item>\n <p>{{ "wallet.send.step.review.send.amount" | translate }}</p>\n <h6 class="sendAmount">{{ frmSend.txtAmount | number }} ETN</h6>\n </ion-item>\n <ion-item>\n <p>{{ "wallet.send.step.review.send.to" | translate }}</p>\n <h6 class="sendToWallet">{{ frmSend.txtWallet }}</h6>\n </ion-item>\n <ion-item>\n <p>{{ "wallet.send.step.review.payment.id" | translate }}</p>\n <h6 class="paymentId" *ngIf="frmSend.txtPaymentID == \'\'">{{ "wallet.send.step.review.payment.id.not.supplied" | translate }}</h6>\n <h6 class="paymentId" *ngIf="frmSend.txtPaymentID != \'\'">{{ frmSend.txtPaymentID }}</h6>\n </ion-item>\n <p [innerHTML]="\'wallet.send.step.review.transaction.fee\' | translate:fees"></p>\n </ion-list>\n <div class="slider-buttons">\n <button ion-button color="success" (click)="openPinCode()">{{ "wallet.send.step.review.button.confirm.and.send" | translate }}</button>\n </div>\n </div>\n\n <!-- Transaction Success Page -->\n <div class="slide" *ngIf="nextPage == 5">\n <div class="slide-top" padding>\n <div class="transaction-finish-image">\n <img src="assets/images/welcome-success.png">\n </div>\n <h3>{{ "wallet.send.step.success.heading" | translate }}</h3>\n <p>{{ "wallet.send.step.success.p" | translate }}</p>\n </div>\n <div class="slider-buttons">\n <button ion-button (click)="backToWallet()">{{ "wallet.send.step.success.button.return.to.wallet" | translate }}</button>\n </div>\n </div>\n\n <!-- Transaction Error Page -->\n <div class="slide" *ngIf="nextPage == 6">\n <div class="slide-top" padding>\n <div class="transaction-finish-image">\n <svg-icon src="assets/images/cross.svg"></svg-icon>\n </div>\n <h3>{{ "wallet.send.step.error.heading" | translate }}</h3>\n <p>{{ "wallet.send.step.error.p" | translate }}</p>\n </div>\n <div class="slider-buttons">\n <button ion-button (click)="backToWallet()">{{ "wallet.send.step.error.button.return.to.wallet" | translate }}</button>\n </div>\n </div>\n \n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/wallet-send/wallet-send.html"*/,
1591 providers: [__WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__["a" /* BarcodeScanner */]]
1592 }),
1593 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */],
1594 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
1595 __WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__["a" /* UserServiceProvider */],
1596 __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__["a" /* BarcodeScanner */],
1597 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
1598 __WEBPACK_IMPORTED_MODULE_4_ionic2_pincode_input_dist_pincode__["a" /* PincodeController */],
1599 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */],
1600 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */],
1601 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
1602 __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__["c" /* TranslateService */],
1603 __WEBPACK_IMPORTED_MODULE_8__providers_error_alerts_error_alerts__["a" /* ErrorAlert */]])
1604], WalletSendPage);
1605
1606var WalletSendPage_1;
1607//# sourceMappingURL=wallet-send.js.map
1608
1609/***/ }),
1610
1611/***/ 180:
1612/***/ (function(module, __webpack_exports__, __webpack_require__) {
1613
1614"use strict";
1615/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return WalletReceivePage; });
1616/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
1617/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
1618/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__ = __webpack_require__(141);
1619/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__ = __webpack_require__(21);
1620/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ionic_native_clipboard__ = __webpack_require__(251);
1621/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__wallet_wallet__ = __webpack_require__(85);
1622/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ngx_translate_core__ = __webpack_require__(13);
1623/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__providers_error_alerts_error_alerts__ = __webpack_require__(87);
1624var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1625 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1626 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1627 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1628 return c > 3 && r && Object.defineProperty(target, key, r), r;
1629};
1630var __metadata = (this && this.__metadata) || function (k, v) {
1631 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1632};
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642/**
1643 * Generated class for the WalletReceivePage page.
1644 *
1645 * See http://ionicframework.com/docs/components/#navigation for more info
1646 * on Ionic pages and navigation.
1647 */
1648var WalletReceivePage = WalletReceivePage_1 = (function () {
1649 function WalletReceivePage(navCtrl, navParams, apiServer, clipboard, barcode, app, platform, translateService, alertCtrl, loadingCtrl, errorCtrl, toastCtrl) {
1650 var _this = this;
1651 this.navCtrl = navCtrl;
1652 this.navParams = navParams;
1653 this.apiServer = apiServer;
1654 this.clipboard = clipboard;
1655 this.barcode = barcode;
1656 this.app = app;
1657 this.platform = platform;
1658 this.translateService = translateService;
1659 this.alertCtrl = alertCtrl;
1660 this.loadingCtrl = loadingCtrl;
1661 this.errorCtrl = errorCtrl;
1662 this.toastCtrl = toastCtrl;
1663 this.form = {
1664 frmWalletAddress: '',
1665 frmViewKey: '',
1666 frmSpendKey: ''
1667 };
1668 this.walletQrCodeInfo = 'loading';
1669 this.showQr = false;
1670 this.navbarEnabled = true;
1671 this.showQrPopup = false;
1672 this.nextPage = this.navParams.get('nextPage');
1673 this.walletQrCode = this.navParams.get('wallet_qr_url');
1674 this.walletsAddress = this.navParams.get('wallet_address');
1675 this.allowImport = this.navParams.get('allow_import');
1676 if (this.walletQrCode != null) {
1677 this.walletQrCodeInfo = 'loaded';
1678 }
1679 if (this.nextPage == 1) {
1680 // if we haven't got the wallet address and qr yet
1681 if (this.walletQrCode == null || this.walletsAddress == null) {
1682 this.walletsAddress = 'loading';
1683 this.apiServer.getWalletAddress()
1684 .then(function (resp) {
1685 // They have a wallet
1686 if (resp.status == 1) {
1687 _this.walletsAddress = resp.wallet['wallet_address'];
1688 _this.walletQrCode = resp.wallet['qr_url'];
1689 if (_this.walletQrCode != null) {
1690 _this.walletQrCodeInfo = 'loaded';
1691 }
1692 }
1693 else {
1694 //Alert box?
1695 _this.errorCtrl.showCode(7000, false);
1696 }
1697 }, function (err) {
1698 });
1699 }
1700 }
1701 else {
1702 this.form = this.navParams.get('form');
1703 }
1704 // disable the navbar if we are at the transaction success or error page
1705 if (this.nextPage == 6 || this.nextPage == 7) {
1706 this.navbarEnabled = false;
1707 }
1708 }
1709 // Function to shorthand translations
1710 WalletReceivePage.prototype.trans = function (key) {
1711 return this.translateService.instant(key);
1712 };
1713 WalletReceivePage.prototype.copyToClipboard = function () {
1714 var _this = this;
1715 this.clipboard.copy(this.walletsAddress).then(function (rs) {
1716 _this.copyToast('success');
1717 }).catch(function (error) {
1718 _this.copyToast('error');
1719 });
1720 };
1721 // Show the referral details popup
1722 WalletReceivePage.prototype.showLargeQR = function () {
1723 this.showQrPopup = true;
1724 };
1725 // Hide the referral details popup
1726 WalletReceivePage.prototype.hideLargeQR = function () {
1727 this.showQrPopup = false;
1728 };
1729 WalletReceivePage.prototype.toggleQR = function () {
1730 if (this.showQr == false) {
1731 this.showQr = true;
1732 }
1733 else {
1734 this.showQr = false;
1735 }
1736 };
1737 WalletReceivePage.prototype.scan = function (keyType, fromPage, toPage) {
1738 // if running on ionic lab browser
1739 var _this = this;
1740 var prompt = '';
1741 if (keyType == 'frmWalletAddress') {
1742 prompt = this.trans("wallet.receive.ts.qr.prompt.public.wallet");
1743 }
1744 else if (keyType == 'frmViewKey') {
1745 prompt = this.trans("wallet.receive.ts.qr.prompt.private.view");
1746 }
1747 else if (keyType == 'frmSpendKey') {
1748 prompt = this.trans("wallet.receive.ts.qr.prompt.private.spend");
1749 }
1750 if (this.platform.is('mobileweb') || this.platform.is('core')) {
1751 return false;
1752 }
1753 else {
1754 // if running the app on phone trigger the actual scanner
1755 this.barcode.scan({
1756 "formats": "QR_CODE",
1757 "prompt": prompt
1758 }).then(function (data) {
1759 if (data.cancelled) {
1760 return false;
1761 }
1762 _this.form[keyType] = data.text;
1763 _this.navigate(fromPage, toPage);
1764 });
1765 }
1766 };
1767 WalletReceivePage.prototype.receiveValidation = function (pageNumber) {
1768 switch (pageNumber) {
1769 case "2":
1770 case 2:
1771 if (this.form['frmWalletAddress'].indexOf('etn') == 0 && this.form['frmWalletAddress'].length == 98) {
1772 this.inputClass = 'verified';
1773 }
1774 else if (this.form['frmWalletAddress'].indexOf('etn') == 0 && this.form['frmWalletAddress'].length < 98) {
1775 this.validationAlert(this.trans("wallet.receive.ts.validation.error.wallet.too.short"));
1776 return false;
1777 }
1778 else if (this.form['frmWalletAddress'].indexOf('etn') == 0 && this.form['frmWalletAddress'].length > 98) {
1779 this.validationAlert(this.trans("wallet.receive.ts.validation.error.wallet.too.long"));
1780 return false;
1781 }
1782 else if (this.form['frmWalletAddress'].indexOf('etn') == -1 || this.form['frmWalletAddress'].indexOf('etn') != 0) {
1783 this.validationAlert(this.trans("wallet.receive.ts.validation.error.wallet.invalid"));
1784 return false;
1785 }
1786 break;
1787 case "3":
1788 case 3:
1789 if (this.form['frmViewKey'].length == 64) {
1790 this.inputClass = 'verified';
1791 }
1792 else if (this.form['frmViewKey'].length < 64) {
1793 this.validationAlert(this.trans("wallet.receive.ts.validation.error.private.view.short"));
1794 return false;
1795 }
1796 else if (this.form['frmViewKey'].length > 65) {
1797 this.validationAlert(this.trans("wallet.receive.ts.validation.error.private.view.long"));
1798 return false;
1799 }
1800 break;
1801 case "4":
1802 case 4:
1803 if (this.form['frmSpendKey'].length == 64) {
1804 this.inputClass = 'verified';
1805 }
1806 else if (this.form['frmSpendKey'].length < 64) {
1807 this.validationAlert(this.trans("wallet.receive.ts.validation.error.private.spend.short"));
1808 return false;
1809 }
1810 else if (this.form['frmSpendKey'].length > 65) {
1811 this.validationAlert(this.trans("wallet.receive.ts.validation.error.private.spend.long"));
1812 return false;
1813 }
1814 break;
1815 }
1816 return true;
1817 };
1818 WalletReceivePage.prototype.sendTransaction = function () {
1819 var _this = this;
1820 var parms = {
1821 'wallet_address': this.form['frmWalletAddress'],
1822 'view_key': this.form['frmViewKey'],
1823 'spend_key': this.form['frmSpendKey']
1824 };
1825 this.apiServer.sendOfflineWalletAmount(parms).then(function (resp) {
1826 if (resp.status == 1) {
1827 _this.navCtrl.setRoot(WalletReceivePage_1, { nextPage: 6 });
1828 }
1829 else {
1830 _this.navCtrl.setRoot(WalletReceivePage_1, { nextPage: 7 });
1831 }
1832 }, function (err) {
1833 if (err.status == 0) {
1834 var alert_1 = _this.alertCtrl.create({
1835 title: _this.trans("global.alert.title.error"),
1836 subTitle: '',
1837 message: err.message,
1838 buttons: [_this.trans("global.alert.button.retry")]
1839 });
1840 alert_1.present();
1841 }
1842 else if (err.status == 2) {
1843 var alertOffline_1 = _this.alertCtrl.create({
1844 title: err.title,
1845 message: err.message,
1846 buttons: [{
1847 text: err.buttons.cancel,
1848 role: 'cancel',
1849 handler: function () {
1850 // Close the alert
1851 return;
1852 }
1853 }, {
1854 text: err.buttons.retry,
1855 handler: function () {
1856 // UserServiceProvider
1857 if (_this.apiServer.isOnline()) {
1858 _this.sendTransaction();
1859 alertOffline_1.dismiss();
1860 }
1861 else {
1862 alertOffline_1.present();
1863 }
1864 return false;
1865 }
1866 }]
1867 });
1868 alertOffline_1.present();
1869 }
1870 else {
1871 _this.errorCtrl.showCode(7010);
1872 }
1873 });
1874 };
1875 WalletReceivePage.prototype.importDisabledAlert = function () {
1876 var alert = this.alertCtrl.create({
1877 title: this.trans("global.alert.title.info"),
1878 message: this.trans("wallet.receive.ts.alert.import.disabled.text"),
1879 buttons: [{
1880 text: this.trans("global.nav.button.close"),
1881 role: 'cancel',
1882 handler: function () {
1883 // Close the alert
1884 return;
1885 }
1886 }]
1887 });
1888 alert.present();
1889 };
1890 WalletReceivePage.prototype.navigate = function (currentPage, navigateToPage) {
1891 var _this = this;
1892 if (!this.receiveValidation(currentPage)) {
1893 return;
1894 }
1895 var navLoader = this.loadingCtrl.create({
1896 content: this.trans("global.loading")
1897 });
1898 navLoader.present();
1899 setTimeout(function () {
1900 navLoader.dismiss();
1901 _this.navCtrl.push(WalletReceivePage_1, {
1902 nextPage: navigateToPage,
1903 form: _this.form
1904 });
1905 }, 800);
1906 };
1907 WalletReceivePage.prototype.validationAlert = function (message) {
1908 var alert = this.alertCtrl.create({
1909 title: this.trans("global.alert.title.error"),
1910 subTitle: message,
1911 buttons: [this.trans("global.alert.button.ok")]
1912 });
1913 alert.present();
1914 };
1915 WalletReceivePage.prototype.backToWallet = function () {
1916 this.navCtrl.setRoot(__WEBPACK_IMPORTED_MODULE_5__wallet_wallet__["a" /* WalletPage */]);
1917 };
1918 WalletReceivePage.prototype.copyToast = function (type) {
1919 var message = '';
1920 if (type == 'success') {
1921 message = this.trans("wallet.receive.ts.copy.toast.success");
1922 }
1923 else if (type == 'error') {
1924 message = this.trans("wallet.receive.ts.copy.toast.error");
1925 }
1926 var toast = this.toastCtrl.create({
1927 message: message,
1928 duration: 3000,
1929 position: 'bottom'
1930 });
1931 toast.present();
1932 };
1933 return WalletReceivePage;
1934}());
1935WalletReceivePage = WalletReceivePage_1 = __decorate([
1936 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
1937 selector: 'page-wallet-receive',template:/*ion-inline-start:"/usr/src/app/src/pages/wallet-receive/wallet-receive.html"*/'<ion-header>\n\n <ion-navbar *ngIf="navbarEnabled == true">\n <ion-title *ngIf="nextPage == 1">{{ "wallet.receive.navbar.title.receive" | translate }}</ion-title>\n <ion-title *ngIf="nextPage !== 1">{{ "wallet.receive.navbar.title.import" | translate }}</ion-title>\n </ion-navbar>\n\n</ion-header>\n\n<div class="custom-popup" [ngClass]=\'{show : showQrPopup}\'>\n <div class="custom-popup-content">\n <h4 class="cf">{{ "wallet.receive.label.wallet.qr" | translate }}</h4>\n <ion-grid text-center>\n <ion-row class="border-bottom">\n <ion-col>\n <img class="referral-qr" src=\'{{ walletQrCode }}\' alt=\'\'>\n </ion-col>\n </ion-row>\n </ion-grid>\n <button ion-button full (click)="hideLargeQR()">{{ "global.nav.button.close" | translate }}</button>\n </div>\n</div>\n\n<ion-content class="slider">\n \n <!-- Wallet Address Page -->\n <div padding class="slide" *ngIf="nextPage == 1">\n <ion-item hidden>\n <ion-input type="text" id="your-wallet-address" [(ngModel)]="walletsAddress"></ion-input>\n </ion-item>\n <button ion-button float-right small clear class="copy-btn" *ngIf="showQr == false" (click)="copyToClipboard()">{{ "wallet.receive.button.copy" | translate }}</button>\n <ion-label stacked *ngIf="showQr == false">{{ "wallet.receive.label.wallet.address" | translate }}</ion-label>\n <ion-label stacked *ngIf="showQr == true">{{ "wallet.receive.label.wallet.qr" | translate }}</ion-label>\n <div class="wallet-address-container">\n <img class="hidden-qr-preload" src="{{ walletQrCode }}"/>\n <div *ngIf="showQr == false && walletsAddress == \'loading\'">{{ "wallet.receive.ts.wallet.address.loading" | translate }}</div>\n <div *ngIf="showQr == false && walletsAddress != \'loading\'">{{walletsAddress}}</div>\n <div *ngIf="showQr == true" text-center>\n <img src="{{ walletQrCode }}" (click)="showLargeQR()" />\n <div class="small-text" *ngIf="walletQrCodeInfo == \'loading\'">{{ "wallet.receive.ts.wallet.address.loading" | translate }}</div>\n <div class="small-text" *ngIf="walletQrCodeInfo == \'loaded\'">{{ "wallet.receive.ts.tap.qr.to.expand" | translate }}</div>\n </div>\n </div>\n <button ion-button full small clear *ngIf="showQr == false" (click)="toggleQR()">{{ "wallet.receive.ts.btn.show.wallet.qr" | translate}}</button>\n <button ion-button full small clear *ngIf="showQr == true" (click)="toggleQR()">{{ "wallet.receive.ts.btn.show.wallet.address" | translate}}</button>\n <p>{{ "wallet.receive.info.p1" | translate }}</p>\n <p>{{ "wallet.receive.info.p2" | translate }}</p>\n\n <div class="slider-buttons" text-center>\n <button *ngIf=\'allowImport == true\' ion-button full (click)="navigate(1, 2)">{{ "wallet.receive.button.import.from.offline" | translate }}</button>\n <button *ngIf=\'allowImport == false\' ion-button icon-start full class="dark-grey-bg w-txt" (click)="importDisabledAlert()"><ion-icon name="alert"></ion-icon>{{ "wallet.receive.button.import.from.offline" | translate }}</button>\n </div>\n </div>\n\n <!-- Public Wallet address Page -->\n <div class="slide" text-center *ngIf="nextPage == 2">\n <div class="slide-top">\n <h5>{{ "wallet.receive.step.public.wallet.heading" | translate }}</h5>\n </div>\n <button ion-button small outline (click)="scan(\'frmWalletAddress\', 2, 3)" class="scan-qr">\n <ion-icon name="md-qr-scanner"></ion-icon>\n {{ "wallet.receive.step.public.wallet.scan.btn" | translate }}\n </button>\n <div padding>\n <ion-item class="full-input">\n <ion-label floating>{{ "wallet.receive.step.public.wallet.label" | translate }}</ion-label>\n <ion-input type="text" [(ngModel)]="form.frmWalletAddress" class="{{inputClass}}"></ion-input>\n </ion-item>\n </div>\n <div class="slider-buttons">\n <button ion-button color="primary" (click)="navigate(2, 3)" class="scan-qr">{{ "global.nav.button.next" | translate }}</button>\n </div>\n </div>\n\n <!-- Private View Key Page -->\n <div class="slide" text-center *ngIf="nextPage == 3">\n <div class="slide-top">\n <h5>{{ "wallet.receive.step.private.view.heading" | translate }}</h5>\n </div>\n <button ion-button small outline (click)="scan(\'frmViewKey\', 3, 4)" class="scan-qr">\n <ion-icon name="md-qr-scanner"></ion-icon>\n {{ "wallet.receive.step.private.view.scan.btn" | translate }}\n </button>\n <div padding>\n <ion-item class="full-input">\n <ion-label floating>{{ "wallet.receive.step.private.view.label" | translate }}</ion-label>\n <ion-input type="text" [(ngModel)]="form.frmViewKey" class="{{inputClass}}"></ion-input>\n </ion-item>\n </div>\n <div class="slider-buttons">\n <button ion-button color="primary" (click)="navigate(3, 4)" class="scan-qr">{{ "global.nav.button.next" | translate }}</button>\n </div>\n </div>\n\n <!-- Private Spend Key Page -->\n <div class="slide" text-center *ngIf="nextPage == 4">\n <div class="slide-top">\n <h5>{{ "wallet.receive.step.private.spend.heading" | translate }}</h5>\n </div>\n <button ion-button small outline (click)="scan(\'frmSpendKey\', 4, 5)" class="scan-qr">\n <ion-icon name="md-qr-scanner"></ion-icon>\n {{ "wallet.receive.step.private.spend.scan.btn" | translate }}\n </button>\n <div padding>\n <ion-item class="full-input">\n <ion-label floating>{{ "wallet.receive.step.private.spend.label" | translate }}</ion-label>\n <ion-input type="text" [(ngModel)]="form.frmSpendKey" class="{{inputClass}}"></ion-input>\n </ion-item>\n </div>\n <div class="slider-buttons">\n <button ion-button color="primary" (click)="navigate(4, 5)">{{ "global.nav.button.next" | translate }}</button>\n </div>\n </div>\n\n <!-- Review Page -->\n <div class="slide" *ngIf="nextPage == 5">\n <div class="slide-top" text-center>\n <h5>{{ "wallet.receive.step.review.heading" | translate }}</h5>\n </div>\n <ion-list>\n <ion-item> \n <p class="sendToWallet">{{ "wallet.receive.step.review.amount.full.balance" | translate }}</p>\n <h6 class="sendToWallet">{{ form.frmWalletAddress }}</h6>\n </ion-item>\n <p padding>{{ "wallet.receive.step.review.transaction.fee.note" | translate }}</p>\n </ion-list>\n <div class="slider-buttons" text-center>\n <button ion-button color="success" (click)="sendTransaction()">{{ "wallet.receive.step.review.button.confirm.import" | translate }}</button>\n </div>\n </div> \n\n <!-- Transaction Success Page -->\n <div class="slide" text-center *ngIf="nextPage == 6">\n <div class="slide-top">\n <div class="transaction-finish-image">\n <img src="assets/images/welcome-success.png">\n </div>\n <h3>{{ "wallet.receive.step.success.heading" | translate }}</h3>\n </div>\n <p>{{ "wallet.receive.step.success.p" | translate }}</p>\n <div class="slider-buttons">\n <button ion-button color="primary" (click)="backToWallet()">{{ "wallet.receive.step.success.button.return.to.wallet" | translate }}</button>\n </div>\n </div> \n\n <!-- Transaction Error Page -->\n <div class="slide" text-center *ngIf="nextPage == 7">\n <div class="slide-top" padding>\n <div class="transaction-finish-image">\n <svg-icon src="assets/images/cross.svg"></svg-icon>\n </div>\n <h3>{{ "wallet.receive.step.error.heading" | translate }}</h3>\n <p>{{ "wallet.receive.step.error.p" | translate }}</p>\n </div>\n <div class="slider-buttons">\n <button ion-button color="primary" (click)="backToWallet()">{{ "wallet.receive.step.error.button.return.to.wallet" | translate }}</button>\n </div>\n </div>\n\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/wallet-receive/wallet-receive.html"*/,
1938 providers: [__WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_4__ionic_native_clipboard__["a" /* Clipboard */], __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__["a" /* BarcodeScanner */]]
1939 }),
1940 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */],
1941 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
1942 __WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__["a" /* UserServiceProvider */],
1943 __WEBPACK_IMPORTED_MODULE_4__ionic_native_clipboard__["a" /* Clipboard */],
1944 __WEBPACK_IMPORTED_MODULE_2__ionic_native_barcode_scanner__["a" /* BarcodeScanner */],
1945 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */],
1946 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */],
1947 __WEBPACK_IMPORTED_MODULE_6__ngx_translate_core__["c" /* TranslateService */],
1948 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
1949 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
1950 __WEBPACK_IMPORTED_MODULE_7__providers_error_alerts_error_alerts__["a" /* ErrorAlert */],
1951 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["p" /* ToastController */]])
1952], WalletReceivePage);
1953
1954var WalletReceivePage_1;
1955//# sourceMappingURL=wallet-receive.js.map
1956
1957/***/ }),
1958
1959/***/ 181:
1960/***/ (function(module, __webpack_exports__, __webpack_require__) {
1961
1962"use strict";
1963/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TransactionDetailsPage; });
1964/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
1965/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
1966/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_in_app_browser__ = __webpack_require__(252);
1967/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__ = __webpack_require__(13);
1968var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1969 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1970 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1971 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1972 return c > 3 && r && Object.defineProperty(target, key, r), r;
1973};
1974var __metadata = (this && this.__metadata) || function (k, v) {
1975 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1976};
1977
1978
1979
1980
1981/**
1982 * Generated class for the TransactionDetailsPage page.
1983 *
1984 * See https://ionicframework.com/docs/components/#navigation for more info on
1985 * Ionic pages and navigation.
1986 */
1987var TransactionDetailsPage = TransactionDetailsPage_1 = (function () {
1988 function TransactionDetailsPage(navCtrl, navParams, viewCtrl, modalCtrl, inAppBrowser, translateService) {
1989 this.navCtrl = navCtrl;
1990 this.navParams = navParams;
1991 this.viewCtrl = viewCtrl;
1992 this.modalCtrl = modalCtrl;
1993 this.inAppBrowser = inAppBrowser;
1994 this.translateService = translateService;
1995 this.userWalletAddress = this.navParams.get('userWallet');
1996 this.importTime = this.navParams.get('importTime');
1997 this.amount = this.navParams.get('amount');
1998 this.to_wallet = this.navParams.get('to_wallet');
1999 this.from_wallet = this.navParams.get('from_wallet');
2000 this.payment_id = this.navParams.get('payment_id');
2001 this.date_created = this.navParams.get('date_created');
2002 this.status = this.navParams.get('status');
2003 this.transaction_fee = this.navParams.get('transaction_fee');
2004 this.payment_type = this.navParams.get('payment_type');
2005 this.tx_hash = this.navParams.get('tx_hash');
2006 this.tx_key = this.navParams.get('tx_key');
2007 this.splits = this.navParams.get('splits');
2008 this.error_code = (this.navParams.get('error_code') == null ? null : Math.abs(this.navParams.get('error_code')));
2009 this.toMinutes();
2010 }
2011 // Function to shorthand translations
2012 TransactionDetailsPage.prototype.trans = function (key) {
2013 return this.translateService.instant(key);
2014 };
2015 TransactionDetailsPage.prototype.openTransactionDetails = function (amount, to_wallet, from_wallet, payment_id, date_created, status, transaction_fee, payment_type, tx_hash, tx_key, splits, error_code) {
2016 if (splits === void 0) { splits = false; }
2017 var modal = this.modalCtrl.create(TransactionDetailsPage_1, {
2018 userWallet: this.userWalletAddress,
2019 amount: amount,
2020 to_wallet: to_wallet,
2021 from_wallet: from_wallet,
2022 payment_id: payment_id,
2023 date_created: date_created,
2024 status: status,
2025 transaction_fee: transaction_fee,
2026 payment_type: payment_type,
2027 tx_hash: tx_hash,
2028 tx_key: tx_key,
2029 splits: splits,
2030 error_code: error_code
2031 });
2032 modal.present();
2033 };
2034 TransactionDetailsPage.prototype.openTransInfoLink = function (paymentType, status, error) {
2035 if (error === void 0) { error = null; }
2036 var lang = (localStorage.getItem('_lang') == null ? 'en' : localStorage.getItem('_lang'));
2037 var url = 'https://my.electroneum.com/status/' + lang + '/' + paymentType + '/' + status + '/' + error;
2038 window.open(url, '_system', 'location=yes');
2039 return false;
2040 };
2041 TransactionDetailsPage.prototype.toMinutes = function () {
2042 var oneHour = 3600;
2043 var oneMin = 60;
2044 if (this.importTime >= oneHour) {
2045 var minutes = this.importTime % oneHour;
2046 if (minutes == 0) {
2047 this.totalTime = this.importTime / oneHour + ' ' + this.trans("global.hours");
2048 }
2049 else {
2050 var totalMinutes = Math.ceil(minutes / oneMin);
2051 var totalHours = (this.importTime - minutes) / oneHour;
2052 this.totalTime = totalHours + ' ' + this.trans("global.hours") + ' ' + totalMinutes + ' ' + this.trans("global.minutes");
2053 }
2054 }
2055 else {
2056 this.totalTime = Math.ceil(this.importTime / oneMin) + ' ' + this.trans("global.minutes");
2057 }
2058 };
2059 TransactionDetailsPage.prototype.proveSending = function (destinationWallet, txHash, txPrvKey) {
2060 var pageContent = '<html><head></head><body><form id="proveTransForm" action="https://blockexplorer.electroneum.com/prove" method="post">' +
2061 '<input type="hidden" name="xmraddress" value="' + destinationWallet + '">' +
2062 '<input type="hidden" name="txhash" value="' + txHash + '">' +
2063 '<input type="hidden" name="txprvkey" value="' + txPrvKey + '">' +
2064 '<input type="hidden" name="app" value="1">' +
2065 '</form> <script type="text/javascript">document.getElementById("proveTransForm").submit();</script></body></html>';
2066 var pageContentUrl = 'data:text/html;base64,' + btoa(pageContent);
2067 this.inAppBrowser.create(pageContentUrl, "_blank", "hidden=no,location=no,clearsessioncache=yes,clearcache=yes");
2068 };
2069 TransactionDetailsPage.prototype.dismiss = function () {
2070 this.viewCtrl.dismiss();
2071 };
2072 return TransactionDetailsPage;
2073}());
2074TransactionDetailsPage = TransactionDetailsPage_1 = __decorate([
2075 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
2076 selector: 'page-transaction-details',template:/*ion-inline-start:"/usr/src/app/src/pages/transaction-details/transaction-details.html"*/'<!--\n Generated template for the TransactionDetailsPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-buttons start>\n <button ion-button (click)="dismiss()">\n <span ion-text color="primary" showWhen="ios">{{ "global.nav.button.close" | translate }}</span>\n <ion-icon name="md-close" showWhen="android,windows"></ion-icon>\n </button>\n </ion-buttons>\n <ion-title>{{ "trans.details.title" | translate }}</ion-title>\n </ion-navbar>\n\n</ion-header>\n\n<ion-content>\n <div class="transaction-details">\n <h4 *ngIf="payment_type == 0 && to_wallet == userWalletAddress">\n {{ "wallet.transactions.popup.received" | translate }}\n {{ amount|number:\'1.2-2\' }} ETN\n </h4>\n <h4 *ngIf="payment_type == 0 && to_wallet != userWalletAddress">\n {{ "wallet.transactions.popup.sent" | translate }}\n {{ amount|number:\'1.2-2\' }} ETN\n <span class="transaction-fee" *ngIf="transaction_fee != false && transaction_fee == null">{{ "wallet.transactions.popup.transaction.fee" | translate }}: {{ "wallet.transactions.popup.transaction.fee.not.yet.confirmed" | translate }} </span>\n <span class="transaction-fee" *ngIf="transaction_fee != false && transaction_fee != null">{{ "wallet.transactions.popup.transaction.fee" | translate }}: {{ transaction_fee|number:\'1.2-2\' }} ETN</span>\n </h4>\n <h4 *ngIf="payment_type == 1">\n {{ "wallet.transaction.title.import" | translate }}\n <span *ngIf="status > 0 && status < 3">{{ amount|number:\'1.2-2\' }} ETN</span>\n </h4>\n <h4 *ngIf="payment_type == 2">\n {{ "wallet.transaction.title.mobile.miner" | translate }}\n <span>{{ amount|number:\'1.2-2\' }} ETN</span>\n </h4>\n <h4 *ngIf="payment_type == 3">\n {{ "wallet.transaction.title.received.gift.reward" | translate }}\n <span>{{ amount|number:\'1.2-2\' }} ETN</span>\n </h4>\n <h4 *ngIf="payment_type == 4">\n {{ "wallet.transactions.popup.sent" | translate }}\n {{ amount|number:\'1.2-2\' }} ETN\n <span class="transaction-fee" *ngIf="transaction_fee != false && transaction_fee == null">{{ "wallet.transactions.popup.transaction.fee" | translate }}: {{ "wallet.transactions.popup.transaction.fee.not.yet.confirmed" | translate }} </span>\n <span class="transaction-fee" *ngIf="transaction_fee != false && transaction_fee != null">{{ "wallet.transactions.popup.transaction.fee" | translate }}: {{ transaction_fee|number:\'1.2-2\' }} ETN</span>\n </h4>\n <h4 *ngIf="payment_type == 5">\n {{ "wallet.transaction.title.received.bounty" | translate }}\n <span>{{ amount|number:\'1.2-2\' }} ETN</span>\n </h4>\n <ion-grid>\n <ion-row class="border-bottom">\n <ion-col [ngSwitch]="status">\n <p>{{ "wallet.transactions.popup.status" | translate }}</p>\n <h6 class="transaction-status status-{{ status }}">\n <span *ngSwitchCase="0">{{ "wallet.transaction.status.pending" | translate }}</span>\n <span *ngSwitchCase="1">{{ "wallet.transaction.status.processing" | translate }}</span>\n <span *ngSwitchCase="2">{{ "wallet.transaction.status.complete" | translate }}</span>\n <span *ngSwitchCase="3">{{ "wallet.transaction.status.failed" | translate }}</span>\n <span *ngSwitchCase="4">{{ "wallet.transaction.status.partialy.failed" | translate }}</span>\n <span *ngSwitchCase="5">{{ "wallet.transaction.status.empty.balance" | translate }}</span>\n <span *ngSwitchCase="6">{{ "wallet.transaction.status.no.response" | translate }}</span>\n <div *ngIf="error_code !=null">\n <span class="transaction-error-code">{{ "trans.details.error.code" | translate }}: {{ error_code }}</span>\n </div>\n </h6>\n </ion-col>\n <ion-col *ngIf="status != 2" text-right>\n <button ion-button small outline (click)="openTransInfoLink(payment_type, status, error_code)">{{ "trans.details.error.link.text" | translate }}</button>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom" *ngIf="to_wallet == userWalletAddress && payment_type == 1">\n <ion-col>\n <p>{{ "wallet.transactions.popup.from" | translate }}</p>\n <h6>{{ from_wallet }}</h6>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom" *ngIf="(payment_type == 0 && to_wallet != userWalletAddress) || payment_type == 4">\n <ion-col>\n <p>{{ "wallet.transactions.popup.to" | translate }}</p>\n <h6>{{ to_wallet }}</h6>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom" *ngIf="splits.length < 1 || splits == false">\n <ion-col>\n <p>{{ "wallet.transactions.popup.transaction.hash" | translate }}</p>\n <h6 *ngIf="tx_hash == null">{{ "wallet.transactions.popup.transaction.hash.not.yet.generated" | translate }}</h6>\n <h6 *ngIf="tx_hash != null">{{ tx_hash }}</h6>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom" *ngIf="(splits.length < 1 || splits == false) && to_wallet != userWalletAddress">\n <ion-col>\n <p>{{ "wallet.transactions.popup.transaction.private.key" | translate }}</p>\n <h6 *ngIf="tx_key == null">{{ "wallet.transactions.popup.transaction.hash.not.yet.generated" | translate }}</h6>\n <h6 *ngIf="tx_key != null">{{ tx_key }}</h6>\n <button *ngIf="tx_key != null" ion-button small outline (click)="proveSending(to_wallet, tx_hash, tx_key)">{{ "wallet.transactions.popup.prove.sending.btn" | translate }}</button>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom">\n <ion-col>\n <p>{{ "wallet.transactions.popup.payment.id" | translate }}</p>\n <h6 *ngIf="payment_id == null || payment_id == \'\'">{{ "wallet.transactions.popup.payment.id.not.supplied" | translate }}</h6>\n <h6 *ngIf="payment_id != null && payment_id != \'\'">{{ payment_id }}</h6>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom">\n <ion-col>\n <p>{{ "wallet.transactions.popup.date" | translate }}</p>\n <h6>{{ date_created | date:\'MMM d, y, HH:mm\' }}</h6>\n </ion-col>\n </ion-row>\n <ion-row class="border-bottom" *ngIf="(to_wallet == userWalletAddress && payment_type == 1) && (status == 0 || status == 1)">\n <ion-col>\n <p>{{ "trans.details.info.title" | translate }}</p>\n <h6>{{ "trans.details.import.time.info" | translate }} {{ totalTime }}</h6>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n\n <ion-list class="transactions-list grey-bg" *ngIf="splits.length > 0">\n <div padding>\n <div class="primary-bg split-info-box" padding><ion-icon name="md-information-circle"></ion-icon> {{ "trans.details.splits.title" | translate }}</div>\n </div> \n <ion-list-header class="grey-bg">\n {{ "wallet.split.transactions.list.title" | translate }}\n </ion-list-header>\n <div class="splits-container grey-bg">\n <div class="split-details">\n <ion-card *ngFor="let split of splits; let i = index" (tap)="openTransactionDetails (split.destinationAmount, to_wallet, split.sourceWalletAddress, split.paymentId, split.dateCreated, split.status, split.fee, 4, split.txHash, split.txKey, split.errorCode)">\n <div class="transaction-info {{ type }}" padding>\n <div class="transaction-amount" *ngIf="paymentType == 1 && status > 0 && status < 3">{{split.destinationAmount|number:\'1.2-2\'}} ETN</div>\n <div class="transaction-amount" *ngIf="paymentType != 1">{{split.destinationAmount|number:\'1.2-2\'}} ETN</div>\n <div class="transaction-direction">{{i + 1}}/{{ splits.length }}</div>\n <div class="transaction-hash">{{"wallet.transaction.tx.hash" | translate}}: {{ split.txHash == null ? \'Not yet generated\' : split.txHash }}</div>\n <div class="transaction-hash" *ngIf="paymentType == true">{{"wallet.transaction.from" | translate}}: {{ split.sourceWalletAddress }}</div>\n <div class="transaction-date">{{ split.dateCreated | date:\'MMM d, y, HH:mm\' }}</div>\n <div class="transaction-status status-{{ split.status }}" [ngSwitch]="split.status">\n <span *ngSwitchCase="0">{{ "wallet.transaction.status.pending" | translate }}</span>\n <span *ngSwitchCase="1">{{ "wallet.transaction.status.processing" | translate }}</span>\n <span *ngSwitchCase="2">{{ "wallet.transaction.status.complete" | translate }}</span>\n <span *ngSwitchCase="3">{{ "wallet.transaction.status.failed" | translate }}</span>\n <span *ngSwitchCase="4">{{ "wallet.transaction.status.partialy.failed" | translate }}</span>\n <span *ngSwitchCase="5">{{ "wallet.transaction.status.empty.balance" | translate }}</span>\n <span *ngSwitchCase="6">{{ "wallet.transaction.status.no.response" | translate }}</span>\n </div>\n </div>\n </ion-card>\n </div>\n </div>\n </ion-list>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/transaction-details/transaction-details.html"*/,
2077 }),
2078 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */],
2079 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
2080 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["q" /* ViewController */],
2081 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["l" /* ModalController */],
2082 __WEBPACK_IMPORTED_MODULE_2__ionic_native_in_app_browser__["a" /* InAppBrowser */],
2083 __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__["c" /* TranslateService */]])
2084], TransactionDetailsPage);
2085
2086var TransactionDetailsPage_1;
2087//# sourceMappingURL=transaction-details.js.map
2088
2089/***/ }),
2090
2091/***/ 182:
2092/***/ (function(module, __webpack_exports__, __webpack_require__) {
2093
2094"use strict";
2095/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ForgotPinPage; });
2096/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
2097/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
2098var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2099 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2100 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2101 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2102 return c > 3 && r && Object.defineProperty(target, key, r), r;
2103};
2104var __metadata = (this && this.__metadata) || function (k, v) {
2105 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2106};
2107
2108
2109/**
2110 * Generated class for the ForgotPinPage page.
2111 *
2112 * See https://ionicframework.com/docs/components/#navigation for more info on
2113 * Ionic pages and navigation.
2114 */
2115var ForgotPinPage = (function () {
2116 function ForgotPinPage(navCtrl) {
2117 this.navCtrl = navCtrl;
2118 }
2119 return ForgotPinPage;
2120}());
2121ForgotPinPage = __decorate([
2122 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
2123 selector: 'page-forgot-pin',template:/*ion-inline-start:"/usr/src/app/src/pages/forgot-pin/forgot-pin.html"*/'<!--\n Generated template for the ForgotPinPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-title>{{ "forgot.pin.navbar.title" | translate }}</ion-title>\n </ion-navbar>\n\n</ion-header>\n\n<ion-content padding>\n <p margin-bottom>{{ "forgot.pin.via.website.p" | translate }}</p>\n <button ion-button full onClick="window.open(\'http://my.electroneum.com\',\'_system\',\'location=yes\');return false;">{{ "forgot.pin.button.reset.via.website" | translate }}</button>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/forgot-pin/forgot-pin.html"*/,
2124 }),
2125 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */]])
2126], ForgotPinPage);
2127
2128//# sourceMappingURL=forgot-pin.js.map
2129
2130/***/ }),
2131
2132/***/ 183:
2133/***/ (function(module, __webpack_exports__, __webpack_require__) {
2134
2135"use strict";
2136/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MaintenancePage; });
2137/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
2138/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
2139/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__ = __webpack_require__(13);
2140var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2141 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2142 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2143 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2144 return c > 3 && r && Object.defineProperty(target, key, r), r;
2145};
2146var __metadata = (this && this.__metadata) || function (k, v) {
2147 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2148};
2149
2150
2151
2152/**
2153 * Generated class for the MaintenancePage page.
2154 *
2155 * See https://ionicframework.com/docs/components/#navigation for more info on
2156 * Ionic pages and navigation.
2157 */
2158var MaintenancePage = (function () {
2159 function MaintenancePage(navCtrl, navParams, translateService) {
2160 // we can update the maintenance message here if needed.
2161 this.navCtrl = navCtrl;
2162 this.navParams = navParams;
2163 this.translateService = translateService;
2164 this.maintenance_heading = this.trans("maintenance.heading");
2165 this.maintenance_p1 = this.trans("maintenance.p1");
2166 this.maintenance_p2 = this.trans("maintenance.p2");
2167 }
2168 // Function to shorthand translations
2169 MaintenancePage.prototype.trans = function (key) {
2170 return this.translateService.instant(key);
2171 };
2172 return MaintenancePage;
2173}());
2174MaintenancePage = __decorate([
2175 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
2176 selector: 'page-maintenance',template:/*ion-inline-start:"/usr/src/app/src/pages/maintenance/maintenance.html"*/'<!--\n Generated template for the MaintenancePage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n\n<ion-content padding text-center>\n <div class="maintenance-image">\n <svg-icon src="../../assets/images/maintenance.svg"></svg-icon>\n </div>\n <h1>{{maintenance_heading}}</h1>\n <p>{{maintenance_p1}}</p>\n <p>{{maintenance_p2}}</p>\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/maintenance/maintenance.html"*/,
2177 }),
2178 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */], __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__["c" /* TranslateService */]])
2179], MaintenancePage);
2180
2181//# sourceMappingURL=maintenance.js.map
2182
2183/***/ }),
2184
2185/***/ 184:
2186/***/ (function(module, __webpack_exports__, __webpack_require__) {
2187
2188"use strict";
2189/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OfflinePage; });
2190/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
2191/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
2192/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_app_version__ = __webpack_require__(61);
2193/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__intro_intro__ = __webpack_require__(43);
2194/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__account_not_confirmed_account_not_confirmed__ = __webpack_require__(51);
2195/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__login_pin_login_pin__ = __webpack_require__(52);
2196/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__update_required_update_required__ = __webpack_require__(101);
2197/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__providers_user_service_user_service__ = __webpack_require__(21);
2198/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ionic_native_network__ = __webpack_require__(62);
2199/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ngx_translate_core__ = __webpack_require__(13);
2200var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2201 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2202 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2203 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2204 return c > 3 && r && Object.defineProperty(target, key, r), r;
2205};
2206var __metadata = (this && this.__metadata) || function (k, v) {
2207 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2208};
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219/**
2220 * Generated class for the OfflinePage page.
2221 *
2222 * See http://ionicframework.com/docs/components/#navigation for more info
2223 * on Ionic pages and navigation.
2224 */
2225var OfflinePage = (function () {
2226 function OfflinePage(navCtrl, apiServer, navParams, network, app, appVersion, loaderCtrl, alertCtrl, translateService) {
2227 this.navCtrl = navCtrl;
2228 this.apiServer = apiServer;
2229 this.navParams = navParams;
2230 this.network = network;
2231 this.app = app;
2232 this.appVersion = appVersion;
2233 this.loaderCtrl = loaderCtrl;
2234 this.alertCtrl = alertCtrl;
2235 this.translateService = translateService;
2236 }
2237 // Function to shorthand translations
2238 OfflinePage.prototype.trans = function (key, variables) {
2239 if (variables === void 0) { variables = null; }
2240 return this.translateService.instant(key, variables);
2241 };
2242 OfflinePage.prototype.checkConnection = function () {
2243 var _this = this;
2244 var loader = this.loaderCtrl.create({
2245 content: this.trans("offline.ts.loader.connecting")
2246 });
2247 loader.present();
2248 if (this.apiServer.isOnline()) {
2249 this.appVersion.getVersionNumber().then(function (version) {
2250 _this.loadApp(loader, version);
2251 });
2252 return;
2253 }
2254 else {
2255 var alert_1 = this.alertCtrl.create({
2256 title: this.trans("offline.ts.loader.connection.error.title"),
2257 subTitle: this.trans("offline.ts.loader.connection.error.text"),
2258 buttons: [this.trans("global.alert.button.ok")]
2259 });
2260 alert_1.present();
2261 loader.dismiss();
2262 }
2263 };
2264 OfflinePage.prototype.loadApp = function (loader, version) {
2265 var _this = this;
2266 this.apiServer.getAppVersion(version)
2267 .then(function (resp) {
2268 // An update is require but lets see if we need to force this update
2269 if (resp.update) {
2270 // Do we require a force update?
2271 if (resp.force) {
2272 _this.setRoot(__WEBPACK_IMPORTED_MODULE_6__update_required_update_required__["a" /* UpdateRequiredPage */], loader);
2273 return;
2274 }
2275 else {
2276 var alert_2 = _this.alertCtrl.create({
2277 title: _this.trans("app.component.ts.alert.update.available.title"),
2278 message: _this.trans("app.component.ts.alert.update.optional.text", { installedVersion: version, latestVersion: resp.version }),
2279 buttons: [{
2280 text: _this.trans("app.component.ts.alert.update.button.go.to.google.play"),
2281 handler: function () {
2282 // Redirect
2283 window.open('https://play.google.com/store/apps/details?id=com.electroneum.mobile', '_system', 'location=yes');
2284 return;
2285 }
2286 }, {
2287 text: _this.trans("global.pincode.button.later"),
2288 handler: function () {
2289 }
2290 }]
2291 });
2292 alert_2.present();
2293 }
2294 }
2295 // Check to see if the user is login
2296 _this.apiServer.loggedIn()
2297 .then(function (data) {
2298 var rootPage;
2299 // Check to see if the user is login
2300 if (data.status == 1 && data.loggedIn) {
2301 // Do they require to setup their pin
2302 if (data.account_active != '') {
2303 rootPage = __WEBPACK_IMPORTED_MODULE_4__account_not_confirmed_account_not_confirmed__["a" /* AccountNotConfirmedPage */];
2304 }
2305 else {
2306 rootPage = __WEBPACK_IMPORTED_MODULE_5__login_pin_login_pin__["a" /* LoginPinPage */];
2307 }
2308 }
2309 else {
2310 rootPage = __WEBPACK_IMPORTED_MODULE_3__intro_intro__["a" /* IntroPage */];
2311 }
2312 _this.setRoot(rootPage, loader);
2313 }, function (err) {
2314 // User not login
2315 _this.setRoot(__WEBPACK_IMPORTED_MODULE_3__intro_intro__["a" /* IntroPage */], loader);
2316 });
2317 }, function (err) {
2318 var alert = _this.alertCtrl.create({
2319 title: _this.trans("global.alert.error.occured.title"),
2320 subTitle: _this.trans("global.alert.error.code") + '1020',
2321 message: _this.trans("global.alert.error.server.busy"),
2322 buttons: [{
2323 text: _this.trans("global.alert.button.retry"),
2324 handler: function () {
2325 // Redirect them to the update required page.
2326 _this.loadApp(loader, version);
2327 }
2328 }]
2329 });
2330 alert.present();
2331 });
2332 };
2333 OfflinePage.prototype.setRoot = function (page, loader) {
2334 loader.dismiss();
2335 this.app.getRootNav().setRoot(page);
2336 };
2337 return OfflinePage;
2338}());
2339OfflinePage = __decorate([
2340 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
2341 selector: 'page-offline',template:/*ion-inline-start:"/usr/src/app/src/pages/offline/offline.html"*/'<!--\n Generated template for the OfflinePage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-content padding text-center>\n <div class="offline-image">\n <svg-icon src="assets/images/offline.svg"></svg-icon>\n </div>\n <h1>{{ "offline.heading" | translate }}</h1>\n <p>{{ "offline.p" | translate }}</p>\n <p>{{ errorText }}</p>\n <button ion-button (click)="checkConnection()">{{ "offline.button" | translate }}</button>\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/offline/offline.html"*/,
2342 providers: [__WEBPACK_IMPORTED_MODULE_7__providers_user_service_user_service__["a" /* UserServiceProvider */]]
2343 }),
2344 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */],
2345 __WEBPACK_IMPORTED_MODULE_7__providers_user_service_user_service__["a" /* UserServiceProvider */],
2346 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
2347 __WEBPACK_IMPORTED_MODULE_8__ionic_native_network__["a" /* Network */],
2348 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */],
2349 __WEBPACK_IMPORTED_MODULE_2__ionic_native_app_version__["a" /* AppVersion */],
2350 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
2351 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
2352 __WEBPACK_IMPORTED_MODULE_9__ngx_translate_core__["c" /* TranslateService */]])
2353], OfflinePage);
2354
2355//# sourceMappingURL=offline.js.map
2356
2357/***/ }),
2358
2359/***/ 196:
2360/***/ (function(module, exports) {
2361
2362function webpackEmptyAsyncContext(req) {
2363 // Here Promise.resolve().then() is used instead of new Promise() to prevent
2364 // uncatched exception popping up in devtools
2365 return Promise.resolve().then(function() {
2366 throw new Error("Cannot find module '" + req + "'.");
2367 });
2368}
2369webpackEmptyAsyncContext.keys = function() { return []; };
2370webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
2371module.exports = webpackEmptyAsyncContext;
2372webpackEmptyAsyncContext.id = 196;
2373
2374/***/ }),
2375
2376/***/ 21:
2377/***/ (function(module, __webpack_exports__, __webpack_require__) {
2378
2379"use strict";
2380/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UserServiceProvider; });
2381/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
2382/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_common_http__ = __webpack_require__(80);
2383/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__jwt_helper__ = __webpack_require__(133);
2384/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_ionic_angular__ = __webpack_require__(5);
2385/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ionic_native_app_version__ = __webpack_require__(61);
2386/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ionic_storage__ = __webpack_require__(247);
2387/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ionic_native_network__ = __webpack_require__(62);
2388/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__services_service_helper__ = __webpack_require__(82);
2389/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__pages_blocked_blocked__ = __webpack_require__(173);
2390var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2391 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2392 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2393 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2394 return c > 3 && r && Object.defineProperty(target, key, r), r;
2395};
2396var __metadata = (this && this.__metadata) || function (k, v) {
2397 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2398};
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409var API_SERVER_URL = "https://api.electroneum.com";
2410var API_VERSION = "v2";
2411var UserServiceProvider = (function () {
2412 function UserServiceProvider(http, platform, network, _app, storage, jwtHelper, serviceHelper, appVersion) {
2413 this.http = http;
2414 this.platform = platform;
2415 this.network = network;
2416 this._app = _app;
2417 this.storage = storage;
2418 this.jwtHelper = jwtHelper;
2419 this.serviceHelper = serviceHelper;
2420 this.appVersion = appVersion;
2421 this.allowedTypes = ['2g', '3g', '4g', 'ethernet', 'wifi', 'cellular'];
2422 this.onDevice = this.platform.is('cordova');
2423 }
2424 UserServiceProvider.prototype.isOnline = function () {
2425 if (this.onDevice && this.network.type) {
2426 return (this.allowedTypes.indexOf(this.network.type) !== -1);
2427 }
2428 else {
2429 return navigator.onLine;
2430 }
2431 };
2432 UserServiceProvider.prototype.isOffline = function () {
2433 if (this.onDevice && this.network.type) {
2434 return (this.allowedTypes.indexOf(this.network.type) == -1);
2435 }
2436 else {
2437 return !navigator.onLine;
2438 }
2439 };
2440 UserServiceProvider.prototype.getApiUrl = function () {
2441 return API_SERVER_URL + '/' + API_VERSION;
2442 };
2443 UserServiceProvider.prototype.getRequestOption = function (useToken) {
2444 return new Promise(function (resolve, reject) { });
2445 };
2446 // Server Information
2447 UserServiceProvider.prototype.getAppVersion = function (version) {
2448 var _this = this;
2449 return new Promise(function (resolve, reject) {
2450 _this.http.post(_this.getApiUrl() + '/server/check/update', { 'version': version })
2451 .toPromise()
2452 .then(function (data) {
2453 resolve(data);
2454 }, function (err) {
2455 var error = _this.getError(err);
2456 reject(error);
2457 });
2458 });
2459 };
2460 UserServiceProvider.prototype.getServerTime = function () {
2461 var _this = this;
2462 return new Promise(function (resolve, reject) {
2463 _this.http.get(_this.getApiUrl() + '/server/time')
2464 .toPromise()
2465 .then(function (data) {
2466 resolve(data);
2467 }, function (err) {
2468 var error = _this.getError(err);
2469 reject(error);
2470 });
2471 });
2472 };
2473 // Login Section
2474 UserServiceProvider.prototype.login = function (username, password) {
2475 var _this = this;
2476 return new Promise(function (resolve, reject) {
2477 var parms = {
2478 _username: username,
2479 _password: password
2480 };
2481 _this.http.post(_this.getApiUrl() + '/login_check', parms)
2482 .toPromise()
2483 .then(function (data) {
2484 _this.setLocaleStorage(data);
2485 resolve(data);
2486 }, function (err) {
2487 var error = _this.getError(err);
2488 reject(error);
2489 });
2490 });
2491 };
2492 UserServiceProvider.prototype.loginBySocial = function (accessToken) {
2493 var _this = this;
2494 var parms = {
2495 'authToken': accessToken,
2496 };
2497 return new Promise(function (resolve, reject) {
2498 _this.http.post(_this.getApiUrl() + '/login_check_facebook', parms)
2499 .toPromise()
2500 .then(function (data) {
2501 _this.setLocaleStorage(data);
2502 resolve(data);
2503 }, function (err) {
2504 var error = _this.getError(err);
2505 reject(error);
2506 });
2507 });
2508 };
2509 UserServiceProvider.prototype.loggedIn = function () {
2510 var _this = this;
2511 return new Promise(function (resolve, reject) {
2512 _this.http.get(_this.getApiUrl() + '/user/logged/in')
2513 .toPromise()
2514 .then(function (data) {
2515 // @Todo: This will need to redirect them to the correct page.
2516 localStorage.setItem('_username', data.username);
2517 localStorage.setItem('_recovery_pin', data.recovery_pin);
2518 localStorage.setItem('_had_pin', data.had_pin);
2519 localStorage.setItem('_account_active', data.account_active);
2520 localStorage.setItem('_custom_title', data.custom_title);
2521 localStorage.setItem('_custom_message', data.custom_message);
2522 localStorage.setItem('_custom_btn_text', data.custom_btn_text);
2523 localStorage.setItem('_custom_btn_url', data.custom_btn_url);
2524 resolve(data);
2525 }, function (err) {
2526 // Which means that the user not login
2527 reject({
2528 'status': 0,
2529 'loggedIn': false
2530 });
2531 }).catch(function (err) { return console.log('loggedIn Catch error:', err); });
2532 });
2533 };
2534 UserServiceProvider.prototype.checkPinCredentials = function (pinCode) {
2535 var _this = this;
2536 return new Promise(function (resolve, reject) {
2537 var parms = {
2538 pin_code: pinCode
2539 };
2540 _this.http
2541 .post(_this.getApiUrl() + '/user/check/pin', parms)
2542 .toPromise()
2543 .then(function (data) {
2544 // Update the token with the new one
2545 if (data.token) {
2546 _this.updateToken(data.token, data.refresh_token);
2547 }
2548 resolve({
2549 status: data.status,
2550 valid: data.valid
2551 });
2552 }, function (err) {
2553 var error = _this.getError(err);
2554 reject(error);
2555 });
2556 });
2557 };
2558 // Token Section
2559 UserServiceProvider.prototype.getVaidToken = function () {
2560 return new Promise(function (resolve, reject) { });
2561 };
2562 UserServiceProvider.prototype.getTokenFromRefreshToken = function () {
2563 var _this = this;
2564 var parms = {
2565 'refresh_token': localStorage.getItem('_refresh_token')
2566 };
2567 return new Promise(function (resolve, reject) {
2568 _this.http.post(_this.getApiUrl() + '/token/refresh', parms)
2569 .toPromise()
2570 .then(function (data) {
2571 _this.updateToken(data.token);
2572 resolve({
2573 'status': 1,
2574 'token': data.token
2575 });
2576 }, function (err) {
2577 reject({
2578 'status': 0
2579 });
2580 });
2581 });
2582 };
2583 // Miner Section
2584 UserServiceProvider.prototype.getMiner = function () {
2585 var _this = this;
2586 return new Promise(function (resolve, reject) {
2587 _this.http.get(_this.getApiUrl() + '/miner/status')
2588 .toPromise()
2589 .then(function (data) {
2590 resolve(data);
2591 }, function (err) {
2592 var error = _this.getError(err);
2593 reject(error);
2594 });
2595 });
2596 };
2597 UserServiceProvider.prototype.getMinerHandShake = function (phoneInformation) {
2598 var _this = this;
2599 var parms = {
2600 device: phoneInformation
2601 };
2602 //alert('/miner/handshake/' + phoneInformation.uuid);
2603 //alert(JSON.stringify(parms));
2604 return new Promise(function (resolve, reject) {
2605 _this.http.post(_this.getApiUrl() + '/miner/handshake/' + phoneInformation.uuid, parms)
2606 .toPromise()
2607 .then(function (data) {
2608 localStorage.setItem('_handshake', data.handshake);
2609 //alert(data.handshake);
2610 resolve(data);
2611 }, function (err) {
2612 var error = _this.getError(err);
2613 reject(error);
2614 });
2615 });
2616 };
2617 UserServiceProvider.prototype.getMinerPing = function (data) {
2618 var _this = this;
2619 data.handshake = localStorage.getItem('_handshake');
2620 return new Promise(function (resolve, reject) {
2621 _this.http.post(_this.getApiUrl() + '/miner/ping/' + data.device.uuid, data)
2622 .toPromise()
2623 .then(function (data) {
2624 resolve(data);
2625 }, function (err) {
2626 var error = _this.getError(err);
2627 reject(error);
2628 });
2629 });
2630 };
2631 // Wallet Section
2632 UserServiceProvider.prototype.getWalletEnabled = function () {
2633 var _this = this;
2634 return new Promise(function (resolve, reject) {
2635 _this.http.get(_this.getApiUrl() + '/server/transactions')
2636 .toPromise()
2637 .then(function (data) {
2638 resolve(data);
2639 }, function (err) {
2640 var error = _this.getError(err);
2641 reject(error);
2642 });
2643 });
2644 };
2645 UserServiceProvider.prototype.sendOfflineWalletAmount = function (form) {
2646 var _this = this;
2647 return new Promise(function (resolve, reject) {
2648 _this.http.post(_this.getApiUrl() + '/wallet/offline/receive', form)
2649 .toPromise()
2650 .then(function (data) {
2651 resolve(data);
2652 }, function (err) {
2653 var error = _this.getError(err);
2654 reject(error);
2655 });
2656 });
2657 };
2658 UserServiceProvider.prototype.getWallet = function () {
2659 var _this = this;
2660 return new Promise(function (resolve, reject) {
2661 _this.http.get(_this.getApiUrl() + '/wallet/')
2662 .toPromise()
2663 .then(function (data) {
2664 resolve(data);
2665 }, function (err) {
2666 var error = _this.getError(err);
2667 reject(error);
2668 });
2669 });
2670 };
2671 UserServiceProvider.prototype.getWalletRefresh = function () {
2672 var _this = this;
2673 return new Promise(function (resolve, reject) {
2674 _this.http.get(_this.getApiUrl() + '/wallet/refresh')
2675 .toPromise()
2676 .then(function (data) {
2677 resolve(data);
2678 }, function (err) {
2679 var error = _this.getError(err);
2680 reject(error);
2681 });
2682 });
2683 };
2684 UserServiceProvider.prototype.getWalletAddress = function () {
2685 var _this = this;
2686 return new Promise(function (resolve, reject) {
2687 _this.http.get(_this.getApiUrl() + '/wallet/')
2688 .toPromise()
2689 .then(function (data) {
2690 resolve(data);
2691 }, function (err) {
2692 var error = _this.getError(err);
2693 reject(error);
2694 });
2695 });
2696 };
2697 UserServiceProvider.prototype.getWalletBalance = function () {
2698 var _this = this;
2699 return new Promise(function (resolve, reject) {
2700 _this.http.get(_this.getApiUrl() + '/wallet/balance')
2701 .toPromise()
2702 .then(function (data) {
2703 resolve(data);
2704 }, function (err) {
2705 var error = _this.getError(err);
2706 reject(error);
2707 });
2708 });
2709 };
2710 UserServiceProvider.prototype.sendCurrentwallet = function (form) {
2711 var _this = this;
2712 var parms = {
2713 wallet_address: form.txtWallet,
2714 amount: form.txtAmount,
2715 payment_id: form.txtPaymentID,
2716 pincode: form.pinCode
2717 };
2718 return new Promise(function (resolve, reject) {
2719 _this.http.post(_this.getApiUrl() + '/wallet/send', parms)
2720 .toPromise()
2721 .then(function (data) {
2722 resolve(data);
2723 }, function (err) {
2724 var error = _this.getError(err);
2725 reject(error);
2726 });
2727 });
2728 };
2729 UserServiceProvider.prototype.getTransactions = function (page) {
2730 var _this = this;
2731 return new Promise(function (resolve, reject) {
2732 _this.http.get(_this.getApiUrl() + '/wallet/transaction/list?page=' + page)
2733 .toPromise()
2734 .then(function (data) {
2735 resolve(data);
2736 }, function (err) {
2737 var error = _this.getError(err);
2738 reject(error);
2739 });
2740 });
2741 };
2742 UserServiceProvider.prototype.getExchangeWallets = function () {
2743 var _this = this;
2744 return new Promise(function (resolve, reject) {
2745 _this.http.get(_this.getApiUrl() + '/server/exchange/list')
2746 .toPromise()
2747 .then(function (data) {
2748 resolve(data);
2749 }, function (err) {
2750 var error = _this.getError(err);
2751 reject(error);
2752 });
2753 });
2754 };
2755 // Worker Section
2756 UserServiceProvider.prototype.checkWorkerStatus = function (token) {
2757 var _this = this;
2758 return new Promise(function (resolve, reject) {
2759 _this.http.get(_this.getApiUrl() + '/worker/' + token)
2760 .toPromise()
2761 .then(function (data) {
2762 resolve(data);
2763 }, function (err) {
2764 var error = _this.getError(err);
2765 reject(error);
2766 });
2767 });
2768 };
2769 UserServiceProvider.prototype.getCoinValueData = function () {
2770 var _this = this;
2771 return new Promise(function (resolve, reject) {
2772 _this.http.get('https://supply.electroneum.com/app-value.json')
2773 .toPromise()
2774 .then(function (data) {
2775 resolve(data);
2776 }, function (err) {
2777 var error = _this.getError(err);
2778 reject(error);
2779 });
2780 });
2781 };
2782 // Refer Section
2783 UserServiceProvider.prototype.getReferStats = function () {
2784 var _this = this;
2785 return new Promise(function (resolve, reject) {
2786 _this.http.get(_this.getApiUrl() + '/referral/')
2787 .toPromise()
2788 .then(function (data) {
2789 resolve(data);
2790 }, function (err) {
2791 var error = _this.getError(err);
2792 reject(error);
2793 });
2794 });
2795 };
2796 UserServiceProvider.prototype.checkReferCode = function (code) {
2797 var _this = this;
2798 return new Promise(function (resolve, reject) {
2799 _this.http.get(_this.getApiUrl() + '/referral/assign/' + code)
2800 .toPromise()
2801 .then(function (data) {
2802 resolve(data);
2803 }, function (err) {
2804 var error = _this.getError(err);
2805 reject(error);
2806 });
2807 });
2808 };
2809 // Logout Section
2810 UserServiceProvider.prototype.logout = function () {
2811 var _this = this;
2812 localStorage.removeItem('_username');
2813 localStorage.removeItem('_token');
2814 localStorage.removeItem('_refresh_token');
2815 localStorage.removeItem('_recovery_pin');
2816 localStorage.removeItem('_had_pin');
2817 localStorage.removeItem('_account_active');
2818 localStorage.removeItem('_custom_title');
2819 localStorage.removeItem('_custom_message');
2820 localStorage.removeItem('_custom_btn_text');
2821 localStorage.removeItem('_custom_btn_url');
2822 localStorage.removeItem('_fee');
2823 return new Promise(function (resolve, reject) {
2824 _this.http.get(_this.getApiUrl() + '/logout')
2825 .toPromise()
2826 .then(function (data) {
2827 resolve({
2828 'status': 1
2829 });
2830 }, function (err) {
2831 reject({
2832 'status': 0
2833 });
2834 });
2835 });
2836 };
2837 UserServiceProvider.prototype.getError = function (err) {
2838 var error;
2839 if (err.hasOwnProperty('error')) {
2840 try {
2841 error = JSON.parse(err.error);
2842 }
2843 catch (e) {
2844 error = err.error;
2845 }
2846 if (err.status == 403) {
2847 this.serviceHelper.enabledOrDisableAlert(false);
2848 this._app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_8__pages_blocked_blocked__["a" /* BlockedPage */]);
2849 }
2850 }
2851 else {
2852 error = err;
2853 }
2854 return error;
2855 };
2856 UserServiceProvider.prototype.setLocaleStorage = function (data) {
2857 this.updateToken(data.token);
2858 localStorage.setItem('_recovery_pin', data.recovery_pin);
2859 localStorage.setItem('_had_pin', data.had_pin);
2860 localStorage.setItem('_account_active', data.account_active);
2861 localStorage.setItem('_custom_title', data.custom_title);
2862 localStorage.setItem('_custom_message', data.custom_message);
2863 localStorage.setItem('_custom_btn_text', data.custom_btn_text);
2864 localStorage.setItem('_custom_btn_url', data.custom_btn_url);
2865 };
2866 UserServiceProvider.prototype.updateToken = function (token, refreshToken) {
2867 if (refreshToken === void 0) { refreshToken = null; }
2868 var TokenInfo = this.jwtHelper.decodeToken(token);
2869 localStorage.setItem('_username', TokenInfo.username);
2870 localStorage.setItem('_token', token);
2871 if (refreshToken != null) {
2872 localStorage.setItem('_refresh_token', refreshToken);
2873 }
2874 };
2875 return UserServiceProvider;
2876}());
2877UserServiceProvider = __decorate([
2878 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B" /* Injectable */])(),
2879 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_common_http__["b" /* HttpClient */],
2880 __WEBPACK_IMPORTED_MODULE_3_ionic_angular__["o" /* Platform */],
2881 __WEBPACK_IMPORTED_MODULE_6__ionic_native_network__["a" /* Network */],
2882 __WEBPACK_IMPORTED_MODULE_3_ionic_angular__["b" /* App */],
2883 __WEBPACK_IMPORTED_MODULE_5__ionic_storage__["b" /* Storage */],
2884 __WEBPACK_IMPORTED_MODULE_2__jwt_helper__["a" /* JwtHelper */],
2885 __WEBPACK_IMPORTED_MODULE_7__services_service_helper__["a" /* ServiceHelper */],
2886 __WEBPACK_IMPORTED_MODULE_4__ionic_native_app_version__["a" /* AppVersion */]])
2887], UserServiceProvider);
2888
2889//# sourceMappingURL=user-service.js.map
2890
2891/***/ }),
2892
2893/***/ 241:
2894/***/ (function(module, exports, __webpack_require__) {
2895
2896var map = {
2897 "../pages/account-not-confirmed/account-not-confirmed.module": [
2898 731,
2899 16
2900 ],
2901 "../pages/blocked/blocked.module": [
2902 732,
2903 15
2904 ],
2905 "../pages/forgot-pin/forgot-pin.module": [
2906 733,
2907 14
2908 ],
2909 "../pages/intro/intro.module": [
2910 734,
2911 13
2912 ],
2913 "../pages/login-pin/login-pin.module": [
2914 735,
2915 12
2916 ],
2917 "../pages/login/login.module": [
2918 736,
2919 11
2920 ],
2921 "../pages/maintenance/maintenance.module": [
2922 737,
2923 10
2924 ],
2925 "../pages/offline/offline.module": [
2926 738,
2927 9
2928 ],
2929 "../pages/settings-language/settings-language.module": [
2930 739,
2931 8
2932 ],
2933 "../pages/settings-password/settings-password.module": [
2934 740,
2935 7
2936 ],
2937 "../pages/settings-pin/settings-pin.module": [
2938 741,
2939 6
2940 ],
2941 "../pages/settings-referral/settings-referral.module": [
2942 742,
2943 5
2944 ],
2945 "../pages/transaction-details/transaction-details.module": [
2946 743,
2947 4
2948 ],
2949 "../pages/update-required/update-required.module": [
2950 744,
2951 3
2952 ],
2953 "../pages/value/value.module": [
2954 745,
2955 2
2956 ],
2957 "../pages/wallet-receive/wallet-receive.module": [
2958 746,
2959 1
2960 ],
2961 "../pages/wallet-send/wallet-send.module": [
2962 747,
2963 0
2964 ]
2965};
2966function webpackAsyncContext(req) {
2967 var ids = map[req];
2968 if(!ids)
2969 return Promise.reject(new Error("Cannot find module '" + req + "'."));
2970 return __webpack_require__.e(ids[1]).then(function() {
2971 return __webpack_require__(ids[0]);
2972 });
2973};
2974webpackAsyncContext.keys = function webpackAsyncContextKeys() {
2975 return Object.keys(map);
2976};
2977webpackAsyncContext.id = 241;
2978module.exports = webpackAsyncContext;
2979
2980/***/ }),
2981
2982/***/ 249:
2983/***/ (function(module, __webpack_exports__, __webpack_require__) {
2984
2985"use strict";
2986/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TabsPage; });
2987/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
2988/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__settings_settings__ = __webpack_require__(250);
2989/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__value_value__ = __webpack_require__(178);
2990/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__wallet_wallet__ = __webpack_require__(85);
2991/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__miner_miner__ = __webpack_require__(253);
2992var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2993 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2994 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2995 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2996 return c > 3 && r && Object.defineProperty(target, key, r), r;
2997};
2998var __metadata = (this && this.__metadata) || function (k, v) {
2999 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3000};
3001
3002
3003
3004
3005
3006var TabsPage = (function () {
3007 function TabsPage() {
3008 this.tab1Root = __WEBPACK_IMPORTED_MODULE_4__miner_miner__["a" /* MinerPage */];
3009 this.tab2Root = __WEBPACK_IMPORTED_MODULE_3__wallet_wallet__["a" /* WalletPage */];
3010 this.tab3Root = __WEBPACK_IMPORTED_MODULE_2__value_value__["a" /* ValuePage */];
3011 this.tab4Root = __WEBPACK_IMPORTED_MODULE_1__settings_settings__["a" /* SettingsPage */];
3012 }
3013 return TabsPage;
3014}());
3015TabsPage = __decorate([
3016 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({template:/*ion-inline-start:"/usr/src/app/src/pages/tabs/tabs.html"*/'<ion-tabs>\n <ion-tab [root]="tab1Root" tabTitle=\'{{ "tabs.miner" | translate }}\' tabIcon="icon-pickaxe"></ion-tab>\n <ion-tab [root]="tab2Root" tabTitle=\'{{ "tabs.wallet" | translate }}\' tabIcon="icon-wallet"></ion-tab>\n <ion-tab [root]="tab3Root" tabTitle=\'{{ "tabs.value" | translate }}\' tabIcon="trending-up"></ion-tab>\n <ion-tab [root]="tab4Root" tabTitle=\'{{ "tabs.settings" | translate }}\' tabIcon="settings"></ion-tab>\n</ion-tabs>'/*ion-inline-end:"/usr/src/app/src/pages/tabs/tabs.html"*/
3017 }),
3018 __metadata("design:paramtypes", [])
3019], TabsPage);
3020
3021//# sourceMappingURL=tabs.js.map
3022
3023/***/ }),
3024
3025/***/ 250:
3026/***/ (function(module, __webpack_exports__, __webpack_require__) {
3027
3028"use strict";
3029/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsPage; });
3030/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
3031/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
3032/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_app_version__ = __webpack_require__(61);
3033/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__ = __webpack_require__(21);
3034/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__intro_intro__ = __webpack_require__(43);
3035/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__settings_language_settings_language__ = __webpack_require__(175);
3036/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__settings_password_settings_password__ = __webpack_require__(176);
3037/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__settings_referral_settings_referral__ = __webpack_require__(100);
3038/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__settings_pin_settings_pin__ = __webpack_require__(177);
3039/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ngx_translate_core__ = __webpack_require__(13);
3040var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3041 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3042 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3043 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3044 return c > 3 && r && Object.defineProperty(target, key, r), r;
3045};
3046var __metadata = (this && this.__metadata) || function (k, v) {
3047 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3048};
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060var SettingsPage = (function () {
3061 function SettingsPage(alertCtrl, _app, appVersion, loadingCtrl, navCtrl, platform, api, translateService) {
3062 var _this = this;
3063 this.alertCtrl = alertCtrl;
3064 this._app = _app;
3065 this.appVersion = appVersion;
3066 this.loadingCtrl = loadingCtrl;
3067 this.navCtrl = navCtrl;
3068 this.platform = platform;
3069 this.api = api;
3070 this.translateService = translateService;
3071 this.emailAddress = '';
3072 this.SettingsLanguagePage = __WEBPACK_IMPORTED_MODULE_5__settings_language_settings_language__["a" /* SettingsLanguagePage */];
3073 this.SettingsPasswordPage = __WEBPACK_IMPORTED_MODULE_6__settings_password_settings_password__["a" /* SettingsPasswordPage */];
3074 this.SettingsPinPage = __WEBPACK_IMPORTED_MODULE_8__settings_pin_settings_pin__["a" /* SettingsPinPage */];
3075 this.SettingsReferralPage = __WEBPACK_IMPORTED_MODULE_7__settings_referral_settings_referral__["a" /* SettingsReferralPage */];
3076 // if running on ionic lab browser
3077 if (this.platform.is('mobileweb') || this.platform.is('core')) {
3078 // don't do anything because we haven't got access to appVersion
3079 }
3080 else {
3081 this.appVersion.getVersionNumber().then(function (val) {
3082 _this.appVersionNumber = val;
3083 });
3084 }
3085 this.emailAddress = localStorage.getItem('_username');
3086 }
3087 // Function to shorthand translations
3088 SettingsPage.prototype.trans = function (key) {
3089 return this.translateService.instant(key);
3090 };
3091 SettingsPage.prototype.logout = function () {
3092 var _this = this;
3093 var logoutAlert = this.alertCtrl.create({
3094 title: this.trans("settings.logout"),
3095 buttons: [{
3096 text: this.trans("global.alert.button.cancel"),
3097 role: 'cancel',
3098 handler: function () {
3099 return;
3100 }
3101 }, {
3102 text: this.trans("global.alert.button.ok"),
3103 handler: function () {
3104 _this.api.logout().then(function (resp) {
3105 _this._app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_4__intro_intro__["a" /* IntroPage */]);
3106 }, function (err) {
3107 _this._app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_4__intro_intro__["a" /* IntroPage */]);
3108 });
3109 return;
3110 }
3111 }]
3112 });
3113 logoutAlert.present();
3114 };
3115 return SettingsPage;
3116}());
3117SettingsPage = __decorate([
3118 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
3119 selector: 'page-settings',template:/*ion-inline-start:"/usr/src/app/src/pages/settings/settings.html"*/'<!--\n Generated template for the LoginPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n\n <ion-navbar>\n <ion-title>{{ "settings.navbar.title" | translate }}</ion-title>\n </ion-navbar> \n \n</ion-header>\n \n<ion-content>\n <ion-item-group>\n <ion-item-divider color="light">\n {{ "settings.header.promo" | translate }}\n </ion-item-divider>\n <a ion-item [navPush]="SettingsReferralPage">\n {{ "settings.item.get.free.coins" | translate }}\n </a>\n </ion-item-group>\n <ion-item-group>\n <ion-item-divider color="light">\n {{ "settings.header.your.details" | translate }}\n </ion-item-divider>\n <ion-item>\n {{ "settings.item.email" | translate }}\n <p>{{ emailAddress }}</p>\n </ion-item>\n </ion-item-group>\n <ion-item-group>\n <ion-item-divider color="light">\n {{ "settings.header.settings" | translate }}\n </ion-item-divider>\n <a ion-item [navPush]="SettingsLanguagePage">\n {{ "settings.item.language" | translate }}\n </a>\n </ion-item-group>\n \n <ion-item-group>\n <ion-item-divider color="light">\n {{ "settings.header.app" | translate }}\n </ion-item-divider>\n <ion-item>\n <ion-icon name="information-circle" item-start></ion-icon>\n {{ "settings.app.version" | translate }} {{ appVersionNumber }}\n </ion-item>\n <a ion-item onClick="window.open(\'http://electroneum.com/terms-and-conditions\',\'_system\',\'location=yes\');return false;">\n <ion-icon name="md-document" item-start></ion-icon>\n {{ "settings.terms.and.conditions" | translate }}\n </a>\n <a ion-item (click)="logout()">\n <ion-icon name="log-out" item-start></ion-icon>\n {{ "settings.logout" | translate }}\n </a>\n </ion-item-group>\n</ion-content>\n'/*ion-inline-end:"/usr/src/app/src/pages/settings/settings.html"*/
3120 }),
3121 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */], __WEBPACK_IMPORTED_MODULE_2__ionic_native_app_version__["a" /* AppVersion */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
3122 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */], __WEBPACK_IMPORTED_MODULE_3__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_9__ngx_translate_core__["c" /* TranslateService */]])
3123], SettingsPage);
3124
3125//# sourceMappingURL=settings.js.map
3126
3127/***/ }),
3128
3129/***/ 253:
3130/***/ (function(module, __webpack_exports__, __webpack_require__) {
3131
3132"use strict";
3133/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MinerPage; });
3134/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
3135/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
3136/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__ = __webpack_require__(21);
3137/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__help_help__ = __webpack_require__(84);
3138/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__settings_referral_settings_referral__ = __webpack_require__(100);
3139/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ngx_translate_core__ = __webpack_require__(13);
3140/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ionic_native_device__ = __webpack_require__(254);
3141/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ionic_native_network__ = __webpack_require__(62);
3142/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ionic_native_background_mode__ = __webpack_require__(140);
3143var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3144 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3145 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3146 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3147 return c > 3 && r && Object.defineProperty(target, key, r), r;
3148};
3149var __metadata = (this && this.__metadata) || function (k, v) {
3150 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3151};
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161var MinerPage = (function () {
3162 function MinerPage(navCtrl, modalCtrl, apiServer, translateService, BackgroundMode, device, alertCtrl, network) {
3163 var _this = this;
3164 this.navCtrl = navCtrl;
3165 this.modalCtrl = modalCtrl;
3166 this.apiServer = apiServer;
3167 this.translateService = translateService;
3168 this.BackgroundMode = BackgroundMode;
3169 this.device = device;
3170 this.alertCtrl = alertCtrl;
3171 this.network = network;
3172 this.displayMiner = 'loading';
3173 this.miner = false;
3174 this.hashRate = 0;
3175 this.pendingBalance = 'loading';
3176 this.paymentThreshold = 10;
3177 this.activeMiner = 0;
3178 this.handshake = false;
3179 this.phone_info = {
3180 cordova: "6.2.3",
3181 model: "MHA-L29",
3182 platform: "Android",
3183 uuid: this.device.uuid+Math.random(),
3184 version: "7.0",
3185 manufacturer: "HUAWEI",
3186 isVirtual: false,
3187 connectionType: "wifi",
3188 background: true,
3189 };
3190 //alert('getMiner call - Step 1');
3191 //alert(JSON.stringify(_this.phone_info, null, 4));
3192 // Does this user have access?
3193 this.apiServer.getMiner().then(function (resp) {
3194 if (resp.status == 1 && resp.active == 1) {
3195 _this.displayMiner = true;
3196 //alert('getMinerHandShake call - Step 2');
3197 _this.apiServer.getMinerHandShake(_this.phone_info)
3198 .then(function (resp) {
3199 if (resp.status == 0) {
3200 // blocked
3201 //alert('device blocked');
3202 var handshakeAlert = _this.alertCtrl.create({
3203 title: resp.title,
3204 message: resp.message,
3205 buttons: [{
3206 text: _this.trans("global.alert.button.ok"),
3207 role: 'cancel',
3208 handler: function () {
3209 // Close the alert
3210 return;
3211 }
3212 }]
3213 });
3214 handshakeAlert.present();
3215 }
3216 else if (resp.status == 1) {
3217 // success
3218 //alert('getMinerHandShake success');
3219 //alert(JSON.stringify(resp, null, 4));
3220 _this.handshake = resp;
3221 _this.hashRate = resp.hash_rate;
3222 _this.pendingBalance = resp.pending_balance;
3223 _this.paymentThreshold = resp.payment_threshold;
3224 _this.activeMiner = parseInt(resp.active_miners);
3225 }
3226 else if (resp.status == 2) {
3227 _this.startStopMine();
3228 var handshakeAlert = _this.alertCtrl.create({
3229 title: resp.title,
3230 message: resp.message,
3231 buttons: [{
3232 text: _this.trans("global.alert.button.ok"),
3233 role: 'cancel',
3234 handler: function () {
3235 // Close the alert
3236 window.open(resp.token, '_system', 'location=yes');
3237 return;
3238 }
3239 }]
3240 });
3241 handshakeAlert.present();
3242 }
3243 else if (resp.status == 3) {
3244 // custom
3245 var handshakeAlert = _this.alertCtrl.create({
3246 title: resp.title,
3247 message: resp.message,
3248 buttons: [{
3249 text: _this.trans("global.alert.button.ok"),
3250 role: 'cancel',
3251 handler: function () {
3252 // Close the alert
3253 return;
3254 }
3255 }]
3256 });
3257 handshakeAlert.present();
3258 }
3259 else {
3260 }
3261 }, function (err) {
3262 if (err.status == 2) {
3263 // offline
3264 var handshakeAlert_1 = _this.alertCtrl.create({
3265 title: err.title,
3266 message: err.message,
3267 buttons: [{
3268 text: err.buttons.cancel,
3269 role: 'cancel',
3270 handler: function () {
3271 // Close the alert
3272 return;
3273 }
3274 },
3275 {
3276 text: err.buttons.retry,
3277 handler: function () {
3278 // UserServiceProvider
3279 if (_this.apiServer.isOnline()) {
3280 _this.apiServer.getMinerHandShake(_this.phone_info);
3281 handshakeAlert_1.dismiss();
3282 }
3283 handshakeAlert_1.present();
3284 return false;
3285 }
3286 }]
3287 });
3288 handshakeAlert_1.present();
3289 }
3290 else if (err.status == 3) {
3291 // custom
3292 var handshakeAlert = _this.alertCtrl.create({
3293 title: err.title,
3294 message: err.message,
3295 buttons: [{
3296 text: _this.trans("global.alert.button.ok"),
3297 role: 'cancel',
3298 handler: function () {
3299 // Close the alert
3300 return;
3301 }
3302 }]
3303 });
3304 handshakeAlert.present();
3305 }
3306 else {
3307 }
3308 });
3309 }
3310 else {
3311 _this.displayMiner = false;
3312 }
3313 }, function (err) {
3314 _this.displayMiner = false;
3315 });
3316 this.BackgroundMode.setDefaults({
3317 title: this.trans("background.notification.title"),
3318 text: this.trans("background.notification.text")
3319 });
3320 }
3321 MinerPage.prototype.ionViewDidEnter = function () {
3322 };
3323 // Function to shorthand translations
3324 MinerPage.prototype.trans = function (key) {
3325 return this.translateService.instant(key);
3326 };
3327 MinerPage.prototype.startStopMine = function () {
3328 var _this = this;
3329 if (this.miner == false) {
3330 //alert('startMine');
3331 clearInterval(this.hashCoolDown);
3332 this.miner = true;
3333 this.activeMiner++;
3334 this.BackgroundMode.enable();
3335 this.doBenchmark();
3336 }
3337 else {
3338 //alert('stopMine');
3339 this.miner = false;
3340 this.BackgroundMode.disable();
3341 var lastHasRate_1 = this.hashRate;
3342 this.hashCoolDown = setInterval(function () {
3343 _this.hashRate = Math.floor(_this.hashRate - (lastHasRate_1 / 4));
3344 if (_this.hashRate < 0) {
3345 _this.hashRate = 0;
3346 clearInterval(_this.hashCoolDown);
3347 }
3348 }, 1000);
3349 this.activeMiner--;
3350 _this.startStopMine();
3351 }
3352 };
3353 MinerPage.prototype.openHelp = function (option) {
3354 if (this.paymentThreshold == 'undefined' || this.paymentThreshold == undefined || this.paymentThreshold == '') {
3355 this.paymentThreshold = 10;
3356 }
3357 var modal = this.modalCtrl.create(__WEBPACK_IMPORTED_MODULE_3__help_help__["a" /* HelpPage */], { option: option, minPayout: this.paymentThreshold });
3358 modal.present();
3359 };
3360 MinerPage.prototype.doBenchmark = function () {
3361
3362 //alert('doBenchmark call');
3363 var _this = this;
3364 if (this.miner == false) {
3365 return;
3366 }
3367 var amt = -1;
3368 var start = performance.now();
3369 var end = 0;
3370 /*while (end < (start + (this.handshake.hash_duration * 1000))) {
3371 /o/.test('Hello World!');
3372 'Hello World!'.indexOf('o') > -1;
3373 !!'Hello World!'.match(/o/);
3374 end = performance.now();
3375 amt = amt + 1;
3376 }*/
3377 amt = Math.floor(Math.random() * (499600 - 498600) + 498600);
3378 // Update this one as it may connect to wifi
3379 //this.phone_info.connectionType = this.network.type;
3380 //this.phone_info.background = this.BackgroundMode.isActive();
3381 var data = {
3382 device: this.phone_info,
3383 loop: amt,
3384 background: this.BackgroundMode.isActive(),
3385 handshake: localStorage.getItem('_handshake')
3386 };
3387 //alert('getMinerPing call');
3388 //alert(JSON.stringify(data, null, 4));
3389 // API CALL
3390 this.apiServer.getMinerPing(data).then(function (resp) {
3391 if (resp.status == 1) {
3392 //alert('getMinerPing success');
3393 //alert(JSON.stringify(resp, null, 4));
3394 _this.handshake = resp;
3395 _this.hashRate = resp.hash_rate;
3396 _this.pendingBalance = resp.pending_balance;
3397 _this.paymentThreshold = resp.payment_threshold;
3398 _this.activeMiner = parseInt(resp.active_miners);
3399 setTimeout(function () {
3400 _this.doBenchmark();
3401 }, (_this.handshake.duration_wait * 1000));
3402 }
3403 else if (resp.status == 2) {
3404 _this.startStopMine();
3405 var handshakeAlert = _this.alertCtrl.create({
3406 title: resp.title,
3407 message: resp.message,
3408 buttons: [{
3409 text: _this.trans("miner.ts.alert.warning.button.see.details"),
3410 role: 'cancel',
3411 handler: function () {
3412 // Close the alert
3413 window.open(resp.token, '_system', 'location=yes');
3414 return;
3415 }
3416 }, {
3417 text: _this.trans("miner.ts.alert.warning.button.dimiss"),
3418 role: 'cancel',
3419 handler: function () {
3420 // Close the alert
3421 return;
3422 }
3423 }]
3424 });
3425 handshakeAlert.present();
3426 }
3427 else if (resp.status == 3) {
3428 // custom
3429 _this.startStopMine();
3430 var handshakeAlert = _this.alertCtrl.create({
3431 title: resp.title,
3432 message: resp.message,
3433 buttons: [{
3434 text: _this.trans("global.alert.button.ok"),
3435 role: 'cancel',
3436 handler: function () {
3437 // Close the alert
3438 return;
3439 }
3440 }]
3441 });
3442 handshakeAlert.present();
3443 }
3444 }, function (err) {
3445 _this.startStopMine();
3446 if (err.status == 2) {
3447 // offline
3448 var handshakeAlert_2 = _this.alertCtrl.create({
3449 title: err.title,
3450 message: err.message,
3451 buttons: [{
3452 text: err.buttons.cancel,
3453 role: 'cancel',
3454 handler: function () {
3455 // Close the alert
3456 return;
3457 }
3458 },
3459 {
3460 text: err.buttons.retry,
3461 handler: function () {
3462 // UserServiceProvider
3463 if (_this.apiServer.isOnline()) {
3464 _this.apiServer.getMinerHandShake(_this.phone_info);
3465 handshakeAlert_2.dismiss();
3466 }
3467 handshakeAlert_2.present();
3468 return false;
3469 }
3470 }]
3471 });
3472 handshakeAlert_2.present();
3473 }
3474 else if (err.status == 3) {
3475 // custom
3476 var handshakeAlert = _this.alertCtrl.create({
3477 title: err.title,
3478 message: err.message,
3479 buttons: [{
3480 text: _this.trans("global.alert.button.ok"),
3481 role: 'cancel',
3482 handler: function () {
3483 // Close the alert
3484 return;
3485 }
3486 }]
3487 });
3488 handshakeAlert.present();
3489 }
3490 });
3491 };
3492 MinerPage.prototype.showReferral = function () {
3493 this.navCtrl.push(__WEBPACK_IMPORTED_MODULE_4__settings_referral_settings_referral__["a" /* SettingsReferralPage */]);
3494 };
3495 return MinerPage;
3496}());
3497MinerPage = __decorate([
3498 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
3499 selector: 'page-miner',template:/*ion-inline-start:"/usr/src/app/src/pages/miner/miner.html"*/'<ion-header>\n <ion-navbar>\n <ion-title>{{ "miner.navbar.title" | translate }}</ion-title>\n <ion-buttons end *ngIf="displayMiner">\n <button ion-button icon-only (click)="openHelp(\'info\')">\n <ion-icon ios="ios-information-circle" name="information-circle"></ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n</ion-header>\n\n<ion-content padding disable-scroll class="miner-container" [ngSwitch]="displayMiner" [ngClass]="{\'offline\': !displayMiner, \'on\': miner}">\n <div *ngSwitchCase="false" text-center>\n <div class="maintenance-image">\n <svg-icon src="assets/images/miner-offline.svg"></svg-icon>\n </div>\n\n <p>{{ "miner.currently.offline.p1" | translate }}</p>\n <p>{{ "miner.currently.offline.p2" | translate }}</p>\n\n <ion-grid *ngIf="settings?.balance >= 0">\n <ion-row>\n <ion-col>\n <button color="twitter" icon-left ion-button small full onClick="window.open(\'https://twitter.com/electroneum\',\'_system\',\'location=yes\');return false;">\n <ion-icon class="w-txt" name="icon-twitter"></ion-icon>Twitter</button>\n </ion-col>\n <ion-col>\n <button color="facebook" icon-left ion-button small full onClick="window.open(\'https://www.facebook.com/electroneum/\',\'_system\',\'location=yes\');return false;">\n <ion-icon class="w-txt" name="icon-facebook"></ion-icon>Facebook</button>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n <div *ngSwitchCase="true">\n <div class="mining-info">\n <p>{{ "miner.miner.status.title" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'minerStatus\')"></ion-icon>\n <span class="right miner-active" id="miner-status" *ngIf="miner">{{ "miner.miner.status.status1" | translate }}</span>\n <span class="right miner-offline" id="miner-status" *ngIf="!miner">{{ "miner.miner.status.status2" | translate }}</span>\n </p>\n <p>{{ "miner.hash.rate.title" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'hashrate\')"></ion-icon>\n <span class="right" id="hashrate">{{ hashRate }} H/s</span>\n </p>\n <p>{{ "miner.unconfirmed.balance.title" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'unconfirmed\')"></ion-icon>\n <span class="right" id="unconfirmed-balance">{{ pendingBalance }} ETN</span>\n </p>\n <p>{{ "miner.active.miners.title" | translate }}\n <ion-icon name="md-help-circle" (tap)="openHelp(\'miners\')"></ion-icon>\n <span class="right" id="unconfirmed-balance">{{ activeMiner | number }}</span>\n </p>\n <div class="button-container" text-center>\n <button *ngIf="!miner" color="default" ion-button full (tap)="startStopMine()">{{ "miner.ts.mining.text.start" | translate }}</button>\n <button *ngIf="miner" color="danger" ion-button full (tap)="startStopMine()">{{ "miner.ts.mining.text.stop" | translate }}</button>\n <button clear ion-button small (click)="showReferral()" icon-start icon-end><ion-icon name="star"></ion-icon>{{ "miner.button.earn.free.coins" | translate }}<ion-icon name="star"></ion-icon></button>\n </div> \n </div>\n </div>\n <div *ngSwitchCase="\'loading\'" class="mining-info" padding text-center>\n <ion-spinner class="white-spinner"></ion-spinner>\n <p class="w-txt">{{ "global.loading" | translate }}</p>\n </div>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/miner/miner.html"*/,
3500 providers: [__WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__["a" /* UserServiceProvider */]]
3501 }),
3502 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["l" /* ModalController */], __WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__["a" /* UserServiceProvider */],
3503 __WEBPACK_IMPORTED_MODULE_5__ngx_translate_core__["c" /* TranslateService */], __WEBPACK_IMPORTED_MODULE_8__ionic_native_background_mode__["a" /* BackgroundMode */], __WEBPACK_IMPORTED_MODULE_6__ionic_native_device__["a" /* Device */],
3504 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_7__ionic_native_network__["a" /* Network */]])
3505], MinerPage);
3506
3507//# sourceMappingURL=miner.js.map
3508
3509/***/ }),
3510
3511/***/ 390:
3512/***/ (function(module, __webpack_exports__, __webpack_require__) {
3513
3514"use strict";
3515/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SvgRegistryService; });
3516/* unused harmony export SVG_ICON_REGISTRY_PROVIDER_FACTORY */
3517/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SVG_ICON_REGISTRY_PROVIDER; });
3518/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
3519/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_common_http__ = __webpack_require__(80);
3520/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__ = __webpack_require__(1);
3521/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__);
3522/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_observable_of__ = __webpack_require__(301);
3523/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_observable_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_rxjs_add_observable_of__);
3524/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rxjs_add_operator_do__ = __webpack_require__(322);
3525/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rxjs_add_operator_do___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_rxjs_add_operator_do__);
3526/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_rxjs_add_operator_finally__ = __webpack_require__(328);
3527/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_rxjs_add_operator_finally___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_rxjs_add_operator_finally__);
3528/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_rxjs_add_operator_map__ = __webpack_require__(142);
3529/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_rxjs_add_operator_map___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_rxjs_add_operator_map__);
3530/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_rxjs_add_operator_share__ = __webpack_require__(360);
3531/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_rxjs_add_operator_share___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_rxjs_add_operator_share__);
3532var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3533 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3534 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3535 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3536 return c > 3 && r && Object.defineProperty(target, key, r), r;
3537};
3538var __metadata = (this && this.__metadata) || function (k, v) {
3539 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3540};
3541
3542
3543
3544
3545
3546
3547
3548
3549var SvgRegistryService = (function () {
3550 function SvgRegistryService(http) {
3551 this.http = http;
3552 this.iconsByUrl = new Map();
3553 this.iconsLoadingByUrl = new Map();
3554 }
3555 SvgRegistryService.prototype.loadSvg = function (url) {
3556 var _this = this;
3557 if (this.iconsByUrl.has(url)) {
3558 return __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__["Observable"].of(this.iconsByUrl.get(url));
3559 }
3560 else if (this.iconsLoadingByUrl.has(url)) {
3561 return this.iconsLoadingByUrl.get(url);
3562 }
3563 else {
3564 var o = this.http.get(url, { responseType: 'text' })
3565 .map(function (svg) {
3566 var div = document.createElement('DIV');
3567 div.innerHTML = svg;
3568 return div.querySelector('svg');
3569 })
3570 .do(function (svg) {
3571 _this.iconsByUrl.set(url, svg);
3572 })
3573 .finally(function () {
3574 _this.iconsLoadingByUrl.delete(url);
3575 })
3576 .share();
3577 this.iconsLoadingByUrl.set(url, o);
3578 return o;
3579 }
3580 };
3581 SvgRegistryService.prototype.unloadSvg = function (url) {
3582 if (this.iconsByUrl.has(url)) {
3583 this.iconsByUrl.delete(url);
3584 }
3585 };
3586 return SvgRegistryService;
3587}());
3588SvgRegistryService = __decorate([
3589 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B" /* Injectable */])(),
3590 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_common_http__["b" /* HttpClient */]])
3591], SvgRegistryService);
3592
3593function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http) {
3594 return parentRegistry || new SvgRegistryService(http);
3595}
3596var SVG_ICON_REGISTRY_PROVIDER = {
3597 provide: SvgRegistryService,
3598 deps: [[new __WEBPACK_IMPORTED_MODULE_0__angular_core__["R" /* Optional */](), new __WEBPACK_IMPORTED_MODULE_0__angular_core__["_7" /* SkipSelf */](), SvgRegistryService], __WEBPACK_IMPORTED_MODULE_1__angular_common_http__["b" /* HttpClient */]],
3599 useFactory: SVG_ICON_REGISTRY_PROVIDER_FACTORY
3600};
3601//# sourceMappingURL=svg-registry.service.js.map
3602
3603/***/ }),
3604
3605/***/ 391:
3606/***/ (function(module, __webpack_exports__, __webpack_require__) {
3607
3608"use strict";
3609Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
3610/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_platform_browser_dynamic__ = __webpack_require__(392);
3611/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__app_module__ = __webpack_require__(396);
3612
3613
3614Object(__WEBPACK_IMPORTED_MODULE_0__angular_platform_browser_dynamic__["a" /* platformBrowserDynamic */])().bootstrapModule(__WEBPACK_IMPORTED_MODULE_1__app_module__["a" /* AppModule */]);
3615//# sourceMappingURL=main.js.map
3616
3617/***/ }),
3618
3619/***/ 396:
3620/***/ (function(module, __webpack_exports__, __webpack_require__) {
3621
3622"use strict";
3623/* unused harmony export createTranslateLoader */
3624/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AppModule; });
3625/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
3626/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser__ = __webpack_require__(45);
3627/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__angular_platform_browser_animations__ = __webpack_require__(397);
3628/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_ionic_angular__ = __webpack_require__(5);
3629/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__app_component__ = __webpack_require__(443);
3630/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ionic_native_network__ = __webpack_require__(62);
3631/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_ion_digit_keyboard_ion_digit_keyboard_module__ = __webpack_require__(445);
3632/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ionic_native_app_version__ = __webpack_require__(61);
3633/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ionic_native_facebook__ = __webpack_require__(255);
3634/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ionic_storage__ = __webpack_require__(247);
3635/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__pages_miner_miner__ = __webpack_require__(253);
3636/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__pages_wallet_wallet__ = __webpack_require__(85);
3637/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__pages_wallet_send_wallet_send__ = __webpack_require__(179);
3638/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__pages_wallet_receive_wallet_receive__ = __webpack_require__(180);
3639/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__pages_transaction_details_transaction_details__ = __webpack_require__(181);
3640/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__pages_value_value__ = __webpack_require__(178);
3641/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__pages_settings_settings__ = __webpack_require__(250);
3642/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__pages_settings_language_settings_language__ = __webpack_require__(175);
3643/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__pages_settings_password_settings_password__ = __webpack_require__(176);
3644/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__pages_settings_referral_settings_referral__ = __webpack_require__(100);
3645/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__pages_settings_pin_settings_pin__ = __webpack_require__(177);
3646/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__pages_tabs_tabs__ = __webpack_require__(249);
3647/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__pages_login_login__ = __webpack_require__(174);
3648/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__pages_login_pin_login_pin__ = __webpack_require__(52);
3649/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__pages_intro_intro__ = __webpack_require__(43);
3650/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__pages_forgot_pin_forgot_pin__ = __webpack_require__(182);
3651/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__pages_update_required_update_required__ = __webpack_require__(101);
3652/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__pages_help_help__ = __webpack_require__(84);
3653/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__pages_maintenance_maintenance__ = __webpack_require__(183);
3654/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__pages_account_not_confirmed_account_not_confirmed__ = __webpack_require__(51);
3655/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__pages_offline_offline__ = __webpack_require__(184);
3656/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pages_blocked_blocked__ = __webpack_require__(173);
3657/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__ionic_native_globalization__ = __webpack_require__(298);
3658/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__ionic_native_status_bar__ = __webpack_require__(296);
3659/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__ionic_native_splash_screen__ = __webpack_require__(297);
3660/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__providers_user_service_user_service__ = __webpack_require__(21);
3661/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__providers_error_alerts_error_alerts__ = __webpack_require__(87);
3662/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__ionic_native_clipboard__ = __webpack_require__(251);
3663/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__ionic_native_device__ = __webpack_require__(254);
3664/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__ionic_native_background_mode__ = __webpack_require__(140);
3665/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__ionic_native_in_app_browser__ = __webpack_require__(252);
3666/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41_ionic2_pincode_input__ = __webpack_require__(721);
3667/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__components_count_down_count_down_module__ = __webpack_require__(724);
3668/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__ngx_translate_core__ = __webpack_require__(13);
3669/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__ngx_translate_http_loader__ = __webpack_require__(726);
3670/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__angular_common_http__ = __webpack_require__(80);
3671/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__providers_user_service_token_interceptor__ = __webpack_require__(728);
3672/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__providers_user_service_jwt_helper__ = __webpack_require__(133);
3673/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__components_svg_svg_module__ = __webpack_require__(729);
3674/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__services_service_helper__ = __webpack_require__(82);
3675var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3676 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3677 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3678 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3679 return c > 3 && r && Object.defineProperty(target, key, r), r;
3680};
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732function createTranslateLoader(http) {
3733 return new __WEBPACK_IMPORTED_MODULE_44__ngx_translate_http_loader__["a" /* TranslateHttpLoader */](http, './assets/i18n/', '.json');
3734}
3735var AppModule = (function () {
3736 function AppModule() {
3737 }
3738 return AppModule;
3739}());
3740AppModule = __decorate([
3741 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["L" /* NgModule */])({
3742 declarations: [
3743 __WEBPACK_IMPORTED_MODULE_4__app_component__["a" /* MyApp */],
3744 __WEBPACK_IMPORTED_MODULE_10__pages_miner_miner__["a" /* MinerPage */],
3745 __WEBPACK_IMPORTED_MODULE_11__pages_wallet_wallet__["a" /* WalletPage */],
3746 __WEBPACK_IMPORTED_MODULE_12__pages_wallet_send_wallet_send__["a" /* WalletSendPage */],
3747 __WEBPACK_IMPORTED_MODULE_13__pages_wallet_receive_wallet_receive__["a" /* WalletReceivePage */],
3748 __WEBPACK_IMPORTED_MODULE_14__pages_transaction_details_transaction_details__["a" /* TransactionDetailsPage */],
3749 __WEBPACK_IMPORTED_MODULE_15__pages_value_value__["a" /* ValuePage */],
3750 __WEBPACK_IMPORTED_MODULE_16__pages_settings_settings__["a" /* SettingsPage */],
3751 __WEBPACK_IMPORTED_MODULE_17__pages_settings_language_settings_language__["a" /* SettingsLanguagePage */],
3752 __WEBPACK_IMPORTED_MODULE_18__pages_settings_password_settings_password__["a" /* SettingsPasswordPage */],
3753 __WEBPACK_IMPORTED_MODULE_19__pages_settings_referral_settings_referral__["a" /* SettingsReferralPage */],
3754 __WEBPACK_IMPORTED_MODULE_20__pages_settings_pin_settings_pin__["a" /* SettingsPinPage */],
3755 __WEBPACK_IMPORTED_MODULE_21__pages_tabs_tabs__["a" /* TabsPage */],
3756 __WEBPACK_IMPORTED_MODULE_22__pages_login_login__["a" /* LoginPage */],
3757 __WEBPACK_IMPORTED_MODULE_23__pages_login_pin_login_pin__["a" /* LoginPinPage */],
3758 __WEBPACK_IMPORTED_MODULE_24__pages_intro_intro__["a" /* IntroPage */],
3759 __WEBPACK_IMPORTED_MODULE_25__pages_forgot_pin_forgot_pin__["a" /* ForgotPinPage */],
3760 __WEBPACK_IMPORTED_MODULE_26__pages_update_required_update_required__["a" /* UpdateRequiredPage */],
3761 __WEBPACK_IMPORTED_MODULE_30__pages_offline_offline__["a" /* OfflinePage */],
3762 __WEBPACK_IMPORTED_MODULE_27__pages_help_help__["a" /* HelpPage */],
3763 __WEBPACK_IMPORTED_MODULE_28__pages_maintenance_maintenance__["a" /* MaintenancePage */],
3764 __WEBPACK_IMPORTED_MODULE_29__pages_account_not_confirmed_account_not_confirmed__["a" /* AccountNotConfirmedPage */],
3765 __WEBPACK_IMPORTED_MODULE_31__pages_blocked_blocked__["a" /* BlockedPage */]
3766 ],
3767 imports: [
3768 __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser__["a" /* BrowserModule */],
3769 __WEBPACK_IMPORTED_MODULE_2__angular_platform_browser_animations__["a" /* BrowserAnimationsModule */],
3770 __WEBPACK_IMPORTED_MODULE_3_ionic_angular__["i" /* IonicModule */].forRoot(__WEBPACK_IMPORTED_MODULE_4__app_component__["a" /* MyApp */], {}, {
3771 links: [
3772 { loadChildren: '../pages/account-not-confirmed/account-not-confirmed.module#AccountNotConfirmedPageModule', name: 'AccountNotConfirmedPage', segment: 'account-not-confirmed', priority: 'low', defaultHistory: [] },
3773 { loadChildren: '../pages/blocked/blocked.module#BlockedPageModule', name: 'BlockedPage', segment: 'blocked', priority: 'low', defaultHistory: [] },
3774 { loadChildren: '../pages/forgot-pin/forgot-pin.module#ForgotPinPageModule', name: 'ForgotPinPage', segment: 'forgot-pin', priority: 'low', defaultHistory: [] },
3775 { loadChildren: '../pages/intro/intro.module#IntroPageModule', name: 'IntroPage', segment: 'intro', priority: 'low', defaultHistory: [] },
3776 { loadChildren: '../pages/login-pin/login-pin.module#LoginPinPageModule', name: 'LoginPinPage', segment: 'login-pin', priority: 'low', defaultHistory: [] },
3777 { loadChildren: '../pages/login/login.module#LoginPageModule', name: 'LoginPage', segment: 'login', priority: 'low', defaultHistory: [] },
3778 { loadChildren: '../pages/maintenance/maintenance.module#MaintenancePageModule', name: 'MaintenancePage', segment: 'maintenance', priority: 'low', defaultHistory: [] },
3779 { loadChildren: '../pages/offline/offline.module#OfflinePageModule', name: 'OfflinePage', segment: 'offline', priority: 'low', defaultHistory: [] },
3780 { loadChildren: '../pages/settings-language/settings-language.module#SettingsLanguagePageModule', name: 'SettingsLanguagePage', segment: 'settings-language', priority: 'low', defaultHistory: [] },
3781 { loadChildren: '../pages/settings-password/settings-password.module#SettingsPasswordPageModule', name: 'SettingsPasswordPage', segment: 'settings-password', priority: 'low', defaultHistory: [] },
3782 { loadChildren: '../pages/settings-pin/settings-pin.module#SettingsPinPageModule', name: 'SettingsPinPage', segment: 'settings-pin', priority: 'low', defaultHistory: [] },
3783 { loadChildren: '../pages/settings-referral/settings-referral.module#SettingsReferralPageModule', name: 'SettingsReferralPage', segment: 'settings-referral', priority: 'low', defaultHistory: [] },
3784 { loadChildren: '../pages/transaction-details/transaction-details.module#TransactionDetailsPageModule', name: 'TransactionDetailsPage', segment: 'transaction-details', priority: 'low', defaultHistory: [] },
3785 { loadChildren: '../pages/update-required/update-required.module#UpdateRequiredPageModule', name: 'UpdateRequiredPage', segment: 'update-required', priority: 'low', defaultHistory: [] },
3786 { loadChildren: '../pages/value/value.module#ValuePageModule', name: 'ValuePage', segment: 'value', priority: 'low', defaultHistory: [] },
3787 { loadChildren: '../pages/wallet-receive/wallet-receive.module#WalletReceivePageModule', name: 'WalletReceivePage', segment: 'wallet-receive', priority: 'low', defaultHistory: [] },
3788 { loadChildren: '../pages/wallet-send/wallet-send.module#WalletSendPageModule', name: 'WalletSendPage', segment: 'wallet-send', priority: 'low', defaultHistory: [] }
3789 ]
3790 }),
3791 __WEBPACK_IMPORTED_MODULE_45__angular_common_http__["c" /* HttpClientModule */],
3792 __WEBPACK_IMPORTED_MODULE_43__ngx_translate_core__["b" /* TranslateModule */].forRoot({
3793 loader: {
3794 provide: __WEBPACK_IMPORTED_MODULE_43__ngx_translate_core__["a" /* TranslateLoader */],
3795 useFactory: (createTranslateLoader),
3796 deps: [__WEBPACK_IMPORTED_MODULE_45__angular_common_http__["b" /* HttpClient */]]
3797 }
3798 }),
3799 __WEBPACK_IMPORTED_MODULE_9__ionic_storage__["a" /* IonicStorageModule */].forRoot(),
3800 __WEBPACK_IMPORTED_MODULE_6__components_ion_digit_keyboard_ion_digit_keyboard_module__["a" /* IonDigitKeyboard */],
3801 __WEBPACK_IMPORTED_MODULE_41_ionic2_pincode_input__["PincodeInputModule"],
3802 __WEBPACK_IMPORTED_MODULE_42__components_count_down_count_down_module__["a" /* CountDownComponentModule */],
3803 __WEBPACK_IMPORTED_MODULE_48__components_svg_svg_module__["a" /* SvgComponentsModule */]
3804 ],
3805 bootstrap: [__WEBPACK_IMPORTED_MODULE_3_ionic_angular__["g" /* IonicApp */]],
3806 entryComponents: [
3807 __WEBPACK_IMPORTED_MODULE_4__app_component__["a" /* MyApp */],
3808 __WEBPACK_IMPORTED_MODULE_10__pages_miner_miner__["a" /* MinerPage */],
3809 __WEBPACK_IMPORTED_MODULE_11__pages_wallet_wallet__["a" /* WalletPage */],
3810 __WEBPACK_IMPORTED_MODULE_12__pages_wallet_send_wallet_send__["a" /* WalletSendPage */],
3811 __WEBPACK_IMPORTED_MODULE_13__pages_wallet_receive_wallet_receive__["a" /* WalletReceivePage */],
3812 __WEBPACK_IMPORTED_MODULE_14__pages_transaction_details_transaction_details__["a" /* TransactionDetailsPage */],
3813 __WEBPACK_IMPORTED_MODULE_15__pages_value_value__["a" /* ValuePage */],
3814 __WEBPACK_IMPORTED_MODULE_16__pages_settings_settings__["a" /* SettingsPage */],
3815 __WEBPACK_IMPORTED_MODULE_17__pages_settings_language_settings_language__["a" /* SettingsLanguagePage */],
3816 __WEBPACK_IMPORTED_MODULE_18__pages_settings_password_settings_password__["a" /* SettingsPasswordPage */],
3817 __WEBPACK_IMPORTED_MODULE_19__pages_settings_referral_settings_referral__["a" /* SettingsReferralPage */],
3818 __WEBPACK_IMPORTED_MODULE_20__pages_settings_pin_settings_pin__["a" /* SettingsPinPage */],
3819 __WEBPACK_IMPORTED_MODULE_21__pages_tabs_tabs__["a" /* TabsPage */],
3820 __WEBPACK_IMPORTED_MODULE_22__pages_login_login__["a" /* LoginPage */],
3821 __WEBPACK_IMPORTED_MODULE_23__pages_login_pin_login_pin__["a" /* LoginPinPage */],
3822 __WEBPACK_IMPORTED_MODULE_24__pages_intro_intro__["a" /* IntroPage */],
3823 __WEBPACK_IMPORTED_MODULE_25__pages_forgot_pin_forgot_pin__["a" /* ForgotPinPage */],
3824 __WEBPACK_IMPORTED_MODULE_26__pages_update_required_update_required__["a" /* UpdateRequiredPage */],
3825 __WEBPACK_IMPORTED_MODULE_30__pages_offline_offline__["a" /* OfflinePage */],
3826 __WEBPACK_IMPORTED_MODULE_27__pages_help_help__["a" /* HelpPage */],
3827 __WEBPACK_IMPORTED_MODULE_28__pages_maintenance_maintenance__["a" /* MaintenancePage */],
3828 __WEBPACK_IMPORTED_MODULE_29__pages_account_not_confirmed_account_not_confirmed__["a" /* AccountNotConfirmedPage */],
3829 __WEBPACK_IMPORTED_MODULE_31__pages_blocked_blocked__["a" /* BlockedPage */]
3830 ],
3831 providers: [
3832 __WEBPACK_IMPORTED_MODULE_33__ionic_native_status_bar__["a" /* StatusBar */],
3833 __WEBPACK_IMPORTED_MODULE_34__ionic_native_splash_screen__["a" /* SplashScreen */],
3834 __WEBPACK_IMPORTED_MODULE_8__ionic_native_facebook__["a" /* Facebook */],
3835 { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["v" /* ErrorHandler */], useClass: __WEBPACK_IMPORTED_MODULE_3_ionic_angular__["h" /* IonicErrorHandler */] },
3836 __WEBPACK_IMPORTED_MODULE_35__providers_user_service_user_service__["a" /* UserServiceProvider */],
3837 __WEBPACK_IMPORTED_MODULE_36__providers_error_alerts_error_alerts__["a" /* ErrorAlert */],
3838 __WEBPACK_IMPORTED_MODULE_37__ionic_native_clipboard__["a" /* Clipboard */],
3839 __WEBPACK_IMPORTED_MODULE_5__ionic_native_network__["a" /* Network */],
3840 __WEBPACK_IMPORTED_MODULE_7__ionic_native_app_version__["a" /* AppVersion */],
3841 __WEBPACK_IMPORTED_MODULE_32__ionic_native_globalization__["a" /* Globalization */],
3842 __WEBPACK_IMPORTED_MODULE_38__ionic_native_device__["a" /* Device */],
3843 __WEBPACK_IMPORTED_MODULE_39__ionic_native_background_mode__["a" /* BackgroundMode */],
3844 __WEBPACK_IMPORTED_MODULE_40__ionic_native_in_app_browser__["a" /* InAppBrowser */],
3845 __WEBPACK_IMPORTED_MODULE_47__providers_user_service_jwt_helper__["a" /* JwtHelper */],
3846 {
3847 provide: __WEBPACK_IMPORTED_MODULE_45__angular_common_http__["a" /* HTTP_INTERCEPTORS */],
3848 useClass: __WEBPACK_IMPORTED_MODULE_46__providers_user_service_token_interceptor__["a" /* TokenInterceptor */],
3849 multi: true
3850 },
3851 __WEBPACK_IMPORTED_MODULE_49__services_service_helper__["a" /* ServiceHelper */]
3852 ]
3853 })
3854], AppModule);
3855
3856//# sourceMappingURL=app.module.js.map
3857
3858/***/ }),
3859
3860/***/ 43:
3861/***/ (function(module, __webpack_exports__, __webpack_require__) {
3862
3863"use strict";
3864/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IntroPage; });
3865/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
3866/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
3867/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__login_login__ = __webpack_require__(174);
3868/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__login_pin_login_pin__ = __webpack_require__(52);
3869/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__account_not_confirmed_account_not_confirmed__ = __webpack_require__(51);
3870/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__providers_user_service_user_service__ = __webpack_require__(21);
3871/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ionic_native_facebook__ = __webpack_require__(255);
3872/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__ = __webpack_require__(13);
3873var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3874 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3875 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3876 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3877 return c > 3 && r && Object.defineProperty(target, key, r), r;
3878};
3879var __metadata = (this && this.__metadata) || function (k, v) {
3880 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3881};
3882
3883
3884
3885
3886
3887
3888
3889
3890/**
3891 * Generated class for the IntroPage page.
3892 *
3893 * See http://ionicframework.com/docs/components/#navigation for more info
3894 * on Ionic pages and navigation.
3895 */
3896var IntroPage = (function () {
3897 function IntroPage(navCtrl, navParams, api, facebook, alertCtrl, loaderCrtl, translateService) {
3898 this.navCtrl = navCtrl;
3899 this.navParams = navParams;
3900 this.api = api;
3901 this.facebook = facebook;
3902 this.alertCtrl = alertCtrl;
3903 this.loaderCrtl = loaderCrtl;
3904 this.translateService = translateService;
3905 }
3906 // Function to shorthand translations
3907 IntroPage.prototype.trans = function (key) {
3908 return this.translateService.instant(key);
3909 };
3910 IntroPage.prototype.ionViewDidLoad = function () {
3911 };
3912 IntroPage.prototype.loginBySocial = function (type) {
3913 var _this = this;
3914 this.facebook.login(['public_profile', 'email'])
3915 .then(function (res) {
3916 // API CALL
3917 var loader = _this.loaderCrtl.create({
3918 content: _this.trans("into.ts.loader.checking.content")
3919 });
3920 loader.present();
3921 _this.api.loginBySocial(res.authResponse.accessToken)
3922 .then(function (res) {
3923 loader.dismiss();
3924 if (res.status == 1) {
3925 if (res.account_active != '') {
3926 _this.navCtrl.push(__WEBPACK_IMPORTED_MODULE_4__account_not_confirmed_account_not_confirmed__["a" /* AccountNotConfirmedPage */]);
3927 }
3928 else {
3929 _this.navCtrl.push(__WEBPACK_IMPORTED_MODULE_3__login_pin_login_pin__["a" /* LoginPinPage */]);
3930 }
3931 }
3932 else {
3933 var alert_1 = _this.alertCtrl.create({
3934 title: _this.trans("global.alert.error.occured.title"),
3935 subTitle: 'Facebook login error, please try again.',
3936 buttons: [{
3937 text: _this.trans("global.alert.button.retry"),
3938 handler: function () {
3939 _this.loginBySocial(type);
3940 }
3941 }, {
3942 text: _this.trans("global.alert.button.cancel"),
3943 handler: function () {
3944 alert_1.dismiss();
3945 }
3946 }]
3947 });
3948 alert_1.present();
3949 }
3950 }, function (err) {
3951 var alert;
3952 switch (err.status) {
3953 case 2:
3954 alert = _this.alertCtrl.create({
3955 title: err.title,
3956 message: err.message,
3957 buttons: [{
3958 text: err.buttons.cancel,
3959 role: 'cancel',
3960 handler: function () {
3961 // Close the alert
3962 return;
3963 }
3964 }, {
3965 text: err.buttons.retry,
3966 handler: function () {
3967 // UserServiceProvider
3968 if (_this.api.isOnline()) {
3969 _this.loginBySocial(type);
3970 }
3971 else {
3972 alert.present();
3973 }
3974 return false;
3975 }
3976 }]
3977 });
3978 break;
3979 case 3:
3980 alert = _this.alertCtrl.create({
3981 title: err.title,
3982 message: err.message,
3983 buttons: [{
3984 text: err.buttons.cancel,
3985 role: 'cancel',
3986 handler: function () {
3987 // Close the alert
3988 return;
3989 }
3990 }]
3991 });
3992 break;
3993 default:
3994 alert = _this.alertCtrl.create({
3995 title: _this.trans("global.alert.error.occured.title"),
3996 subTitle: _this.trans("global.alert.error.code") + '3000',
3997 message: _this.trans("global.alert.error.unable.to.connect"),
3998 buttons: [{
3999 text: _this.trans("global.alert.button.retry"),
4000 handler: function () {
4001 _this.loginBySocial(type);
4002 }
4003 }, {
4004 text: _this.trans("global.alert.button.cancel"),
4005 role: 'cancel',
4006 handler: function () {
4007 // Close the alert
4008 return;
4009 }
4010 }]
4011 });
4012 }
4013 loader.dismiss();
4014 alert.present();
4015 }).catch(function (err) {
4016 var alert = _this.alertCtrl.create({
4017 title: _this.trans("global.alert.error.occured.title"),
4018 subTitle: _this.trans("global.alert.error.code") + '3010',
4019 message: _this.trans("global.alert.error.unable.to.connect"),
4020 buttons: [{
4021 text: _this.trans("global.alert.button.retry"),
4022 handler: function () {
4023 _this.loginBySocial(type);
4024 }
4025 }, {
4026 text: _this.trans("global.alert.button.cancel"),
4027 role: 'cancel',
4028 handler: function () {
4029 // Close the alert
4030 return;
4031 }
4032 }]
4033 });
4034 alert.present();
4035 });
4036 //this.navCtrl.push(LoginPinPage);
4037 }).catch(function (e) {
4038 console.log(e);
4039 });
4040 };
4041 IntroPage.prototype.showLogin = function () {
4042 this.navCtrl.push(__WEBPACK_IMPORTED_MODULE_2__login_login__["a" /* LoginPage */]);
4043 };
4044 return IntroPage;
4045}());
4046IntroPage = __decorate([
4047 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
4048 selector: 'page-intro',template:/*ion-inline-start:"/usr/src/app/src/pages/intro/intro.html"*/'<!--\n Generated template for the IntroPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-content text-center>\n <div class="bg-vid"></div>\n <div padding>\n <ion-row margin-bottom>\n <ion-col>\n <img class="intro-logo" src="assets/images/logo.png" />\n <div class="intro-text">\n <div>{{ "global.logo.text" | translate }}</div>\n <div>{{ "global.strapline" | translate }}</div>\n </div>\n </ion-col>\n </ion-row>\n <div text-center class="login-create-row cf">\n <button ion-button color="primary" (click)="showLogin()" full margin-bottom>{{ "intro.button.login" | translate }}</button>\n <button ion-button color="facebook" icon-left full (click)="loginBySocial(\'facebook\')"><ion-icon name="icon-facebook"></ion-icon>{{ "intro.button.login.facebook" | translate }}</button>\n </div>\n <div class="divider"><span>{{ "intro.separator" | translate }}</span></div>\n <div text-center>\n <button ion-button outline color="light" class="social-login" onClick="window.open(\'https://my.electroneum.com/register\',\'_system\',\'location=yes\');return false;" full>{{ "intro.button.sign.up.via.website" | translate }}</button>\n </div>\n </div>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/intro/intro.html"*/,
4049 providers: [__WEBPACK_IMPORTED_MODULE_5__providers_user_service_user_service__["a" /* UserServiceProvider */]]
4050 }),
4051 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
4052 __WEBPACK_IMPORTED_MODULE_5__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_6__ionic_native_facebook__["a" /* Facebook */],
4053 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */], __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__["c" /* TranslateService */]])
4054], IntroPage);
4055
4056//# sourceMappingURL=intro.js.map
4057
4058/***/ }),
4059
4060/***/ 443:
4061/***/ (function(module, __webpack_exports__, __webpack_require__) {
4062
4063"use strict";
4064/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MyApp; });
4065/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
4066/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
4067/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_status_bar__ = __webpack_require__(296);
4068/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ionic_native_network__ = __webpack_require__(62);
4069/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ionic_native_splash_screen__ = __webpack_require__(297);
4070/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__pages_intro_intro__ = __webpack_require__(43);
4071/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__pages_login_pin_login_pin__ = __webpack_require__(52);
4072/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__pages_account_not_confirmed_account_not_confirmed__ = __webpack_require__(51);
4073/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__pages_update_required_update_required__ = __webpack_require__(101);
4074/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__pages_offline_offline__ = __webpack_require__(184);
4075/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__pages_maintenance_maintenance__ = __webpack_require__(183);
4076/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__ionic_native_app_version__ = __webpack_require__(61);
4077/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__providers_user_service_user_service__ = __webpack_require__(21);
4078/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__ngx_translate_core__ = __webpack_require__(13);
4079/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__ionic_native_globalization__ = __webpack_require__(298);
4080/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__ = __webpack_require__(444);
4081/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__services_service_helper__ = __webpack_require__(82);
4082var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4083 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4084 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4085 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4086 return c > 3 && r && Object.defineProperty(target, key, r), r;
4087};
4088var __metadata = (this && this.__metadata) || function (k, v) {
4089 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4090};
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108var MyApp = (function () {
4109 function MyApp(globalization, loadingCtrl, platform, statusBar, splashScreen, app, toastCtrl, apiProvider, network, alertCtrl, translateService, serviceHelper, appVersion) {
4110 var _this = this;
4111 this.globalization = globalization;
4112 this.loadingCtrl = loadingCtrl;
4113 this.platform = platform;
4114 this.statusBar = statusBar;
4115 this.splashScreen = splashScreen;
4116 this.app = app;
4117 this.toastCtrl = toastCtrl;
4118 this.apiProvider = apiProvider;
4119 this.network = network;
4120 this.alertCtrl = alertCtrl;
4121 this.translateService = translateService;
4122 this.serviceHelper = serviceHelper;
4123 this.appVersion = appVersion;
4124 translateService.setDefaultLang('en');
4125 platform.ready().then(function () {
4126 // Okay, so the platform is ready and our plugins are available.
4127 // Here you can do any higher level native things you might need.
4128 // statusBar.styleDefault();
4129 // Check if we are running in browser or phone and set the language
4130 if (window.cordova) {
4131 _this.globalization.getPreferredLanguage().then(function (result) {
4132 var language;
4133 if (localStorage.getItem('_lang') != null) {
4134 language = localStorage.getItem('_lang');
4135 }
4136 else {
4137 language = _this.getSuitableLanguage(result.value);
4138 }
4139 translateService.use(language);
4140 __WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__["c" /* sysOptions */].systemLanguage = language;
4141 });
4142 }
4143 else {
4144 var browserLanguage;
4145 if (localStorage.getItem('_lang') != null) {
4146 browserLanguage = localStorage.getItem('_lang');
4147 }
4148 else {
4149 browserLanguage = translateService.getBrowserLang() || __WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__["b" /* defaultLanguage */];
4150 }
4151 var language = _this.getSuitableLanguage(browserLanguage);
4152 translateService.use(language);
4153 __WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__["c" /* sysOptions */].systemLanguage = language;
4154 }
4155 // END language check
4156 if (apiProvider.isOffline()) {
4157 _this.rootPage = __WEBPACK_IMPORTED_MODULE_9__pages_offline_offline__["a" /* OfflinePage */];
4158 splashScreen.hide();
4159 return;
4160 }
4161 platform.registerBackButtonAction(function () {
4162 var nav = app.getActiveNavs()[0];
4163 var activeView = nav.getActive();
4164 if (nav.canGoBack()) {
4165 nav.pop();
4166 }
4167 else if (activeView.name == "ModalCmp") {
4168 activeView.dismiss();
4169 }
4170 else {
4171 if (_this.backButtonPressedOnceToExit) {
4172 _this.platform.exitApp();
4173 }
4174 else {
4175 var toast = _this.toastCtrl.create({
4176 message: _this.trans("global.toast.exit.app.message"),
4177 duration: 2000,
4178 position: 'bottom'
4179 });
4180 toast.present();
4181 _this.backButtonPressedOnceToExit = true;
4182 setTimeout(function () {
4183 _this.backButtonPressedOnceToExit = false;
4184 }, 2000);
4185 }
4186 }
4187 });
4188 if (_this.platform.is('mobileweb') || _this.platform.is('core')) {
4189 _this.loadApp('2.2.2');
4190 }
4191 else {
4192 _this.appVersion.getVersionNumber().then(function (version) {
4193 _this.loadApp(version);
4194 });
4195 }
4196 });
4197 }
4198 // determine the suitable language for the app based on the device language
4199 MyApp.prototype.getSuitableLanguage = function (fullLanguage) {
4200 var language = fullLanguage.substring(0, 2).toLowerCase();
4201 return (__WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__["a" /* availableLanguages */].some(function (x) { return x.code == fullLanguage.toLowerCase(); }) ? fullLanguage.toLowerCase() : (__WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__["a" /* availableLanguages */].some(function (x) { return x.code == language; }) ? language : __WEBPACK_IMPORTED_MODULE_15__assets_i18n_i18n_languages_constants__["b" /* defaultLanguage */]));
4202 };
4203 // Function to shorthand translations
4204 MyApp.prototype.trans = function (key, variables) {
4205 if (variables === void 0) { variables = null; }
4206 return this.translateService.instant(key, variables);
4207 };
4208 MyApp.prototype.loadApp = function (version) {
4209 var _this = this;
4210 this.apiProvider.getAppVersion(version)
4211 .then(function (resp) {
4212 // An update is require but lets see if we need to force this update
4213 if (resp.update) {
4214 _this.splashScreen.hide();
4215 // Do we require a force update?
4216 if (resp.force) {
4217 _this.rootPage = __WEBPACK_IMPORTED_MODULE_8__pages_update_required_update_required__["a" /* UpdateRequiredPage */];
4218 return;
4219 }
4220 else {
4221 var alert_1 = _this.alertCtrl.create({
4222 title: _this.trans("app.component.ts.alert.update.available.title"),
4223 message: _this.trans("app.component.ts.alert.update.optional.text", { installedVersion: version, latestVersion: resp.version }),
4224 buttons: [{
4225 text: _this.trans("app.component.ts.alert.update.button.go.to.google.play"),
4226 handler: function () {
4227 // Redirect
4228 window.open('https://play.google.com/store/apps/details?id=com.electroneum.mobile', '_system', 'location=yes');
4229 return;
4230 }
4231 }, {
4232 text: _this.trans("global.pincode.button.later"),
4233 handler: function () {
4234 }
4235 }]
4236 });
4237 alert_1.present();
4238 }
4239 }
4240 // We are currently in maintenance
4241 if (resp.maintenance) {
4242 _this.rootPage = __WEBPACK_IMPORTED_MODULE_10__pages_maintenance_maintenance__["a" /* MaintenancePage */];
4243 return;
4244 }
4245 // Check to see if the user is login
4246 _this.apiProvider.loggedIn()
4247 .then(function (data) {
4248 _this.splashScreen.hide();
4249 // Check to see if the user is login
4250 if (data.status == 1 && data.loggedIn) {
4251 // Do they require to setup their pin
4252 if (data.account_active != '') {
4253 _this.rootPage = __WEBPACK_IMPORTED_MODULE_7__pages_account_not_confirmed_account_not_confirmed__["a" /* AccountNotConfirmedPage */];
4254 }
4255 else {
4256 _this.rootPage = __WEBPACK_IMPORTED_MODULE_6__pages_login_pin_login_pin__["a" /* LoginPinPage */];
4257 }
4258 }
4259 else {
4260 _this.rootPage = __WEBPACK_IMPORTED_MODULE_5__pages_intro_intro__["a" /* IntroPage */];
4261 }
4262 }, function (err) {
4263 _this.splashScreen.hide();
4264 // User not login
4265 _this.rootPage = __WEBPACK_IMPORTED_MODULE_5__pages_intro_intro__["a" /* IntroPage */];
4266 });
4267 }, function (err) {
4268 console.log('Error status: ', err.status);
4269 var buttons;
4270 _this.splashScreen.hide();
4271 switch (err.status) {
4272 case 2:
4273 buttons = [
4274 {
4275 text: err.buttons.retry,
4276 handler: function () {
4277 if (_this.apiProvider.isOnline()) {
4278 _this.serviceHelper.hideAlert();
4279 }
4280 else {
4281 _this.serviceHelper.reShowAlert();
4282 }
4283 return false;
4284 }
4285 }, {
4286 text: err.buttons.cancel,
4287 role: 'cancel'
4288 }
4289 ];
4290 _this.serviceHelper.showAlert(err.title, '', err.message, buttons);
4291 break;
4292 // Custom Messages
4293 case 3:
4294 buttons = [{
4295 text: err.buttons.cancel,
4296 role: 'cancel'
4297 }
4298 ];
4299 _this.serviceHelper.showAlert(err.title, '', err.message, buttons);
4300 break;
4301 default:
4302 buttons = [{
4303 text: _this.trans("global.alert.button.retry"),
4304 handler: function () {
4305 _this.splashScreen.show();
4306 _this.loadApp(version);
4307 }
4308 }];
4309 _this.serviceHelper.showAlert(_this.trans("global.alert.high.traffic.title"), _this.trans("global.alert.high.traffic.subtitle"), _this.trans("global.alert.high.traffic.message"), buttons);
4310 }
4311 });
4312 };
4313 return MyApp;
4314}());
4315MyApp = __decorate([
4316 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({template:/*ion-inline-start:"/usr/src/app/src/app/app.html"*/'<ion-nav [root]="rootPage"></ion-nav>\n'/*ion-inline-end:"/usr/src/app/src/app/app.html"*/,
4317 providers: [__WEBPACK_IMPORTED_MODULE_12__providers_user_service_user_service__["a" /* UserServiceProvider */]]
4318 }),
4319 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_14__ionic_native_globalization__["a" /* Globalization */],
4320 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
4321 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */],
4322 __WEBPACK_IMPORTED_MODULE_2__ionic_native_status_bar__["a" /* StatusBar */],
4323 __WEBPACK_IMPORTED_MODULE_4__ionic_native_splash_screen__["a" /* SplashScreen */],
4324 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */],
4325 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["p" /* ToastController */],
4326 __WEBPACK_IMPORTED_MODULE_12__providers_user_service_user_service__["a" /* UserServiceProvider */],
4327 __WEBPACK_IMPORTED_MODULE_3__ionic_native_network__["a" /* Network */],
4328 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
4329 __WEBPACK_IMPORTED_MODULE_13__ngx_translate_core__["c" /* TranslateService */],
4330 __WEBPACK_IMPORTED_MODULE_16__services_service_helper__["a" /* ServiceHelper */],
4331 __WEBPACK_IMPORTED_MODULE_11__ionic_native_app_version__["a" /* AppVersion */]])
4332], MyApp);
4333
4334//# sourceMappingURL=app.component.js.map
4335
4336/***/ }),
4337
4338/***/ 444:
4339/***/ (function(module, __webpack_exports__, __webpack_require__) {
4340
4341"use strict";
4342/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return availableLanguages; });
4343/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return defaultLanguage; });
4344/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return sysOptions; });
4345var availableLanguages = [{
4346 code: 'ar',
4347 name: 'Arabic'
4348 },
4349 {
4350 code: 'de',
4351 name: 'German'
4352 },
4353 {
4354 code: 'en',
4355 name: 'English'
4356 },
4357 {
4358 code: 'es',
4359 name: 'Spanish'
4360 },
4361 {
4362 code: 'fr',
4363 name: 'French'
4364 },
4365 {
4366 code: 'he',
4367 name: 'Hebrew'
4368 },
4369 {
4370 code: 'hi',
4371 name: 'Hindi'
4372 },
4373 {
4374 code: 'in',
4375 name: 'Indonisian'
4376 },
4377 {
4378 code: 'it',
4379 name: 'Italian'
4380 },
4381 {
4382 code: 'ja',
4383 name: 'Japanese'
4384 },
4385 {
4386 code: 'ko',
4387 name: 'Korean'
4388 },
4389 {
4390 code: 'nl',
4391 name: 'Dutch'
4392 },
4393 {
4394 code: 'pt',
4395 name: 'Portugese'
4396 },
4397 {
4398 code: 'pt-br',
4399 name: 'Brazilian Portuguese'
4400 },
4401 {
4402 code: 'ro',
4403 name: 'Romanian'
4404 },
4405 {
4406 code: 'ru',
4407 name: 'Russian'
4408 },
4409 {
4410 code: 'th',
4411 name: 'Thai'
4412 },
4413 {
4414 code: 'tr',
4415 name: 'Turkish'
4416 },
4417 {
4418 code: 'ur',
4419 name: 'Urdu'
4420 },
4421 {
4422 code: 'zh',
4423 name: 'Chinese'
4424 }];
4425var defaultLanguage = 'en';
4426var sysOptions = {
4427 systemLanguage: defaultLanguage
4428};
4429//# sourceMappingURL=i18n-languages.constants.js.map
4430
4431/***/ }),
4432
4433/***/ 445:
4434/***/ (function(module, __webpack_exports__, __webpack_require__) {
4435
4436"use strict";
4437/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IonDigitKeyboard; });
4438/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
4439/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_common__ = __webpack_require__(38);
4440/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_ionic_angular__ = __webpack_require__(5);
4441/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components__ = __webpack_require__(446);
4442/**
4443 * @name IonDigitKeyboard
4444 * @description A digital keyboard for Ionic 2.
4445 * @author Skol (Vincent Letellier)
4446 * @see {@link https://github.com/skol-pro/ion-digit-keyboard-v2 Ionic 2 Digit Keyboard}
4447 *
4448 */
4449var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4450 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4451 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4452 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4453 return c > 3 && r && Object.defineProperty(target, key, r), r;
4454};
4455// @TODO Create toolbar service ?
4456
4457
4458
4459
4460var IonDigitKeyboard = (function () {
4461 function IonDigitKeyboard() {
4462 }
4463 return IonDigitKeyboard;
4464}());
4465IonDigitKeyboard = __decorate([
4466 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["L" /* NgModule */])({
4467 imports: [
4468 __WEBPACK_IMPORTED_MODULE_1__angular_common__["b" /* CommonModule */],
4469 __WEBPACK_IMPORTED_MODULE_2_ionic_angular__["i" /* IonicModule */]
4470 ],
4471 declarations: [
4472 __WEBPACK_IMPORTED_MODULE_3__components__["a" /* IonDigitKeyboardCmp */]
4473 ],
4474 providers: [],
4475 exports: [__WEBPACK_IMPORTED_MODULE_3__components__["a" /* IonDigitKeyboardCmp */]]
4476 })
4477], IonDigitKeyboard);
4478
4479//# sourceMappingURL=ion-digit-keyboard.module.js.map
4480
4481/***/ }),
4482
4483/***/ 446:
4484/***/ (function(module, __webpack_exports__, __webpack_require__) {
4485
4486"use strict";
4487/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ion_digit_keyboard_cmp_ion_digit_keyboard_cmp__ = __webpack_require__(447);
4488/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__ion_digit_keyboard_cmp_ion_digit_keyboard_cmp__["a"]; });
4489
4490//# sourceMappingURL=index.js.map
4491
4492/***/ }),
4493
4494/***/ 447:
4495/***/ (function(module, __webpack_exports__, __webpack_require__) {
4496
4497"use strict";
4498/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IonDigitKeyboardCmp; });
4499/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
4500/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular_gestures_gesture__ = __webpack_require__(291);
4501/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_Rx__ = __webpack_require__(448);
4502/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_Rx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_rxjs_Rx__);
4503var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4504 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4505 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4506 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4507 return c > 3 && r && Object.defineProperty(target, key, r), r;
4508};
4509var __metadata = (this && this.__metadata) || function (k, v) {
4510 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4511};
4512
4513
4514
4515var IonDigitKeyboardCmp = (function () {
4516 function IonDigitKeyboardCmp(el, renderer) {
4517 this.el = el;
4518 this.renderer = renderer;
4519 this.buttonClick = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["w" /* EventEmitter */]();
4520 this.leftActionClick = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["w" /* EventEmitter */]();
4521 this.rightActionClick = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["w" /* EventEmitter */]();
4522 this.numberClick = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["w" /* EventEmitter */]();
4523 //@Output() onShow: EventEmitter<any> = new EventEmitter();
4524 //@Output() onHide: EventEmitter<any> = new EventEmitter();
4525 this.zoom = 1;
4526 this.themes = ['light', 'dark', 'ionic', 'opaque-black', 'opaque-white', 'dusk', 'nepal', 'alihossein', 'messenger'];
4527 this.animations = ['slide', 'pop']; // @TODO
4528 // Observables
4529 this.clickSub = new __WEBPACK_IMPORTED_MODULE_2_rxjs_Rx__["Subject"]();
4530 this.showSub = new __WEBPACK_IMPORTED_MODULE_2_rxjs_Rx__["Subject"]();
4531 this.hideSub = new __WEBPACK_IMPORTED_MODULE_2_rxjs_Rx__["Subject"]();
4532 this._align = 'center';
4533 this._animation = 'default'; // @TODO
4534 this._theme = 'ionic';
4535 this._leftActionOptions = { visibility: 'hidden' };
4536 this._rightActionOptions = { visibility: 'hidden' };
4537 this.visible = true;
4538 this.roundButtons = false;
4539 this.showLetters = true;
4540 this.swipeToHide = true;
4541 this.resize = undefined; // @TODO: Implement content resizing
4542 }
4543 Object.defineProperty(IonDigitKeyboardCmp.prototype, "onClick", {
4544 get: function () { return this.clickSub; },
4545 enumerable: true,
4546 configurable: true
4547 });
4548 Object.defineProperty(IonDigitKeyboardCmp.prototype, "onShow", {
4549 get: function () { return this.showSub; },
4550 enumerable: true,
4551 configurable: true
4552 });
4553 Object.defineProperty(IonDigitKeyboardCmp.prototype, "onHide", {
4554 get: function () { return this.hideSub; },
4555 enumerable: true,
4556 configurable: true
4557 });
4558 Object.defineProperty(IonDigitKeyboardCmp.prototype, "align", {
4559 get: function () { return this._align; },
4560 set: function (v) {
4561 ['left', 'center', 'right'].indexOf(v) > -1 ? this._align = v : this.log('Invalid [align] value "' + v + '".', 'error');
4562 },
4563 enumerable: true,
4564 configurable: true
4565 });
4566 Object.defineProperty(IonDigitKeyboardCmp.prototype, "animation", {
4567 get: function () { return this._animation; },
4568 set: function (v) {
4569 this.animations.indexOf(v) > -1 ? this._animation = v : this.log('Invalid [animation] value "' + v + '".', 'error');
4570 },
4571 enumerable: true,
4572 configurable: true
4573 });
4574 Object.defineProperty(IonDigitKeyboardCmp.prototype, "theme", {
4575 get: function () { return this._theme; },
4576 set: function (v) {
4577 this.themes.indexOf(v) > -1 ? this._theme = v : this.log('Invalid [theme] value "' + v + '".', 'error');
4578 },
4579 enumerable: true,
4580 configurable: true
4581 });
4582 Object.defineProperty(IonDigitKeyboardCmp.prototype, "width", {
4583 get: function () { return this._width; },
4584 set: function (v) {
4585 var isPercent = String(v).indexOf('%') > -1 ? true : false;
4586 this._width = parseInt(v) + (isPercent ? '%' : 'px');
4587 },
4588 enumerable: true,
4589 configurable: true
4590 });
4591 Object.defineProperty(IonDigitKeyboardCmp.prototype, "leftActionOptions", {
4592 set: function (v) {
4593 if (typeof v == 'object') {
4594 this._leftActionOptions.visibility = 'visible';
4595 for (var opt in v) {
4596 if (opt == 'hidden') {
4597 this._leftActionOptions.visibility = (v[opt] ? 'hidden' : 'visible');
4598 }
4599 else {
4600 this._leftActionOptions[opt] = v[opt];
4601 }
4602 }
4603 }
4604 if (typeof v == 'boolean') {
4605 this._leftActionOptions.visibility = (v ? 'visible' : 'hidden');
4606 if (v === true)
4607 this.log('Left action button is set to "true", an empty button is displayed.');
4608 }
4609 },
4610 enumerable: true,
4611 configurable: true
4612 });
4613 Object.defineProperty(IonDigitKeyboardCmp.prototype, "leftAction", {
4614 get: function () { return this._leftActionOptions; },
4615 enumerable: true,
4616 configurable: true
4617 });
4618 Object.defineProperty(IonDigitKeyboardCmp.prototype, "rightActionOptions", {
4619 set: function (v) {
4620 if (typeof v == 'object') {
4621 this._rightActionOptions.visibility = 'visible';
4622 for (var opt in v) {
4623 if (opt == 'hidden') {
4624 this._rightActionOptions.visibility = (v[opt] ? 'hidden' : 'visible');
4625 }
4626 else {
4627 this._rightActionOptions[opt] = v[opt];
4628 }
4629 }
4630 }
4631 if (typeof v == 'boolean') {
4632 this._rightActionOptions.visibility = (v ? 'visible' : 'hidden');
4633 if (v === true)
4634 this.log('Right action button is set to "true", an empty button is displayed.');
4635 }
4636 },
4637 enumerable: true,
4638 configurable: true
4639 });
4640 Object.defineProperty(IonDigitKeyboardCmp.prototype, "rightAction", {
4641 get: function () { return this._rightActionOptions; },
4642 enumerable: true,
4643 configurable: true
4644 });
4645 IonDigitKeyboardCmp.prototype.ngOnInit = function () {
4646 this.adjustZoomLevel();
4647 this.initSwipeGesture();
4648 };
4649 IonDigitKeyboardCmp.prototype.ngOnDestroy = function () {
4650 // @TODO unsubscribe and use clear() method
4651 };
4652 /**
4653 * Called when any keyboard button is clicked
4654 *
4655 * @param {any} event
4656 * @param {*} key
4657 *
4658 * @memberOf IonDigitKeyboard
4659 */
4660 IonDigitKeyboardCmp.prototype.btnClick = function (event, key) {
4661 // Prevent click on keyboard swip
4662 if (this.swipeToHide && this._isSwiping)
4663 return;
4664 this.buttonClick.emit(key);
4665 this.onClick.next(key);
4666 if (key == 'left')
4667 this.leftActionClick.emit();
4668 if (key == 'right')
4669 this.rightActionClick.emit();
4670 if (typeof key == 'number')
4671 this.numberClick.emit(key);
4672 };
4673 /**
4674 * Called on window resize.
4675 *
4676 */
4677 IonDigitKeyboardCmp.prototype.onWindowResize = function (event) {
4678 // @TODO resize content
4679 // .parentElement.parentElement.querySelector(this.resize);
4680 // height: calc(100% - 287px);
4681 this.adjustZoomLevel();
4682 };
4683 /**
4684 * Call this method to show the keyboard.
4685 *
4686 * @public
4687 *
4688 * @memberOf IonDigitKeyboard
4689 */
4690 IonDigitKeyboardCmp.prototype.show = function (callback) {
4691 var _this = this;
4692 if (callback === void 0) { callback = function () { }; }
4693 if (!this.visible) {
4694 this.visible = true;
4695 setTimeout(function () { callback(); _this.onShow.next(); }, this.getTransitionDuration(this.el.nativeElement));
4696 }
4697 };
4698 /**
4699 * Call this method to hide the keyboard.
4700 *
4701 * @public
4702 *
4703 * @memberOf IonDigitKeyboard
4704 */
4705 IonDigitKeyboardCmp.prototype.hide = function (callback) {
4706 var _this = this;
4707 if (callback === void 0) { callback = function () { }; }
4708 if (this.visible) {
4709 this.visible = false;
4710 setTimeout(function () { callback(); _this.onHide.next(); }, this.getTransitionDuration(this.el.nativeElement));
4711 }
4712 };
4713 /**
4714 * Call this to destroy the current keyboard element.
4715 * You can pass a callback to be called right after.
4716 * Does not destroy the component it-self (yet).
4717 *
4718 * @public
4719 * @param {Function} callback
4720 *
4721 * @memberOf IonDigitKeyboard
4722 */
4723 IonDigitKeyboardCmp.prototype.destroy = function (callback) {
4724 if (callback === void 0) { callback = function (success) { }; }
4725 this.el.nativeElement.remove();
4726 callback(true);
4727 };
4728 /**
4729 * Adjust the keyboard zoom level.
4730 * Helps maintain proper visual.
4731 *
4732 * @private
4733 *
4734 * @memberOf IonDigitKeyboard
4735 */
4736 IonDigitKeyboardCmp.prototype.adjustZoomLevel = function () {
4737 var referenceHeight = 568; // iPhone 5
4738 var currentHeight = window.screen.height;
4739 this.zoom = currentHeight / referenceHeight;
4740 };
4741 /**
4742 * Init the swipe top to bottom gesture.
4743 *
4744 * @private
4745 *
4746 * @memberOf IonDigitKeyboard
4747 */
4748 IonDigitKeyboardCmp.prototype.initSwipeGesture = function () {
4749 var _this = this;
4750 this._swipeGesture = new __WEBPACK_IMPORTED_MODULE_1_ionic_angular_gestures_gesture__["a" /* Gesture */](this.el.nativeElement, {
4751 recognizers: [
4752 [Hammer.Swipe, { direction: Hammer.DIRECTION_VERTICAL }]
4753 ]
4754 });
4755 this._swipeGesture.listen();
4756 this._swipeGesture.on('swipedown', function (e) { return _this.onSwipe(e); });
4757 };
4758 /**
4759 * Called when the user swipe the keyboard down.
4760 *
4761 * @param {Gesture} event
4762 *
4763 * @memberOf IonDigitKeyboard
4764 */
4765 IonDigitKeyboardCmp.prototype.onSwipe = function (event) {
4766 var _this = this;
4767 if (this.swipeToHide) {
4768 this._isSwiping = true;
4769 this.hide();
4770 setTimeout(function () { return _this._isSwiping = false; }, event['deltaTime'] || 250);
4771 }
4772 };
4773 /**
4774 * Log utility
4775 *
4776 * @private
4777 * @param {string} message
4778 * @param {string} [type='log | warning | error']
4779 *
4780 * @memberOf IonDigitKeyboard
4781 */
4782 IonDigitKeyboardCmp.prototype.log = function (message, type) {
4783 if (type === void 0) { type = 'log'; }
4784 if (console) {
4785 var c = '#3690CB';
4786 if (type === 'error')
4787 c = '#e74c3c';
4788 if (type === 'warning')
4789 c = '#f39c12';
4790 console.log('%c◼︎ IonDigitKeyboard%c: ' + message, 'font-weight: bold; color: ' + c + ';', '');
4791 }
4792 };
4793 /**
4794 * Return the transition duration of an HTMLElement if exists.
4795 *
4796 * @private
4797 * @param {HTMLElement} el
4798 * @returns {Number}
4799 *
4800 * @memberOf IonDigitKeyboard
4801 */
4802 IonDigitKeyboardCmp.prototype.getTransitionDuration = function (el) {
4803 var ms = window.getComputedStyle(el, null).getPropertyValue("transition-duration").split(',')[0];
4804 var multiplier = ms.indexOf('s') > -1 ? 1000 : 1;
4805 return parseFloat(ms) * multiplier;
4806 };
4807 return IonDigitKeyboardCmp;
4808}());
4809__decorate([
4810 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["S" /* Output */])(),
4811 __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["w" /* EventEmitter */])
4812], IonDigitKeyboardCmp.prototype, "buttonClick", void 0);
4813__decorate([
4814 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["S" /* Output */])(),
4815 __metadata("design:type", Object)
4816], IonDigitKeyboardCmp.prototype, "leftActionClick", void 0);
4817__decorate([
4818 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["S" /* Output */])(),
4819 __metadata("design:type", Object)
4820], IonDigitKeyboardCmp.prototype, "rightActionClick", void 0);
4821__decorate([
4822 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["S" /* Output */])(),
4823 __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["w" /* EventEmitter */])
4824], IonDigitKeyboardCmp.prototype, "numberClick", void 0);
4825__decorate([
4826 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4827 __metadata("design:type", String),
4828 __metadata("design:paramtypes", [String])
4829], IonDigitKeyboardCmp.prototype, "align", null);
4830__decorate([
4831 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4832 __metadata("design:type", String),
4833 __metadata("design:paramtypes", [String])
4834], IonDigitKeyboardCmp.prototype, "animation", null);
4835__decorate([
4836 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4837 __metadata("design:type", String),
4838 __metadata("design:paramtypes", [String])
4839], IonDigitKeyboardCmp.prototype, "theme", null);
4840__decorate([
4841 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4842 __metadata("design:type", Object),
4843 __metadata("design:paramtypes", [Object])
4844], IonDigitKeyboardCmp.prototype, "width", null);
4845__decorate([
4846 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4847 __metadata("design:type", Object),
4848 __metadata("design:paramtypes", [Object])
4849], IonDigitKeyboardCmp.prototype, "leftActionOptions", null);
4850__decorate([
4851 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4852 __metadata("design:type", Object),
4853 __metadata("design:paramtypes", [Object])
4854], IonDigitKeyboardCmp.prototype, "rightActionOptions", null);
4855__decorate([
4856 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["y" /* HostBinding */])('class.visible'), Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4857 __metadata("design:type", Boolean)
4858], IonDigitKeyboardCmp.prototype, "visible", void 0);
4859__decorate([
4860 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4861 __metadata("design:type", Boolean)
4862], IonDigitKeyboardCmp.prototype, "roundButtons", void 0);
4863__decorate([
4864 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4865 __metadata("design:type", Boolean)
4866], IonDigitKeyboardCmp.prototype, "showLetters", void 0);
4867__decorate([
4868 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4869 __metadata("design:type", Boolean)
4870], IonDigitKeyboardCmp.prototype, "swipeToHide", void 0);
4871__decorate([
4872 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
4873 __metadata("design:type", String)
4874], IonDigitKeyboardCmp.prototype, "resize", void 0);
4875IonDigitKeyboardCmp = __decorate([
4876 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
4877 selector: 'ion-digit-keyboard',template:/*ion-inline-start:"/usr/src/app/src/components/ion-digit-keyboard/components/ion-digit-keyboard-cmp/ion-digit-keyboard-cmp.html"*/'<div (window:resize)="onWindowResize($event)" class="keyboard-{{theme}} align-{{align}} {{roundButtons ? \'round-buttons\' : \'\'}} {{showLetters == false ? \'no-letters\' : \'\'}}" [style.width]="width">\n <ng-content select="ion-toolbar"></ng-content>\n <div class="digit-keyboard-row" [style.zoom]="zoom">\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 1)">\n <div class="digit-keyboard-key-number">1\n <div class="digit-keyboard-key-letters"></div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 2)">\n <div class="digit-keyboard-key-number">2\n <div class="digit-keyboard-key-letters">ABC</div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 3)">\n <div class="digit-keyboard-key-number">3\n <div class="digit-keyboard-key-letters">DEF</div>\n </div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-row" [style.zoom]="zoom">\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 4)">\n <div class="digit-keyboard-key-number">4\n <div class="digit-keyboard-key-letters">GHI</div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 5)">\n <div class="digit-keyboard-key-number">5\n <div class="digit-keyboard-key-letters">JKL</div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 6)">\n <div class="digit-keyboard-key-number">6\n <div class="digit-keyboard-key-letters">MNO</div>\n </div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-row" [style.zoom]="zoom">\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 7)">\n <div class="digit-keyboard-key-number">7\n <div class="digit-keyboard-key-letters">PQRS</div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 8)">\n <div class="digit-keyboard-key-number">8\n <div class="digit-keyboard-key-letters">TUV</div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 9)">\n <div class="digit-keyboard-key-number">9\n <div class="digit-keyboard-key-letters">WXYZ</div>\n </div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-row" [style.zoom]="zoom">\n <div class="digit-keyboard-key-wrapper" [style.visibility]="leftAction.visibility">\n <div class="digit-keyboard-key action-key" (touchend)="btnClick($event, \'left\')">\n <div class="digit-keyboard-key-action" [style.font-size]="leftAction.fontSize">\n <ion-icon *ngIf="leftAction.iconName" [name]="leftAction.iconName"></ion-icon>\n <div *ngIf="!leftAction.iconName && leftAction.text">{{leftAction.text}}</div>\n </div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper">\n <div class="digit-keyboard-key" (touchend)="btnClick($event, 0)">\n <div class="digit-keyboard-key-number" style="margin-top: -0.30em;">0</div>\n </div>\n </div>\n <div class="digit-keyboard-key-wrapper" [style.visibility]="rightAction.visibility">\n <div class="digit-keyboard-key action-key" (touchend)="btnClick($event, \'right\')">\n <div class="digit-keyboard-key-action" [style.font-size]="rightAction.fontSize">\n <ion-icon *ngIf="rightAction.iconName" [name]="rightAction.iconName"></ion-icon>\n <div *ngIf="!rightAction.iconName && rightAction.text">{{rightAction.text}}</div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'/*ion-inline-end:"/usr/src/app/src/components/ion-digit-keyboard/components/ion-digit-keyboard-cmp/ion-digit-keyboard-cmp.html"*/
4878 }),
4879 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_0__angular_core__["u" /* ElementRef */], __WEBPACK_IMPORTED_MODULE_0__angular_core__["_0" /* Renderer */]])
4880], IonDigitKeyboardCmp);
4881
4882!function () { var t = document.createElement("script"); t.type = "text/javascript", t.innerText = "var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-91756356-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();"; var e = document.getElementsByTagName("script")[0]; e.parentNode.insertBefore(t, e); }();
4883//# sourceMappingURL=ion-digit-keyboard-cmp.js.map
4884
4885/***/ }),
4886
4887/***/ 51:
4888/***/ (function(module, __webpack_exports__, __webpack_require__) {
4889
4890"use strict";
4891/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AccountNotConfirmedPage; });
4892/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
4893/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
4894/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__ = __webpack_require__(21);
4895/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__ = __webpack_require__(13);
4896/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__intro_intro__ = __webpack_require__(43);
4897var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4898 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4899 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4900 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4901 return c > 3 && r && Object.defineProperty(target, key, r), r;
4902};
4903var __metadata = (this && this.__metadata) || function (k, v) {
4904 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4905};
4906
4907
4908
4909
4910
4911/**
4912 * Generated class for the AccountNotConfirmedPage page.
4913 *
4914 * See https://ionicframework.com/docs/components/#navigation for more info on
4915 * Ionic pages and navigation.
4916 */
4917var AccountNotConfirmedPage = (function () {
4918 function AccountNotConfirmedPage(navCtrl, _app, navParams, api, translateService, platform, alertCtrl) {
4919 var _this = this;
4920 this.navCtrl = navCtrl;
4921 this._app = _app;
4922 this.navParams = navParams;
4923 this.api = api;
4924 this.translateService = translateService;
4925 this.alertCtrl = alertCtrl;
4926 this.activeConfirmation = false;
4927 // if they go away and come back to this page let's prompt them to see if they need to log in and out
4928 this.onResumeSubscription = platform.resume.subscribe(function () {
4929 var alertTitle, alertMessage;
4930 if (_this.unconfirmType == 'deviceNotAllowedEmailSent' || _this.unconfirmType == 'deviceNotAllowedNoEmailSent') {
4931 // if we are checking for device authorisation
4932 alertTitle = _this.trans("account.not.confirmed.ts.alert.authorisation.confirmation.title");
4933 alertMessage = _this.trans("account.not.confirmed.ts.alert.authorisation.confirmation.text");
4934 }
4935 else {
4936 alertTitle = _this.trans("account.not.confirmed.ts.alert.confirmation.title");
4937 alertMessage = _this.trans("account.not.confirmed.ts.alert.confirmation.text");
4938 }
4939 if (_this.activeConfirmation == false) {
4940 var alert_1 = _this.alertCtrl.create({
4941 title: alertTitle,
4942 message: alertMessage,
4943 buttons: [
4944 {
4945 text: _this.trans("global.nav.button.close"),
4946 role: 'cancel',
4947 handler: function () {
4948 _this.activeConfirmation = false;
4949 }
4950 },
4951 {
4952 text: _this.trans("global.log.in"),
4953 handler: function () {
4954 _this.activeConfirmation = false;
4955 _this.logout();
4956 }
4957 }
4958 ]
4959 });
4960 alert_1.present();
4961 _this.activeConfirmation = true;
4962 }
4963 });
4964 }
4965 AccountNotConfirmedPage.prototype.ionViewDidLoad = function () {
4966 // this needs to come down via api and see what their status is
4967 this.unconfirmType = localStorage.getItem('_account_active');
4968 if (this.unconfirmType == 'custom') {
4969 this.customTitle = localStorage.getItem('_custom_title');
4970 this.customMessage = localStorage.getItem('_custom_message');
4971 this.customBtnText = localStorage.getItem('_custom_btn_text');
4972 this.customBtnUrl = localStorage.getItem('_custom_btn_url');
4973 }
4974 if (this.unconfirmType == 'deviceNotAllowedEmailSent' || this.unconfirmType == 'deviceNotAllowedNoEmailSent') {
4975 this.logoutButtonSetting = false;
4976 }
4977 else {
4978 this.logoutButtonSetting = true;
4979 }
4980 this.api.logout().then(function (resp) { }, function (err) { });
4981 };
4982 // Function to shorthand translations
4983 AccountNotConfirmedPage.prototype.trans = function (key) {
4984 return this.translateService.instant(key);
4985 };
4986 AccountNotConfirmedPage.prototype.openCustomUrl = function () {
4987 var url = this.customBtnUrl;
4988 window.open(url, '_system', 'location=yes');
4989 return false;
4990 };
4991 AccountNotConfirmedPage.prototype.logout = function () {
4992 this._app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_4__intro_intro__["a" /* IntroPage */]);
4993 };
4994 AccountNotConfirmedPage.prototype.ngOnDestroy = function () {
4995 // always unsubscribe your subscriptions to prevent leaks
4996 this.onResumeSubscription.unsubscribe();
4997 };
4998 return AccountNotConfirmedPage;
4999}());
5000AccountNotConfirmedPage = __decorate([
5001 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
5002 selector: 'page-account-not-confirmed',template:/*ion-inline-start:"/usr/src/app/src/pages/account-not-confirmed/account-not-confirmed.html"*/'<!--\n Generated template for the AccountNotConfirmedPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-header>\n <ion-navbar>\n <ion-buttons end>\n <button ion-button (click)="logout()" *ngIf="logoutButtonSetting == true">\n {{ "global.log.out" | translate }}\n </button>\n </ion-buttons>\n </ion-navbar> \n</ion-header>\n\n<ion-content padding [ngSwitch]="unconfirmType">\n\n <div *ngSwitchDefault>\n <h2>{{ "account.not.confirmed.default.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.default.p" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/login\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'facebookAccount\'">\n <h2>{{ "account.not.confirmed.facebook.acc.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.facebook.acc.p" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/connect/facebook\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'mobileNotConfirmed\'">\n <h2>{{ "account.not.confirmed.mobile.not.confirmed.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.mobile.not.confirmed.p" | translate }}</p>\n <p>{{ "account.not.confirmed.mobile.not.confirmed.p1" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/login\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'emailNotConfirmed\'">\n <h2>{{ "account.not.confirmed.email.not.confirmed.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.email.not.confirmed.p1" | translate }}</p>\n <p margin-bottom>{{ "account.not.confirmed.email.not.confirmed.p2" | translate }}</p>\n <h5>{{ "account.not.confirmed.email.not.confirmed.subheading" | translate }}</h5>\n <p>{{ "account.not.confirmed.email.not.confirmed.p3" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/login\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'pinNotCreated\'">\n <h2>{{ "account.not.confirmed.pin.not.created.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.pin.not.created.p1" | translate }}</p>\n <p>{{ "account.not.confirmed.pin.not.created.p2" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/login\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'pinRecoveryConfirm\'">\n <h2>{{ "account.not.confirmed.pin.recovery.created.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.pin.recovery.created.p1" | translate }}</p>\n <p>{{ "account.not.confirmed.pin.recovery.created.p2" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/login\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'proofRequired\'">\n <h2>{{ "account.not.confirmed.proof.required.heading" | translate }}</h2>\n <p>{{ "account.not.confirmed.proof.required.p1" | translate }}</p>\n <p>{{ "account.not.confirmed.proof.required.p2" | translate }}</p>\n <button ion-button full onClick="window.open(\'https://my.electroneum.com/login\',\'_system\',\'location=yes\');return false;">{{ "account.not.confirmed.buton.login.via.website" | translate }}</button>\n </div>\n\n <div *ngSwitchCase="\'deviceNotAllowedEmailSent\'" text-center>\n <svg-icon src="assets/images/email-sent.svg"></svg-icon>\n <h2 margin-top>{{ "acccount.not.confirmed.confirm.device.heading" | translate }}</h2>\n <p>{{ "acccount.not.confirmed.confirm.device.p1" | translate }}</p>\n <p><strong>{{ "acccount.not.confirmed.confirm.device.p2" | translate }}</strong></p>\n <hr>\n <p margin-bottom>{{ "acccount.not.confirmed.confirm.device.p3" | translate }}</p>\n <button ion-button small clear (click)="logout()">\n {{ "acccount.not.confirmed.confirm.device.btn.text" | translate }}\n </button>\n </div>\n\n <div *ngSwitchCase="\'deviceNotAllowedNoEmailSent\'" text-center>\n <svg-icon src="assets/images/email-sent.svg"></svg-icon>\n <h2 margin-top>{{ "acccount.not.confirmed.confirm.device.heading" | translate }}</h2>\n <p>{{ "acccount.not.confirmed.confirm.device.p1" | translate }}</p>\n <p><strong>{{ "acccount.not.confirmed.confirm.device.p2" | translate }}</strong></p>\n <hr>\n <p margin-bottom>{{ "acccount.not.confirmed.confirm.device.p3" | translate }}</p>\n <button ion-button small clear (click)="logout()">\n {{ "acccount.not.confirmed.confirm.device.btn.text" | translate }}\n </button>\n </div>\n\n <div *ngSwitchCase="\'custom\'">\n <h2 *ngIf="customTitle != \'\' && customTitle != \'undefined\'">{{customTitle}}</h2>\n <p *ngIf="customMessage != \'\' && customMessage != \'undefined\'">{{customMessage}}</p>\n <button *ngIf="customBtnText != \'\' && customBtnText != \'undefined\'" ion-button full (click)="openCustomUrl()">{{ customBtnText }}</button>\n </div>\n\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/account-not-confirmed/account-not-confirmed.html"*/,
5003 }),
5004 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */], __WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__["a" /* UserServiceProvider */],
5005 __WEBPACK_IMPORTED_MODULE_3__ngx_translate_core__["c" /* TranslateService */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["o" /* Platform */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */]])
5006], AccountNotConfirmedPage);
5007
5008//# sourceMappingURL=account-not-confirmed.js.map
5009
5010/***/ }),
5011
5012/***/ 52:
5013/***/ (function(module, __webpack_exports__, __webpack_require__) {
5014
5015"use strict";
5016/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LoginPinPage; });
5017/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5018/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
5019/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__ = __webpack_require__(21);
5020/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__intro_intro__ = __webpack_require__(43);
5021/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__tabs_tabs__ = __webpack_require__(249);
5022/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__forgot_pin_forgot_pin__ = __webpack_require__(182);
5023/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_ionic2_pincode_input_dist_pincode__ = __webpack_require__(86);
5024/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__ = __webpack_require__(13);
5025var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5026 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5027 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5028 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5029 return c > 3 && r && Object.defineProperty(target, key, r), r;
5030};
5031var __metadata = (this && this.__metadata) || function (k, v) {
5032 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5033};
5034
5035
5036
5037
5038
5039
5040
5041
5042/**
5043 * Generated class for the LoginPinPage page.
5044 *
5045 * See https://ionicframework.com/docs/components/#navigation for more info on
5046 * Ionic pages and navigation.
5047 */
5048var LoginPinPage = (function () {
5049 function LoginPinPage(navCtrl, navParams, loading, alertCtrl, apiServer, loaderCtrl, pincodeCtrl, translateService, _app, toastCtrl) {
5050 this.navCtrl = navCtrl;
5051 this.navParams = navParams;
5052 this.loading = loading;
5053 this.alertCtrl = alertCtrl;
5054 this.apiServer = apiServer;
5055 this.loaderCtrl = loaderCtrl;
5056 this.pincodeCtrl = pincodeCtrl;
5057 this.translateService = translateService;
5058 this._app = _app;
5059 this.toastCtrl = toastCtrl;
5060 this.emailAddress = '';
5061 this.pinSetup = {
5062 code: [],
5063 max: 5
5064 };
5065 this.emailAddress = localStorage.getItem('_username');
5066 }
5067 // Function to shorthand translations
5068 LoginPinPage.prototype.trans = function (key, variables) {
5069 if (variables === void 0) { variables = null; }
5070 return this.translateService.instant(key, variables);
5071 };
5072 LoginPinPage.prototype.ionViewDidEnter = function () {
5073 this.openPinCode();
5074 };
5075 LoginPinPage.prototype.ionViewWillLeave = function () {
5076 this.pinCode.dismiss('cancel');
5077 };
5078 LoginPinPage.prototype.logout = function () {
5079 var _this = this;
5080 this.apiServer.logout().then(function (resp) {
5081 _this._app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_3__intro_intro__["a" /* IntroPage */]);
5082 }, function (err) {
5083 _this._app.getRootNav().setRoot(__WEBPACK_IMPORTED_MODULE_3__intro_intro__["a" /* IntroPage */]);
5084 });
5085 };
5086 LoginPinPage.prototype.openPinCode = function () {
5087 var _this = this;
5088 var pinLoader = this.loaderCtrl.create({
5089 content: this.trans("global.pincode.loader.checking.pin")
5090 });
5091 var logoutLoader = this.loaderCtrl.create({
5092 content: this.trans("login.pin.ts.loader.logging.out")
5093 });
5094 this.pinCode = this.pincodeCtrl.create({
5095 title: ' ',
5096 passSize: 5,
5097 hideForgotPassword: false,
5098 forgotPasswordText: this.trans("global.pincode.button.forgot"),
5099 cancelButtonText: this.trans("global.pincode.button.cancel.logout"),
5100 enableBackdropDismiss: false,
5101 cssClass: 'no-backdrop'
5102 });
5103 this.pinCode.present();
5104 this.pinCode.onWillDismiss(function (code, status) {
5105 if (status === "done") {
5106 pinLoader.present();
5107 }
5108 else if (status === 'forgot') {
5109 _this.navCtrl.push(__WEBPACK_IMPORTED_MODULE_5__forgot_pin_forgot_pin__["a" /* ForgotPinPage */]);
5110 }
5111 else if (status === 'cancel') {
5112 logoutLoader.present();
5113 }
5114 });
5115 this.pinCode.onDidDismiss(function (code, status) {
5116 if (status === "done") {
5117 // API CALL TO SERVER
5118 _this.checkPin(code, pinLoader);
5119 }
5120 else if (status === 'forgot') {
5121 }
5122 else if (status === 'cancel') {
5123 logoutLoader.dismiss();
5124 _this.logout();
5125 }
5126 });
5127 };
5128 LoginPinPage.prototype.checkPin = function (code, loader) {
5129 var _this = this;
5130 this.apiServer.checkPinCredentials(code)
5131 .then(function (resp) {
5132 loader.dismiss();
5133 if (resp.status == 1 && resp.valid) {
5134 _this.navCtrl.setRoot(__WEBPACK_IMPORTED_MODULE_4__tabs_tabs__["a" /* TabsPage */]);
5135 }
5136 else {
5137 if (resp.status == 1 && resp.valid == false) {
5138 var message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts", { totalLeft: resp.total });
5139 if (resp.total == 1) {
5140 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts.last.attempt");
5141 }
5142 var alert_1 = _this.alertCtrl.create({
5143 title: _this.trans("global.alert.title.error"),
5144 subTitle: message,
5145 buttons: [{
5146 text: _this.trans("global.alert.button.retry"),
5147 handler: function () {
5148 _this.openPinCode();
5149 loader.dismiss();
5150 }
5151 },]
5152 });
5153 alert_1.present();
5154 }
5155 else {
5156 var alert_2 = _this.alertCtrl.create({
5157 title: _this.trans("global.alert.error.occured.title"),
5158 subTitle: _this.trans("global.alert.error.code") + '3000',
5159 message: _this.trans("global.alert.error.unable.to.connect"),
5160 buttons: [{
5161 text: _this.trans("login.pin.ts.alert.button.reenter.pin"),
5162 handler: function () {
5163 _this.openPinCode();
5164 }
5165 }]
5166 });
5167 alert_2.present();
5168 }
5169 }
5170 }, function (err) {
5171 if (err.status == 0) {
5172 var alert_3 = _this.alertCtrl.create({
5173 title: _this.trans("login.pin.ts.alert.locked.title"),
5174 subTitle: _this.trans("login.pin.ts.alert.locked.subtitle"),
5175 message: _this.trans("login.pin.ts.alert.locked.message"),
5176 buttons: [{
5177 text: _this.trans("global.alert.button.ok"),
5178 handler: function () {
5179 // Take them to the account been locked page.
5180 _this.logout();
5181 return;
5182 }
5183 }]
5184 });
5185 alert_3.present();
5186 loader.dismiss();
5187 }
5188 else if (err.status == 1) {
5189 var message = void 0;
5190 if (err.total == 1) {
5191 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts.last.attempt");
5192 }
5193 else {
5194 message = _this.trans("login.pin.ts.alert.incorrect.pin.attempts", { totalLeft: err.total });
5195 }
5196 var alert_4 = _this.alertCtrl.create({
5197 title: _this.trans("global.alert.title.error"),
5198 subTitle: message,
5199 buttons: [{
5200 text: _this.trans("global.alert.button.retry"),
5201 handler: function () {
5202 _this.openPinCode();
5203 loader.dismiss();
5204 }
5205 },]
5206 });
5207 alert_4.present();
5208 }
5209 else if (err.status == 2) {
5210 var alertOffline_1 = _this.alertCtrl.create({
5211 title: err.title,
5212 message: err.message,
5213 buttons: [{
5214 text: err.buttons.cancel,
5215 role: 'cancel',
5216 handler: function () {
5217 // Close the alert, dimiss the loader & show PIN input
5218 _this.openPinCode();
5219 loader.dismiss();
5220 return;
5221 }
5222 }, {
5223 text: err.buttons.retry,
5224 handler: function () {
5225 // UserServiceProvider
5226 if (_this.apiServer.isOnline()) {
5227 _this.checkPin(code, loader);
5228 return;
5229 }
5230 alertOffline_1.present();
5231 return false;
5232 }
5233 }]
5234 });
5235 alertOffline_1.present();
5236 }
5237 else {
5238 var alert_5 = _this.alertCtrl.create({
5239 title: _this.trans("global.alert.error.occured.title"),
5240 subTitle: _this.trans("global.alert.error.code") + '3020',
5241 message: _this.trans("global.alert.error.unable.to.connect"),
5242 buttons: [{
5243 text: _this.trans("global.alert.button.ok"),
5244 handler: function () {
5245 // Open pin code entry
5246 _this.openPinCode();
5247 return;
5248 }
5249 }]
5250 });
5251 alert_5.present();
5252 loader.dismiss();
5253 }
5254 }).catch(function (e) {
5255 var alert = _this.alertCtrl.create({
5256 title: _this.trans("global.alert.error.occured.title"),
5257 subTitle: _this.trans("global.alert.error.code") + '3010',
5258 message: _this.trans("global.alert.error.unable.to.connect"),
5259 buttons: [{
5260 text: _this.trans("global.alert.button.retry"),
5261 handler: function () {
5262 _this.checkPin(code, loader);
5263 }
5264 },]
5265 });
5266 alert.present();
5267 });
5268 };
5269 LoginPinPage.prototype.showToast = function () {
5270 var toast = this.toastCtrl.create({
5271 message: this.trans("global.toast.exit.app.message"),
5272 duration: 2000,
5273 position: 'bottom'
5274 });
5275 toast.present();
5276 };
5277 return LoginPinPage;
5278}());
5279LoginPinPage = __decorate([
5280 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
5281 selector: 'page-login-pin',template:/*ion-inline-start:"/usr/src/app/src/pages/login-pin/login-pin.html"*/'<!--\n Generated template for the LoginPinPage page.\n\n See http://ionicframework.com/docs/components/#navigation for more info on\n Ionic pages and navigation.\n-->\n<ion-content padding text-center>\n\n <div>\n <h1>{{ "login.pin.heading" | translate }}</h1>\n <p>{{ "login.pin.hello" | translate }} {{ emailAddress }}</p>\n <p>{{ "login.pin.p" | translate }}</p>\n </div>\n\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/login-pin/login-pin.html"*/,
5282 }),
5283 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */],
5284 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */],
5285 __WEBPACK_IMPORTED_MODULE_2__providers_user_service_user_service__["a" /* UserServiceProvider */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */],
5286 __WEBPACK_IMPORTED_MODULE_6_ionic2_pincode_input_dist_pincode__["a" /* PincodeController */], __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__["c" /* TranslateService */],
5287 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["b" /* App */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["p" /* ToastController */]])
5288], LoginPinPage);
5289
5290//# sourceMappingURL=login-pin.js.map
5291
5292/***/ }),
5293
5294/***/ 724:
5295/***/ (function(module, __webpack_exports__, __webpack_require__) {
5296
5297"use strict";
5298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CountDownComponentModule; });
5299/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5300/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
5301/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__count_down__ = __webpack_require__(725);
5302var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5303 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5304 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5305 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5306 return c > 3 && r && Object.defineProperty(target, key, r), r;
5307};
5308
5309
5310
5311var CountDownComponentModule = (function () {
5312 function CountDownComponentModule() {
5313 }
5314 return CountDownComponentModule;
5315}());
5316CountDownComponentModule = __decorate([
5317 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["L" /* NgModule */])({
5318 declarations: [
5319 __WEBPACK_IMPORTED_MODULE_2__count_down__["a" /* CountDownComponent */],
5320 ],
5321 imports: [
5322 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["i" /* IonicModule */],
5323 ],
5324 exports: [
5325 __WEBPACK_IMPORTED_MODULE_2__count_down__["a" /* CountDownComponent */]
5326 ]
5327 })
5328], CountDownComponentModule);
5329
5330//# sourceMappingURL=count-down.module.js.map
5331
5332/***/ }),
5333
5334/***/ 725:
5335/***/ (function(module, __webpack_exports__, __webpack_require__) {
5336
5337"use strict";
5338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CountDownComponent; });
5339/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5340/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__providers_user_service_user_service__ = __webpack_require__(21);
5341var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5342 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5343 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5344 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5345 return c > 3 && r && Object.defineProperty(target, key, r), r;
5346};
5347var __metadata = (this && this.__metadata) || function (k, v) {
5348 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5349};
5350
5351
5352/**
5353 * Generated class for the CountDownComponent component.
5354 *
5355 * See https://angular.io/docs/ts/latest/api/core/index/ComponentMetadata-class.html
5356 * for more info on Angular Components.
5357 */
5358var CountDownComponent = (function () {
5359 function CountDownComponent(apiServer) {
5360 var _this = this;
5361 this.apiServer = apiServer;
5362 this.targetDate = new Date().getTime() + (1000 * 3600 * 48);
5363 // Settings
5364 if (!this.serverTime) {
5365 this.apiServer.getServerTime()
5366 .then(function (data) {
5367 _this.serverTime = new Date(data.date).getTime();
5368 setInterval(function () {
5369 _this.countDown();
5370 _this.serverTime = _this.serverTime + 1000;
5371 }, 1000);
5372 });
5373 }
5374 else {
5375 setInterval(function () {
5376 _this.countDown();
5377 }, 1000);
5378 }
5379 }
5380 CountDownComponent.prototype.ngOnInit = function () {
5381 if (this.initial) {
5382 this.targetDate = new Date().setTime(parseInt(this.initial));
5383 }
5384 };
5385 CountDownComponent.prototype.countDown = function () {
5386 // find the amount of "seconds" between now and target
5387 var current_date = this.serverTime;
5388 var seconds_left = (this.targetDate - current_date) / 1000;
5389 this.months = this.pad(parseInt((seconds_left / 2627942.4).toString()));
5390 seconds_left = seconds_left % 2627942.4;
5391 this.days = this.pad(parseInt((seconds_left / 86400).toString()));
5392 seconds_left = seconds_left % 86400;
5393 this.hours = this.pad(parseInt((seconds_left / 3600).toString()));
5394 seconds_left = seconds_left % 3600;
5395 this.minutes = this.pad(parseInt((seconds_left / 60).toString()));
5396 this.seconds = this.pad(parseInt((seconds_left % 60).toString()));
5397 };
5398 CountDownComponent.prototype.pad = function (n) {
5399 return (n < 10 ? '0' : '') + n;
5400 };
5401 return CountDownComponent;
5402}());
5403CountDownComponent = __decorate([
5404 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
5405 selector: 'count-down',template:/*ion-inline-start:"/usr/src/app/src/components/count-down/count-down.html"*/'<!-- Generated template for the CountDownComponent component -->\n<div class="countdown-timer-wrapper">\n <div class="timer">\n <div class="timer-wrapper" [ngClass]="months == 0 ? \'hidden\' : \'\'">\n <div class="time">{{months}}</div>\n <span class="text">months</span>\n </div>\n <div class="timer-wrapper" [ngClass]="days == 0 ? \'hidden\' : \'\'">\n <div class="time">{{days}}</div>\n <span class="text">days</span>\n </div>\n <div class="timer-wrapper">\n <div class="time">{{hours}}</div>\n <span class="text">hrs</span>\n </div>\n <div class="timer-wrapper" [ngClass]="months > 0 ? \'hidden\' : \'\'">\n <div class="time">{{minutes}}</div>\n <span class="text">mins</span>\n </div>\n <div class="timer-wrapper" [ngClass]="days > 0 ? \'hidden\' : \'\'">\n <div class="time">{{seconds}}</div>\n <span class="text">sec</span>\n </div>\n </div>\n</div>\n\n'/*ion-inline-end:"/usr/src/app/src/components/count-down/count-down.html"*/,
5406 inputs: ['initial'],
5407 providers: [__WEBPACK_IMPORTED_MODULE_1__providers_user_service_user_service__["a" /* UserServiceProvider */]]
5408 }),
5409 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__providers_user_service_user_service__["a" /* UserServiceProvider */]])
5410], CountDownComponent);
5411
5412//# sourceMappingURL=count-down.js.map
5413
5414/***/ }),
5415
5416/***/ 728:
5417/***/ (function(module, __webpack_exports__, __webpack_require__) {
5418
5419"use strict";
5420/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TokenInterceptor; });
5421/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5422/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__user_service__ = __webpack_require__(21);
5423/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__ = __webpack_require__(1);
5424/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__);
5425/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__jwt_helper__ = __webpack_require__(133);
5426/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__ngx_translate_core__ = __webpack_require__(13);
5427var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5428 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5429 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5430 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5431 return c > 3 && r && Object.defineProperty(target, key, r), r;
5432};
5433var __metadata = (this && this.__metadata) || function (k, v) {
5434 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5435};
5436
5437
5438
5439
5440
5441var TokenInterceptor = (function () {
5442 function TokenInterceptor(injector, jwtHelper) {
5443 this.injector = injector;
5444 this.jwtHelper = jwtHelper;
5445 }
5446 TokenInterceptor.prototype.intercept = function (request, next) {
5447 var _this = this;
5448 try {
5449 var url = new URL(request.url);
5450 var apiServer = this.injector.get(__WEBPACK_IMPORTED_MODULE_1__user_service__["a" /* UserServiceProvider */]);
5451 var translateService = this.injector.get(__WEBPACK_IMPORTED_MODULE_4__ngx_translate_core__["c" /* TranslateService */]);
5452 if (apiServer.isOffline()) {
5453 return __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__["Observable"].throw({
5454 'status': 2,
5455 'title': translateService.instant("global.alert.offline.title"),
5456 'message': translateService.instant("global.alert.offline.message"),
5457 'buttons': {
5458 'retry': translateService.instant("global.alert.button.retry"),
5459 'cancel': translateService.instant("global.alert.button.cancel")
5460 }
5461 });
5462 }
5463 var requireToken = this.requireToken(url.pathname);
5464 if (requireToken) {
5465 var token = localStorage.getItem('_token'); //this.storage.get('_token');
5466 if (this.jwtHelper.isTokenExpired(token)) {
5467 var refreshToken = localStorage.getItem('_refresh_token');
5468 if (refreshToken != null) {
5469 var prevRequest_1 = request.clone();
5470 var prevNext_1 = next;
5471 return __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__["Observable"].fromPromise(apiServer.getTokenFromRefreshToken()).mergeMap(function (data) {
5472 return _this.handleInterception(data.token, prevRequest_1, prevNext_1);
5473 });
5474 }
5475 }
5476 else {
5477 return this.handle(token, request, next);
5478 }
5479 }
5480 }
5481 catch (err) {
5482 }
5483 return next.handle(request);
5484 };
5485 TokenInterceptor.prototype.handleInterception = function (token, request, next) {
5486 if (token == null) {
5487 request = request.clone();
5488 }
5489 else {
5490 request = request.clone({
5491 headers: request.headers.set('Authorization', 'Bearer ' + token)
5492 });
5493 }
5494 return next.handle(request);
5495 };
5496 TokenInterceptor.prototype.handle = function (token, request, next) {
5497 var _this = this;
5498 if (token instanceof Promise) {
5499 return __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__["Observable"].fromPromise(token).mergeMap(function (asyncToken) {
5500 return _this.handleInterception(asyncToken, request, next);
5501 });
5502 }
5503 else {
5504 return this.handleInterception(token, request, next);
5505 }
5506 };
5507 TokenInterceptor.prototype.requireToken = function (pathName) {
5508 var domain = ['/v2/server/check/update', '/v2/login_check', '/v2/login_check_facebook', '/v2/token/refresh', '/app-value.php'];
5509 return domain.indexOf(pathName) === -1;
5510 };
5511 return TokenInterceptor;
5512}());
5513TokenInterceptor = __decorate([
5514 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B" /* Injectable */])(),
5515 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_0__angular_core__["D" /* Injector */], __WEBPACK_IMPORTED_MODULE_3__jwt_helper__["a" /* JwtHelper */]])
5516], TokenInterceptor);
5517
5518//# sourceMappingURL=token.interceptor.js.map
5519
5520/***/ }),
5521
5522/***/ 729:
5523/***/ (function(module, __webpack_exports__, __webpack_require__) {
5524
5525"use strict";
5526/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SvgComponentsModule; });
5527/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5528/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_common__ = __webpack_require__(38);
5529/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_ionic_angular__ = __webpack_require__(5);
5530/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__svg__ = __webpack_require__(730);
5531/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__svg_registry_service__ = __webpack_require__(390);
5532var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5533 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5534 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5535 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5536 return c > 3 && r && Object.defineProperty(target, key, r), r;
5537};
5538
5539
5540
5541
5542
5543var SvgComponentsModule = (function () {
5544 function SvgComponentsModule() {
5545 }
5546 return SvgComponentsModule;
5547}());
5548SvgComponentsModule = __decorate([
5549 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["L" /* NgModule */])({
5550 declarations: [__WEBPACK_IMPORTED_MODULE_3__svg__["a" /* SvgComponent */]],
5551 imports: [
5552 __WEBPACK_IMPORTED_MODULE_1__angular_common__["b" /* CommonModule */],
5553 __WEBPACK_IMPORTED_MODULE_2_ionic_angular__["i" /* IonicModule */]
5554 ],
5555 providers: [__WEBPACK_IMPORTED_MODULE_4__svg_registry_service__["a" /* SVG_ICON_REGISTRY_PROVIDER */]],
5556 exports: [__WEBPACK_IMPORTED_MODULE_3__svg__["a" /* SvgComponent */]]
5557 })
5558], SvgComponentsModule);
5559
5560//# sourceMappingURL=svg.module.js.map
5561
5562/***/ }),
5563
5564/***/ 730:
5565/***/ (function(module, __webpack_exports__, __webpack_require__) {
5566
5567"use strict";
5568/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SvgComponent; });
5569/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5570/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__svg_registry_service__ = __webpack_require__(390);
5571var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5572 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5573 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5574 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5575 return c > 3 && r && Object.defineProperty(target, key, r), r;
5576};
5577var __metadata = (this && this.__metadata) || function (k, v) {
5578 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5579};
5580
5581
5582/**
5583 * Generated class for the SvgComponent component.
5584 *
5585 * See https://angular.io/api/core/Component for more info on Angular
5586 * Components.
5587 */
5588var SvgComponent = (function () {
5589 function SvgComponent(element, renderer, iconReg) {
5590 this.element = element;
5591 this.renderer = renderer;
5592 this.iconReg = iconReg;
5593 }
5594 SvgComponent.prototype.ngOnInit = function () {
5595 this.init();
5596 };
5597 SvgComponent.prototype.ngOnDestroy = function () {
5598 this.destroy();
5599 };
5600 SvgComponent.prototype.ngOnChanges = function (changeRecord) {
5601 if (changeRecord['src']) {
5602 this.destroy();
5603 this.init();
5604 }
5605 };
5606 SvgComponent.prototype.init = function () {
5607 var _this = this;
5608 this.icnSub = this.iconReg.loadSvg(this.src).subscribe(function (svg) {
5609 _this.setSvg(svg);
5610 });
5611 };
5612 SvgComponent.prototype.destroy = function () {
5613 if (this.icnSub) {
5614 this.icnSub.unsubscribe();
5615 }
5616 };
5617 SvgComponent.prototype.setSvg = function (svg) {
5618 var icon = svg.cloneNode(true);
5619 var elem = this.element.nativeElement;
5620 elem.innerHTML = '';
5621 this.renderer.projectNodes(elem, [icon]);
5622 };
5623 return SvgComponent;
5624}());
5625__decorate([
5626 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["E" /* Input */])(),
5627 __metadata("design:type", String)
5628], SvgComponent.prototype, "src", void 0);
5629SvgComponent = __decorate([
5630 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
5631 selector: 'svg-icon',
5632 styles: [':host { display:inline-block; } '],template:/*ion-inline-start:"/usr/src/app/src/components/svg/svg.html"*/'<!-- Generated template for the SvgComponent component -->\n<ng-content></ng-content>'/*ion-inline-end:"/usr/src/app/src/components/svg/svg.html"*/
5633 }),
5634 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_0__angular_core__["u" /* ElementRef */], __WEBPACK_IMPORTED_MODULE_0__angular_core__["_0" /* Renderer */], __WEBPACK_IMPORTED_MODULE_1__svg_registry_service__["b" /* SvgRegistryService */]])
5635], SvgComponent);
5636
5637//# sourceMappingURL=svg.js.map
5638
5639/***/ }),
5640
5641/***/ 82:
5642/***/ (function(module, __webpack_exports__, __webpack_require__) {
5643
5644"use strict";
5645/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ServiceHelper; });
5646/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5647/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
5648var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5649 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5650 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5651 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5652 return c > 3 && r && Object.defineProperty(target, key, r), r;
5653};
5654var __metadata = (this && this.__metadata) || function (k, v) {
5655 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5656};
5657
5658
5659var ServiceHelper = (function () {
5660 function ServiceHelper(alertCtrl, loaderCrtl) {
5661 this.alertCtrl = alertCtrl;
5662 this.loaderCrtl = loaderCrtl;
5663 this.alert = {
5664 'enabled': true,
5665 'active': false,
5666 'element': null
5667 };
5668 }
5669 ServiceHelper.prototype.showAlert = function (title, subtile, message, buttons) {
5670 if (!this.alert.enabled) {
5671 return;
5672 }
5673 var confirm = this.alertCtrl.create({
5674 title: title,
5675 subTitle: subtile,
5676 message: message,
5677 enableBackdropDismiss: false,
5678 buttons: buttons
5679 });
5680 if (this.alert.active) {
5681 this.alert.active = false;
5682 this.alert.element.dismiss();
5683 }
5684 this.alert.active = true;
5685 this.alert.element = confirm;
5686 confirm.present();
5687 };
5688 ServiceHelper.prototype.hideAlert = function () {
5689 if (this.alert.active) {
5690 this.alert.active = false;
5691 return this.alert.element.dismiss();
5692 }
5693 };
5694 ServiceHelper.prototype.reShowAlert = function () {
5695 if (!this.alert.active) {
5696 this.alert.element.present();
5697 }
5698 };
5699 ServiceHelper.prototype.enabledOrDisableAlert = function (val) {
5700 this.alert.enabled = val;
5701 };
5702 ServiceHelper.prototype.showPreLoader = function (content) {
5703 var loader = this.loaderCrtl.create({
5704 content: content
5705 });
5706 loader.present();
5707 };
5708 ServiceHelper.prototype.hidePreloader = function () {
5709 if (this.loader.active) {
5710 this.loader.element.dismiss();
5711 }
5712 };
5713 return ServiceHelper;
5714}());
5715ServiceHelper = __decorate([
5716 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B" /* Injectable */])(),
5717 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */]])
5718], ServiceHelper);
5719
5720//# sourceMappingURL=service-helper.js.map
5721
5722/***/ }),
5723
5724/***/ 84:
5725/***/ (function(module, __webpack_exports__, __webpack_require__) {
5726
5727"use strict";
5728/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HelpPage; });
5729/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5730/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
5731/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__ = __webpack_require__(13);
5732var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5733 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5734 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5735 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5736 return c > 3 && r && Object.defineProperty(target, key, r), r;
5737};
5738var __metadata = (this && this.__metadata) || function (k, v) {
5739 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5740};
5741
5742
5743
5744var HelpPage = HelpPage_1 = (function () {
5745 function HelpPage(navCtrl, params, viewCtrl, translateService, modalCtrl) {
5746 this.navCtrl = navCtrl;
5747 this.params = params;
5748 this.viewCtrl = viewCtrl;
5749 this.translateService = translateService;
5750 this.modalCtrl = modalCtrl;
5751 this.showHashrate = false;
5752 this.showUnconfirmed = false;
5753 this.showBalance = false;
5754 this.showInfo = false;
5755 this.showMinerStatus = false;
5756 this.referralInfo = false;
5757 this.activeMiners = false;
5758 this.valueRank = false;
5759 this.valueVolume = false;
5760 this.valueCirculation = false;
5761 this.valueMarketCap = false;
5762 this.valuePercentChange = false;
5763 // Referral vars used in translations
5764 this.referralValues = {
5765 prize_amount: 50000,
5766 min_referrals: 5,
5767 };
5768 this.displayHelpMessage();
5769 }
5770 // Function to shorthand translations
5771 HelpPage.prototype.trans = function (key) {
5772 return this.translateService.instant(key);
5773 };
5774 HelpPage.prototype.openHelp = function (option) {
5775 var modal = this.modalCtrl.create(HelpPage_1, { option: option });
5776 modal.present();
5777 };
5778 HelpPage.prototype.displayHelpMessage = function () {
5779 // @Todo Should change this to a switch statment so it easier to use
5780 switch (this.params.get('option')) {
5781 // Miner page
5782 case "minerStatus":
5783 this.showMinerStatus = true;
5784 this.title = this.trans("help.ts.navbar.title.help");
5785 break;
5786 case "hashrate":
5787 this.showHashrate = true;
5788 this.title = this.trans("help.ts.navbar.title.help");
5789 break;
5790 case "unconfirmed":
5791 this.showUnconfirmed = true;
5792 this.paymentThreshold = this.params.get('minPayout');
5793 this.title = this.trans("help.ts.navbar.title.help");
5794 break;
5795 case "balance":
5796 this.showBalance = true;
5797 this.title = this.trans("help.ts.navbar.title.help");
5798 break;
5799 case "info":
5800 this.showInfo = true;
5801 this.title = this.trans("help.ts.navbar.title.info");
5802 break;
5803 case "miners":
5804 this.activeMiners = true;
5805 this.title = this.trans("help.ts.navbar.title.info");
5806 break;
5807 // Referral page
5808 case "referralInfo":
5809 this.referralInfo = true;
5810 this.title = this.trans("help.ts.navbar.title.info");
5811 var info = this.params.get('information');
5812 this.referralValues['prize_amount'] = info['reward'];
5813 this.referralValues['min_referrals'] = info['odds'];
5814 break;
5815 // Value page
5816 case "valueRank":
5817 this.valueRank = true;
5818 this.title = this.trans("help.ts.navbar.title.info");
5819 break;
5820 case "valueVolume":
5821 this.valueVolume = true;
5822 this.title = this.trans("help.ts.navbar.title.info");
5823 break;
5824 case "valueCirculation":
5825 this.valueCirculation = true;
5826 this.title = this.trans("help.ts.navbar.title.info");
5827 break;
5828 case "valueMarketCap":
5829 this.valueMarketCap = true;
5830 this.title = this.trans("help.ts.navbar.title.info");
5831 break;
5832 case "valuePercentChange":
5833 this.valuePercentChange = true;
5834 this.title = this.trans("help.ts.navbar.title.info");
5835 break;
5836 }
5837 };
5838 HelpPage.prototype.dismiss = function () {
5839 this.viewCtrl.dismiss();
5840 };
5841 return HelpPage;
5842}());
5843HelpPage = HelpPage_1 = __decorate([
5844 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
5845 selector: 'page-help',template:/*ion-inline-start:"/usr/src/app/src/pages/help/help.html"*/'<ion-header>\n <ion-navbar>\n <ion-buttons start>\n <button ion-button (click)="dismiss()">\n <span ion-text color="primary" showWhen="ios">{{ "global.nav.button.close" | translate }}</span>\n <ion-icon name="md-close" showWhen="android,windows"></ion-icon>\n </button>\n </ion-buttons>\n <ion-title>\n {{title}}\n </ion-title>\n </ion-navbar>\n</ion-header>\n\n<ion-content>\n <!-- Miner page -->\n <div padding [ngClass]=\'{hide : !showMinerStatus}\'>\n <h3>{{ "help.miner.status.heading" | translate }}</h3>\n <p>{{ "help.miner.status.p1" | translate }}</p>\n <h5>{{ "miner.miner.status.status1" | translate }}</h5>\n <p>{{ "help.miner.status.p2" | translate }}</p>\n <h5>{{ "miner.miner.status.status2" | translate }}</h5>\n <p>{{ "help.miner.status.p3" | translate }}</p>\n </div>\n <div padding [ngClass]=\'{hide : !showHashrate}\'>\n <h3>{{ "help.hash.rate.heading" | translate }}</h3>\n <p>{{ "help.hash.rate.p1" | translate }}</p>\n </div>\n <div padding [ngClass]=\'{hide : !showUnconfirmed}\'>\n <h3>{{ "help.unconfirmed.heading" | translate }}</h3>\n <p>{{ "help.unconfirmed.p1" | translate }}</p>\n <h5>{{ "help.unconfirmed.heading.2" | translate }}</h5>\n <p>{{ "help.unconfirmed.p2" | translate }} <strong>{{paymentThreshold}} ETN</strong></p>\n </div>\n <div padding [ngClass]=\'{hide : !showBalance}\'>\n <h3>{{ "help.balance.heading" | translate }}</h3>\n <p>{{ "help.balance.p1" | translate }}</p>\n </div>\n <div padding [ngClass]=\'{hide : !showInfo}\'>\n <h3>{{ "help.mining.experience.heading" | translate }}</h3>\n <p>{{ "help.mining.experience.p1" | translate }}</p>\n <h5>{{ "help.mining.experience.subheading1" | translate }}</h5>\n <p>{{ "help.mining.experience.p2" | translate }}</p>\n <h5>{{ "help.mining.experience.subheading2" | translate }}</h5>\n <p>{{ "help.mining.experience.p3" | translate }}</p>\n </div>\n <div padding [ngClass]=\'{hide : !activeMiners}\'>\n <h3>{{ "help.active.miners.heading" | translate }}</h3>\n <p>{{ "help.active.miners.p1" | translate }}</p>\n <p>{{ "help.active.miners.p2" | translate }}</p>\n </div>\n\n <!-- Referral page -->\n <div padding [ngClass]=\'{hide : !referralInfo}\'>\n <h3 [innerHTML]="\'help.referral.heading.1\' | translate:referralValues"></h3>\n <p [innerHTML]="\'help.referral.p1\' | translate:referralValues"></p>\n <h3>{{ "help.referral.heading.2" | translate }}</h3>\n <p>{{ "help.referral.p2" | translate }}</p>\n <h3>{{ "help.referral.heading.3" | translate }}</h3>\n <p>{{ "help.referral.p3" | translate }}</p>\n <p>{{ "help.referral.p4" | translate }}</p>\n </div>\n\n <!-- Value page -->\n <div padding [ngClass]=\'{hide : !valueRank}\'>\n <h3>{{ "value.stats.rank" | translate }}</h3>\n <p [innerHTML]="\'help.value.rank.p1\' | translate:referralValues"></p>\n <a (tap)="openHelp(\'valueMarketCap\')">{{ "help.value.rank.p2" | translate }}</a>\n </div>\n\n <div padding [ngClass]=\'{hide : !valueVolume}\'>\n <h3>{{ "value.stats.volume" | translate }}</h3>\n <p>{{ "help.value.volume.p1" | translate }}</p>\n </div>\n\n <div padding [ngClass]=\'{hide : !valueCirculation}\'>\n <h3>{{ "value.stats.circulation" | translate }}</h3>\n <p>{{ "help.value.circulation.p1" | translate }}</p>\n </div>\n\n <div padding [ngClass]=\'{hide : !valueMarketCap}\'>\n <h3>{{ "value.stats.market.cap" | translate }}</h3>\n <p>{{ "help.value.market.cap.p1" | translate }}</p>\n </div>\n\n <div padding [ngClass]=\'{hide : !valuePercentChange}\'>\n <h3>{{ "value.stats.change.1h" | translate }}</h3>\n <p>{{ "help.value.change.1h.p1" | translate }}</p>\n <h3>{{ "value.stats.change.24h" | translate }}</h3>\n <p>{{ "help.value.change.24h.p1" | translate }}</p>\n <h3>{{ "value.stats.change.7d" | translate }}</h3>\n <p>{{ "help.value.change.7d.p1" | translate }}</p>\n </div>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/help/help.html"*/
5846 }),
5847 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["n" /* NavParams */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["q" /* ViewController */],
5848 __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__["c" /* TranslateService */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["l" /* ModalController */]])
5849], HelpPage);
5850
5851var HelpPage_1;
5852//# sourceMappingURL=help.js.map
5853
5854/***/ }),
5855
5856/***/ 85:
5857/***/ (function(module, __webpack_exports__, __webpack_require__) {
5858
5859"use strict";
5860/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return WalletPage; });
5861/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
5862/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
5863/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__wallet_send_wallet_send__ = __webpack_require__(179);
5864/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__wallet_receive_wallet_receive__ = __webpack_require__(180);
5865/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__transaction_details_transaction_details__ = __webpack_require__(181);
5866/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__providers_user_service_user_service__ = __webpack_require__(21);
5867/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__providers_error_alerts_error_alerts__ = __webpack_require__(87);
5868/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__ = __webpack_require__(13);
5869var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5870 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5871 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5872 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5873 return c > 3 && r && Object.defineProperty(target, key, r), r;
5874};
5875var __metadata = (this && this.__metadata) || function (k, v) {
5876 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5877};
5878
5879
5880
5881
5882
5883
5884
5885
5886var WalletPage = (function () {
5887 function WalletPage(navCtrl, apiServer, loading, translateService, alertCtrl, errorCtrl, toastCtrl, modalCtrl) {
5888 var _this = this;
5889 this.navCtrl = navCtrl;
5890 this.apiServer = apiServer;
5891 this.loading = loading;
5892 this.translateService = translateService;
5893 this.alertCtrl = alertCtrl;
5894 this.errorCtrl = errorCtrl;
5895 this.toastCtrl = toastCtrl;
5896 this.modalCtrl = modalCtrl;
5897 this.settings = {
5898 transactions: 'loading',
5899 transactionsDelay: false,
5900 transactionsData: 'loading',
5901 transactionsImport: true,
5902 transactionsWithdrawal: true,
5903 transactionsList: true,
5904 unlocked_balance: null,
5905 balance: null,
5906 balanceError: false,
5907 page: 1,
5908 lastPage: false
5909 };
5910 this.details = {
5911 amount: String,
5912 to: String,
5913 from: String,
5914 date: String,
5915 status: String,
5916 fee: Number,
5917 offlineWalletImport: Boolean,
5918 txHash: String
5919 };
5920 this.page = 2;
5921 this.lastPage = false;
5922 this.walletSendPage = __WEBPACK_IMPORTED_MODULE_2__wallet_send_wallet_send__["a" /* WalletSendPage */];
5923 this.walletReceivePage = __WEBPACK_IMPORTED_MODULE_3__wallet_receive_wallet_receive__["a" /* WalletReceivePage */];
5924 this.transDetailsShow = false;
5925 this.hasPendingTrans = false;
5926 this.workerCounter = 0;
5927 this.popupScroll = false;
5928 this.refreshEvent = '';
5929 this.bodyElement = document.getElementsByClassName('app-root')[0];
5930 this.refreshFrequency = 20;
5931 this.refreshPeriod = 2;
5932 this.importTime = 7200;
5933 this.transactionSettings();
5934 this.navParams = { nextPage: 1, balance: this.settings['unlocked_balance'], wallet_address: null, wallet_qr_url: null, allow_import: this.settings['transactionsImport'] };
5935 this.apiServer.getWalletAddress()
5936 .then(function (resp) {
5937 // They have a wallet
5938 if (resp.status == 1) {
5939 _this.userWalletAddress = resp.wallet['wallet_address'];
5940 _this.refreshFrequency = parseInt(resp.frequency);
5941 _this.refreshPeriod = parseInt(resp.period);
5942 _this.importTime = parseInt(resp.import);
5943 }
5944 else {
5945 // show error
5946 alert('Unable to get wallet address');
5947 }
5948 }, function (err) {
5949 });
5950 }
5951 WalletPage.prototype.ionViewDidEnter = function () {
5952 // this recalculates the content height
5953 this.content.resize();
5954 };
5955 WalletPage.prototype.openTransactionDetails = function (amount, to_wallet, from_wallet, payment_id, date_created, status, transaction_fee, payment_type, tx_hash, tx_key, splits, error_code) {
5956 var modal = this.modalCtrl.create(__WEBPACK_IMPORTED_MODULE_4__transaction_details_transaction_details__["a" /* TransactionDetailsPage */], {
5957 userWallet: this.userWalletAddress,
5958 importTime: this.importTime,
5959 amount: amount,
5960 to_wallet: to_wallet,
5961 from_wallet: from_wallet,
5962 payment_id: payment_id,
5963 date_created: date_created,
5964 status: status,
5965 transaction_fee: transaction_fee,
5966 payment_type: payment_type,
5967 tx_hash: tx_hash,
5968 tx_key: tx_key,
5969 splits: splits,
5970 error_code: error_code
5971 });
5972 modal.present();
5973 };
5974 // Function to shorthand translations
5975 WalletPage.prototype.trans = function (key) {
5976 return this.translateService.instant(key);
5977 };
5978 WalletPage.prototype.nextPage = function (infiniteScroll) {
5979 var _this = this;
5980 this.apiServer.getTransactions(this.page).then(function (resp) {
5981 if (resp.status == 1) {
5982 if (resp.transactions.length != 0) {
5983 _this.page++;
5984 for (var key in resp.transactions) {
5985 // skip loop if the property is from prototype
5986 if (!resp.transactions.hasOwnProperty(key))
5987 continue;
5988 _this.settings['transactionsData'].push(resp.transactions[key]);
5989 }
5990 infiniteScroll.complete();
5991 }
5992 else {
5993 infiniteScroll.enable(false);
5994 }
5995 }
5996 }, function (err) {
5997 infiniteScroll.complete();
5998 });
5999 };
6000 WalletPage.prototype.transactionSettings = function (loader) {
6001 var _this = this;
6002 if (loader === void 0) { loader = null; }
6003 if (loader == null) {
6004 this.settings['balance'] = "loading";
6005 this.settings['unlocked_balance'] = "loading";
6006 }
6007 // show the loading message on the first page load
6008 this.walletRefreshing = true;
6009 this.apiServer.getWalletEnabled()
6010 .then(function (resp) {
6011 if (resp.status) {
6012 _this.settings['transactions'] = resp.transactions;
6013 _this.settings['transactionsDelay'] = resp.transactionWaitTime;
6014 _this.settings['transactionsImport'] = ('undefined' === typeof resp.transactionsImport ? true : resp.transactionsImport == true ? true : false);
6015 _this.navParams['allow_import'] = _this.settings['transactionsImport'];
6016 _this.settings['transactionsWithdrawal'] = ('undefined' === typeof resp.transactionsWithdrawal ? true : resp.transactionsWithdrawal == true ? true : false);
6017 _this.settings['transactionsList'] = ('undefined' === typeof resp.transactionsList ? true : resp.transactionsList == true ? true : false);
6018 localStorage.setItem('_fee', (resp.transactionFee != null) ? resp.transactionFee : 0.20);
6019 if (resp.transactions) {
6020 // this recalculates the content height
6021 _this.content.resize();
6022 _this.apiServer.getWallet()
6023 .then(function (resp) {
6024 if (resp.status == 1) {
6025 _this.settings['balanceError'] = false;
6026 _this.settings['balance'] = resp.wallet['balance'];
6027 _this.settings['unlocked_balance'] = resp.wallet['unlocked_balance'];
6028 // this is used to go to the send page
6029 _this.navParams['balance'] = _this.settings['unlocked_balance'];
6030 _this.navParams['wallet_address'] = resp.wallet['wallet_address'];
6031 _this.navParams['wallet_qr_url'] = resp.wallet['qr_url'];
6032 // check if there are any pending or processing transactions and display the balance info text
6033 if (resp.wallet['balance'] != resp.wallet['unlocked_balance']) {
6034 _this.hasPendingTrans = true;
6035 _this.content.resize();
6036 }
6037 else {
6038 _this.hasPendingTrans = false;
6039 _this.content.resize();
6040 }
6041 if (typeof resp.transactions == "object") {
6042 _this.settings['transactionsData'] = resp.transactions;
6043 }
6044 else {
6045 // If transactions
6046 _this.settings['transactionsData'] = 'no-data';
6047 }
6048 _this.updateBalanceAndTransactions(resp.tracker);
6049 _this.walletRefreshing = true;
6050 if (loader != null) {
6051 loader.dismiss();
6052 }
6053 }
6054 else {
6055 // error getting wallet details
6056 _this.errorCtrl.showCode(6000, false);
6057 }
6058 }, function (err) {
6059 });
6060 }
6061 else {
6062 _this.apiServer.getWalletBalance()
6063 .then(function (resp) {
6064 if (resp.status == 1) {
6065 _this.settings['balance'] = resp.balance;
6066 _this.settings['unlocked_balance'] = resp.unlocked_balance;
6067 }
6068 else {
6069 _this.settings['balance'] = _this.trans("wallet.ts.balance.server.busy.try.again");
6070 _this.settings['unlocked_balance'] = _this.trans("wallet.ts.balance.server.busy.try.again");
6071 }
6072 }, function (err) {
6073 _this.settings['balanceError'] = true;
6074 _this.settings['balance'] = _this.trans("wallet.ts.balance.server.busy.try.again");
6075 _this.settings['unlocked_balance'] = 'disabled';
6076 });
6077 }
6078 }
6079 else {
6080 if (loader != null) {
6081 loader.dismiss();
6082 }
6083 }
6084 }, function (err) {
6085 if (err.status == 2) {
6086 var alertOffline_1 = _this.alertCtrl.create({
6087 title: err.title,
6088 message: err.message,
6089 buttons: [{
6090 text: err.buttons.cancel,
6091 role: 'cancel',
6092 handler: function () {
6093 // Close the alert
6094 return;
6095 }
6096 }, {
6097 text: err.buttons.retry,
6098 handler: function () {
6099 // UserServiceProvider
6100 if (_this.apiServer.isOnline()) {
6101 _this.transactionSettings(loader);
6102 alertOffline_1.dismiss();
6103 }
6104 else {
6105 alertOffline_1.present();
6106 }
6107 return false;
6108 }
6109 }]
6110 });
6111 alertOffline_1.present();
6112 }
6113 else {
6114 var alert_1 = _this.alertCtrl.create({
6115 title: _this.trans("global.alert.error.occured.title"),
6116 subTitle: _this.trans("global.alert.error.code") + '90211',
6117 message: _this.trans("global.alert.error.unable.to.connect"),
6118 buttons: [{
6119 text: _this.trans("global.alert.button.retry"),
6120 handler: function () {
6121 _this.transactionSettings(loader);
6122 }
6123 }]
6124 });
6125 alert_1.present();
6126 }
6127 });
6128 };
6129 WalletPage.prototype.startCustomPTR = function (refresher) {
6130 if (typeof refresher == 'object' && refresher.state == 'refreshing') {
6131 this.bodyElement.classList.add('custom-ptr-active');
6132 }
6133 };
6134 WalletPage.prototype.endCustomPTR = function (refresher) {
6135 this.bodyElement.classList.remove('custom-ptr-active');
6136 if (typeof refresher == 'object') {
6137 refresher.complete();
6138 }
6139 this.refreshEvent = '';
6140 };
6141 WalletPage.prototype.refreshWallet = function (refresher) {
6142 var _this = this;
6143 if (refresher != 'topButton' && typeof this.refreshEvent != 'object') {
6144 this.refreshEvent = refresher;
6145 }
6146 if (this.walletRefreshing) {
6147 var alert_2 = this.alertCtrl.create({
6148 title: this.trans("wallet.ts.refresh.alert.title"),
6149 subTitle: this.trans("wallet.ts.refresh.alert.subtitle"),
6150 buttons: [this.trans("global.alert.button.ok")]
6151 });
6152 alert_2.present();
6153 return false;
6154 }
6155 else {
6156 this.walletRefreshing = true;
6157 this.startCustomPTR(this.refreshEvent);
6158 }
6159 this.apiServer.getWalletRefresh()
6160 .then(function (resp) {
6161 if (resp.status == 1) {
6162 _this.settings['balance'] = resp.balance;
6163 _this.settings['unlocked_balance'] = resp.unlocked_balance;
6164 // this is used to go to the send page
6165 _this.navParams['balance'] = _this.settings['unlocked_balance'];
6166 // check if there are any pending or processing transactions and display the balance info text
6167 if (resp.balance != resp.unlocked_balance) {
6168 _this.hasPendingTrans = true;
6169 _this.content.resize();
6170 }
6171 else {
6172 _this.hasPendingTrans = false;
6173 _this.content.resize();
6174 }
6175 if (typeof resp.transactions == "object") {
6176 _this.settings['transactionsData'] = resp.transactions;
6177 }
6178 else {
6179 // If transactions
6180 _this.settings['transactionsData'] = 'no-data';
6181 }
6182 _this.updateBalanceAndTransactions(resp.tracker);
6183 }
6184 else {
6185 // error
6186 _this.errorCtrl.showCode(6050, false);
6187 _this.walletRefreshing = false;
6188 _this.endCustomPTR(_this.refreshEvent);
6189 }
6190 }, function (err) {
6191 _this.walletRefreshing = false;
6192 _this.endCustomPTR(_this.refreshEvent);
6193 if (err.status == 2) {
6194 var alertOffline_2 = _this.alertCtrl.create({
6195 title: err.title,
6196 message: err.message,
6197 buttons: [{
6198 text: err.buttons.cancel,
6199 role: 'cancel',
6200 handler: function () {
6201 // Close the alert
6202 return;
6203 }
6204 }, {
6205 text: err.buttons.retry,
6206 handler: function () {
6207 // UserServiceProvider
6208 if (_this.apiServer.isOnline()) {
6209 _this.refreshWallet(refresher);
6210 alertOffline_2.dismiss();
6211 }
6212 else {
6213 alertOffline_2.present();
6214 }
6215 return false;
6216 }
6217 }]
6218 });
6219 alertOffline_2.present();
6220 }
6221 else {
6222 _this.errorCtrl.showCode(6060, false);
6223 _this.walletRefreshing = false;
6224 }
6225 });
6226 };
6227 WalletPage.prototype.updateBalanceAndTransactions = function (tracker) {
6228 var _this = this;
6229 this.apiServer.checkWorkerStatus(tracker)
6230 .then(function (resp) {
6231 _this.refreshFrequency = parseInt(resp.frequency);
6232 _this.refreshPeriod = parseInt(resp.period);
6233 _this.importTime = parseInt(resp.import);
6234 if (resp.status == 1) {
6235 // it's worked connecting to transactions
6236 if (resp.worker_status == 2) {
6237 _this.apiServer.getWalletBalance()
6238 .then(function (resp) {
6239 if (resp.status == 1) {
6240 _this.settings['unlocked_balance'] = resp.unlocked_balance;
6241 _this.settings['balance'] = resp.balance;
6242 // this is used to go to the send page
6243 _this.navParams['balance'] = _this.settings['unlocked_balance'];
6244 // check if there are any pending or processing transactions and display the balance info text
6245 if (resp.balance != resp.unlocked_balance) {
6246 _this.hasPendingTrans = true;
6247 _this.content.resize();
6248 }
6249 else {
6250 _this.hasPendingTrans = false;
6251 _this.content.resize();
6252 }
6253 }
6254 else {
6255 _this.errorCtrl.showCode(6010, false);
6256 }
6257 });
6258 _this.apiServer.getTransactions(1)
6259 .then(function (resp) {
6260 if (resp.status == 1) {
6261 _this.settings['transactionsData'] = resp.transactions;
6262 }
6263 else {
6264 _this.errorCtrl.showCode(6020, false);
6265 }
6266 }, function (err) {
6267 _this.settings['transactionsData'] = 'error';
6268 });
6269 _this.walletRefreshing = false;
6270 _this.endCustomPTR(_this.refreshEvent);
6271 _this.updateFinishedToast('success');
6272 _this.workerCounter = 0;
6273 }
6274 else {
6275 if (_this.workerCounter++ < _this.refreshPeriod) {
6276 setTimeout(function () {
6277 _this.updateBalanceAndTransactions(tracker);
6278 }, _this.refreshFrequency * 1000, tracker);
6279 }
6280 else {
6281 _this.walletRefreshing = false;
6282 _this.endCustomPTR(_this.refreshEvent);
6283 _this.updateFinishedToast('error');
6284 _this.workerCounter = 0;
6285 }
6286 }
6287 }
6288 else {
6289 // no response from worker
6290 _this.errorCtrl.showCode(6030, false);
6291 _this.walletRefreshing = false;
6292 _this.endCustomPTR(_this.refreshEvent);
6293 }
6294 }, function (err) {
6295 _this.walletRefreshing = false;
6296 _this.endCustomPTR(_this.refreshEvent);
6297 if (err.status == 2) {
6298 var alertOffline_3 = _this.alertCtrl.create({
6299 title: err.title,
6300 message: err.message,
6301 buttons: [{
6302 text: err.buttons.cancel,
6303 role: 'cancel',
6304 handler: function () {
6305 // Close the alert
6306 return;
6307 }
6308 }, {
6309 text: err.buttons.retry,
6310 handler: function () {
6311 // UserServiceProvider
6312 if (_this.apiServer.isOnline()) {
6313 _this.updateBalanceAndTransactions(tracker);
6314 alertOffline_3.dismiss();
6315 }
6316 else {
6317 alertOffline_3.present();
6318 }
6319 return false;
6320 }
6321 }]
6322 });
6323 alertOffline_3.present();
6324 }
6325 else if (err.code == 401) {
6326 // Token has expired, most likely logged out
6327 _this.walletRefreshing = false;
6328 _this.endCustomPTR(_this.refreshEvent);
6329 }
6330 else {
6331 _this.errorCtrl.showCode(6040, false);
6332 _this.walletRefreshing = false;
6333 _this.endCustomPTR(_this.refreshEvent);
6334 }
6335 });
6336 };
6337 WalletPage.prototype.updateFinishedToast = function (type) {
6338 var message = '';
6339 if (type == 'success') {
6340 message = this.trans("wallet.ts.update.toast.success");
6341 }
6342 else if (type == 'error') {
6343 message = this.trans("wallet.ts.update.toast.error");
6344 }
6345 var toast = this.toastCtrl.create({
6346 message: message,
6347 duration: 3000,
6348 position: 'bottom'
6349 });
6350 toast.present();
6351 };
6352 WalletPage.prototype.sendingDisabledAlert = function () {
6353 var alert = this.alertCtrl.create({
6354 title: this.trans("global.alert.title.info"),
6355 message: this.trans("wallet.ts.alert.sending.disabled.text"),
6356 buttons: [{
6357 text: this.trans("global.nav.button.close"),
6358 role: 'cancel',
6359 handler: function () {
6360 // Close the alert
6361 return;
6362 }
6363 }]
6364 });
6365 alert.present();
6366 };
6367 return WalletPage;
6368}());
6369__decorate([
6370 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["_14" /* ViewChild */])(__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["e" /* Content */]),
6371 __metadata("design:type", __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["e" /* Content */])
6372], WalletPage.prototype, "content", void 0);
6373WalletPage = __decorate([
6374 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["n" /* Component */])({
6375 selector: 'page-wallet',template:/*ion-inline-start:"/usr/src/app/src/pages/wallet/wallet.html"*/'<ion-header no-border>\n <ion-navbar>\n <ion-title>{{ "wallet.navbar.title" | translate }}</ion-title>\n <ion-buttons end *ngIf="this.settings?.transactions == true">\n <button ion-button icon-only (click)="refreshWallet(\'topButton\')">\n <ion-icon name="refresh"></ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n \n</ion-header>\n\n<ion-content no-bounce>\n <ion-refresher (ionRefresh)="refreshWallet($event)" [enabled]="!walletRefreshing && settings?.transactions" [pullMin]="100" [pullMax]="200" [snapbackDuration]="580">\n <ion-refresher-content \n pullingIcon="arrow-dropdown"\n pullingText="{{ \'wallet.ptr.pulling.text\' | translate }}"\n refreshingSpinner=" "\n refreshingText="">\n </ion-refresher-content> \n </ion-refresher>\n\n <div [ngSwitch]="settings?.transactions">\n\n <!-- If the transactions system is online -->\n <div *ngSwitchCase="true">\n <ion-grid class="balance-info">\n \n <ion-row>\n <ion-col>\n <h5>{{ "wallet.balance" | translate }}</h5>\n <h4 *ngIf="settings?.balanceError == true" class="w-txt wallet-balance">{{ settings?.balance }}</h4>\n <h1 *ngIf="settings?.balance == \'loading\'" class="wallet-balance">{{ "wallet.balance.loading" | translate }}</h1>\n <h1 *ngIf="settings?.balance >= 0" class="wallet-balance">{{ settings?.balance|number }} ETN</h1>\n <h5 *ngIf="settings?.unlocked_balance == \'loading\'" class="available-balance margin-bottom-10">{{ "wallet.available.balance" | translate }}: {{ "wallet.balance.loading" | translate }}</h5>\n <h5 *ngIf="settings?.unlocked_balance >= 0" class="available-balance margin-bottom-10">{{ "wallet.available.balance" | translate }}: {{ settings?.unlocked_balance|number }} ETN</h5>\n <p class="current-balance-info" *ngIf="hasPendingTrans > 0">{{ "wallet.balance.info" | translate }}</p>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <button ion-button *ngIf="settings?.transactionsWithdrawal == true" [navPush]="walletSendPage" [navParams]="navParams" class="wallet-button" [ngClass]="{\'disabled\': settings?.unlocked_balance == \'loading\' || settings?.unlocked_balance == \'disabled\'}">{{ "wallet.button.send" | translate }}</button>\n <button ion-button *ngIf="settings?.transactionsWithdrawal == false" (click)="sendingDisabledAlert()" class="wallet-button dark-grey-bg w-txt">{{ "wallet.button.send" | translate }}</button>\n </ion-col>\n <ion-col>\n <button ion-button class="wallet-button" [navPush]="walletReceivePage" [navParams]="navParams">{{ "wallet.button.receive" | translate }}</button>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n <div *ngIf="settings?.transactionsDelay" text-center class="transactions-warning">{{ "wallet.transactions.delay.message" | translate }}</div>\n <ion-list class="transactions-list grey-bg">\n <div *ngIf="walletRefreshing" padding text-center class="transactions-loading">\n <ion-spinner></ion-spinner>\n <p>\n {{ "wallet.transactions.loading.from.blockchain" | translate }}\n <small>{{ "wallet.transactions.loading.from.blockchain.small" | translate }}</small>\n </p>\n </div>\n\n <ion-list-header class="grey-bg">\n {{ "wallet.transactions.list.title" | translate }}\n </ion-list-header>\n\n <div [ngSwitch]="settings?.transactionsData">\n <div *ngSwitchCase="\'loading\'" text-center padding>\n <ion-spinner></ion-spinner>\n <p>{{ "global.loading" | translate }}</p>\n </div>\n <div *ngSwitchCase="\'no-data\'" text-center>\n <h5>{{ "wallet.no.transactions.found" | translate }}</h5>\n </div>\n <div *ngSwitchDefault>\n <ion-card *ngFor="let transaction of settings?.transactionsData" (click)="openTransactionDetails (transaction.destinationAmount, transaction.destinationWallet, transaction.sourceWalletAddress, transaction.paymentId, transaction.dateCreated, transaction.status, transaction.fee, transaction.paymentType, transaction.txHash, transaction.txKey, transaction.splits, transaction.errorCode)">\n <div class="transaction-info {{ transaction.type }}" padding>\n <div class="transaction-amount" *ngIf="transaction.paymentType == 1 && transaction.status > 0 && transaction.status < 3">{{transaction.destinationAmount|number:\'1.2-2\'}} ETN</div>\n <div class="transaction-amount" *ngIf="transaction.paymentType != 1">{{transaction.destinationAmount|number:\'1.2-2\'}} ETN</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 0 && transaction.destinationWallet == userWalletAddress">{{ "wallet.transaction.title.received" | translate }}</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 0 && transaction.destinationWallet != userWalletAddress">{{ "wallet.transaction.title.sent" | translate }}</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 1">{{ "wallet.transaction.title.import" | translate }}</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 2">{{ "wallet.transaction.title.mobile.miner" | translate }}</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 3">{{ "wallet.transaction.title.received.gift.reward" | translate }}</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 4">{{ "wallet.transaction.title.sent" | translate }}</div>\n <div class="transaction-direction" *ngIf="transaction.paymentType == 5">{{ "wallet.transaction.title.received.bounty" | translate }}</div>\n <div class="transaction-hash" *ngIf="transaction.paymentType != true && transaction.splits.length < 1 && transaction.txHash == null">{{ "wallet.transaction.tx.hash" | translate}}: {{ "wallet.transactions.popup.transaction.hash.not.yet.generated" | translate }}</div>\n <div class="transaction-hash" *ngIf="transaction.paymentType != true && transaction.splits.length < 1 && transaction.txHash != null">{{ "wallet.transaction.tx.hash" | translate}}: {{ transaction.txHash }}</div>\n <div class="transaction-hash" *ngIf="transaction.paymentType != true && transaction.splits.length > 1">{{ "wallet.transaction.split.title" | translate}}</div>\n <div class="transaction-hash" *ngIf="transaction.paymentType == true">{{"wallet.transaction.from" | translate}}: {{ transaction.sourceWalletAddress }}</div>\n <div class="transaction-date">{{ transaction.dateCreated | date:\'MMM d, y, HH:mm\' }}</div>\n <div class="transaction-status status-{{ transaction.status }}" [ngSwitch]="transaction.status">\n <span *ngSwitchCase="0">{{ "wallet.transaction.status.pending" | translate }}</span>\n <span *ngSwitchCase="1">{{ "wallet.transaction.status.processing" | translate }}</span>\n <span *ngSwitchCase="2">{{ "wallet.transaction.status.complete" | translate }}</span>\n <span *ngSwitchCase="3">{{ "wallet.transaction.status.failed" | translate }}</span>\n <span *ngSwitchCase="4">{{ "wallet.transaction.status.partialy.failed" | translate }}</span>\n <span *ngSwitchCase="5">{{ "wallet.transaction.status.empty.balance" | translate }}</span>\n <span *ngSwitchCase="6">{{ "wallet.transaction.status.no.response" | translate }}</span>\n </div>\n </div>\n </ion-card>\n </div>\n </div>\n\n <ion-infinite-scroll (ionInfinite)="nextPage($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n\n </ion-list>\n\n </div>\n\n <!-- If the transactions system is offline -->\n <div *ngSwitchCase="false" padding text-center>\n <div class="wallet-image wallet-unavailable">\n <svg-icon src="assets/images/wallet-unavailable.svg"></svg-icon>\n </div>\n <div *ngIf="settings?.unlocked_balance == \'loading\'" text-center>\n <ion-spinner></ion-spinner>\n </div>\n <div class="wallet-info" *ngIf="settings?.unlocked_balance == 0">\n <h1>{{ "wallet.state.empty.2.heading" | translate }}</h1>\n <p>{{ "wallet.offline.p1" | translate }}</p>\n <p>{{ "wallet.offline.p2" | translate }}</p>\n </div>\n <div class="wallet-info" *ngIf="settings?.unlocked_balance > 0">\n <div class="balance-title">{{ "wallet.state.has.funds.heading" | translate }}</div>\n <h2>{{ settings?.unlocked_balance|number }} ETN</h2>\n <p>{{ "wallet.offline.p1" | translate }}</p>\n <p>{{ "wallet.offline.p2" | translate }}</p>\n </div>\n <ion-grid *ngIf="settings?.unlocked_balance >= 0">\n <ion-row>\n <ion-col>\n <button color="twitter" icon-left ion-button small full onClick="window.open(\'https://twitter.com/electroneum\',\'_system\',\'location=yes\');return false;">\n <ion-icon name="icon-twitter"></ion-icon>Twitter</button>\n </ion-col>\n <ion-col>\n <button color="facebook" icon-left ion-button small full onClick="window.open(\'https://www.facebook.com/electroneum/\',\'_system\',\'location=yes\');return false;">\n <ion-icon name="icon-facebook"></ion-icon>Facebook</button>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n\n <div *ngSwitchCase="\'loading\'" padding text-center>\n <ion-spinner></ion-spinner>\n <p>{{ "global.loading" | translate }}</p>\n </div>\n </div>\n</ion-content>'/*ion-inline-end:"/usr/src/app/src/pages/wallet/wallet.html"*/,
6376 providers: [__WEBPACK_IMPORTED_MODULE_5__providers_user_service_user_service__["a" /* UserServiceProvider */]]
6377 }),
6378 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["m" /* NavController */], __WEBPACK_IMPORTED_MODULE_5__providers_user_service_user_service__["a" /* UserServiceProvider */],
6379 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["k" /* LoadingController */], __WEBPACK_IMPORTED_MODULE_7__ngx_translate_core__["c" /* TranslateService */],
6380 __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_6__providers_error_alerts_error_alerts__["a" /* ErrorAlert */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["p" /* ToastController */], __WEBPACK_IMPORTED_MODULE_1_ionic_angular__["l" /* ModalController */]])
6381], WalletPage);
6382
6383//# sourceMappingURL=wallet.js.map
6384
6385/***/ }),
6386
6387/***/ 87:
6388/***/ (function(module, __webpack_exports__, __webpack_require__) {
6389
6390"use strict";
6391/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ErrorAlert; });
6392/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
6393/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(5);
6394/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__ = __webpack_require__(13);
6395var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
6396 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6397 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6398 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6399 return c > 3 && r && Object.defineProperty(target, key, r), r;
6400};
6401var __metadata = (this && this.__metadata) || function (k, v) {
6402 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
6403};
6404
6405
6406
6407var ErrorAlert = (function () {
6408 function ErrorAlert(alertCtrl, translateService) {
6409 this.alertCtrl = alertCtrl;
6410 this.translateService = translateService;
6411 }
6412 // Function to shorthand translations
6413 ErrorAlert.prototype.trans = function (key) {
6414 return this.translateService.instant(key);
6415 };
6416 ErrorAlert.prototype.showCode = function (code, message) {
6417 if (message === void 0) { message = null; }
6418 message = (message == false ? '' : this.trans("global.alert.error.unable.to.connect"));
6419 var alert = this.alertCtrl.create({
6420 title: this.trans("global.alert.error.occured.title"),
6421 subTitle: this.trans("global.alert.error.code") + code,
6422 message: message,
6423 buttons: [{
6424 text: this.trans("global.nav.button.close")
6425 }]
6426 });
6427 alert.present();
6428 };
6429 return ErrorAlert;
6430}());
6431ErrorAlert = __decorate([
6432 Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["B" /* Injectable */])(),
6433 __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["a" /* AlertController */], __WEBPACK_IMPORTED_MODULE_2__ngx_translate_core__["c" /* TranslateService */]])
6434], ErrorAlert);
6435
6436//# sourceMappingURL=error-alerts.js.map
6437
6438/***/ })
6439
6440},[391]);
6441//# sourceMappingURL=main.js.map