[TIMOB-28279] TiAPI: Return Promises for async APIs
GitHub Issue | n/a |
---|---|
Type | Epic |
Priority | Medium |
Status | Open |
Resolution | Unresolved |
Affected Version/s | n/a |
Fix Version/s | n/a |
Components | n/a |
Labels | n/a |
Reporter | Christopher Williams |
Assignee | Christopher Williams |
Created | 2020-12-09T17:37:28.000+0000 |
Updated | 2021-08-26T11:04:14.000+0000 |
Description
We have a large number of APIs that take callbacks as arguments. Many can be modified to return a Promise. A few have been modified as part of the initial PR landing native Promise support.
Landed:
* Titanium.Android.requestPermissions
* Titanium.Calendar.requestCalendarPermissions
* Titanium.Contacts.requestContactsPermissions
* Titanium.Database.DB.executeAsync
* Titanium.Database.DB.executeAllAsync
* Titanium.Filesystem.requestStoragePermissions
* Titanium.Geolocation.getCurrentHeading
* Titanium.Geolocation.getCurrentPosition
* Titanium.Geolocation.requestLocationPermissions
* Titanium.Geolocation.requestTemporaryFullAccuracyAuthorization
* Titanium.Geolocation.forwardGeocoder
* Titanium.Geolocation.reverseGeocoder
* Titanium.Media.requestAudioRecorderPermissions
* Titanium.Media.requestCameraPermissions
* Titanium.Media.requestPhotoGalleryPermissions
In Progress:
* Titanium.UI.View.animate
* Titanium.Media.Android.scanMediaFiles
* Titanium.Media.requestMusicLibraryPermissions
* Titanium.Media.takeScreenshot
TODO:
* Titanium.Android.Activity.startActivityForResult
* Titanium.App.iOS.SearchableIndex.addToDefaultSearchableIndex
* Titanium.App.iOS.SearchableIndex.deleteAllSearchableItems
* Titanium.App.iOS.SearchableIndex.deleteAllSearchableItemByDomainIdenifiers
* Titanium.App.iOS.SearchableIndex.deleteSearchableItemsByIdentifiers
* Titanium.App.iOS.UserNotificationCenter.getPendingNotifications
* Titanium.App.iOS.UserNotificationCenter.getDeliveredNotifications
* Titanium.App.iOS.UserNotificationCenter.requestUserNotificationSettings
* Titanium.Contacts.requestAuthorization
* Titanium.Media.VideoPlayer.requestThumbnailImagesAtTimes
* Titanium.Network.BonjourService.publish
* Titanium.Network.BonjourService.resolve
* Titanium.Network.BonjourService.stop
* Titanium.Platform.openURL
* Titanium.UI.WebView.takeSnapshot
* Titanium.UI.WebView.createPDF
* Titanium.UI.WebView.createWebArchive
* Titanium.UI.WebView.findString
Some return non-void types if the callback is omitted, however, so migrating them may prove to be more difficult.
Async APIs that return values if callback is not supplied:
* Titanium.UI.View.toImage
* Titanium.UI.WebView.evalJS
Additionally some APIs *do not* take a callback but occur async, return void, and could be made to return a Promise to that they are
await
-able. See TIMOB-27710 (i.e. Window.open()
)
Converting to epic as this is a large chuck of work that won't be done in a single release Removed APIs the list that are no longer present in the SDK and updated in progress APIs