{ "id": "171940", "key": "TIMOB-26217", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "20238", "description": "", "name": "Release 7.5.0", "archived": false, "released": true, "releaseDate": "2018-11-15" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-09-19T21:35:07.000+0000", "created": "2018-07-18T02:16:15.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "file", "ios", "parity" ], "versions": [], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-10-03T18:39:39.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "*Summary:*\r\nOn iOS, when loading an encrypted asset such as \"app.js\" via {{Ti.Filesystem.getFile()}}, the returned {{File}} object is missing methods {{isFile()}} and {{isDirectory()}}. Attempting to call these methods will cause JavaScript runtime error.\r\n\r\nThis is an issue for iOS \"production\" builds and \"test\" builds for device.\r\nThis is not an issue for iOS Simulator builds since JS files are not encrypted.\r\nThis is not an issue on Android.\r\n\r\n*Steps to reproduce:*\r\n# Create a Titanium project with the below code.\r\n# Build and run to an iOS device.\r\n# Notice that the app crashes on startup.\r\n# Build and run to the iOS simulator.\r\n# The {{isFile()}} and {{isDirectory()}} methods work and are correctly logged.\r\n\r\n{code:javascript}\r\nvar file = Ti.Filesystem.getFile(\"app.js\");\r\nTi.API.info(\"@@@ app.js isFile(): \" + file.isFile());\r\nTi.API.info(\"@@@ app.js isDirectory(): \" + file.isDirectory());\r\n{code}\r\n\r\n*Cause:*\r\nOur {{TiFileSystemBlobProxy.m}} code is missing the {{isFile()}} and {{isDirectory()}} methods.\r\n", "attachment": [], "flagged": false, "summary": "iOS: File methods isFile() and isDirectory() are missing for encrypted assets", "creator": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1073, "state": "closed", "name": "2018 Sprint 19 SDK", "startDate": "2018-09-09T21:02:56.422Z", "endDate": "2018-09-23T21:02:00.000Z", "completeDate": "2018-09-23T22:28:10.932Z", "originBoardId": 114 }, { "id": 1058, "state": "closed", "name": "2018 Sprint 16 SDK", "startDate": "2018-07-29T22:26:06.486Z", "endDate": "2018-08-12T22:26:00.000Z", "completeDate": "2018-08-13T17:38:16.757Z", "originBoardId": 114 }, { "id": 1065, "state": "closed", "name": "2016 Sprint 17 SDK", "startDate": "2018-08-13T17:39:36.846Z", "endDate": "2018-08-27T17:39:00.000Z", "completeDate": "2018-08-29T16:10:57.013Z", "originBoardId": 114 }, { "id": 1053, "state": "closed", "name": "2018 Sprint 15 SDK", "startDate": "2018-07-15T21:52:05.453Z", "endDate": "2018-07-29T21:52:00.000Z", "completeDate": "2018-07-29T22:25:11.723Z", "originBoardId": 114 }, { "id": 1070, "state": "closed", "name": "2018 Sprint 18 SDK", "startDate": "2018-08-26T16:14:35.297Z", "endDate": "2018-09-09T16:14:00.000Z", "completeDate": "2018-09-11T20:59:21.495Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "439288", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/10112", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-07-18T04:49:34.000+0000", "updated": "2018-07-18T04:49:34.000+0000" }, { "id": "439289", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The diff can be found here...\r\nhttps://github.com/appcelerator/titanium_mobile/pull/10112/commits/afc75ad2a229f11a5febbaa48edff2697b484a4c\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-07-18T04:51:16.000+0000", "updated": "2018-07-18T04:51:16.000+0000" }, { "id": "439296", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "While I would rather want to see this in an own PR, I think it's okay to do it as part of TIMOB-26015.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-07-18T07:53:21.000+0000", "updated": "2018-07-18T07:53:21.000+0000" }, { "id": "441709", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed.\r\n\r\nThe returned {{File}} object is contains methods {{isFile()}} and {{isDirectory()}} for both production & test builds.\r\n\r\nStudio Ver: 5.1.1.201809051655\r\nSDK Ver: 7.5.0 local build\r\nOS Ver: 10.13.5\r\nXcode Ver: Xcode 9.4.1\r\nAppc NPM: 4.2.13\r\nAppc CLI: 7.0.6\r\nDaemon Ver: 1.1.3\r\nTi CLI Ver: 5.1.1\r\nAlloy Ver: 1.13.2\r\nNode Ver: 8.9.1\r\nNPM Ver: 5.5.1\r\nJava Ver: 10.0.2\r\nDevice: Iphone 7 IOS 11.4\r\nSimulator: Iphone 8 IOS 11.4", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-09-19T17:32:00.000+0000", "updated": "2018-09-19T17:32:12.000+0000" }, { "id": "441820", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR Merged.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-09-19T21:35:03.000+0000", "updated": "2018-09-19T21:35:03.000+0000" }, { "id": "442257", "author": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix on sdk 7.5.0.v20181003071100.No crash on start up. isFile() and isDirectory() method works fine and logged correctly. Closing.\r\n{code}\r\nOperating System\r\n Name = Mac OS X\r\n Version = 10.13.6\r\n Architecture = 64bit\r\nNode.js\r\n Node.js Version = 8.9.1\r\n npm Version = 5.5.1\r\nTitanium CLI\r\n CLI Version = 5.1.1\r\nTitanium SDK\r\n SDK Version =7.5.0.v20181003071100\r\nDevice\t\t\t = iPhone 6s -ios 12 \r\n\t\t\t iPhone 6 plus-ios 11 simulator\r\n{code}", "updateAuthor": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2018-10-03T18:39:33.000+0000", "updated": "2018-10-03T18:39:33.000+0000" } ], "maxResults": 7, "total": 7, "startAt": 0 } } }