reason-apollo
Version:
Using Apollo client 2 with Reason
109 lines (103 loc) • 3.97 kB
JavaScript
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
import * as Block from "bs-platform/lib/es6/block.js";
import * as Curry from "bs-platform/lib/es6/curry.js";
import * as React from "react";
import * as Caml_option from "bs-platform/lib/es6/caml_option.js";
import * as GraphqlTag from "graphql-tag";
import * as ReactApollo from "react-apollo";
import * as ReasonApolloUtils from "../ReasonApolloUtils.bs.js";
function Make(Config) {
var graphqlMutationAST = GraphqlTag.default(Config.query);
var convertExecutionResultToReason = function (executionResult) {
var match = ReasonApolloUtils.getNonEmptyObj(executionResult.data);
var match$1 = executionResult.errors;
if (match !== undefined) {
return /* Data */Block.__(1, [Curry._1(Config.parse, Caml_option.valFromOption(match))]);
} else if (match$1 == null) {
return /* EmptyResponse */0;
} else {
return /* Errors */Block.__(0, [match$1]);
}
};
var apolloMutationFactory = function (jsMutation, variables, refetchQueries, optimisticResponse, param) {
return Curry._1(jsMutation, {
variables: variables,
refetchQueries: refetchQueries,
optimisticResponse: optimisticResponse
}).then((function (response) {
return Promise.resolve(convertExecutionResultToReason(response));
}));
};
var apolloDataToReason = function (apolloData) {
var match = apolloData.loading;
var match$1 = ReasonApolloUtils.getNonEmptyObj(apolloData.data);
var match$2 = apolloData.error;
if (match) {
return /* Loading */0;
} else if (match$1 !== undefined) {
return /* Data */Block.__(1, [Curry._1(Config.parse, Caml_option.valFromOption(match$1))]);
} else if (match$2 == null) {
return /* NotCalled */1;
} else {
return /* Error */Block.__(0, [match$2]);
}
};
var convertJsInputToReason = function (apolloData) {
var match = ReasonApolloUtils.getNonEmptyObj(apolloData.data);
var tmp;
if (match !== undefined) {
var exit = 0;
var parsedData;
try {
parsedData = Curry._1(Config.parse, Caml_option.valFromOption(match));
exit = 1;
}
catch (exn){
tmp = undefined;
}
if (exit === 1) {
tmp = Caml_option.some(parsedData);
}
} else {
tmp = undefined;
}
return {
result: apolloDataToReason(apolloData),
data: tmp,
loading: apolloData.loading,
error: Caml_option.nullable_to_opt(apolloData.error),
networkStatus: Caml_option.nullable_to_opt(apolloData.networkStatus)
};
};
var JsMutation = { };
var ReasonApolloMutation$Make = function (Props) {
var variables = Props.variables;
var onError = Props.onError;
var onCompleted = Props.onCompleted;
var children = Props.children;
return React.createElement(ReactApollo.Mutation, {
mutation: graphqlMutationAST,
variables: variables,
onCompleted: onCompleted,
onError: onError,
children: (function (mutation, apolloData) {
return Curry._2(children, (function (param, param$1, param$2, param$3) {
return apolloMutationFactory(mutation, param, param$1, param$2, param$3);
}), convertJsInputToReason(apolloData));
})
});
};
return {
graphqlMutationAST: graphqlMutationAST,
convertExecutionResultToReason: convertExecutionResultToReason,
apolloMutationFactory: apolloMutationFactory,
apolloDataToReason: apolloDataToReason,
convertJsInputToReason: convertJsInputToReason,
JsMutation: JsMutation,
make: ReasonApolloMutation$Make
};
}
export {
Make ,
}
/* react Not a pure module */