diff --git a/.env b/.env deleted file mode 100644 index 690bd0d..0000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -# .env.development -API_URI=https://api-dev.example.com/graphql diff --git a/App.tsx b/App.tsx index 0952f25..6a47ac6 100644 --- a/App.tsx +++ b/App.tsx @@ -1,10 +1,12 @@ import React from "react"; import { Text } from "react-native"; import ClientProvider from "./graphql/client"; +import ShotsContainer from "./component/shot"; const App: React.FC = () => { return ( + test ); diff --git a/component/display-shot.tsx b/component/display-shot.tsx new file mode 100644 index 0000000..5c4d1e6 --- /dev/null +++ b/component/display-shot.tsx @@ -0,0 +1,14 @@ +import { Text, View } from "react-native"; + +function DisplayShots({ data }) { + const renderShots = (shots) => { + return shots.map((shot) => ( + + {shot.id} + + )); + }; + return renderShots(data); +} + +export default DisplayShots; diff --git a/component/shot.tsx b/component/shot.tsx new file mode 100644 index 0000000..e959534 --- /dev/null +++ b/component/shot.tsx @@ -0,0 +1,16 @@ +import DisplayShots from "./display-shot"; +import withQueryHandling from "./with-query-handling"; +import { GET_SHOTS } from "../graphql/query"; + +const ShotsContainer = withQueryHandling({ + WrappedComponent: DisplayShots, + query: GET_SHOTS, + dataKey: "getShots", + queryOptions: { + variables: { + includeCueObjectAngle: true, + }, + }, +}); + +export default ShotsContainer; diff --git a/graphql/client.tsx b/graphql/client.tsx index 496469e..a5c4a1c 100644 --- a/graphql/client.tsx +++ b/graphql/client.tsx @@ -7,6 +7,8 @@ import { from, } from "@apollo/client"; import { API_URI } from "@env"; +import { SHOT_FEATURES_FRAGMENT } from "./fragment/shot"; +import { createFragmentRegistry } from "@apollo/client/cache"; type Props = { children: ReactNode; @@ -16,10 +18,13 @@ const ClientProvider: React.FC = ({ children }) => { const httpLink = new HttpLink({ uri: API_URI, }); + const cache = new InMemoryCache({ + fragments: createFragmentRegistry(SHOT_FEATURES_FRAGMENT), + }); const client = new ApolloClient({ link: from([httpLink]), - cache: new InMemoryCache(), + cache: cache, }); return {children}; diff --git a/graphql/fragment/shot.ts b/graphql/fragment/shot.ts new file mode 100644 index 0000000..9412514 --- /dev/null +++ b/graphql/fragment/shot.ts @@ -0,0 +1,13 @@ +import { gql } from "@apollo/client"; + +export const SHOT_FEATURES_FRAGMENT = gql` + fragment ShotFeatures on ShotFeaturesGQL { + cueObjectDistance @include(if: $includeCueObjectDistance) + targetPocketDistance @include(if: $includeTargetPocketDistance) + cueObjectAngle @include(if: $includeCueObjectAngle) + cueBallSpeed @include(if: $includeCueBallSpeed) + intendedPocket @include(if: $includeIntendedPocket) + shotDirection @include(if: $includeShotDirection) + didMake @include(if: $includeDidMake) + } +`; diff --git a/graphql/query.ts b/graphql/query.ts new file mode 100644 index 0000000..b4329cf --- /dev/null +++ b/graphql/query.ts @@ -0,0 +1,25 @@ +import { gql } from "@apollo/client"; + +export const GET_SHOTS = gql` + query GetShots( + $includeCueObjectDistance: Boolean! = false + $includeTargetPocketDistance: Boolean! = false + $includeCueObjectAngle: Boolean! = false + $includeCueBallSpeed: Boolean! = false + $includeIntendedPocket: Boolean! = false + $includeShotDirection: Boolean! = false + $includeDidMake: Boolean! = false + ) { + getShots { + id + videoId + startFrame + endFrame + createdAt + updatedAt + features { + ...ShotFeatures + } + } + } +`; diff --git a/tests/App.test.tsx b/tests/App.test.tsx deleted file mode 100644 index f2d91c3..0000000 --- a/tests/App.test.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import renderer from "react-test-renderer"; - -import App from "../App"; - - -describe("", () => { - it("has 1 child", () => { - const tree = renderer.create().toJSON(); - expect(tree.children.length).toBe(1); - }); -});