var simcard = (function(){ var simcard = {} simcard.loaded = false simcard.data = { carrierName: 'unknown', countryCode: 'us', mcc: '0', mnc: '0', } simcard.fetch = function(cb){ console.log('fetching sim data') simcard.afterFetch = cb window.plugins.sim.getSimInfo(simcard.success, simcard.error) // cordova.exec(simcard.success, simcard.error, 'Sim', 'getSimInfo', []) } simcard.afterFetch = function(){} simcard.success = function(data){ console.log(data) if (simcard.data.countryCode) { simcard.data = data simcard.data.countryCode = simcard.data.countryCode.toLowerCase() // app is only available in US or Canada, so call the US API regardless if (simcard.data.countryCode !== 'ca') { simcard.data.countryCode = 'us' } } simcard.loaded = true simcard.afterFetch() } simcard.error = function(){ console.log("no SIM card detected") $.ajax({ url: "http://ip-api.com/json/", jsonp: "callback", dataType: "jsonp", success: simcard.success, error: function(){ simcard.loaded = true simcard.afterFetch() } }) } return simcard })()