Skip to content

Commit

Permalink
Fix saving transforms
Browse files Browse the repository at this point in the history
Somehow I completely overlooked that transforms haven't been saved.
  • Loading branch information
fkling committed Jun 5, 2016
1 parent 7758c1a commit 6552bc1
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 33 deletions.
4 changes: 1 addition & 3 deletions src/store/getDataFromRevision.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@ export default function getDataFromRevision(revision) {
parser = getDefaultParser();
}

const code = revision.get('code') || this._getDefaultCode(parser);
const code = revision.get('code') || parser.category.codeExample;

return {parser, transformer, code, transformCode};
}


18 changes: 17 additions & 1 deletion src/store/sagas.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ function getParserForCategory(category) {
}

function* save(fork) {
let [snippet, parser, code] = yield [
let [snippet, parser, code, transformCode, transformer] = yield [
select(getSnippet),
select(getParser),
select(getCode),
select(getTransformerCode),
select(getTransformer),
];
if (fork || !snippet) {
snippet = new Snippet();
Expand All @@ -41,6 +43,12 @@ function* save(fork) {
if (code !== parser.category.codeExample) {
data.code = code;
}
if (transformer) {
data.toolID = transformer.id;
}
if (transformCode && transformCode !== transformer.defaultTransform) {
data.transform = transformCode;
}

try {
const response = yield snippet.createNewRevision(data);
Expand Down Expand Up @@ -72,6 +80,14 @@ export function getSnippet(state) {
return state.selectedSnippet;
}

export function getTransformer(state) {
return state.transform.transformer;
}

export function getTransformerCode(state) {
return state.transform.code;
}

export function* watchSave() {
while (true) {
const {fork} = yield take(actions.SAVE);
Expand Down
59 changes: 30 additions & 29 deletions src/store/selectors.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import {createSelector} from 'reselect';

function getParser(state) {
return state.parser;
}

function getSnippet(state) {
return state.selectedSnippet;
}
Expand Down Expand Up @@ -34,42 +38,39 @@ function showTransformer(state) {
return state.transform.showTransformer;
}

export const canSaveCode = createSelector(
[getRevision, getCode, getCodeExample],
(revision, code, codeExample) => revision ?
revision.get('code') !== code :
codeExample !== code
);

export const canSaveTransform = createSelector(
[showTransformer, getRevision, getTransformCode, getTransformExample],
(showTransformer, revision, code, codeExample) => {
if (!showTransformer) {
return false;
}
return revision ?
revision.get('transform') !== code :
codeExample !== code
});

export const canSave = createSelector(
[canSaveCode, canSaveTransform],
(canSaveCode, canSaveTransform) => canSaveCode || canSaveTransform
);

export const canFork = createSelector(
[getSnippet],
(snippet) => !!snippet
);

export const defaultValue = createSelector(
[getRevision, getCodeExample, getDroppedText],
(revision, codeExample, droppedText) => revision ?
revision.get('code') :
const defaultValue = createSelector(
[getRevision, getCodeExample, getDroppedText, getParser],
(revision, codeExample, droppedText, parser) => revision ?
revision.get('code') || parser.category.codeExample :
(droppedText != null ? droppedText : codeExample)
);
export {defaultValue};

export const defaultTransformCode = createSelector(
const defaultTransformCode = createSelector(
[getRevision, getTransformExample],
(revision, example) => revision ? revision.get('transform') : example
(revision, example) => revision ?
revision.get('transform') || example :
example
);
export {defaultTransformCode};

export const canSaveCode = createSelector(
[defaultValue, getCode],
(defaultCode, code) => defaultCode !== code
);

export const canSaveTransform = createSelector(
[showTransformer, defaultTransformCode, getTransformCode],
(showTransformer, defaultCode, code) =>
showTransformer && defaultCode !== code
);

export const canSave = createSelector(
[canSaveCode, canSaveTransform],
(canSaveCode, canSaveTransform) => canSaveCode || canSaveTransform
);

0 comments on commit 6552bc1

Please sign in to comment.