fix: DI nonsense (#4174)

* fix: DI nonsense

* fix: lint

* fix: client try di issue

* fix: injects outside of context

* fix: use .catch

* refactor: convert projects.vue to composition API.

* fix: moderation checklist notif pos change watcher

* fix: lint issues
This commit is contained in:
Cal H.
2025-08-15 19:02:55 +01:00
committed by GitHub
parent 9b5f172170
commit 4ad6daa45c
32 changed files with 318 additions and 323 deletions

View File

@@ -1,7 +1,11 @@
import type { AbstractWebNotificationManager } from '@modrinth/ui'
import { injectNotificationManager } from '@modrinth/ui'
type AsyncFunction<TArgs extends any[], TResult> = (...args: TArgs) => Promise<TResult>
type ErrorFunction = (err: any) => void | Promise<void>
type ErrorFunction = (
err: any,
addNotification: typeof AbstractWebNotificationManager.prototype.addNotification,
) => void | Promise<void>
type VoidFunction = () => void | Promise<void>
type useClientTry = <TArgs extends any[], TResult>(
@@ -10,8 +14,7 @@ type useClientTry = <TArgs extends any[], TResult>(
onFinish?: VoidFunction,
) => (...args: TArgs) => Promise<TResult | undefined>
const defaultOnError: ErrorFunction = (error) => {
const { addNotification } = injectNotificationManager()
const defaultOnError: ErrorFunction = (error, addNotification) => {
addNotification({
title: 'An error occurred',
text: error?.data?.description || error.message || error || 'Unknown error',
@@ -19,15 +22,15 @@ const defaultOnError: ErrorFunction = (error) => {
})
}
export const useClientTry: useClientTry =
(fn, onFail = defaultOnError, onFinish) =>
async (...args) => {
export const useClientTry: useClientTry = (fn, onFail = defaultOnError, onFinish) => {
const { addNotification } = injectNotificationManager()
return async (...args) => {
startLoading()
try {
return await fn(...args)
} catch (err) {
if (onFail) {
await onFail(err)
await onFail(err, addNotification)
} else {
console.error('[CLIENT TRY ERROR]', err)
}
@@ -36,3 +39,4 @@ export const useClientTry: useClientTry =
stopLoading()
}
}
}