Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
013fee2421 | ||
|
|
bb45abbb70 | ||
|
|
67b47fd868 | ||
|
|
2c18b9ffad | ||
|
|
a6b7d76544 |
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "yjs",
|
||||
"version": "13.0.0-5",
|
||||
"version": "13.0.0-7",
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "yjs",
|
||||
"version": "13.0.0-5",
|
||||
"version": "13.0.0-7",
|
||||
"description": "A framework for real-time p2p shared editing on any data",
|
||||
"main": "./y.node.js",
|
||||
"browser": "./y.js",
|
||||
|
||||
@@ -141,7 +141,9 @@ export default function extendConnector (Y/* :any */) {
|
||||
this.log('User joined: %s', user)
|
||||
this.connections[user] = {
|
||||
isSynced: false,
|
||||
role: role
|
||||
role: role,
|
||||
waitingMessages: [],
|
||||
auth: null
|
||||
}
|
||||
let defer = {}
|
||||
defer.promise = new Promise(function (resolve) { defer.resolve = resolve })
|
||||
@@ -267,11 +269,20 @@ export default function extendConnector (Y/* :any */) {
|
||||
})
|
||||
return Promise.reject(new Error('Incompatible protocol version'))
|
||||
}
|
||||
if (message.auth != null && this.connections[sender] != null) {
|
||||
if ((message.type === 'sync step 1' || message.type === 'sync step 2') && this.connections[sender] != null && this.connections[sender].auth == null) {
|
||||
// authenticate using auth in message
|
||||
var auth = this.checkAuth(message.auth, this.y)
|
||||
this.connections[sender].auth = auth
|
||||
auth.then(auth => {
|
||||
// in case operations were received before sender was received
|
||||
// we apply the messages after authentication
|
||||
this.connections[sender].syncStep2.promise.then(() => {
|
||||
// we do it after sync step 1
|
||||
this.connections[sender].waitingMessages.forEach(msg => {
|
||||
this.receiveMessage(sender, msg)
|
||||
})
|
||||
this.connections[sender].waitingMessages = null
|
||||
})
|
||||
for (var f of this.userEventListeners) {
|
||||
f({
|
||||
action: 'userAuthenticated',
|
||||
@@ -280,9 +291,6 @@ export default function extendConnector (Y/* :any */) {
|
||||
})
|
||||
}
|
||||
})
|
||||
} else if (this.connections[sender] != null && this.connections[sender].auth == null) {
|
||||
// authenticate without otherwise
|
||||
this.connections[sender].auth = this.checkAuth(null, this.y)
|
||||
}
|
||||
if (this.connections[sender] != null && this.connections[sender].auth != null) {
|
||||
return this.connections[sender].auth.then((auth) => {
|
||||
@@ -382,8 +390,13 @@ export default function extendConnector (Y/* :any */) {
|
||||
this.y.db.apply(message.ops)
|
||||
}
|
||||
})
|
||||
} else if (this.connections[sender] != null) {
|
||||
// wait for authentication
|
||||
let senderConn = this.connections[sender]
|
||||
senderConn.waitingMessages = senderConn.waitingMessages || []
|
||||
senderConn.waitingMessages.push(message)
|
||||
} else {
|
||||
return Promise.reject(new Error('Unable to deliver message'))
|
||||
return Promise.reject(new Error('Unknown user - Unable to deliver message'))
|
||||
}
|
||||
}
|
||||
_setSyncedWith (user) {
|
||||
|
||||
1
y.node.js.map
Normal file
1
y.node.js.map
Normal file
File diff suppressed because one or more lines are too long
1
y.test.js.map
Normal file
1
y.test.js.map
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user