Compare commits
6 Commits
v4
...
v4-speckle
| Author | SHA1 | Date | |
|---|---|---|---|
| 31657ada67 | |||
| d19a090df2 | |||
| abe8089fdd | |||
| 773260b97e | |||
| 9830ea7607 | |||
| 7e06de77aa |
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "@vue/apollo-composable",
|
||||
"name": "@speckle/vue-apollo-composable",
|
||||
"version": "4.0.0-beta.1",
|
||||
"description": "Apollo GraphQL for Vue Composition API",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/vuejs/vue-apollo.git",
|
||||
"url": "https://github.com/specklesystems/apollo.git",
|
||||
"directory": "packages/vue-apollo-composable"
|
||||
},
|
||||
"keywords": [
|
||||
@@ -32,7 +32,7 @@
|
||||
"dev": "rimraf dist && nodemon --exec 'pnpm run build:code' --watch src --ext js,ts",
|
||||
"build": "rimraf dist && pnpm run build:code",
|
||||
"build:code": "node esbuild.mjs && tsc -d --emitDeclarationOnly",
|
||||
"prepublishOnly": "pnpm run test && pnpm run build",
|
||||
"prepublishOnly": "pnpm run test && pnpm run build:code",
|
||||
"test": "pnpm run test:types",
|
||||
"test:types": "tsc -p tests/types/"
|
||||
},
|
||||
|
||||
@@ -170,20 +170,45 @@ export function useQueryImpl<
|
||||
|
||||
// SSR
|
||||
let firstResolve: (() => void) | undefined
|
||||
let firstResolveTriggered = false
|
||||
let firstReject: ((apolloError: ApolloError) => void) | undefined
|
||||
let firstRejectError: undefined | ApolloError
|
||||
|
||||
const tryFirstResolve = () => {
|
||||
firstResolveTriggered = true
|
||||
if (firstResolve) firstResolve()
|
||||
}
|
||||
|
||||
const tryFirstReject = (apolloError: ApolloError) => {
|
||||
firstRejectError = apolloError
|
||||
if (firstReject) firstReject(apolloError)
|
||||
}
|
||||
|
||||
const resetFirstResolveReject = () => {
|
||||
firstResolve = undefined
|
||||
firstReject = undefined
|
||||
firstResolveTriggered = false
|
||||
firstRejectError = undefined
|
||||
stop()
|
||||
}
|
||||
|
||||
vm && onServerPrefetch?.(() => {
|
||||
if (!isEnabled.value || (isServer && currentOptions.value?.prefetch === false)) return
|
||||
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
firstResolve = () => {
|
||||
resetFirstResolveReject()
|
||||
resolve()
|
||||
firstResolve = undefined
|
||||
firstReject = undefined
|
||||
}
|
||||
firstReject = (apolloError: ApolloError) => {
|
||||
resetFirstResolveReject()
|
||||
reject(apolloError)
|
||||
firstResolve = undefined
|
||||
firstReject = undefined
|
||||
}
|
||||
|
||||
if (firstResolveTriggered) {
|
||||
firstResolve()
|
||||
} else if (firstRejectError) {
|
||||
firstReject(firstRejectError)
|
||||
}
|
||||
}).then(stop).catch(stop)
|
||||
})
|
||||
@@ -205,7 +230,7 @@ export function useQueryImpl<
|
||||
started || !isEnabled.value ||
|
||||
(isServer && currentOptions.value?.prefetch === false)
|
||||
) {
|
||||
if (firstResolve) firstResolve()
|
||||
tryFirstResolve()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -259,10 +284,7 @@ export function useQueryImpl<
|
||||
processError(resultErrorsToApolloError(queryResult.errors))
|
||||
}
|
||||
|
||||
if (firstResolve) {
|
||||
firstResolve()
|
||||
stop()
|
||||
}
|
||||
tryFirstResolve()
|
||||
}
|
||||
|
||||
function processNextResult (queryResult: ApolloQueryResult<TResult>) {
|
||||
@@ -282,10 +304,7 @@ export function useQueryImpl<
|
||||
processNextResult((query.value as ObservableQuery<TResult, TVariables>).getCurrentResult())
|
||||
}
|
||||
processError(apolloError)
|
||||
if (firstReject) {
|
||||
firstReject(apolloError)
|
||||
stop()
|
||||
}
|
||||
tryFirstReject(apolloError)
|
||||
// The observable closes the sub if an error occurs
|
||||
resubscribeToQuery()
|
||||
}
|
||||
@@ -312,7 +331,7 @@ export function useQueryImpl<
|
||||
* Stop watching the query
|
||||
*/
|
||||
function stop () {
|
||||
if (firstResolve) firstResolve()
|
||||
tryFirstResolve()
|
||||
if (!started) return
|
||||
started = false
|
||||
loading.value = false
|
||||
|
||||
Reference in New Issue
Block a user