Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Merge pull request #7947 from lodr/bug-837652-proactive-behavior
Browse files Browse the repository at this point in the history
Bug 837652 - Checking balance when endind an outgoing call or sending a SMS
Cause r+
  • Loading branch information
delapuente committed Feb 5, 2013
2 parents 888ba53 + 94940fd commit c419284
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 35 deletions.
63 changes: 49 additions & 14 deletions apps/costcontrol/js/costcontrol.js
Expand Up @@ -29,6 +29,7 @@ var CostControl = (function() {
function setupCostControl() {
costcontrol = {
request: request,
isBalanceRequestSMS: isBalanceRequestSMS,
getApplicationMode: getApplicationMode,
getDataUsageWarning: function _getDataUsageWarning() {
return 0.8;
Expand Down Expand Up @@ -76,6 +77,12 @@ var CostControl = (function() {
return settings.plantype.toUpperCase();
}

// Check if a SMS matches the form of a balance request
function isBalanceRequestSMS(sms, configuration) {
return sms.body === configuration.balance.text &&
sms.receiver === configuration.balance.destination;
}

// Perform a request. They must be specified via a request object with:
// type: datausage, balance, topup or telephony
// data: in case of topup, the code for topup
Expand All @@ -101,7 +108,9 @@ var CostControl = (function() {
result.status = 'error';
result.details = issues;
result.data = settings.lastBalance;
callback(result);
if (callback) {
callback(result);
}
return;
}

Expand All @@ -110,7 +119,9 @@ var CostControl = (function() {
result.status = 'error';
result.details = costIssues;
result.data = settings.lastBalance;
callback(result);
if (callback) {
callback(result);
}
return;
}

Expand All @@ -121,7 +132,9 @@ var CostControl = (function() {
if (isWaiting && !timeout && !force) {
result.status = 'in_progress';
result.data = settings.lastBalance;
callback(result);
if (callback) {
callback(result);
}
return;
}

Expand All @@ -136,7 +149,9 @@ var CostControl = (function() {
result.status = 'error';
result.details = issues;
result.data = settings.lastDataUsage;
callback(result);
if (callback) {
callback(result);
}
return;
}

Expand All @@ -145,7 +160,9 @@ var CostControl = (function() {
result.status = 'error';
result.details = costIssues;
result.data = settings.lastBalance;
callback(result);
if (callback) {
callback(result);
}
return;
}

Expand All @@ -156,7 +173,9 @@ var CostControl = (function() {
if (isWaiting && !timeout && !force) {
result.status = 'in_progress';
result.data = settings.lastDataUsage;
callback(result);
if (callback) {
callback(result);
}
return;
}

Expand All @@ -174,7 +193,9 @@ var CostControl = (function() {
// Can not fail: only dispatch
result.data = settings.lastTelephonyActivity;
result.status = 'success';
callback(result);
if (callback) {
callback(result);
}
break;
}
return;
Expand Down Expand Up @@ -259,7 +280,9 @@ var CostControl = (function() {
},
function _onSet() {
result.status = 'success';
callback(result);
if (callback) {
callback(result);
}
}
);
};
Expand All @@ -268,15 +291,19 @@ var CostControl = (function() {
debug('Failed to set timeout for balance request!');
result.status = 'error';
result.details = 'timout_fail';
callback(result);
if (callback) {
callback(result);
}
};
};

newSMS.onerror = function _onError() {
debug('Request SMS failed! But returning stored balance.');
result.status = 'error';
result.details = 'request_fail';
callback(result);
if (callback) {
callback(result);
}
};

debug('Balance out of date. Requesting fresh data...');
Expand Down Expand Up @@ -313,7 +340,9 @@ var CostControl = (function() {
},
function _onSet() {
result.status = 'success';
callback(result);
if (callback) {
callback(result);
}
}
);
};
Expand All @@ -322,15 +351,19 @@ var CostControl = (function() {
debug('Failed to set timeout for TopUp request!');
result.status = 'error';
result.details = 'timeout_fail';
callback(result);
if (callback) {
callback(result);
}
};
};

newSMS.onerror = function _onError() {
debug('TopUp SMS failed!');
result.status = 'error';
result.details = 'request_fail';
callback(result);
if (callback) {
callback(result);
}
};
}

Expand Down Expand Up @@ -407,7 +440,9 @@ var CostControl = (function() {
result.status = 'success';
result.data = lastDataUsage;
debug('Returning up to date statistics.');
callback(result);
if (callback) {
callback(result);
}
};
};

Expand Down
57 changes: 36 additions & 21 deletions apps/costcontrol/js/message_handler.js
Expand Up @@ -345,18 +345,27 @@
// Count a new SMS
window.navigator.mozSetMessageHandler('sms-sent', function _onSMSSent(sms) {
clearTimeout(closing);
ConfigManager.requestSettings(function _onSettings(settings) {
debug('SMS sent!');
var manager = window.navigator.mozSms;
var smsInfo = manager.getSegmentInfoForText(sms.body);
var realCount = smsInfo.segments;
settings.lastTelephonyActivity.timestamp = new Date();
settings.lastTelephonyActivity.smscount += realCount;
ConfigManager.setOption({
lastTelephonyActivity: settings.lastTelephonyActivity
}, function _sync() {
localStorage['sync'] = 'lastTelephonyActivity#' + Math.random();
closeIfProceeds();
debug('SMS sent!');

ConfigManager.requestAll(function _onInfo(configuration, settings) {
CostControl.getInstance(function _onInstance(costcontrol) {
var mode = costcontrol.getApplicationMode(settings);
if (mode === 'PREPAID' &&
!costcontrol.isBalanceRequestSMS(sms, configuration)) {
costcontrol.request({ type: 'balance' });
}

var manager = window.navigator.mozSms;
var smsInfo = manager.getSegmentInfoForText(sms.body);
var realCount = smsInfo.segments;
settings.lastTelephonyActivity.timestamp = new Date();
settings.lastTelephonyActivity.smscount += realCount;
ConfigManager.setOption({
lastTelephonyActivity: settings.lastTelephonyActivity
}, function _sync() {
localStorage['sync'] = 'lastTelephonyActivity#' + Math.random();
closeIfProceeds();
});
});
});
});
Expand All @@ -365,20 +374,26 @@
window.navigator.mozSetMessageHandler('telephony-call-ended',
function _onCall(tcall) {
clearTimeout(closing);

if (tcall.direction !== 'outgoing') {
return;
}

debug('Outgoing call finished!');

ConfigManager.requestSettings(function _onSettings(settings) {
settings.lastTelephonyActivity.timestamp = new Date();
settings.lastTelephonyActivity.calltime += tcall.duration;
ConfigManager.setOption({
lastTelephonyActivity: settings.lastTelephonyActivity
}, function _sync() {
localStorage['sync'] = 'lastTelephonyActivity#' + Math.random();
closeIfProceeds();
CostControl.getInstance(function _onInstance(costcontrol) {
var mode = costcontrol.getApplicationMode(settings);
if (mode === 'PREPAID') {
costcontrol.request({ type: 'balance' });
}

settings.lastTelephonyActivity.timestamp = new Date();
settings.lastTelephonyActivity.calltime += tcall.duration;
ConfigManager.setOption({
lastTelephonyActivity: settings.lastTelephonyActivity
}, function _sync() {
localStorage['sync'] = 'lastTelephonyActivity#' + Math.random();
closeIfProceeds();
});
});
});
}
Expand Down
1 change: 1 addition & 0 deletions apps/costcontrol/message_handler.html
Expand Up @@ -12,6 +12,7 @@
<script type="text/javascript" src="js/utils/toolkit.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/config_manager.js"></script>
<script type="text/javascript" src="js/costcontrol.js"></script>
<script type="text/javascript" src="js/message_handler.js"></script>
</head>
<body>
Expand Down

0 comments on commit c419284

Please sign in to comment.