Files
modrinth/apps/app-frontend/src/providers/download-progress.ts
T
Calum H. 579109a478 refactor: app event bus (#6985)
* refactor: app event bus

* fix: use messagepack + cleanup

* fix: use postcard

* fix: lint

* fix: import gate

* fix: prettierignore + lint

* fix: lint

* fix: rev
2026-08-13 16:33:06 +00:00

30 lines
905 B
TypeScript

import { createContext } from '@modrinth/ui'
import type { Ref } from 'vue'
import type { AppEvents } from '@/providers/app-events'
export interface AppDownloadProgressContext {
progress: Ref<number>
version: Ref<string | undefined>
}
/* returns unlisten function */
export async function subscribeToDownloadProgress(
events: AppEvents,
context: AppDownloadProgressContext,
version: string,
) {
return events.on('loading', (event) => {
if (event.event.type === 'launcher_update') {
if (!version || event.event.version === version) {
context.progress.value = event.fraction ?? 1.0
context.version.value = event.event.version
console.log(`Progress: ${context.progress.value} ${context.version.value}`)
}
}
})
}
export const [injectAppUpdateDownloadProgress, provideAppUpdateDownloadProgress] =
createContext<AppDownloadProgressContext>('root', 'appUpdateDownloadProgress')