var AccountView = View.extend({ initialize: function(){ }, connect: function(cb){ auth.init(this.ready.bind(this, cb)) }, ready: function(cb){ if (auth.logged_in()) { this.logged_in(cb) } else { this.logged_out(cb) } }, addresses: [], addressLookup: {}, ccs: [], ccLookup: {}, listAddresses: function(cb){ sdk.address.list({ success: function(data){ this.populateAddresses(data, cb) }.bind(this) }) }, populateAddresses: function(data, cb){ console.log("populate addresses:", data.AddressBook.addressBookItem) if (! data.AddressBook) { console.log("no addresses") cb && cb() return } this.addresses = data.AddressBook.addressBookItem this.addressLookup = {} data.AddressBook.addressBookItem.forEach(function(item){ this.addressLookup[ item.Id ] = item if (item.IsDefault) { console.log("SHIPPING ADDRESS", item) app.shipping.populate(item) } if (item.IsBillingDefault) { console.log("BILLING ADDRESS") app.payment.populate(item) } }.bind(this)) app.cart.shipping.populate() cb && cb() }, listCreditCards: function(cb){ sdk.payment.list_credit_cards({ success: function(data){ this.populateCreditCards(data, cb) }.bind(this) }) }, populateCreditCards: function(data, cb){ console.log(data) this.ccs = data.CreditCards this.ccLookup = {} if (! data.CreditCards || ! data.CreditCards.length) { } else { data.CreditCards.forEach(function(cc){ this.ccLookup[cc.Id] = cc }.bind(this)) app.payment.populate( data.CreditCards[0] ) app.cart.payment.populate() } cb && cb() }, logged_in: function(cb){ this.listAddresses() this.listCreditCards() $("#nav .login").hide() $("#nav .account, #nav .logout").show() if (! auth.deferred_product && app.last_view) { if (app.last_view != app.login && app.last_view != app.signin && app.last_view != app.logout) { app.view && app.view.hide && app.view.hide() app.view = app.last_view app.view.show() } } else { cb && cb() } if ( ! auth.has_cart() ) { app.curtain.show("loading") auth.create_cart(function(){ auth.add_deferred_product_to_cart(function(){ app.router.go("cart") setTimeout(function(){ app.curtain.hide("loading") }, 500) }) }) } else { if (auth.deferred_product) { auth.add_deferred_product_to_cart(function(){ app.router.go("cart") }) } else { app.cart.load() } } }, logged_out: function(cb){ $("#nav .login").show() $("#nav .account, #nav .logout").hide() $("#nav").removeClass("account") cb && cb() }, })