Skip to content

Commit c9c2c5d

Browse files
author
Ives van Hoorne
committed
Reconnecting OT transforms
1 parent 53ad359 commit c9c2c5d

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

packages/app/src/app/store/modules/live/actions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,3 +442,7 @@ export function removeEditorFromState({ props, state }) {
442442

443443
state.set('live.roomInfo.editorIds', newEditors);
444444
}
445+
446+
export function resendOutboundOTTransforms({ ot }) {
447+
ot.serverReconnect();
448+
}

packages/app/src/app/store/modules/live/sequences.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { unset, set, push, when, equals } from 'cerebral/operators';
22
import { state, props } from 'cerebral/tags';
33

44
import * as factories from '../../factories';
5-
import { setSandbox, openModal } from '../../sequences';
5+
import { setSandbox, openModal, resetLive } from '../../sequences';
66

77
import { changeCode } from '../editor/sequences';
88
import { setModuleSaved } from '../editor/actions';
@@ -48,6 +48,11 @@ export const handleMessage = [
4848
join: [
4949
set(props`message`, 'Connected to Live!'),
5050
factories.addNotification(props`message`, 'success'),
51+
when(state`live.reconnecting`),
52+
{
53+
true: [actions.resendOutboundOTTransforms],
54+
false: [],
55+
},
5156
set(state`live.reconnecting`, false),
5257
],
5358
'user:entered': [
@@ -240,6 +245,7 @@ export const handleMessage = [
240245
actions.disconnect,
241246
set(props`modal`, 'liveSessionEnded'),
242247
openModal,
248+
resetLive,
243249
],
244250
otherwise: [],
245251
},

packages/app/src/app/store/providers/Live.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ export default Provider({
3838
listen(signalPath) {
3939
const signal = this.context.controller.getSignal(signalPath);
4040
channel.onMessage = (event: any, data: any) => {
41-
const alteredEvent =
42-
data == null && event === 'phx_err' ? 'connection-loss' : event;
41+
const disconnected = data == null && event === 'phx_error';
42+
const alteredEvent = disconnected ? 'connection-loss' : event;
4343

4444
signal({ event: alteredEvent, data: data == null ? {} : data });
4545

packages/app/src/app/store/providers/OT/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ export default Provider({
2626
TextOperation.fromJSON(operation)
2727
);
2828
},
29+
serverReconnect() {
30+
modules.forEach(client => {
31+
client.serverReconnect();
32+
});
33+
},
2934
serverAck(moduleShortid: string) {
3035
getClient(moduleShortid, this.context).serverAck();
3136
},

0 commit comments

Comments
 (0)