#ifndef updater_dart_h #define updater_dart_h /* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */ #include #include #include #include #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 */