feature(store) add

This commit is contained in:
coderaiser 2017-05-16 16:15:22 +03:00
parent fe0210d573
commit ea297fc23e
5 changed files with 65 additions and 37 deletions

View file

@ -3,6 +3,14 @@
/* global CloudCmd, DOM, MenuIO */
const Format = require('format-io');
const currify = require('currify/legacy');
const squad = require('squad');
const store = require('../../common/store');
const call = currify((fn, callback) => {
fn();
callback();
});
CloudCmd.EditFile = function EditFileProto(callback) {
const Info = DOM.CurrentInfo;
@ -25,26 +33,19 @@ CloudCmd.EditFile = function EditFileProto(callback) {
};
function init(callback) {
let editor;
const editor = store();
const getMainEditor = () => CloudCmd.Edit.getEditor();
const getEditor = squad(editor, getMainEditor);
const auth = squad(authCheck, editor);
const listeners = squad(setListeners, editor);
exec.series([
CloudCmd.Edit,
(callback) => {
editor = CloudCmd.Edit.getEditor();
callback();
},
(callback) => {
authCheck(editor);
callback();
},
(callback) => {
setListeners(editor);
callback();
},
(callback) => {
EditFile.show(callback);
},
call(getEditor),
call(auth),
call(listeners),
EditFile.show,
], callback);
}

View file

@ -64,16 +64,17 @@ function EditProto(callback) {
function initConfig(options = {}) {
const config = Object.assign({}, options, ConfigView);
if (options.afterShow) {
checkFn('options.afterShow', options.afterShow);
const afterShow = {config};
config.afterShow = () => {
afterShow();
options.afterShow();
};
}
if (!options.afterShow)
return config;
checkFn('options.afterShow', options.afterShow);
const afterShow = {config};
config.afterShow = () => {
afterShow();
options.afterShow();
};
return config;
}

13
common/store.js Normal file
View file

@ -0,0 +1,13 @@
'use strict';
module.exports = () => {
const data = {};
return (value) => {
if (typeof value !== 'undefined')
data.value = value;
return data.value;
};
};

View file

@ -2,6 +2,7 @@
const rendy = require('rendy');
const Entity = require('./entity');
const store = require('../common/store');
/* КОНСТАНТЫ (общие для клиента и сервера)*/
@ -226,13 +227,3 @@ function getSize(size) {
return size;
}
function store() {
const data = {};
return (value) => {
if (typeof value !== 'undefined')
data.value = value;
return data.value;
};
}

22
test/common/store.js Normal file
View file

@ -0,0 +1,22 @@
'use strict';
const dir = '../../common';
const store = require(`${dir}/store`);
const test = require('tape');
test('cloudcmd: common: store: set', (t) => {
const name = store();
const str = 'hello';
name(str);
t.equal(name(), str, 'should return stored value');
t.end();
});
test('cloudcmd: common: store: first get', (t) => {
const name = store();
t.equal(name(), undefined, 'should return undefined');
t.end();
});