@@ -13,6 +13,10 @@ import type {
1313 QueryState ,
1414} from '@tanstack/query-core'
1515
16+ type PersistedResult < T > = {
17+ data : T
18+ }
19+
1620export interface PersistedQuery {
1721 buster : string
1822 queryHash : string
@@ -125,7 +129,7 @@ export function experimental_createQueryPersister<TStorageValue = string>({
125129 async function retrieveQuery < T > (
126130 queryHash : string ,
127131 afterRestoreMacroTask ?: ( persistedQuery : PersistedQuery ) => void ,
128- ) {
132+ ) : Promise < PersistedResult < T > | undefined > {
129133 if ( storage != null ) {
130134 const storageKey = `${ prefix } -${ queryHash } `
131135 try {
@@ -149,7 +153,7 @@ export function experimental_createQueryPersister<TStorageValue = string>({
149153 )
150154 }
151155 // We must resolve the promise here, as otherwise we will have `loading` state in the app until `queryFn` resolves
152- return persistedQuery . state . data as T
156+ return { data : persistedQuery . state . data as T }
153157 }
154158 }
155159 } catch ( err ) {
@@ -209,7 +213,7 @@ export function experimental_createQueryPersister<TStorageValue = string>({
209213
210214 // Try to restore only if we do not have any data in the cache and we have persister defined
211215 if ( matchesFilter && query . state . data === undefined && storage != null ) {
212- const restoredData = await retrieveQuery (
216+ const restoredData = await retrieveQuery < T > (
213217 query . queryHash ,
214218 ( persistedQuery : PersistedQuery ) => {
215219 // Set proper updatedAt, since resolving in the first pass overrides those values
@@ -228,7 +232,7 @@ export function experimental_createQueryPersister<TStorageValue = string>({
228232 )
229233
230234 if ( restoredData !== undefined ) {
231- return Promise . resolve ( restoredData as T )
235+ return Promise . resolve ( restoredData . data )
232236 }
233237 }
234238
0 commit comments