@wildcards/reason-apollo
Version:
Using Apollo client 2 with Reason
157 lines (151 loc) • 5.74 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 Js_null_undefined from "bs-platform/lib/es6/js_null_undefined.js";
import * as ReasonApolloUtils from "../ReasonApolloUtils.bs.js";
function Make(Config) {
var graphqlQueryAST = GraphqlTag.default(Config.query);
var apolloDataToVariant = function (apolloData) {
var match = apolloData[/* loading */0];
var match$1 = ReasonApolloUtils.getNonEmptyObj(apolloData[/* data */1]);
var match$2 = apolloData[/* error */2];
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 /* Error */Block.__(0, [/* record */[
/* message */"No data",
/* graphQLErrors */null,
/* networkError */null
]]);
} else {
return /* Error */Block.__(0, [match$2]);
}
};
var convertJsInputToReason = function (apolloData) {
var match = ReasonApolloUtils.getNonEmptyObj(apolloData[/* data */1]);
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;
}
var match$1 = apolloData[/* error */2];
return /* record */[
/* result */apolloDataToVariant(apolloData),
/* data */tmp,
/* error */(match$1 == null) ? undefined : match$1,
/* loading */apolloData[/* loading */0],
/* refetch */(function (variables) {
return Curry._1(apolloData[/* refetch */3], Js_null_undefined.fromOption(variables)).then((function (data) {
return Promise.resolve(apolloDataToVariant(data));
}));
}),
/* fetchMore */(function (variables, updateQuery, param) {
return Curry._1(apolloData[/* fetchMore */6], /* record */[
/* variables */variables,
/* updateQuery */updateQuery
]);
}),
/* networkStatus */Caml_option.nullable_to_opt(apolloData[/* networkStatus */4]),
/* subscribeToMore */(function ($$document, variables, updateQuery, onError, param) {
return Curry._1(apolloData[/* subscribeToMore */7], /* record */[
/* document */$$document,
/* variables */variables,
/* updateQuery */updateQuery,
/* onError */onError
]);
})
];
};
var JsQuery = { };
var ReasonApolloQuery$Make = function (Props) {
var variables = Props.variables;
var pollInterval = Props.pollInterval;
var notifyOnNetworkStatusChange = Props.notifyOnNetworkStatusChange;
var fetchPolicy = Props.fetchPolicy;
var errorPolicy = Props.errorPolicy;
var ssr = Props.ssr;
var displayName = Props.displayName;
var skip = Props.skip;
var onCompleted = Props.onCompleted;
var onError = Props.onError;
var partialRefetch = Props.partialRefetch;
var delay = Props.delay;
var context = Props.context;
var children = Props.children;
var tmp = {
query: graphqlQueryAST,
children: (function (apolloData) {
return Curry._1(children, convertJsInputToReason(apolloData));
})
};
if (variables !== undefined) {
tmp.variables = Caml_option.valFromOption(variables);
}
if (pollInterval !== undefined) {
tmp.pollInterval = Caml_option.valFromOption(pollInterval);
}
if (notifyOnNetworkStatusChange !== undefined) {
tmp.notifyOnNetworkStatusChange = Caml_option.valFromOption(notifyOnNetworkStatusChange);
}
if (fetchPolicy !== undefined) {
tmp.fetchPolicy = Caml_option.valFromOption(fetchPolicy);
}
if (errorPolicy !== undefined) {
tmp.errorPolicy = Caml_option.valFromOption(errorPolicy);
}
if (ssr !== undefined) {
tmp.ssr = Caml_option.valFromOption(ssr);
}
if (displayName !== undefined) {
tmp.displayName = Caml_option.valFromOption(displayName);
}
if (skip !== undefined) {
tmp.skip = Caml_option.valFromOption(skip);
}
if (onCompleted !== undefined) {
tmp.onCompleted = Caml_option.valFromOption(onCompleted);
}
if (onError !== undefined) {
tmp.onError = Caml_option.valFromOption(onError);
}
if (partialRefetch !== undefined) {
tmp.partialRefetch = Caml_option.valFromOption(partialRefetch);
}
if (delay !== undefined) {
tmp.delay = Caml_option.valFromOption(delay);
}
if (context !== undefined) {
tmp.context = Caml_option.valFromOption(context);
}
return React.createElement(ReactApollo.Query, tmp);
};
return {
graphqlQueryAST: graphqlQueryAST,
apolloDataToVariant: apolloDataToVariant,
convertJsInputToReason: convertJsInputToReason,
JsQuery: JsQuery,
make: ReasonApolloQuery$Make
};
}
export {
Make ,
}
/* react Not a pure module */