diff --git a/packages/gene-apollo/src/apollo/useApolloObservableQuery.ts b/packages/gene-apollo/src/apollo/useApolloObservableQuery.ts index 34649cc..af7e49d 100644 --- a/packages/gene-apollo/src/apollo/useApolloObservableQuery.ts +++ b/packages/gene-apollo/src/apollo/useApolloObservableQuery.ts @@ -38,7 +38,7 @@ export function useApolloObservableQuery( newObservable ); - const isRouterEvent = response?.type === 'routeChanged'; + const isRouterEvent = response?.type === 'routeChangeComplete'; const isServerValueOrRouterEventOrObservableValueIsEmpty = isRouterEvent || isServer() || !response?.data; diff --git a/packages/gene-next/src/routing/routers/next.ts b/packages/gene-next/src/routing/routers/next.ts index aa30f8d..1e64f34 100644 --- a/packages/gene-next/src/routing/routers/next.ts +++ b/packages/gene-next/src/routing/routers/next.ts @@ -36,19 +36,46 @@ export function useTransformedNextRouter(): Router { const $routeChanged = React.useMemo( () => new Observable((observer) => { - const handler = ([currentPathname]: [string]) => { + const handleStart = (path: string, options?: NavigateOptions) => { observer.next({ - type: 'routeChanged', + type: 'routeChangeStart', payload: { - currentPathname, + path, + options + }, + }); + }; + + const handleComplete = (path: string, options?: NavigateOptions) => { + observer.next({ + type: 'routeChangeComplete', + payload: { + path, + options + }, + }); + }; + + const handleError = (path: string, options?: NavigateOptions) => { + observer.next({ + type: 'routeChangeError', + payload: { + path, + options }, }); }; if (events) { - events.on('routeChangeComplete', handler); + events.on('routeChangeStart', handleStart); + events.on('routeChangeComplete', handleComplete); + events.on('routeChangeError', handleError); - return () => events.off('routeChangeComplete', handler); + return () => { + events.off('routeChangeStart', handleStart); + events.off('routeChangeComplete', handleComplete); + events.off('routeChangeError', handleError); + } } return () => null; }), diff --git a/packages/gene/src/routing/types.ts b/packages/gene/src/routing/types.ts index 283d552..f4c9fe1 100644 --- a/packages/gene/src/routing/types.ts +++ b/packages/gene/src/routing/types.ts @@ -31,9 +31,10 @@ export interface UrlObject { } export interface RouterEvent { - type: 'routeChanged'; + type: 'routeChangeStart' | 'routeChangeComplete' | 'routeChangeError'; payload: { - currentPathname: string; + path: string; + options?: NavigateOptions; }; }