Skip to content

Commit ecdb57b

Browse files
authored
Rewrite provider (#352)
This is essentially a complete rewrite of `YSweetProvider`. It incorporates the reconnect logic directly in the provider itself, instead of using the wrapper, which should make it easier to reason about. This paves the way to beginning to extend the protocol (as required for #306 and #308).
1 parent 5616dc9 commit ecdb57b

File tree

6 files changed

+387
-628
lines changed

6 files changed

+387
-628
lines changed

debugger/src/app/debugger.tsx

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,10 @@ import { DebuggableAwareness } from '@/lib/debuggable/yawareness'
1010

1111
export function Debugger() {
1212
const doc: Y.Doc = useYDoc()
13-
const provider = useYjsProvider()
14-
const url = provider.ws?.url
1513
const awareness = useAwareness()
1614

17-
const selectAll = useCallback((e: React.MouseEvent) => {
18-
e.stopPropagation()
19-
e.preventDefault()
20-
21-
let range = document.createRange()
22-
range.selectNodeContents(e.target as Node)
23-
let selection = window.getSelection()
24-
selection?.removeAllRanges()
25-
selection?.addRange(range)
26-
}, [])
27-
2815
return (
2916
<div>
30-
{url && (
31-
<p className="mb-5 text-sm text-gray-400">
32-
WebSocket URL: <samp onDoubleClick={selectAll}>{url}</samp>
33-
</p>
34-
)}
3517
<div className="flex flex-row">
3618
<div className="flex-1">
3719
<h2 className="text-2xl font-bold mb-4">State</h2>

js-pkg/client/src/main.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import {
2-
YSweetProvider,
3-
ySweetProviderWrapper,
4-
type YSweetProviderParams,
5-
type AuthEndpoint,
6-
type YSweetProviderWithClientToken,
7-
} from './provider'
1+
import { YSweetProvider, type YSweetProviderParams, type AuthEndpoint } from './provider'
82
import * as Y from 'yjs'
93
import { ClientToken, encodeClientToken } from '@y-sweet/sdk'
10-
export { YSweetProvider, YSweetProviderParams, AuthEndpoint, YSweetProviderWithClientToken }
4+
export { YSweetProvider, YSweetProviderParams, AuthEndpoint }
115

126
/**
137
* Given a docId and {@link AuthEndpoint}, create a {@link YSweetProvider} for it.
@@ -18,13 +12,13 @@ export { YSweetProvider, YSweetProviderParams, AuthEndpoint, YSweetProviderWithC
1812
* @param extraOptions
1913
* @returns
2014
*/
21-
export async function createYjsProvider(
15+
export function createYjsProvider(
2216
doc: Y.Doc,
2317
docId: string,
2418
authEndpoint: AuthEndpoint,
2519
extraOptions: Partial<YSweetProviderParams> = {},
26-
): Promise<YSweetProviderWithClientToken> {
27-
return ySweetProviderWrapper(authEndpoint, docId, doc, extraOptions)
20+
): YSweetProvider {
21+
return new YSweetProvider(authEndpoint, docId, doc, extraOptions)
2822
}
2923

3024
/**

0 commit comments

Comments
 (0)