diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 564015e65..adca555c6 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -13,6 +13,7 @@ }, "prettier": "@sanity/prettier-config", "dependencies": { + "@sanity/sdk": "workspace:*", "@sanity/sdk-react": "workspace:*", "@sanity/ui": "^2.15.13", "react": "^18.3.1", diff --git a/apps/dashboard/src/App.tsx b/apps/dashboard/src/App.tsx index 18efa4eb9..24eb46949 100644 --- a/apps/dashboard/src/App.tsx +++ b/apps/dashboard/src/App.tsx @@ -1,7 +1,8 @@ +import {createSubscriptionRequest, registerSubscription, unregisterSubscription} from '@sanity/sdk' import {SanityApp, SanityConfig} from '@sanity/sdk-react' import {Spinner, ThemeProvider} from '@sanity/ui' import {buildTheme} from '@sanity/ui/theme' -import {type JSX, Suspense} from 'react' +import {type JSX, Suspense, useState} from 'react' const theme = buildTheme({}) @@ -20,6 +21,78 @@ const devConfigs: SanityConfig[] = [ }, ] +// SharedWorker test component +function SharedWorkerTest() { + const [subscriptionId, setSubscriptionId] = useState(null) + const [status, setStatus] = useState('Ready to test') + + const testSubscription = async () => { + // eslint-disable-next-line no-console + console.log('testSubscription') + try { + setStatus('Testing subscription...') + + const subscription = createSubscriptionRequest({ + storeName: 'query', + projectId: 'ppsg7ml5', + dataset: 'test', + params: { + query: '*[_type == "movie"]', + options: {}, + }, + appId: 'dashboard-app', + }) + + const id = await registerSubscription(subscription) + setSubscriptionId(id) + setStatus(`Subscription registered: ${id}`) + } catch (error) { + setStatus(`Error: ${error instanceof Error ? error.message : String(error)}`) + } + } + + const testUnsubscription = async () => { + if (!subscriptionId) return + + try { + setStatus('Testing unsubscription...') + + await unregisterSubscription(subscriptionId) + setSubscriptionId(null) + setStatus('Subscription unregistered successfully') + } catch (error) { + setStatus(`Error: ${error instanceof Error ? error.message : String(error)}`) + } + } + + return ( +
+
Dashboard (iframes sdk-app below)
+
+
SharedWorker Test:
+
+ + {subscriptionId && ( + + )} +
+
+ Status: {status} +
+ {subscriptionId && ( +
+ Active Subscription: {subscriptionId} +
+ )} +
+
+ ) +} + export default function App(): JSX.Element { return ( @@ -33,9 +106,7 @@ export default function App(): JSX.Element { flexDirection: 'column', }} > -
- Dashboard (iframes sdk-app below) -
+