Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changes/updater-download-headers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"updater": patch
"updater-js": patch
---

Fix headers option in `Update.download` and `Update.downloadAndInstall` doesn't work with `Record<string, string> | Headers` types
2 changes: 1 addition & 1 deletion plugins/updater/api-iife.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 12 additions & 3 deletions plugins/updater/guest-js/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ class Update extends Resource {
onEvent?: (progress: DownloadEvent) => void,
options?: DownloadOptions
): Promise<void> {
convertToRustHeaders(options)
const channel = new Channel<DownloadEvent>()
if (onEvent) {
channel.onmessage = onEvent
Expand Down Expand Up @@ -113,6 +114,7 @@ class Update extends Resource {
onEvent?: (progress: DownloadEvent) => void,
options?: DownloadOptions
): Promise<void> {
convertToRustHeaders(options)
const channel = new Channel<DownloadEvent>()
if (onEvent) {
channel.onmessage = onEvent
Expand All @@ -132,15 +134,22 @@ class Update extends Resource {

/** Check for updates, resolves to `null` if no updates are available */
async function check(options?: CheckOptions): Promise<Update | null> {
if (options?.headers) {
options.headers = Array.from(new Headers(options.headers).entries())
}
convertToRustHeaders(options)

const metadata = await invoke<UpdateMetadata | null>('plugin:updater|check', {
...options
})
return metadata ? new Update(metadata) : null
}

/**
* Converts the headers in options to be an {@linkcode Array<[string, string]>} which is what the Rust side expects
*/
function convertToRustHeaders(options?: { headers?: HeadersInit }) {
if (options?.headers) {
options.headers = Array.from(new Headers(options.headers).entries())
}
}

export type { CheckOptions, DownloadOptions, DownloadEvent }
export { check, Update }
Loading