mirror of
https://github.com/vale981/Vulcan
synced 2025-03-11 21:16:40 -04:00
35 lines
972 B
JavaScript
35 lines
972 B
JavaScript
![]() |
import Telescope from 'meteor/nova:lib';
|
||
|
import React, { PropTypes, Component } from 'react';
|
||
|
import { graphql } from 'react-apollo';
|
||
|
import gql from 'graphql-tag';
|
||
|
|
||
|
export default function withSingle (options) {
|
||
|
|
||
|
const { queryName, collection } = options,
|
||
|
singleResolverName = collection.options.resolvers.single.name,
|
||
|
fragment = collection.options.fragments.single.fragment,
|
||
|
fragmentName = collection.options.fragments.single.name;
|
||
|
|
||
|
return graphql(gql`
|
||
|
query ${queryName}($documentId: String) {
|
||
|
${singleResolverName}(_id: $documentId) {
|
||
|
...${fragmentName}
|
||
|
}
|
||
|
}
|
||
|
${fragment}
|
||
|
`, {
|
||
|
options(ownProps) {
|
||
|
return {
|
||
|
variables: { documentId: ownProps.documentId },
|
||
|
pollInterval: 20000,
|
||
|
};
|
||
|
},
|
||
|
props: returnedProps => {
|
||
|
const { ownProps, data } = returnedProps;
|
||
|
return {
|
||
|
loading: data.loading,
|
||
|
document: data[singleResolverName]
|
||
|
};
|
||
|
},
|
||
|
});
|
||
|
}
|