summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/ide/stores/modules/terminal_sync/actions.js
blob: 006800f58c242376cdfb5412dd3a68ac289e58c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import * as types from './mutation_types';
import mirror, { canConnect } from '../../../lib/mirror';

export const upload = ({ rootState, commit }) => {
  commit(types.START_LOADING);

  return mirror
    .upload(rootState)
    .then(() => {
      commit(types.SET_SUCCESS);
    })
    .catch((err) => {
      commit(types.SET_ERROR, err);
    });
};

export const stop = ({ commit }) => {
  mirror.disconnect();

  commit(types.STOP);
};

export const start = ({ rootState, commit }) => {
  const { session } = rootState.terminal;
  const path = session && session.proxyWebsocketPath;
  if (!path || !canConnect(session)) {
    return Promise.reject();
  }

  commit(types.START_LOADING);

  return mirror
    .connect(path)
    .then(() => {
      commit(types.SET_SUCCESS);
    })
    .catch((err) => {
      commit(types.SET_ERROR, err);
      throw err;
    });
};