Skip to content

Commit feb5ed0

Browse files
authored
Fix login and redirects in Sync Diagnostics Client (#856)
1 parent 35a8479 commit feb5ed0

5 files changed

Lines changed: 17 additions & 13 deletions

File tree

.changeset/thirty-goats-shop.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@powersync/diagnostics-app': minor
3+
---
4+
5+
Fixed redirect for removed /login route to go to home page. Fixed token query parameter deep-link and stale credential display after re-login.

tools/diagnostics-app/src/app/views/sync-diagnostics.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ export default function SyncDiagnosticsPage() {
117117
tokenPayload: decodeTokenPayload(credentials.token)
118118
};
119119
},
120-
staleTime: Infinity
120+
staleTime: 0,
121+
refetchOnMount: 'always'
121122
});
122123

123124
const { data: stats, isLoading } = useTanstackQuery({

tools/diagnostics-app/src/library/powersync/ConnectionManager.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,6 @@ export async function connect() {
145145
notifySyncChange();
146146
await sync.connect({ params, clientImplementation: client });
147147
await schemaManager.refreshSchemaNow(db);
148-
if (!sync.syncStatus.connected) {
149-
const error = sync.syncStatus.dataFlowStatus.downloadError ?? new Error('Failed to connect');
150-
lastConnectionError = error;
151-
notifySyncChange();
152-
await sync.disconnect();
153-
throw error;
154-
}
155148
}
156149

157150
export async function clearData() {

tools/diagnostics-app/src/routes/__root.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import { createRootRoute, Outlet } from '@tanstack/react-router';
1+
import { createRootRoute, Outlet, Navigate } from '@tanstack/react-router';
22
import { SystemProvider } from '@/components/providers/SystemProvider';
33
import { ThemeProviderContainer } from '@/components/providers/ThemeProviderContainer';
44

55
export const Route = createRootRoute({
6-
component: RootComponent
6+
component: RootComponent,
7+
notFoundComponent: () => <Navigate to="/" />
78
});
89

910
function RootComponent() {

tools/diagnostics-app/src/routes/index.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { createFileRoute, redirect, useNavigate } from '@tanstack/react-router';
2-
import { connector } from '@/library/powersync/ConnectionManager';
2+
import { connector, connect } from '@/library/powersync/ConnectionManager';
3+
import { localStateDb } from '@/library/powersync/LocalStateManager';
34
import { getTokenEndpoint } from '@/library/powersync/TokenConnector';
45
import { z } from 'zod';
56
import { Formik, FormikErrors } from 'formik';
@@ -30,7 +31,9 @@ export const Route = createFileRoute('/')({
3031
throw new Error('endpoint is required');
3132
}
3233

33-
await connector.signIn({ token: search.token, endpoint });
34+
await localStateDb.init();
35+
await connector.saveCredentials({ token: search.token, endpoint });
36+
await connect();
3437

3538
throw redirect({ to: '/sync-diagnostics' });
3639
}
@@ -86,7 +89,8 @@ function LandingPage() {
8689
if (endpoint == null) {
8790
throw new Error('endpoint is required');
8891
}
89-
await connector.signIn({ token: values.token, endpoint });
92+
await connector.saveCredentials({ token: values.token, endpoint });
93+
await connect();
9094
navigate({ to: '/sync-diagnostics' });
9195
} catch (ex: any) {
9296
console.error(ex);

0 commit comments

Comments
 (0)