| #
128e1e19 |
| 10-Mar-2023 |
Will Schurman <[email protected]> |
[exupdates][ios] Fix odd nullability issue in expo module (#21655)
# Why
1. `EXUpdatesBinding.config` returns nil when called here
2. This is because `EXUpdatesManager.configForScopeKey` returns
[exupdates][ios] Fix odd nullability issue in expo module (#21655)
# Why
1. `EXUpdatesBinding.config` returns nil when called here
2. This is because `EXUpdatesManager.configForScopeKey` returns nil for
what I assume is the home scope key.
I checked and it was also the case prior to the swift conversion, but
didn't crash because objective-c is more nil-selector-call-lenient.
# How
Change types to be nullable.
# Test Plan
Run expo go, see no more crash.
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
015fc7ad |
| 07-Mar-2023 |
Will Schurman <[email protected]> |
[exupdates][ios] Convert AppLoader to swift (#21535)
# Why
This convert App loader to swift.
# How
convert manually
# Test Plan
Launch experience in expo go and also run all tests (th
[exupdates][ios] Convert AppLoader to swift (#21535)
# Why
This convert App loader to swift.
# How
convert manually
# Test Plan
Launch experience in expo go and also run all tests (though these
classes have less test coverage outside of e2e)
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
06e7a43d |
| 07-Mar-2023 |
Will Schurman <[email protected]> |
[exupdates][ios] Convert file downloader to swift (#21493)
# Why
This converts EXUpdatesFileDownloader to swift. This is a pretty major
class containing a lot of functionality.
# How
Conve
[exupdates][ios] Convert file downloader to swift (#21493)
# Why
This converts EXUpdatesFileDownloader to swift. This is a pretty major
class containing a lot of functionality.
# How
Convert manually.
# Test Plan
Run all tests.
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
cfdef4bc |
| 03-Mar-2023 |
Will Schurman <[email protected]> |
[exupdates][ios] Fix some issues from landed swift conversion PRs (#21519)
# Why
These issues were introduced in some of the recently-landed swift
conversion PRs. Due to the flakiness of the CI
[exupdates][ios] Fix some issues from landed swift conversion PRs (#21519)
# Why
These issues were introduced in some of the recently-landed swift
conversion PRs. Due to the flakiness of the CI jobs they weren't
caught/trusted.
# How
Caught these when trying to run an app in expo go.
# Test Plan
Run expo go, open experience, see it works now.
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
0b66f7dd |
| 24-Feb-2023 |
Will Schurman <[email protected]> |
[exupdates][ios] Start converting to swift (#21320)
# Why
Start the conversion process of the expo-updates library by converting
EXUpdatesUpdate and subclasses.
# How
Convert manually... l
[exupdates][ios] Start converting to swift (#21320)
# Why
Start the conversion process of the expo-updates library by converting
EXUpdatesUpdate and subclasses.
# How
Convert manually... lol.
The main note is that we can't use swift nullability/type forcing
operators (`!`, `as!`, `as?`) etc since the previous implementation was
relying upon NSAssert to raise an NSException which is caught in the
calling code, so I added new extension functions to replicate the
behavior (similar to EXManifests util functions).
# Test Plan
Build and run all tests.
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [ ] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
7c3ed0c0 |
| 14-Dec-2022 |
Douglas Lowder <[email protected]> |
[Expo Go][iOS] No remote home app loads in release builds (#20416)
# Why
Per ENG-7047, we need to disable remote loading of home app, and
checking for home app updates, for release builds.
Upda
[Expo Go][iOS] No remote home app loads in release builds (#20416)
# Why
Per ENG-7047, we need to disable remote loading of home app, and
checking for home app updates, for release builds.
Updates and loading from the packager will still work in debug builds.
# How
Add `#ifdef DEBUG` in several places in
`Exponent/Kernel/AppLoader/EXAppLoader.m`
# Test Plan
- CI should pass
- Test Expo Go builds locally and verify that updates are not loaded,
and that nothing else is broken
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [x] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [x] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
e98f8a74 |
| 26-Apr-2022 |
Eric Samelson <[email protected]> |
[ios] remove old unused Updates code (#17166)
|
| #
c54c3a4d |
| 18-Apr-2022 |
Eric Samelson <[email protected]> |
[expo-updates] add current and embedded update id headers to manifest requests (#17033)
|
| #
99af46e9 |
| 11-Dec-2021 |
Will Schurman <[email protected]> |
[expo-updates][ios] Add support for multipart manifest responses (#15426)
|
| #
cbbfd658 |
| 13-Oct-2021 |
Bartłomiej Bukowski <[email protected]> |
[iOS][Expo Go] Remove legacy code (#14690)
|
| #
50661f5c |
| 30-Aug-2021 |
Will Schurman <[email protected]> |
[expo-manifests] Rename RawManifest -> Manifest (#14194)
|
| #
706a476d |
| 26-Aug-2021 |
Will Schurman <[email protected]> |
[expo-updates] Factor out raw manifests into their own package (#14183)
|
| #
167fd314 |
| 30-Jun-2021 |
Will Schurman <[email protected]> |
[ios] Use stable manifest ID where applicable (#13280)
|
| #
c8841cb0 |
| 26-Apr-2021 |
Will Schurman <[email protected]> |
[updates] Factor out raw manifest into wrapper class (#12631)
|
| #
25c50590 |
| 23-Apr-2021 |
Eric Samelson <[email protected]> |
[expo-updates][ios] add EXUpdatesAppLoaderAssetBlock progress callback (#12684)
|
| #
96495090 |
| 23-Apr-2021 |
Eric Samelson <[email protected]> |
[expo-updates][ios] split SelectionPolicy into 3 separate interfaces (#12682)
|
| #
5056d37e |
| 23-Feb-2021 |
Eric Samelson <[email protected]> |
[expo-updates] send saved serverDefinedHeaders in manifest requests (#11994)
|
| #
5ffcd4cb |
| 23-Feb-2021 |
Eric Samelson <[email protected]> |
[expo-updates] switch to SelectionPolicyFilterAware and use saved manifest filters (#11993)
|
| #
e2d5b3a1 |
| 10-Feb-2021 |
Eric Samelson <[email protected]> |
[expo-updates] add SelectionPolicyFilterAware (#11748)
|
| #
23d46ec2 |
| 17-Dec-2020 |
Eric Samelson <[email protected]> |
[expo-updates][ios] use NSURLCache for manifest public key instead of rolling our own (#11362)
|
| #
cd0a6701 |
| 15-Aug-2020 |
Eric Samelson <[email protected]> |
[android][ios] add emergency NoDatabaseLauncher for standalone app case (#9768)
# Why
We want to reuse the emergency launch functionality that exists in bare workflow apps in managed workflow sta
[android][ios] add emergency NoDatabaseLauncher for standalone app case (#9768)
# Why
We want to reuse the emergency launch functionality that exists in bare workflow apps in managed workflow standalone apps. Since they will have embedded updates, if there's an error we can't recover from or we can't launch an update from the database, we can use the NoDatabaseLauncher to fall back to launching the embedded update directly from its location in the bundle.
# How
Added NoDatabaseLauncher in two places in the ExpoUpdatesAppLoader -- (1) if updates are disabled and (2) if the LoaderTask fails and we're in a standalone app. (In the development client there are no embedded updates so we'd still display an error screen in this case.)
# Test Plan
This is not possible to test in the development clients since there is no embedded update for NoDatabaseLauncher to use. Will need to test this as part of standalone app QA by setting `updates.enabled = false` in app.json and ensuring the resulting build launches successfully with the embedded update.
show more ...
|
| #
da2753de |
| 15-Aug-2020 |
Eric Samelson <[email protected]> |
[android][ios][expo] switch to expo-updates AppLoader and remove legacy Updates module (#9764)
# Why
Actually use expo-updates in the managed workflow!
# How
- Switched to expo-updates AppL
[android][ios][expo] switch to expo-updates AppLoader and remove legacy Updates module (#9764)
# Why
Actually use expo-updates in the managed workflow!
# How
- Switched to expo-updates AppLoader in all usages except for home.
- Allow loading UNVERSIONED experiences by adding it to the list allowed by the SelectionPolicy.
- Remove exported legacy Updates module from Android/iOS unversioned code and from the `expo package`
# Test Plan
Test loading UNVERSIONED sandbox experience in both clients, import the `Updates` package from `expo` and ensure the correct error is logged. Other testing has been done by applying commit c36a821 to all the previous PRs from the last few weeks.
show more ...
|
| #
58e4f378 |
| 14-Aug-2020 |
Eric Samelson <[email protected]> |
[android][ios] polyfill SDK 36-38 Updates module implementations to use expo-updates (#9717)
# Why
There is no easy way to gate usage of expo-updates (vs. the legacy AppLoader logic from the mana
[android][ios] polyfill SDK 36-38 Updates module implementations to use expo-updates (#9717)
# Why
There is no easy way to gate usage of expo-updates (vs. the legacy AppLoader logic from the managed workflow) by SDK version, since we don't know what SDK version an experience will use before loading it.
Fortunately, it's feasible to use expo-updates to load all apps in the clients; we just need to polyfill the legacy Updates JS module to talk with expo-updates, rather than the legacy AppLoaders.
This PR switches the implementation of the SDK 36-38 Updates modules to use expo-updates behind the scenes while keeping the same (legacy) JS API. In a future PR, we'll remove the legacy Updates module implementation entirely from unversioned code.
# How
The three commits can be viewed separately if desired.
1. Adds emitting both event types from ExpoUpdatesAppLoader to JS on Android (both legacy `Exponent.nativeUpdatesEvent` and new `Expo.nativeUpdatesEvent`). (This was done in #9713 for iOS.)
2. The meat of the PR -- moving the ABI38 implementations to use expo-updates. On Android, I copied the logic from the new Updates module while keeping the legacy return values/events. On iOS, I did the same thing but most of the changes happened inside of the EXUpdatesManager kernel service and not much needed to change in the versioned modules themselves.
3. Backporting the changes from (2) to ABI36 and ABI37.
# Test Plan
On an SDK 38 published app (and repeating on SDK 36 and 37):
- Test all 4 legacy module methods, importing Updates from the `expo` package.
- Test that events are fired on launch if we're checking for updates in the background.
- Test that events are fired from the fetchUpdateAsync method (no longer the case in the new API, but still expected from the old).
- Ensure that the legacy `downloadFinished` event name is used correctly.
show more ...
|
| #
32201fed |
| 14-Aug-2020 |
Eric Samelson <[email protected]> |
[expo-updates][android][ios] hook up expo-updates events in managed workflow (#9713)
# Why
Follow up to #9694 . This PR hooks up expo-updates events, the only remaining missing piece in the JS mo
[expo-updates][android][ios] hook up expo-updates events in managed workflow (#9713)
# Why
Follow up to #9694 . This PR hooks up expo-updates events, the only remaining missing piece in the JS module binding for the managed workflow.
This PR also refactors the way LoaderTask classes handle events to a more declarative model -- rather than having LoaderTask create the event parameters and fire an "onEvent" callback, it now fires a callback that describes the status of the background update download, and the calling class (UpdatesController in bare workflow, ExpoUpdatesAppLoader in managed) is responsible for interpreting this and creating the event parameters. This is closer to the way the iOS development client kernel currently works, and will make it easier to implement some of the changes to development client loading behavior discussed in #api.
# How
Refactored as described above. Hooked up all callbacks in the managed workflow projects so events from LoaderTask are sent to JS, and split on SDK version so that older SDKs still receive the old `Exponent.nativeUpdatesEvent` event type.
# Test Plan
Tested manually by backporting all of the module changes to SDK 38 and ensuring that the expo-updates module receives the correct event type (`Expo.nativeUpdatesEvent`) on both platforms when expected.
show more ...
|
| #
40b2cdcb |
| 14-Aug-2020 |
Eric Samelson <[email protected]> |
[android][ios] add full infrastructure and implementation for UpdatesBinding (#9694)
# Why
This PR adds the complete infrastructure for allowing the new expo-updates exported JS module to work as
[android][ios] add full infrastructure and implementation for UpdatesBinding (#9694)
# Why
This PR adds the complete infrastructure for allowing the new expo-updates exported JS module to work as a scoped module in the managed workflow codebase and communicate with the `Kernel` classes.
# How
For iOS, I followed the pattern that was used in other scoped modules like Sensors. EXUpdatesBinding is a scoped module that is given access to a pair of kernel services, each of which have access to the AppLoader (and therefore expo-updates state) through the EXKernelAppRecord. All of the properties are just threaded through.
For Android, there were fewer steps to thread through but we weren't keeping a reference to the AppLoader anywhere. I added a simple map in the Kernel for this, which the scoped UpdatesBinding has access to through the KernelProvider.
Finally, since the `Updates.expo.ts` polyfill is no longer needed for the unversioned managed workflow, I removed this code from expo-updates.
# Test Plan
Backport these changes to SDK 38 and add a versioned SDK 38 copy of the expo-updates module, and switch EXKernelAppRecord/Kernel to use the new ExpoUpdatesAppLoader so expo-updates is used.
I launched a test published app created by installing expo-updates and then manually deleting the `build/Updates.expo.*` files from node_modules. All the exported functions from expo-updates worked and assets were resolved to the copies on disk downloaded by expo-updates
show more ...
|