mirror of
https://github.com/modrinth/code.git
synced 2026-08-25 17:14:50 +00:00
refactor: removing useAsyncData for tanstack query (#5262)
* refactor: most places with useAsyncData replaced with tanstack query
* refactor report list and report view
* refactor organization page to use tanstack query
* fix types
* refactor collection page and include proper loading state
* fix followed projects proper loading state
* fix 404 handling
* fix organization loading and 404 states
* pnpm prepr
* refactor: remove useAsyncData on newsletter button
* refactor: remove useAsyncData on auth globals fetch
* refactor: settings/billing/index.vue to useQuery instead of useAsyncData
* refactor: user page to remove useAsyncData
* pnpm prepr
* fix reports pages
* fix notifications page
* fix billing page cannot read properties of null and prop warnings
* fix refresh causing 404 by removing useBaseFetch and use api-client
* fix stale data after removing organization from project
* pnpm prepr
* fix news erroring in build
* fix: project page loads header only after content
* fix: user page tanstack problems (start on migrating away from useBaseFetch)
* fix: start swapping useBaseFetch usages to api-client
* Revert "fix: start swapping useBaseFetch usages to api-client"
This reverts commit 3df3fab11d.
* fix: remove debug logging
* fix: lint
---------
Co-authored-by: Calum H. <calum@modrinth.com>
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
This commit is contained in:
co-authored by
Calum H.
Calum H.
parent
d0c7575a23
commit
681ae5d1d8
@@ -91,6 +91,8 @@ import {
|
||||
normalizeChildren,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { useQuery } from '@tanstack/vue-query'
|
||||
import { computed } from 'vue'
|
||||
|
||||
import { useAuth } from '@/composables/auth.js'
|
||||
import { useScopes } from '@/composables/auth/scopes.ts'
|
||||
@@ -163,24 +165,36 @@ const getFlowIdAuthorization = async () => {
|
||||
|
||||
const {
|
||||
data: authorizationData,
|
||||
pending,
|
||||
isPending: pending,
|
||||
error,
|
||||
} = await useAsyncData('authorization', getFlowIdAuthorization)
|
||||
} = useQuery({
|
||||
queryKey: computed(() => ['authorization', clientId, redirectUri, scope, state]),
|
||||
queryFn: getFlowIdAuthorization,
|
||||
enabled: computed(() => !!clientId && !!redirectUri && !!scope),
|
||||
})
|
||||
|
||||
const { data: app } = await useAsyncData('oauth/app/' + clientId, () =>
|
||||
useBaseFetch('oauth/app/' + clientId, {
|
||||
method: 'GET',
|
||||
internal: true,
|
||||
}),
|
||||
)
|
||||
const { data: app } = useQuery({
|
||||
queryKey: computed(() => ['oauth/app', clientId]),
|
||||
queryFn: () =>
|
||||
useBaseFetch('oauth/app/' + clientId, {
|
||||
method: 'GET',
|
||||
internal: true,
|
||||
}),
|
||||
enabled: computed(() => !!clientId),
|
||||
})
|
||||
|
||||
const scopeDefinitions = scopesToDefinitions(BigInt(authorizationData.value?.requested_scopes || 0))
|
||||
const { data: createdBy } = useQuery({
|
||||
queryKey: computed(() => ['user', app.value?.created_by]),
|
||||
queryFn: () =>
|
||||
useBaseFetch('user/' + app.value.created_by, {
|
||||
method: 'GET',
|
||||
apiVersion: 3,
|
||||
}),
|
||||
enabled: computed(() => !!app.value?.created_by),
|
||||
})
|
||||
|
||||
const { data: createdBy } = await useAsyncData('user/' + app.value.created_by, () =>
|
||||
useBaseFetch('user/' + app.value.created_by, {
|
||||
method: 'GET',
|
||||
apiVersion: 3,
|
||||
}),
|
||||
const scopeDefinitions = computed(() =>
|
||||
scopesToDefinitions(BigInt(authorizationData.value?.requested_scopes || 0)),
|
||||
)
|
||||
|
||||
const onAuthorize = async () => {
|
||||
|
||||
@@ -73,6 +73,7 @@ import {
|
||||
StyledInput,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { useQuery } from '@tanstack/vue-query'
|
||||
|
||||
import HCaptcha from '@/components/ui/HCaptcha.vue'
|
||||
|
||||
@@ -162,13 +163,16 @@ if (route.query.flow) {
|
||||
|
||||
const captcha = ref()
|
||||
|
||||
const { data: globals } = await useAsyncData('auth-globals', async () => {
|
||||
try {
|
||||
return await useBaseFetch('globals', { internal: true })
|
||||
} catch (err) {
|
||||
console.error('Error fetching globals:', err)
|
||||
return { captcha_enabled: true }
|
||||
}
|
||||
const { data: globals } = useQuery({
|
||||
queryKey: ['auth-globals'],
|
||||
queryFn: async () => {
|
||||
try {
|
||||
return await useBaseFetch('globals', { internal: true })
|
||||
} catch (err) {
|
||||
console.error('Error fetching globals:', err)
|
||||
return { captcha_enabled: true }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
const email = ref('')
|
||||
|
||||
@@ -144,7 +144,7 @@ import {
|
||||
StyledInput,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { useQueryClient } from '@tanstack/vue-query'
|
||||
import { useQuery, useQueryClient } from '@tanstack/vue-query'
|
||||
|
||||
import HCaptcha from '@/components/ui/HCaptcha.vue'
|
||||
import { getAuthUrl, getLauncherRedirectUrl } from '@/composables/auth.js'
|
||||
@@ -207,13 +207,16 @@ if (auth.value.user) {
|
||||
|
||||
const captcha = ref()
|
||||
|
||||
const { data: globals } = await useAsyncData('auth-globals', async () => {
|
||||
try {
|
||||
return await useBaseFetch('globals', { internal: true })
|
||||
} catch (err) {
|
||||
console.error('Error fetching globals:', err)
|
||||
return { captcha_enabled: true }
|
||||
}
|
||||
const { data: globals } = useQuery({
|
||||
queryKey: ['auth-globals'],
|
||||
queryFn: async () => {
|
||||
try {
|
||||
return await useBaseFetch('globals', { internal: true })
|
||||
} catch (err) {
|
||||
console.error('Error fetching globals:', err)
|
||||
return { captcha_enabled: true }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
const email = ref('')
|
||||
|
||||
@@ -146,6 +146,7 @@ import {
|
||||
StyledInput,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { useQuery } from '@tanstack/vue-query'
|
||||
|
||||
import HCaptcha from '@/components/ui/HCaptcha.vue'
|
||||
import { getAuthUrl } from '@/composables/auth.js'
|
||||
@@ -200,13 +201,16 @@ if (auth.value.user) {
|
||||
|
||||
const captcha = ref()
|
||||
|
||||
const { data: globals } = await useAsyncData('auth-globals', async () => {
|
||||
try {
|
||||
return await useBaseFetch('globals', { internal: true })
|
||||
} catch (err) {
|
||||
console.error('Error fetching globals:', err)
|
||||
return { captcha_enabled: true }
|
||||
}
|
||||
const { data: globals } = useQuery({
|
||||
queryKey: ['auth-globals'],
|
||||
queryFn: async () => {
|
||||
try {
|
||||
return await useBaseFetch('globals', { internal: true })
|
||||
} catch (err) {
|
||||
console.error('Error fetching globals:', err)
|
||||
return { captcha_enabled: true }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
const email = ref('')
|
||||
|
||||
Reference in New Issue
Block a user