Sha256: e128b4eeb2b56e6f1cda703f5a66dc6b3c949ce8254517f56177cbca7b0ba0e9

Contents?: true

Size: 1.82 KB

Versions: 55

Compression:

Stored size: 1.82 KB

Contents

/** @type {boolean} */
mumuki.incognitoUser;
mumuki.syncMode = (() => {

  /**
   * Syncs progress and solutions
   * from local storage
   */
  class ClientSyncMode {
    syncProgress() {
      mumuki.progress.updateWholeProgressBar($anchor => this._getProgressListItemClass($anchor));
    }

    syncEditorContent() {
      const lastSubmission = mumuki.SubmissionsStore.getLastSubmissionAndResult(mumuki.exercise.id);
      if (lastSubmission) {
        /** @todo extract core module  */
        const content = mumuki.SubmissionsStore.submissionSolutionContent(lastSubmission.submission);
        mumuki.editors.setContent(content);
      }
    }

    /**
     * @param {JQuery} $anchor
     */
    _getProgressListItemClass($anchor) {
      const exerciseId = $anchor.data('mu-exercise-id');
      const status = mumuki.SubmissionsStore.getLastSubmissionStatus(exerciseId);
      return mumuki.renderers.progressListItemClassForStatus(status, exerciseId == mumuki.exercise.id);
    }

  }

  /**
   * Syncs progress and solutions from server.
   *
   * This class does nothing actually, since a server-side behaviour is the default one
   * and no additional actions are needed.
   */
  class ServerSyncMode {
    syncProgress() {
      // nothing
    }

    syncEditorContent() {
      // nothing
    }
  }


  /** Selects the most appropriate sync mode */
  function _selectSyncMode() {
    if (mumuki.incognitoUser) {
      mumuki.syncMode._current = new ClientSyncMode();
    } else {
      mumuki.syncMode._current = new ServerSyncMode();
    }
  }

  return {
    ServerSyncMode,
    ClientSyncMode,

    _selectSyncMode,

    /** @type {ClientSyncMode|ServerSyncMode}*/
    _current: null
  };
})();

mumuki.load(() => {
  mumuki.syncMode._selectSyncMode();
  mumuki.syncMode._current.syncProgress();
  mumuki.syncMode._current.syncEditorContent();
});

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
mumuki-laboratory-9.23.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.22.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.21.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.20.1 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.20.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.19.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.18.1 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.18.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.17.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.16.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.15.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.14.1 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.14.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.13.2 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.13.1 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.13.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.12.1 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.12.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.11.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
mumuki-laboratory-9.10.0 app/assets/javascripts/mumuki_laboratory/application/sync-mode.js