fix: do not throw UpdateException on SHOREBIRD_NO_UPDATE (#334)
`ShorebirdUpdater.update()` previously threw `UpdateException: No update (noUpdate)` whenever the patch check returned no available update, even though that is a successful outcome of calling `update()` — the app is already running the latest patch. The wrapper only returned normally on `SHOREBIRD_UPDATE_INSTALLED`; every other status (including `SHOREBIRD_NO_UPDATE`, value 0) fell through to the generic `throw UpdateException(...)` path, which is why callers saw `UpdateException: No update (noUpdate)` in their exception telemetry. Treat `SHOREBIRD_NO_UPDATE` as a successful return alongside `SHOREBIRD_UPDATE_INSTALLED`. No FFI change, safe against any engine version (status code 0 is stable). Fixes shorebirdtech/shorebird#3681
This commit is contained in:
@@ -117,7 +117,14 @@ class ShorebirdUpdaterImpl implements ShorebirdUpdater {
|
||||
|
||||
final status = result.ref.status;
|
||||
|
||||
if (status == SHOREBIRD_UPDATE_INSTALLED) return;
|
||||
// SHOREBIRD_UPDATE_INSTALLED is the success case. SHOREBIRD_NO_UPDATE
|
||||
// (the app is already up to date) is also a successful outcome of a call
|
||||
// to update() and must not throw — previously it surfaced as a confusing
|
||||
// `UpdateException: No update (noUpdate)` in customer telemetry.
|
||||
if (status == SHOREBIRD_UPDATE_INSTALLED ||
|
||||
status == SHOREBIRD_NO_UPDATE) {
|
||||
return;
|
||||
}
|
||||
|
||||
final reason = status.toFailureReason();
|
||||
final message = result.ref.message != nullptr
|
||||
|
||||
Reference in New Issue
Block a user