Files
shorebird-updater/library/include/updater_dart.h
T
Tony 3ac748ff28
ci / ✅ Semantic Pull Request (push) Has been cancelled
ci / 🔤 Check Spelling (push) Has been cancelled
ci / 👀 Detect Changes (push) Has been cancelled
Shorebird CI / changes (push) Has been cancelled
Shorebird CI / CSpell (push) Has been cancelled
ci / 🦀 Build ${{ matrix.crate }} (${{ matrix.os }}) (push) Has been cancelled
ci / 🎯 Build ${{ matrix.package }} (push) Has been cancelled
ci / ci (push) Has been cancelled
Shorebird CI / shorebird_code_push (push) Has been cancelled
Shorebird CI / shorebird_code_push_example (push) Has been cancelled
Shorebird CI / required (push) Has been cancelled
feat: add device ID override functionality to ShorebirdUpdater
- Introduced `setDeviceIdOverride` method in `ShorebirdUpdater` to allow clients to set a custom device ID for patch checks.
- Implemented the method in `ShorebirdUpdaterImpl` for both IO and web platforms.
- Updated the `Updater` class to handle the device ID override in native bindings.
- Added tests for the new functionality in both IO and web test suites, ensuring proper behavior when the updater is available and unavailable.
2026-06-24 03:02:58 +08:00

123 lines
3.4 KiB
C

#ifndef updater_dart_h
#define updater_dart_h
/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#ifdef _WIN32
#define SHOREBIRD_EXPORT __declspec(dllexport)
#else
#define SHOREBIRD_EXPORT __attribute__((visibility("default")))
#endif
/**
* An unknown error occurred while updating. The update was not installed.
* This is a catch-all for errors that don't fit into the other categories.
*/
#define SHOREBIRD_UPDATE_ERROR -1
/**
* No update is available (e.g. the app is already up-to-date)
*/
#define SHOREBIRD_NO_UPDATE 0
/**
* An update was installed successfully. It will boot from the update on the
* next app launch.
*/
#define SHOREBIRD_UPDATE_INSTALLED 1
/**
* An error occurred while updating. The update was not installed.
*/
#define SHOREBIRD_UPDATE_HAD_ERROR 2
/**
* The downloaded patch was not installed because it was invalid.
*/
#define SHOREBIRD_UPDATE_IS_BAD_PATCH 3
/**
* Another update was already in progress when this call was made. The
* already-running update will continue; the caller did not start a new one.
* This is a benign outcome, not an error.
*/
#define SHOREBIRD_UPDATE_IN_PROGRESS 4
typedef struct UpdateResult {
int32_t status;
const char *message;
} UpdateResult;
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/**
* The currently running patch number, or 0 if the release has not been
* patched. The internal name for this concept is `running_patch`; the
* FFI symbol keeps the historical `current_boot_patch_number` spelling
* because the Flutter Engine and existing pub releases of
* `shorebird_code_push` link against it.
*/
SHOREBIRD_EXPORT uintptr_t shorebird_current_boot_patch_number(void);
/**
* The patch number that will boot on the next run of the app, or 0 if there is
* no next patch.
*/
SHOREBIRD_EXPORT uintptr_t shorebird_next_boot_patch_number(void);
/**
* Check for an update on the first non-null channel of:
* 1. `c_channel`
* 2. The channel specified in shorebird.yaml
* 3. The default "stable" channel
*
* Returns true if an update exists that has not yet been downloaded.
*/
SHOREBIRD_EXPORT
bool shorebird_check_for_downloadable_update(const char *c_channel);
/**
* Overrides the generated random per-install device/client id used in patch
* check requests. This is for applications that need to bind patch delivery
* to their own stable account/device identifier. The updater persists this
* value in state.json after a successful call.
*/
SHOREBIRD_EXPORT
bool shorebird_set_device_id_override(const char *c_device_id);
/**
* Synchronously download an update on the first non-null channel of:
* 1. `c_channel`
* 2. The channel specified in shorebird.yaml
* 3. The default "stable" channel
*
* Returns an [UpdateResult] indicating whether the update was successful.
*/
SHOREBIRD_EXPORT
const struct UpdateResult *shorebird_update_with_result(const char *c_channel);
/**
* Frees an `UpdateResult` previously returned by
* `shorebird_update_with_result`. Frees the embedded `message` string and
* the result allocation itself.
*
* # Safety
*
* `result` must be a valid pointer returned by `shorebird_update_with_result`,
* or null (in which case this is a no-op).
*/
SHOREBIRD_EXPORT void shorebird_free_update_result(struct UpdateResult *result);
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif /* updater_dart_h */