History log of /expo/ios/Exponent/Kernel/Services/EXUpdatesManager.m (Results 1 – 25 of 33)
Revision Date Author Comments
# 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 ...


12