roomConnect with username
This commit is contained in:
parent
97a2f7bcfb
commit
fc26e25cf0
|
@ -441,8 +441,8 @@ export const createCtrl = (initial: State): [Store<State>, any] => {
|
||||||
const doStartCollab = (state: State): State => {
|
const doStartCollab = (state: State): State => {
|
||||||
const backup = state.args?.room && state.collab?.room !== state.args.room
|
const backup = state.args?.room && state.collab?.room !== state.args.room
|
||||||
const room = state.args?.room ?? uuidv4()
|
const room = state.args?.room ?? uuidv4()
|
||||||
|
const username = '' // FIXME: use authenticated user name
|
||||||
const [type, provider] = roomConnect(room)
|
const [type, provider] = roomConnect(room, username)
|
||||||
|
|
||||||
const extensions = createExtensions({
|
const extensions = createExtensions({
|
||||||
config: state.config,
|
config: state.config,
|
||||||
|
|
|
@ -27,7 +27,7 @@ export const loadArticleReactions = async ({
|
||||||
offset?: number
|
offset?: number
|
||||||
}): Promise<void> => {
|
}): Promise<void> => {
|
||||||
const data = await apiClient.getArticleReactions({ articleSlug, limit, offset })
|
const data = await apiClient.getArticleReactions({ articleSlug, limit, offset })
|
||||||
// TODO: const [data, provider] = roomConnect(articleSlug)
|
// TODO: const [data, provider] = roomConnect(articleSlug, username, "reactions")
|
||||||
reactionsOrdered.set(data)
|
reactionsOrdered.set(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,11 @@ import { WebrtcProvider } from 'y-webrtc'
|
||||||
import * as Y from 'yjs'
|
import * as Y from 'yjs'
|
||||||
// import type { Reaction } from '../graphql/types.gen'
|
// import type { Reaction } from '../graphql/types.gen'
|
||||||
|
|
||||||
export const roomConnect = (room, keyname = 'reactions'): [Y.XmlFragment, WebrtcProvider] => {
|
export const roomConnect = (
|
||||||
|
room,
|
||||||
|
username = '',
|
||||||
|
keyname = 'reactions'
|
||||||
|
): [Y.XmlFragment, WebrtcProvider] => {
|
||||||
const ydoc = new Y.Doc()
|
const ydoc = new Y.Doc()
|
||||||
const yxmlfrag = ydoc.getXmlFragment(keyname) // TODO: encode/decode payload to Reactions[]
|
const yxmlfrag = ydoc.getXmlFragment(keyname) // TODO: encode/decode payload to Reactions[]
|
||||||
const webrtcOptions = {
|
const webrtcOptions = {
|
||||||
|
@ -21,15 +25,17 @@ export const roomConnect = (room, keyname = 'reactions'): [Y.XmlFragment, Webrtc
|
||||||
password: ''
|
password: ''
|
||||||
}
|
}
|
||||||
const provider = new WebrtcProvider(room, ydoc, webrtcOptions)
|
const provider = new WebrtcProvider(room, ydoc, webrtcOptions)
|
||||||
const username = uniqueNamesGenerator({
|
let name = username
|
||||||
|
|
||||||
|
if (Boolean(name) === false) {
|
||||||
|
name = uniqueNamesGenerator({
|
||||||
dictionaries: [adjectives, animals],
|
dictionaries: [adjectives, animals],
|
||||||
style: 'capital',
|
style: 'capital',
|
||||||
separator: ' ',
|
separator: ' ',
|
||||||
length: 2
|
length: 2
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
provider.awareness.setLocalStateField('user', {
|
provider.awareness.setLocalStateField('user', { name })
|
||||||
name: username
|
|
||||||
})
|
|
||||||
return [yxmlfrag, provider]
|
return [yxmlfrag, provider]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user