{ "id": "151937", "key": "TIMOB-19711", "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": [], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2015-11-03T22:23:55.000+0000", "created": "2015-10-11T17:53:58.000+0000", "priority": { "name": "Trivial", "id": "5" }, "labels": [], "versions": [ { "id": "14826", "description": "Release 5.1.0-remaining iOS9 features, Android M features", "name": "Release 5.1.0", "archived": false, "released": true, "releaseDate": "2015-11-20" } ], "issuelinks": [], "assignee": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-03-17T18:11:07.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": "The dictionary that {{Ti.UI.iOS.ApplicationShortcuts.listDynamicShortcuts()}} returns lacks the icon. Perhaps this is related to the [duplicate code|https://github.com/appcelerator/titanium_mobile/blob/361f942eaa9372f1fa25bad0f395c2822eab68be/iphone/Classes/TiUIiOSApplicationShortcutsProxy.m#L19] and one of the duplicates should have been for the icon.\r\n\r\n*JavaScript*\r\n\r\n{code:javascript}\r\n\tappShortcuts.addDynamicShortcut({\r\n\t\titemtype: 'details',\r\n\t\ttitle: 'Open last picture',\r\n\t\tsubtitle: $model.get('time'),\r\n\t\ticon: 'images/shortcutItemIcon.png',\r\n\t\tuserInfo: {\r\n\t\t\tfilename: $model.get('filename')\r\n\t\t}\r\n\t});\r\n{code}\r\n\r\n*Console*\r\n\r\n{code}\r\n[INFO] Ti.UI.iOS.ApplicationShortcuts.listDynamicShortcuts [\r\n[INFO] {\r\n[INFO] \"title\": \"Open last picture\",\r\n[INFO] \"itemtype\": \"details\",\r\n[INFO] \"subtitle\": \"2015-10-11T17:15:07+02:00\",\r\n[INFO] \"userInfo\": {\r\n[INFO] \"filename\": \"D48297EA-8F88-447F-8CDC-48980BEA4EFD.jpg\"\r\n[INFO] }\r\n[INFO] }\r\n[INFO] ]\r\n{code}", "attachment": [], "flagged": false, "summary": "Ti.UI.iOS.ApplicationShortcuts.listDynamicShortcuts() lacks icon", "creator": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "subtasks": [], "reporter": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "environment": "SDK", "comment": { "comments": [ { "id": "366606", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Tested https://github.com/appcelerator/titanium_mobile/pull/7290 with https://github.com/appcelerator-developer-relations/appc-sample-3dtouch but still no icon:\r\n\r\n{code}\r\n[INFO] Ti.UI.iOS.ApplicationShortcuts.listDynamicShortcuts [\r\n[INFO] {\r\n[INFO] \"title\": \"Open last picture\",\r\n[INFO] \"itemtype\": \"details\",\r\n[INFO] \"subtitle\": \"2015-10-11T20:10:42+02:00\",\r\n[INFO] \"userInfo\": {\r\n[INFO] \"filename\": \"35E96E30-D820-4C91-900D-DF4E7D4AFED3.jpg\"\r\n[INFO] }\r\n[INFO] }\r\n[INFO] ]\r\n[INFO] Ti.UI.iOS.ApplicationShortcuts.listStaticShortcuts [\r\n[INFO] {\r\n[INFO] \"title\": \"Take photo\",\r\n[INFO] \"itemtype\": \"NewPhoto\",\r\n[INFO] \"subtitle\": \"Take a brand new photo\",\r\n[INFO] \"userInfo\": {\r\n[INFO] \"myCustomKey\": \"myCustomValue\"\r\n[INFO] }\r\n[INFO] }\r\n[INFO] ]\r\n{code}", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-10-13T07:28:50.000+0000", "updated": "2015-10-13T07:28:50.000+0000" }, { "id": "366696", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/7290\r\nPR (5_1_X): https://github.com/appcelerator/titanium_mobile/pull/7298", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-10-13T20:48:54.000+0000", "updated": "2015-10-13T20:48:54.000+0000" }, { "id": "366767", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~hansknoechel] I believe this ticket is not resolved by the linked PR. You mentioned yourself that it was not possible (at this time) to get the icon value.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-10-14T08:20:38.000+0000", "updated": "2015-10-14T08:20:38.000+0000" }, { "id": "366906", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "That sounds like a huge overkill. Can't we just return the icon path as a string or Ti.UI.IOS constant for built-ins?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-10-15T08:51:24.000+0000", "updated": "2015-10-15T08:51:24.000+0000" }, { "id": "367315", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Simplified: There is no getter to receive an url or icon after creation, because the icon is just set using instance methods instead of properties. I don't see that working even with having a proxy surrounded. Besides this, there is still no use case a user would like to receive the url of a icon.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-10-20T17:37:37.000+0000", "updated": "2015-10-20T17:37:37.000+0000" }, { "id": "367331", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Ah, OK. I just created the ticket to make the payload identical to what you set so it is more predictable. The only use case I can think off is that you have icons depending on something variable and you want to check wether the current shortcut has the right icon. The workaround for that use case is to just replace the shortcut regardless.\r\n\r\nLet's keep it around low prio.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-10-20T18:59:48.000+0000", "updated": "2015-10-20T18:59:48.000+0000" }, { "id": "368837", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Ok, I thought about it again and I will create a {{Ti.UI.iOS.ApplicationShortcutIcon}} proxy for the 5.2.0 release, that holds the properties {{image}}, {{contact}}, {{systemIcon}} which can be received using the usual getter. [~fokkezb] cool?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-11-03T15:49:54.000+0000", "updated": "2015-11-03T15:49:54.000+0000" }, { "id": "368838", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Am I correct that these are the benefits?\r\n\r\n* Able to get the type and value of the current icon of a shortcut\r\n* Able to change the type and value of a shortcut\r\n\r\nAnd are these the downsides?\r\n\r\n* Need to set the icon of a shortcut by creating and passing an instance of this proxy", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-03T15:52:48.000+0000", "updated": "2015-11-03T15:52:48.000+0000" }, { "id": "368839", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Correct", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-11-03T15:53:29.000+0000", "updated": "2015-11-03T15:53:29.000+0000" }, { "id": "368841", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Mmm, not sure if the benefits outweigh the downsides. What do you think?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-03T15:55:43.000+0000", "updated": "2015-11-03T15:55:43.000+0000" }, { "id": "368842", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I think we could make the proxy internally and just give back the property that is set. Cleanest way. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-11-03T15:57:33.000+0000", "updated": "2015-11-03T15:57:33.000+0000" }, { "id": "368886", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Spent quite a long time now creating a proxy to cover the shortcut icons after creation. But this will still never work, because we will always get the native {{UIApplicationShortcutIcon}} class in the delegate that is responsible for the {{shortcutitemclick}} event. So also no one else is able to receive the source of the icon and this was intended by Apple.\r\n\r\nClosing this ticket as invalid and wait if Apple maybe some day opens the API on the native side.\r\n\r\nReference to what I'm talking about can be found [here|https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplicationShortcutIcon_Class/].", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-11-03T22:23:45.000+0000", "updated": "2015-11-03T22:23:45.000+0000" }, { "id": "368974", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Sounds fair. Too little use case to justify.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-04T12:54:42.000+0000", "updated": "2015-11-04T12:54:42.000+0000" }, { "id": "413530", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as invalid.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-17T18:11:07.000+0000", "updated": "2017-03-17T18:11:07.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }