2014-03-25 07:35:04 -07:00
'use strict' ;
2014-06-03 13:42:36 -07:00
angular . module ( 'copayApp.controllers' ) . controller ( 'HeaderController' ,
2014-06-25 13:14:12 -07:00
function ( $scope , $rootScope , $location , notification , $http , controllerUtils , backupService ) {
2014-06-24 08:36:32 -07:00
$scope . menu = [ {
2014-04-20 16:21:54 -07:00
'title' : 'Addresses' ,
'icon' : 'fi-address-book' ,
'link' : '#/addresses'
2014-03-26 05:18:42 -07:00
} , {
'title' : 'Transactions' ,
2014-06-23 06:34:40 -07:00
'icon' : 'fi-clipboard-pencil' ,
2014-03-26 05:18:42 -07:00
'link' : '#/transactions'
} , {
'title' : 'Send' ,
2014-04-15 08:33:00 -07:00
'icon' : 'fi-arrow-right' ,
2014-03-26 05:18:42 -07:00
'link' : '#/send'
} , {
'title' : 'Backup' ,
2014-04-15 08:33:00 -07:00
'icon' : 'fi-archive' ,
2014-03-26 05:18:42 -07:00
'link' : '#/backup'
2014-04-15 10:02:45 -07:00
} ] ;
2014-03-25 07:35:04 -07:00
2014-06-23 15:09:26 -07:00
$scope . getNumber = function ( num ) {
return new Array ( num ) ;
}
2014-06-24 08:36:32 -07:00
$http . get ( 'https://api.github.com/repos/bitpay/copay/tags' ) . success ( function ( data ) {
var toInt = function ( s ) {
return parseInt ( s ) ;
} ;
2014-06-02 12:52:33 -07:00
var latestVersion = data [ 0 ] . name . replace ( 'v' , '' ) . split ( '.' ) . map ( toInt ) ;
var currentVersion = copay . version . split ( '.' ) . map ( toInt ) ;
2014-06-24 08:36:32 -07:00
if ( currentVersion [ 0 ] < latestVersion [ 0 ] ) {
$scope . updateVersion = {
class : 'error' ,
version : data [ 0 ] . name
} ;
2014-06-02 12:52:33 -07:00
} else if ( currentVersion [ 0 ] == latestVersion [ 0 ] && currentVersion [ 1 ] < latestVersion [ 1 ] ) {
2014-06-24 08:36:32 -07:00
$scope . updateVersion = {
class : 'info' ,
version : data [ 0 ] . name
} ;
}
2014-06-02 12:52:33 -07:00
} ) ;
2014-06-16 08:44:18 -07:00
$rootScope . unitName = config . unitName ;
2014-06-04 14:10:47 -07:00
2014-05-14 22:13:25 -07:00
// Initialize alert notification (not show when init wallet)
2014-05-15 06:41:42 -07:00
$rootScope . txAlertCount = 0 ;
2014-06-05 10:55:19 -07:00
$rootScope . insightError = 0 ;
2014-06-04 14:10:47 -07:00
2014-06-27 11:07:07 -07:00
2014-06-05 08:18:54 -07:00
$rootScope . $watch ( 'insightError' , function ( status ) {
2014-06-05 10:55:19 -07:00
if ( status === - 1 ) {
2014-06-27 11:07:07 -07:00
notification . success ( 'Networking restored' , 'Connection to Insight re-established' ) ;
//$rootScope.insightError = 0;
} else {
notification . error ( 'Networking problem' , 'Connection to Insight lost, reconnecting (attempt number ' + status + ')' ) ;
2014-06-05 08:18:54 -07:00
}
2014-05-14 22:13:25 -07:00
} ) ;
2014-06-04 14:10:47 -07:00
// Init socket handlers (with no wallet yet)
controllerUtils . setSocketHandlers ( ) ;
2014-05-20 10:31:00 -07:00
$rootScope . $watch ( 'receivedFund' , function ( receivedFund ) {
if ( receivedFund ) {
2014-05-20 15:40:02 -07:00
var currentAddr ;
2014-06-24 08:36:32 -07:00
for ( var i = 0 ; i < $rootScope . addrInfos . length ; i ++ ) {
2014-05-20 15:40:02 -07:00
var addrinfo = $rootScope . addrInfos [ i ] ;
if ( addrinfo . address . toString ( ) == receivedFund [ 1 ] && ! addrinfo . isChange ) {
currentAddr = addrinfo . address . toString ( ) ;
break ;
}
}
if ( currentAddr ) {
2014-06-09 10:41:55 -07:00
//var beep = new Audio('sound/transaction.mp3');
2014-06-18 09:01:50 -07:00
notification . funds ( 'Received fund' , currentAddr , receivedFund ) ;
2014-06-09 10:41:55 -07:00
//beep.play();
2014-05-20 15:40:02 -07:00
}
2014-05-20 10:31:00 -07:00
}
} ) ;
2014-06-04 14:10:47 -07:00
$rootScope . $watch ( 'txAlertCount' , function ( txAlertCount ) {
if ( txAlertCount && txAlertCount > 0 ) {
2014-06-18 09:01:50 -07:00
notification . info ( 'New Transaction' , ( $rootScope . txAlertCount == 1 ) ? 'You have a pending transaction proposal' : 'You have ' + $rootScope . txAlertCount + ' pending transaction proposals' , txAlertCount ) ;
2014-06-04 14:10:47 -07:00
}
} ) ;
2014-03-26 05:18:42 -07:00
$scope . isActive = function ( item ) {
2014-06-24 08:36:32 -07:00
if ( item . link && item . link . replace ( '#' , '' ) == $location . path ( ) ) {
2014-03-26 05:18:42 -07:00
return true ;
}
return false ;
} ;
2014-06-24 08:36:32 -07:00
2014-03-25 07:35:04 -07:00
$scope . signout = function ( ) {
2014-05-15 13:04:26 -07:00
logout ( ) ;
2014-04-30 15:50:13 -07:00
} ;
$scope . refresh = function ( ) {
2014-05-06 12:21:56 -07:00
var w = $rootScope . wallet ;
2014-05-06 13:36:16 -07:00
w . connectToAll ( ) ;
2014-06-24 08:36:32 -07:00
if ( $rootScope . addrInfos . length > 0 ) {
2014-05-21 14:53:17 -07:00
controllerUtils . updateBalance ( function ( ) {
$rootScope . $digest ( ) ;
} ) ;
}
2014-03-25 07:35:04 -07:00
} ;
2014-04-09 07:05:25 -07:00
2014-04-20 15:39:16 -07:00
$rootScope . isCollapsed = true ;
2014-05-15 13:04:26 -07:00
2014-05-29 20:00:40 -07:00
$scope . toggleCollapse = function ( ) {
$rootScope . isCollapsed = ! $rootScope . isCollapsed ;
} ;
2014-05-15 13:04:26 -07:00
function logout ( ) {
var w = $rootScope . wallet ;
if ( w ) {
w . disconnect ( ) ;
controllerUtils . logout ( ) ;
}
}
// Ensures a graceful disconnect
window . onbeforeunload = logout ;
$scope . $on ( '$destroy' , function ( ) {
window . onbeforeunload = undefined ;
} ) ;
2014-06-25 13:14:12 -07:00
$scope . backupAndOpen = function ( ) {
var w = $rootScope . wallet ;
w . offerBackup ( ) ;
2014-06-26 08:33:14 -07:00
backupService . download ( w ) ;
2014-06-25 13:14:12 -07:00
} ;
2014-03-25 07:35:04 -07:00
} ) ;