[
https://issues.apache.org/jira/browse/CB-11223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15274825#comment-15274825
]
ASF GitHub Bot commented on CB-11223:
-------------------------------------
Github user omefire commented on a diff in the pull request:
https://github.com/apache/cordova-plugin-contacts/pull/125#discussion_r62398237
--- Diff: www/convertUtils.js ---
@@ -28,10 +28,19 @@ module.exports = {
*/
toCordovaFormat: function (contact) {
var value = contact.birthday;
- try {
- contact.birthday = new Date(parseFloat(value));
- } catch (exception){
- console.log("Cordova Contact toCordovaFormat error: exception
creating date.");
+ if (value !== null) {
+ try {
+ contact.birthday = new Date(parseFloat(value));
+
+ //we might get 'Invalid Date' which does not throw an error
+ //and is an instance of Date.
+ if (isNaN(contact.birthday.getTime())) {
+ contact.birthday = null;
--- End diff --
code looks good to me, could you please add a comment about the fact that
when birthday is null, native side(iOS, Android,etc...) will return an 'Invalid
Date' ? That will make it easier for others to grasp the reason behind this.
After that, we'll be good to go.
> Better check for date validity of contact.birthday / Fix: RangeError Invalid
> Date
> ---------------------------------------------------------------------------------
>
> Key: CB-11223
> URL: https://issues.apache.org/jira/browse/CB-11223
> Project: Apache Cordova
> Issue Type: Improvement
> Components: Plugin Contacts
> Environment: Desktop Firefox & Safari
> Android & iOS Webview
> Reporter: Tanase Butcaru
> Priority: Critical
> Labels: easyfix
>
> The issue: on Safari & iOS webview if we perform a _toJSON()_ on a instanceof
> Date object which is a 'Invalid Date' object, that throws an error. This does
> not happen on Firefox & Chrome!
> I encountered this issue while sending device contacts over _socket.io_ which
> iterates over contacts props and does a _toJSON()_, but the problem was that
> the Date object from _birthday_ property was not valid.
> Simple test case:
> {code:javascript}
> var contact = { birthday: null }; //data provided by cordova-plugin-contacts
> try {
> contact.birthday = new Date(parseFloat(contact.birthday));
> }
> catch(e) {
> console.log(e); //this will never be called
> }
> //where the error occures..
> contact.birthday.toJSON();
> {code}
> An 'Invalid Date' error does not throw anything, so a simple try-catch block
> doesn't pass the validity of that date.
> The changes I made in _convertUtils.js_ resolves this problem.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]