├── .gitignore ├── README.md └── quickstart-with-apollo ├── ApolloDemo ├── .idea │ ├── compiler.xml │ ├── copyright │ │ └── profiles_settings.xml │ ├── gradle.xml │ ├── libraries │ │ ├── animated_vector_drawable_26_0_0_alpha1.xml │ │ ├── apollo_api_0_4_2.xml │ │ ├── apollo_runtime_0_4_2.xml │ │ ├── appcompat_v7_26_0_0_alpha1.xml │ │ ├── cache_2_0_2.xml │ │ ├── constraint_layout_1_0_2.xml │ │ ├── constraint_layout_solver_1_0_2.xml │ │ ├── design_26_0_0_alpha1.xml │ │ ├── espresso_core_2_2_2.xml │ │ ├── espresso_idling_resource_2_2_2.xml │ │ ├── exposed_instrumentation_api_publish_0_5.xml │ │ ├── hamcrest_core_1_3.xml │ │ ├── hamcrest_integration_1_3.xml │ │ ├── hamcrest_library_1_3.xml │ │ ├── javawriter_2_1_1.xml │ │ ├── javax_annotation_api_1_2.xml │ │ ├── javax_inject_1.xml │ │ ├── jsr250_api_1_0.xml │ │ ├── jsr305_1_3_9.xml │ │ ├── junit_4_12.xml │ │ ├── okhttp_3_8_1.xml │ │ ├── okio_1_13_0.xml │ │ ├── picasso_2_5_2.xml │ │ ├── recyclerview_v7_26_0_0_alpha1.xml │ │ ├── rules_0_5.xml │ │ ├── runner_0_5.xml │ │ ├── support_annotations_26_0_0_alpha1.xml │ │ ├── support_compat_26_0_0_alpha1.xml │ │ ├── support_core_ui_26_0_0_alpha1.xml │ │ ├── support_core_utils_26_0_0_alpha1.xml │ │ ├── support_fragment_26_0_0_alpha1.xml │ │ ├── support_media_compat_26_0_0_alpha1.xml │ │ ├── support_v4_26_0_0_alpha1.xml │ │ ├── support_vector_drawable_26_0_0_alpha1.xml │ │ └── transition_26_0_0_alpha1.xml │ ├── misc.xml │ ├── modules.xml │ ├── runConfigurations.xml │ ├── vcs.xml │ └── workspace.xml ├── README.md ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── nburk │ │ │ └── apollodemo │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── graphql │ │ │ └── com │ │ │ │ ├── AllPosts.graphql │ │ │ │ ├── CreatePost.graphql │ │ │ │ └── schema.json │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── nburk │ │ │ │ └── apollodemo │ │ │ │ ├── ApolloDemoApplication.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MainRecyclerViewAdapter.java │ │ │ │ └── dummy │ │ │ │ └── DummyContent.java │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ ├── dialog_create_post.xml │ │ │ └── post_item_entry.xml │ │ │ ├── menu │ │ │ └── new_post.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── nburk │ │ └── apollodemo │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | server 11 | 12 | # Built application files 13 | *.apk 14 | *.ap_ 15 | 16 | # Files for the ART/Dalvik VM 17 | *.dex 18 | 19 | # Java class files 20 | *.class 21 | 22 | # Generated files 23 | bin/ 24 | gen/ 25 | out/ 26 | 27 | # Gradle files 28 | .gradle/ 29 | build/ 30 | 31 | # Local configuration file (sdk path, etc) 32 | local.properties 33 | 34 | # Proguard folder generated by Eclipse 35 | proguard/ 36 | 37 | # Log Files 38 | *.log 39 | 40 | # Android Studio Navigation editor temp files 41 | .navigation/ 42 | 43 | # Android Studio captures folder 44 | captures/ 45 | 46 | # Intellij 47 | *.iml 48 | .idea/workspace.xml 49 | .idea/tasks.xml 50 | .idea/gradle.xml 51 | .idea/dictionaries 52 | .idea/libraries 53 | 54 | # Keystore files 55 | # Uncomment the following line if you do not want to check your keystore files in. 56 | #*.jks 57 | 58 | # External native build folder generated in Android Studio 2.2 and later 59 | .externalNativeBuild 60 | 61 | # Google Services (e.g. APIs or Firebase) 62 | google-services.json 63 | 64 | # Freeline 65 | freeline.py 66 | freeline/ 67 | freeline_project_description.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Android & GraphQL 2 | 3 | This repository contains a variety of sample projects demonstrating how to get started with Android & GraphQL in different use cases. 4 | 5 | Setup instructions for each sample project can be found in the corresponding README. 6 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/animated_vector_drawable_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/apollo_api_0_4_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/apollo_runtime_0_4_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/appcompat_v7_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/cache_2_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/constraint_layout_1_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/constraint_layout_solver_1_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/design_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/espresso_core_2_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/espresso_idling_resource_2_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/exposed_instrumentation_api_publish_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/hamcrest_integration_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/hamcrest_library_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/javawriter_2_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/javax_annotation_api_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/javax_inject_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/jsr250_api_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/jsr305_1_3_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/okhttp_3_8_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/okio_1_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/picasso_2_5_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/recyclerview_v7_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/rules_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/runner_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_annotations_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_compat_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_core_ui_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_core_utils_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_fragment_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_media_compat_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_v4_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/support_vector_drawable_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/libraries/transition_26_0_0_alpha1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 36 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/README.md: -------------------------------------------------------------------------------- 1 | # Android & Apollo Quickstart 2 | 3 | * [Apollo Client](https://github.com/apollographql/apollo-client): Fully-featured, production ready caching GraphQL client 4 | * [Graphcool](https://www.graph.cool): Flexible backend platform combining GraphQL + AWS Lambda 5 | 6 | 11 | 12 | ## Quickstart 13 | 14 | ### 1. Clone example repository 15 | 16 | ```sh 17 | git clone https://github.com/graphcool-examples/android-graphql.git 18 | cd android-graphql/quickstart-with-apollo/ApolloDemo 19 | ``` 20 | 21 | 22 | ### 2. Create Graphcool service with the [Graphcool CLI](https://docs-next.graph.cool/reference/graphcool-cli/overview-zboghez5go) 23 | 24 | ```sh 25 | # Install Graphcool Framework CLI 26 | npm install -g graphcool 27 | 28 | # Create a new service inside a directory called `server` 29 | graphcool init server 30 | ``` 31 | 32 | This created the following file structure in the current directory: 33 | 34 | ``` 35 | . 36 | └── server 37 | ├── graphcool.yml 38 | ├── types.graphql 39 | └── src 40 | ├── hello.graphql 41 | └── hello.js 42 | ``` 43 | 44 | ### 3. Define data model 45 | 46 | Next, you need to define your data model inside the newly created `types.graphql`-file. 47 | 48 | Replace the current contents in `types.graphql` with the following type definition (you can delete the predefined `User` type): 49 | 50 | ```graphql 51 | type Post @model { 52 | # Required system field 53 | id: ID! @isUnique # read-only (managed by Graphcool) 54 | 55 | # Optional system fields (remove if not needed) 56 | createdAt: DateTime! # read-only (managed by Graphcool) 57 | updatedAt: DateTime! # read-only (managed by Graphcool) 58 | 59 | description: String! 60 | imageUrl: String! 61 | } 62 | ``` 63 | 64 | ### 4. Deploy the GraphQL server 65 | 66 | You're now ready to put your Graphcool service into production! Navigate into the `server` directory and [deploy](https://docs-next.graph.cool/reference/graphcool-cli/commands-aiteerae6l#graphcool-deploy) the service: 67 | 68 | ```sh 69 | cd server 70 | graphcool deploy 71 | ``` 72 | 73 | When prompted which cluster you want to deploy to, choose any of the **Backend-as-a-Service** options (`shared-eu-west-1`, `shared-ap-northeast-1` or `shared-us-west-2`). 74 | 75 | Save the HTTP endpoint for the `Simple API` from the output, you'll need it in the next step. 76 | 77 | > **Note**: You can now test your GraphQL API inside a GraphQL playground. Simply type the `graphcool playground` command and start sending queries and mutations. 78 | 79 | 80 | ### 5. Connect the app with your GraphQL API 81 | 82 | Paste the `Simple API` endpoint into `ApolloDemoApplication.java` as the value for the `final` variable `BASE_URL` that's used to instantiate the `ApolloClient`: 83 | 84 | ```js 85 | // replace `__SIMPLE_API_ENDPOINT__` with the endpoint from the previous step 86 | private static final String BASE_URL = "__SIMPLE_API_ENDPOINT__"; 87 | ``` 88 | 89 | ### 6. Install `apollo-codegen` 90 | 91 | To use the Apollo Android Client, you need to install [`apollo-codegen`](https://github.com/apollographql/apollo-codegen), a command line tool that will generate Java classes from your GraphQL queries & mutations at build-time. 92 | 93 | ```sh 94 | npm install -g apollo-codegen 95 | ``` 96 | 97 | You can find more info the installation process in the [Apollo docs](http://dev.apollodata.com/android/installation.html). 98 | 99 | ### 7. Run locally 100 | 101 | Start the app in Android Studio 🚀 102 | 103 | ## Next steps 104 | 105 | * [Documentation](https://docs-next.graph.cool) 106 | * [Advanced GraphQL features](https://www.graph.cool/docs/tutorials/advanced-features-eath7duf7d/) 107 | * [Authentication & Permissions](https://www.graph.cool/docs/reference/authorization/overview-iegoo0heez/) 108 | * [Implementing business logic with serverless functions](https://www.graph.cool/docs/reference/functions/overview-boo6uteemo/) 109 | 110 | 111 | ## Help & Community [![Slack Status](https://slack.graph.cool/badge.svg)](https://slack.graph.cool) 112 | 113 | Join our [Slack community](http://slack.graph.cool/) if you run into issues or have questions. We love talking to you! 114 | 115 | ![](http://i.imgur.com/5RHR6Ku.png) 116 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'com.apollographql.android' 3 | 4 | android { 5 | compileSdkVersion 26 6 | buildToolsVersion "26.0.2" 7 | defaultConfig { 8 | applicationId "com.example.nburk.apollodemo" 9 | minSdkVersion 19 10 | targetSdkVersion 26 11 | versionCode 1 12 | versionName "1.0" 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | } 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | } 22 | 23 | android { 24 | configurations.all { 25 | resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' 26 | } 27 | sourceSets { 28 | main.java.srcDirs += 'build/generated/source/apollo' 29 | } 30 | } 31 | 32 | dependencies { 33 | compile fileTree(dir: 'libs', include: ['*.jar']) 34 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 35 | exclude group: 'com.android.support', module: 'support-annotations' 36 | }) 37 | compile 'com.android.support:appcompat-v7:26.+' 38 | compile 'com.android.support.constraint:constraint-layout:1.0.2' 39 | compile 'com.android.support:support-v4:26.+' 40 | compile 'com.android.support:recyclerview-v7:26.+' 41 | compile 'com.android.support:design:26.+' 42 | compile 'com.squareup.picasso:picasso:2.5.2' 43 | testCompile 'junit:junit:4.12' 44 | } 45 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/nburk/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/androidTest/java/com/example/nburk/apollodemo/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.nburk.apollodemo; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.example.nburk.apollodemo", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/graphql/com/AllPosts.graphql: -------------------------------------------------------------------------------- 1 | query AllPosts { 2 | allPosts { 3 | id 4 | description 5 | imageUrl 6 | } 7 | } -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/graphql/com/CreatePost.graphql: -------------------------------------------------------------------------------- 1 | mutation CreatePost($description: String!, $imageUrl: String!) { 2 | createPost(description: $description, imageUrl: $imageUrl) { 3 | id 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/graphql/com/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "__schema": { 3 | "directives": [ 4 | { 5 | "name": "include", 6 | "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", 7 | "locations": [ 8 | "FIELD", 9 | "FRAGMENT_SPREAD", 10 | "INLINE_FRAGMENT" 11 | ], 12 | "args": [ 13 | { 14 | "name": "if", 15 | "description": "Included when true.", 16 | "type": { 17 | "kind": "NON_NULL", 18 | "name": null, 19 | "ofType": { 20 | "kind": "SCALAR", 21 | "name": "Boolean", 22 | "ofType": null 23 | } 24 | }, 25 | "defaultValue": null 26 | } 27 | ] 28 | }, 29 | { 30 | "name": "skip", 31 | "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", 32 | "locations": [ 33 | "FIELD", 34 | "FRAGMENT_SPREAD", 35 | "INLINE_FRAGMENT" 36 | ], 37 | "args": [ 38 | { 39 | "name": "if", 40 | "description": "Included when true.", 41 | "type": { 42 | "kind": "NON_NULL", 43 | "name": null, 44 | "ofType": { 45 | "kind": "SCALAR", 46 | "name": "Boolean", 47 | "ofType": null 48 | } 49 | }, 50 | "defaultValue": null 51 | } 52 | ] 53 | }, 54 | { 55 | "name": "deprecated", 56 | "description": "Marks an element of a GraphQL schema as no longer supported.", 57 | "locations": [ 58 | "ENUM_VALUE", 59 | "FIELD_DEFINITION" 60 | ], 61 | "args": [ 62 | { 63 | "name": "reason", 64 | "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).", 65 | "type": { 66 | "kind": "SCALAR", 67 | "name": "String", 68 | "ofType": null 69 | }, 70 | "defaultValue": "\"No longer supported\"" 71 | } 72 | ] 73 | } 74 | ], 75 | "mutationType": { 76 | "name": "Mutation" 77 | }, 78 | "subscriptionType": { 79 | "name": "Subscription" 80 | }, 81 | "queryType": { 82 | "name": "Query" 83 | }, 84 | "types": [ 85 | { 86 | "inputFields": [ 87 | { 88 | "name": "imageUrl", 89 | "description": "", 90 | "type": { 91 | "kind": "NON_NULL", 92 | "name": null, 93 | "ofType": { 94 | "kind": "SCALAR", 95 | "name": "String", 96 | "ofType": null 97 | } 98 | }, 99 | "defaultValue": null 100 | }, 101 | { 102 | "name": "description", 103 | "description": "", 104 | "type": { 105 | "kind": "NON_NULL", 106 | "name": null, 107 | "ofType": { 108 | "kind": "SCALAR", 109 | "name": "String", 110 | "ofType": null 111 | } 112 | }, 113 | "defaultValue": null 114 | } 115 | ], 116 | "name": "CreatePost", 117 | "description": null, 118 | "interfaces": null, 119 | "enumValues": null, 120 | "fields": null, 121 | "kind": "INPUT_OBJECT", 122 | "possibleTypes": null 123 | }, 124 | { 125 | "inputFields": null, 126 | "name": "Mutation", 127 | "description": null, 128 | "interfaces": [], 129 | "enumValues": null, 130 | "fields": [ 131 | { 132 | "name": "createPost", 133 | "description": null, 134 | "isDeprecated": false, 135 | "deprecationReason": null, 136 | "args": [ 137 | { 138 | "name": "imageUrl", 139 | "description": null, 140 | "type": { 141 | "kind": "NON_NULL", 142 | "name": null, 143 | "ofType": { 144 | "kind": "SCALAR", 145 | "name": "String", 146 | "ofType": null 147 | } 148 | }, 149 | "defaultValue": null 150 | }, 151 | { 152 | "name": "description", 153 | "description": null, 154 | "type": { 155 | "kind": "NON_NULL", 156 | "name": null, 157 | "ofType": { 158 | "kind": "SCALAR", 159 | "name": "String", 160 | "ofType": null 161 | } 162 | }, 163 | "defaultValue": null 164 | } 165 | ], 166 | "type": { 167 | "kind": "OBJECT", 168 | "name": "Post", 169 | "ofType": null 170 | } 171 | }, 172 | { 173 | "name": "updatePost", 174 | "description": null, 175 | "isDeprecated": false, 176 | "deprecationReason": null, 177 | "args": [ 178 | { 179 | "name": "id", 180 | "description": null, 181 | "type": { 182 | "kind": "NON_NULL", 183 | "name": null, 184 | "ofType": { 185 | "kind": "SCALAR", 186 | "name": "ID", 187 | "ofType": null 188 | } 189 | }, 190 | "defaultValue": null 191 | }, 192 | { 193 | "name": "imageUrl", 194 | "description": null, 195 | "type": { 196 | "kind": "SCALAR", 197 | "name": "String", 198 | "ofType": null 199 | }, 200 | "defaultValue": null 201 | }, 202 | { 203 | "name": "description", 204 | "description": null, 205 | "type": { 206 | "kind": "SCALAR", 207 | "name": "String", 208 | "ofType": null 209 | }, 210 | "defaultValue": null 211 | } 212 | ], 213 | "type": { 214 | "kind": "OBJECT", 215 | "name": "Post", 216 | "ofType": null 217 | } 218 | }, 219 | { 220 | "name": "updateOrCreatePost", 221 | "description": null, 222 | "isDeprecated": false, 223 | "deprecationReason": null, 224 | "args": [ 225 | { 226 | "name": "update", 227 | "description": null, 228 | "type": { 229 | "kind": "NON_NULL", 230 | "name": null, 231 | "ofType": { 232 | "kind": "INPUT_OBJECT", 233 | "name": "UpdatePost", 234 | "ofType": null 235 | } 236 | }, 237 | "defaultValue": null 238 | }, 239 | { 240 | "name": "create", 241 | "description": null, 242 | "type": { 243 | "kind": "NON_NULL", 244 | "name": null, 245 | "ofType": { 246 | "kind": "INPUT_OBJECT", 247 | "name": "CreatePost", 248 | "ofType": null 249 | } 250 | }, 251 | "defaultValue": null 252 | } 253 | ], 254 | "type": { 255 | "kind": "OBJECT", 256 | "name": "Post", 257 | "ofType": null 258 | } 259 | }, 260 | { 261 | "name": "deletePost", 262 | "description": null, 263 | "isDeprecated": false, 264 | "deprecationReason": null, 265 | "args": [ 266 | { 267 | "name": "id", 268 | "description": null, 269 | "type": { 270 | "kind": "NON_NULL", 271 | "name": null, 272 | "ofType": { 273 | "kind": "SCALAR", 274 | "name": "ID", 275 | "ofType": null 276 | } 277 | }, 278 | "defaultValue": null 279 | } 280 | ], 281 | "type": { 282 | "kind": "OBJECT", 283 | "name": "Post", 284 | "ofType": null 285 | } 286 | } 287 | ], 288 | "kind": "OBJECT", 289 | "possibleTypes": null 290 | }, 291 | { 292 | "inputFields": null, 293 | "name": "PostPreviousValues", 294 | "description": null, 295 | "interfaces": [], 296 | "enumValues": null, 297 | "fields": [ 298 | { 299 | "name": "id", 300 | "description": null, 301 | "isDeprecated": false, 302 | "deprecationReason": null, 303 | "args": [], 304 | "type": { 305 | "kind": "NON_NULL", 306 | "name": null, 307 | "ofType": { 308 | "kind": "SCALAR", 309 | "name": "ID", 310 | "ofType": null 311 | } 312 | } 313 | }, 314 | { 315 | "name": "imageUrl", 316 | "description": null, 317 | "isDeprecated": false, 318 | "deprecationReason": null, 319 | "args": [], 320 | "type": { 321 | "kind": "NON_NULL", 322 | "name": null, 323 | "ofType": { 324 | "kind": "SCALAR", 325 | "name": "String", 326 | "ofType": null 327 | } 328 | } 329 | }, 330 | { 331 | "name": "description", 332 | "description": null, 333 | "isDeprecated": false, 334 | "deprecationReason": null, 335 | "args": [], 336 | "type": { 337 | "kind": "NON_NULL", 338 | "name": null, 339 | "ofType": { 340 | "kind": "SCALAR", 341 | "name": "String", 342 | "ofType": null 343 | } 344 | } 345 | } 346 | ], 347 | "kind": "OBJECT", 348 | "possibleTypes": null 349 | }, 350 | { 351 | "inputFields": [ 352 | { 353 | "name": "AND", 354 | "description": "Logical AND on all given filters.", 355 | "type": { 356 | "kind": "LIST", 357 | "name": null, 358 | "ofType": { 359 | "kind": "NON_NULL", 360 | "name": null, 361 | "ofType": { 362 | "kind": "INPUT_OBJECT", 363 | "name": "PostSubscriptionFilter", 364 | "ofType": null 365 | } 366 | } 367 | }, 368 | "defaultValue": null 369 | }, 370 | { 371 | "name": "OR", 372 | "description": "Logical OR on all given filters.", 373 | "type": { 374 | "kind": "LIST", 375 | "name": null, 376 | "ofType": { 377 | "kind": "NON_NULL", 378 | "name": null, 379 | "ofType": { 380 | "kind": "INPUT_OBJECT", 381 | "name": "PostSubscriptionFilter", 382 | "ofType": null 383 | } 384 | } 385 | }, 386 | "defaultValue": null 387 | }, 388 | { 389 | "name": "mutation_in", 390 | "description": "The subscription event gets dispatched when it's listed in mutation_in", 391 | "type": { 392 | "kind": "LIST", 393 | "name": null, 394 | "ofType": { 395 | "kind": "NON_NULL", 396 | "name": null, 397 | "ofType": { 398 | "kind": "ENUM", 399 | "name": "_ModelMutationType", 400 | "ofType": null 401 | } 402 | } 403 | }, 404 | "defaultValue": null 405 | }, 406 | { 407 | "name": "updatedFields_contains", 408 | "description": "The subscription event gets only dispatched when one of the updated fields names is included in this list", 409 | "type": { 410 | "kind": "SCALAR", 411 | "name": "String", 412 | "ofType": null 413 | }, 414 | "defaultValue": null 415 | }, 416 | { 417 | "name": "updatedFields_contains_every", 418 | "description": "The subscription event gets only dispatched when all of the field names included in this list have been updated", 419 | "type": { 420 | "kind": "LIST", 421 | "name": null, 422 | "ofType": { 423 | "kind": "NON_NULL", 424 | "name": null, 425 | "ofType": { 426 | "kind": "SCALAR", 427 | "name": "String", 428 | "ofType": null 429 | } 430 | } 431 | }, 432 | "defaultValue": null 433 | }, 434 | { 435 | "name": "updatedFields_contains_some", 436 | "description": "The subscription event gets only dispatched when some of the field names included in this list have been updated", 437 | "type": { 438 | "kind": "LIST", 439 | "name": null, 440 | "ofType": { 441 | "kind": "NON_NULL", 442 | "name": null, 443 | "ofType": { 444 | "kind": "SCALAR", 445 | "name": "String", 446 | "ofType": null 447 | } 448 | } 449 | }, 450 | "defaultValue": null 451 | }, 452 | { 453 | "name": "node", 454 | "description": null, 455 | "type": { 456 | "kind": "INPUT_OBJECT", 457 | "name": "PostSubscriptionFilterNode", 458 | "ofType": null 459 | }, 460 | "defaultValue": null 461 | } 462 | ], 463 | "name": "PostSubscriptionFilter", 464 | "description": null, 465 | "interfaces": null, 466 | "enumValues": null, 467 | "fields": null, 468 | "kind": "INPUT_OBJECT", 469 | "possibleTypes": null 470 | }, 471 | { 472 | "inputFields": [ 473 | { 474 | "name": "id", 475 | "description": "", 476 | "type": { 477 | "kind": "SCALAR", 478 | "name": "ID", 479 | "ofType": null 480 | }, 481 | "defaultValue": null 482 | }, 483 | { 484 | "name": "id_not", 485 | "description": "All values that are not equal to given value.", 486 | "type": { 487 | "kind": "SCALAR", 488 | "name": "ID", 489 | "ofType": null 490 | }, 491 | "defaultValue": null 492 | }, 493 | { 494 | "name": "id_in", 495 | "description": "All values that are contained in given list.", 496 | "type": { 497 | "kind": "LIST", 498 | "name": null, 499 | "ofType": { 500 | "kind": "NON_NULL", 501 | "name": null, 502 | "ofType": { 503 | "kind": "SCALAR", 504 | "name": "ID", 505 | "ofType": null 506 | } 507 | } 508 | }, 509 | "defaultValue": null 510 | }, 511 | { 512 | "name": "id_not_in", 513 | "description": "All values that are not contained in given list.", 514 | "type": { 515 | "kind": "LIST", 516 | "name": null, 517 | "ofType": { 518 | "kind": "NON_NULL", 519 | "name": null, 520 | "ofType": { 521 | "kind": "SCALAR", 522 | "name": "ID", 523 | "ofType": null 524 | } 525 | } 526 | }, 527 | "defaultValue": null 528 | }, 529 | { 530 | "name": "id_lt", 531 | "description": "All values less than the given value.", 532 | "type": { 533 | "kind": "SCALAR", 534 | "name": "ID", 535 | "ofType": null 536 | }, 537 | "defaultValue": null 538 | }, 539 | { 540 | "name": "id_lte", 541 | "description": "All values less than or equal the given value.", 542 | "type": { 543 | "kind": "SCALAR", 544 | "name": "ID", 545 | "ofType": null 546 | }, 547 | "defaultValue": null 548 | }, 549 | { 550 | "name": "id_gt", 551 | "description": "All values greater than the given value.", 552 | "type": { 553 | "kind": "SCALAR", 554 | "name": "ID", 555 | "ofType": null 556 | }, 557 | "defaultValue": null 558 | }, 559 | { 560 | "name": "id_gte", 561 | "description": "All values greater than or equal the given value.", 562 | "type": { 563 | "kind": "SCALAR", 564 | "name": "ID", 565 | "ofType": null 566 | }, 567 | "defaultValue": null 568 | }, 569 | { 570 | "name": "id_contains", 571 | "description": "All values containing the given string.", 572 | "type": { 573 | "kind": "SCALAR", 574 | "name": "ID", 575 | "ofType": null 576 | }, 577 | "defaultValue": null 578 | }, 579 | { 580 | "name": "id_not_contains", 581 | "description": "All values not containing the given string.", 582 | "type": { 583 | "kind": "SCALAR", 584 | "name": "ID", 585 | "ofType": null 586 | }, 587 | "defaultValue": null 588 | }, 589 | { 590 | "name": "id_starts_with", 591 | "description": "All values starting with the given string.", 592 | "type": { 593 | "kind": "SCALAR", 594 | "name": "ID", 595 | "ofType": null 596 | }, 597 | "defaultValue": null 598 | }, 599 | { 600 | "name": "id_not_starts_with", 601 | "description": "All values not starting with the given string.", 602 | "type": { 603 | "kind": "SCALAR", 604 | "name": "ID", 605 | "ofType": null 606 | }, 607 | "defaultValue": null 608 | }, 609 | { 610 | "name": "id_ends_with", 611 | "description": "All values ending with the given string.", 612 | "type": { 613 | "kind": "SCALAR", 614 | "name": "ID", 615 | "ofType": null 616 | }, 617 | "defaultValue": null 618 | }, 619 | { 620 | "name": "id_not_ends_with", 621 | "description": "All values not ending with the given string.", 622 | "type": { 623 | "kind": "SCALAR", 624 | "name": "ID", 625 | "ofType": null 626 | }, 627 | "defaultValue": null 628 | }, 629 | { 630 | "name": "imageUrl", 631 | "description": "", 632 | "type": { 633 | "kind": "SCALAR", 634 | "name": "String", 635 | "ofType": null 636 | }, 637 | "defaultValue": null 638 | }, 639 | { 640 | "name": "imageUrl_not", 641 | "description": "All values that are not equal to given value.", 642 | "type": { 643 | "kind": "SCALAR", 644 | "name": "String", 645 | "ofType": null 646 | }, 647 | "defaultValue": null 648 | }, 649 | { 650 | "name": "imageUrl_in", 651 | "description": "All values that are contained in given list.", 652 | "type": { 653 | "kind": "LIST", 654 | "name": null, 655 | "ofType": { 656 | "kind": "NON_NULL", 657 | "name": null, 658 | "ofType": { 659 | "kind": "SCALAR", 660 | "name": "String", 661 | "ofType": null 662 | } 663 | } 664 | }, 665 | "defaultValue": null 666 | }, 667 | { 668 | "name": "imageUrl_not_in", 669 | "description": "All values that are not contained in given list.", 670 | "type": { 671 | "kind": "LIST", 672 | "name": null, 673 | "ofType": { 674 | "kind": "NON_NULL", 675 | "name": null, 676 | "ofType": { 677 | "kind": "SCALAR", 678 | "name": "String", 679 | "ofType": null 680 | } 681 | } 682 | }, 683 | "defaultValue": null 684 | }, 685 | { 686 | "name": "imageUrl_lt", 687 | "description": "All values less than the given value.", 688 | "type": { 689 | "kind": "SCALAR", 690 | "name": "String", 691 | "ofType": null 692 | }, 693 | "defaultValue": null 694 | }, 695 | { 696 | "name": "imageUrl_lte", 697 | "description": "All values less than or equal the given value.", 698 | "type": { 699 | "kind": "SCALAR", 700 | "name": "String", 701 | "ofType": null 702 | }, 703 | "defaultValue": null 704 | }, 705 | { 706 | "name": "imageUrl_gt", 707 | "description": "All values greater than the given value.", 708 | "type": { 709 | "kind": "SCALAR", 710 | "name": "String", 711 | "ofType": null 712 | }, 713 | "defaultValue": null 714 | }, 715 | { 716 | "name": "imageUrl_gte", 717 | "description": "All values greater than or equal the given value.", 718 | "type": { 719 | "kind": "SCALAR", 720 | "name": "String", 721 | "ofType": null 722 | }, 723 | "defaultValue": null 724 | }, 725 | { 726 | "name": "imageUrl_contains", 727 | "description": "All values containing the given string.", 728 | "type": { 729 | "kind": "SCALAR", 730 | "name": "String", 731 | "ofType": null 732 | }, 733 | "defaultValue": null 734 | }, 735 | { 736 | "name": "imageUrl_not_contains", 737 | "description": "All values not containing the given string.", 738 | "type": { 739 | "kind": "SCALAR", 740 | "name": "String", 741 | "ofType": null 742 | }, 743 | "defaultValue": null 744 | }, 745 | { 746 | "name": "imageUrl_starts_with", 747 | "description": "All values starting with the given string.", 748 | "type": { 749 | "kind": "SCALAR", 750 | "name": "String", 751 | "ofType": null 752 | }, 753 | "defaultValue": null 754 | }, 755 | { 756 | "name": "imageUrl_not_starts_with", 757 | "description": "All values not starting with the given string.", 758 | "type": { 759 | "kind": "SCALAR", 760 | "name": "String", 761 | "ofType": null 762 | }, 763 | "defaultValue": null 764 | }, 765 | { 766 | "name": "imageUrl_ends_with", 767 | "description": "All values ending with the given string.", 768 | "type": { 769 | "kind": "SCALAR", 770 | "name": "String", 771 | "ofType": null 772 | }, 773 | "defaultValue": null 774 | }, 775 | { 776 | "name": "imageUrl_not_ends_with", 777 | "description": "All values not ending with the given string.", 778 | "type": { 779 | "kind": "SCALAR", 780 | "name": "String", 781 | "ofType": null 782 | }, 783 | "defaultValue": null 784 | }, 785 | { 786 | "name": "description", 787 | "description": "", 788 | "type": { 789 | "kind": "SCALAR", 790 | "name": "String", 791 | "ofType": null 792 | }, 793 | "defaultValue": null 794 | }, 795 | { 796 | "name": "description_not", 797 | "description": "All values that are not equal to given value.", 798 | "type": { 799 | "kind": "SCALAR", 800 | "name": "String", 801 | "ofType": null 802 | }, 803 | "defaultValue": null 804 | }, 805 | { 806 | "name": "description_in", 807 | "description": "All values that are contained in given list.", 808 | "type": { 809 | "kind": "LIST", 810 | "name": null, 811 | "ofType": { 812 | "kind": "NON_NULL", 813 | "name": null, 814 | "ofType": { 815 | "kind": "SCALAR", 816 | "name": "String", 817 | "ofType": null 818 | } 819 | } 820 | }, 821 | "defaultValue": null 822 | }, 823 | { 824 | "name": "description_not_in", 825 | "description": "All values that are not contained in given list.", 826 | "type": { 827 | "kind": "LIST", 828 | "name": null, 829 | "ofType": { 830 | "kind": "NON_NULL", 831 | "name": null, 832 | "ofType": { 833 | "kind": "SCALAR", 834 | "name": "String", 835 | "ofType": null 836 | } 837 | } 838 | }, 839 | "defaultValue": null 840 | }, 841 | { 842 | "name": "description_lt", 843 | "description": "All values less than the given value.", 844 | "type": { 845 | "kind": "SCALAR", 846 | "name": "String", 847 | "ofType": null 848 | }, 849 | "defaultValue": null 850 | }, 851 | { 852 | "name": "description_lte", 853 | "description": "All values less than or equal the given value.", 854 | "type": { 855 | "kind": "SCALAR", 856 | "name": "String", 857 | "ofType": null 858 | }, 859 | "defaultValue": null 860 | }, 861 | { 862 | "name": "description_gt", 863 | "description": "All values greater than the given value.", 864 | "type": { 865 | "kind": "SCALAR", 866 | "name": "String", 867 | "ofType": null 868 | }, 869 | "defaultValue": null 870 | }, 871 | { 872 | "name": "description_gte", 873 | "description": "All values greater than or equal the given value.", 874 | "type": { 875 | "kind": "SCALAR", 876 | "name": "String", 877 | "ofType": null 878 | }, 879 | "defaultValue": null 880 | }, 881 | { 882 | "name": "description_contains", 883 | "description": "All values containing the given string.", 884 | "type": { 885 | "kind": "SCALAR", 886 | "name": "String", 887 | "ofType": null 888 | }, 889 | "defaultValue": null 890 | }, 891 | { 892 | "name": "description_not_contains", 893 | "description": "All values not containing the given string.", 894 | "type": { 895 | "kind": "SCALAR", 896 | "name": "String", 897 | "ofType": null 898 | }, 899 | "defaultValue": null 900 | }, 901 | { 902 | "name": "description_starts_with", 903 | "description": "All values starting with the given string.", 904 | "type": { 905 | "kind": "SCALAR", 906 | "name": "String", 907 | "ofType": null 908 | }, 909 | "defaultValue": null 910 | }, 911 | { 912 | "name": "description_not_starts_with", 913 | "description": "All values not starting with the given string.", 914 | "type": { 915 | "kind": "SCALAR", 916 | "name": "String", 917 | "ofType": null 918 | }, 919 | "defaultValue": null 920 | }, 921 | { 922 | "name": "description_ends_with", 923 | "description": "All values ending with the given string.", 924 | "type": { 925 | "kind": "SCALAR", 926 | "name": "String", 927 | "ofType": null 928 | }, 929 | "defaultValue": null 930 | }, 931 | { 932 | "name": "description_not_ends_with", 933 | "description": "All values not ending with the given string.", 934 | "type": { 935 | "kind": "SCALAR", 936 | "name": "String", 937 | "ofType": null 938 | }, 939 | "defaultValue": null 940 | } 941 | ], 942 | "name": "PostSubscriptionFilterNode", 943 | "description": null, 944 | "interfaces": null, 945 | "enumValues": null, 946 | "fields": null, 947 | "kind": "INPUT_OBJECT", 948 | "possibleTypes": null 949 | }, 950 | { 951 | "inputFields": null, 952 | "name": "PostSubscriptionPayload", 953 | "description": null, 954 | "interfaces": [], 955 | "enumValues": null, 956 | "fields": [ 957 | { 958 | "name": "mutation", 959 | "description": null, 960 | "isDeprecated": false, 961 | "deprecationReason": null, 962 | "args": [], 963 | "type": { 964 | "kind": "NON_NULL", 965 | "name": null, 966 | "ofType": { 967 | "kind": "ENUM", 968 | "name": "_ModelMutationType", 969 | "ofType": null 970 | } 971 | } 972 | }, 973 | { 974 | "name": "node", 975 | "description": null, 976 | "isDeprecated": false, 977 | "deprecationReason": null, 978 | "args": [], 979 | "type": { 980 | "kind": "OBJECT", 981 | "name": "Post", 982 | "ofType": null 983 | } 984 | }, 985 | { 986 | "name": "updatedFields", 987 | "description": null, 988 | "isDeprecated": false, 989 | "deprecationReason": null, 990 | "args": [], 991 | "type": { 992 | "kind": "LIST", 993 | "name": null, 994 | "ofType": { 995 | "kind": "NON_NULL", 996 | "name": null, 997 | "ofType": { 998 | "kind": "SCALAR", 999 | "name": "String", 1000 | "ofType": null 1001 | } 1002 | } 1003 | } 1004 | }, 1005 | { 1006 | "name": "previousValues", 1007 | "description": null, 1008 | "isDeprecated": false, 1009 | "deprecationReason": null, 1010 | "args": [], 1011 | "type": { 1012 | "kind": "OBJECT", 1013 | "name": "PostPreviousValues", 1014 | "ofType": null 1015 | } 1016 | } 1017 | ], 1018 | "kind": "OBJECT", 1019 | "possibleTypes": null 1020 | }, 1021 | { 1022 | "inputFields": null, 1023 | "name": "Subscription", 1024 | "description": null, 1025 | "interfaces": [], 1026 | "enumValues": null, 1027 | "fields": [ 1028 | { 1029 | "name": "Post", 1030 | "description": null, 1031 | "isDeprecated": false, 1032 | "deprecationReason": null, 1033 | "args": [ 1034 | { 1035 | "name": "filter", 1036 | "description": "", 1037 | "type": { 1038 | "kind": "INPUT_OBJECT", 1039 | "name": "PostSubscriptionFilter", 1040 | "ofType": null 1041 | }, 1042 | "defaultValue": null 1043 | } 1044 | ], 1045 | "type": { 1046 | "kind": "OBJECT", 1047 | "name": "PostSubscriptionPayload", 1048 | "ofType": null 1049 | } 1050 | } 1051 | ], 1052 | "kind": "OBJECT", 1053 | "possibleTypes": null 1054 | }, 1055 | { 1056 | "inputFields": [ 1057 | { 1058 | "name": "id", 1059 | "description": "", 1060 | "type": { 1061 | "kind": "NON_NULL", 1062 | "name": null, 1063 | "ofType": { 1064 | "kind": "SCALAR", 1065 | "name": "ID", 1066 | "ofType": null 1067 | } 1068 | }, 1069 | "defaultValue": null 1070 | }, 1071 | { 1072 | "name": "imageUrl", 1073 | "description": "", 1074 | "type": { 1075 | "kind": "SCALAR", 1076 | "name": "String", 1077 | "ofType": null 1078 | }, 1079 | "defaultValue": null 1080 | }, 1081 | { 1082 | "name": "description", 1083 | "description": "", 1084 | "type": { 1085 | "kind": "SCALAR", 1086 | "name": "String", 1087 | "ofType": null 1088 | }, 1089 | "defaultValue": null 1090 | } 1091 | ], 1092 | "name": "UpdatePost", 1093 | "description": null, 1094 | "interfaces": null, 1095 | "enumValues": null, 1096 | "fields": null, 1097 | "kind": "INPUT_OBJECT", 1098 | "possibleTypes": null 1099 | }, 1100 | { 1101 | "inputFields": null, 1102 | "name": "_ModelMutationType", 1103 | "description": null, 1104 | "interfaces": null, 1105 | "enumValues": [ 1106 | { 1107 | "name": "CREATED", 1108 | "description": null, 1109 | "isDeprecated": false, 1110 | "deprecationReason": null 1111 | }, 1112 | { 1113 | "name": "UPDATED", 1114 | "description": null, 1115 | "isDeprecated": false, 1116 | "deprecationReason": null 1117 | }, 1118 | { 1119 | "name": "DELETED", 1120 | "description": null, 1121 | "isDeprecated": false, 1122 | "deprecationReason": null 1123 | } 1124 | ], 1125 | "fields": null, 1126 | "kind": "ENUM", 1127 | "possibleTypes": null 1128 | }, 1129 | { 1130 | "inputFields": null, 1131 | "name": "HelloPayload", 1132 | "description": "HelloPayload", 1133 | "interfaces": [], 1134 | "enumValues": null, 1135 | "fields": [ 1136 | { 1137 | "name": "message", 1138 | "description": null, 1139 | "isDeprecated": false, 1140 | "deprecationReason": null, 1141 | "args": [], 1142 | "type": { 1143 | "kind": "NON_NULL", 1144 | "name": null, 1145 | "ofType": { 1146 | "kind": "SCALAR", 1147 | "name": "String", 1148 | "ofType": null 1149 | } 1150 | } 1151 | } 1152 | ], 1153 | "kind": "OBJECT", 1154 | "possibleTypes": null 1155 | }, 1156 | { 1157 | "inputFields": null, 1158 | "name": "Node", 1159 | "description": "An object with an ID", 1160 | "interfaces": null, 1161 | "enumValues": null, 1162 | "fields": [ 1163 | { 1164 | "name": "id", 1165 | "description": "The id of the object.", 1166 | "isDeprecated": false, 1167 | "deprecationReason": null, 1168 | "args": [], 1169 | "type": { 1170 | "kind": "NON_NULL", 1171 | "name": null, 1172 | "ofType": { 1173 | "kind": "SCALAR", 1174 | "name": "ID", 1175 | "ofType": null 1176 | } 1177 | } 1178 | } 1179 | ], 1180 | "kind": "INTERFACE", 1181 | "possibleTypes": [ 1182 | { 1183 | "kind": "OBJECT", 1184 | "name": "Post", 1185 | "ofType": null 1186 | } 1187 | ] 1188 | }, 1189 | { 1190 | "inputFields": null, 1191 | "name": "Post", 1192 | "description": null, 1193 | "interfaces": [ 1194 | { 1195 | "kind": "INTERFACE", 1196 | "name": "Node", 1197 | "ofType": null 1198 | } 1199 | ], 1200 | "enumValues": null, 1201 | "fields": [ 1202 | { 1203 | "name": "id", 1204 | "description": null, 1205 | "isDeprecated": false, 1206 | "deprecationReason": null, 1207 | "args": [], 1208 | "type": { 1209 | "kind": "NON_NULL", 1210 | "name": null, 1211 | "ofType": { 1212 | "kind": "SCALAR", 1213 | "name": "ID", 1214 | "ofType": null 1215 | } 1216 | } 1217 | }, 1218 | { 1219 | "name": "imageUrl", 1220 | "description": null, 1221 | "isDeprecated": false, 1222 | "deprecationReason": null, 1223 | "args": [], 1224 | "type": { 1225 | "kind": "NON_NULL", 1226 | "name": null, 1227 | "ofType": { 1228 | "kind": "SCALAR", 1229 | "name": "String", 1230 | "ofType": null 1231 | } 1232 | } 1233 | }, 1234 | { 1235 | "name": "description", 1236 | "description": null, 1237 | "isDeprecated": false, 1238 | "deprecationReason": null, 1239 | "args": [], 1240 | "type": { 1241 | "kind": "NON_NULL", 1242 | "name": null, 1243 | "ofType": { 1244 | "kind": "SCALAR", 1245 | "name": "String", 1246 | "ofType": null 1247 | } 1248 | } 1249 | } 1250 | ], 1251 | "kind": "OBJECT", 1252 | "possibleTypes": null 1253 | }, 1254 | { 1255 | "inputFields": [ 1256 | { 1257 | "name": "AND", 1258 | "description": "Logical AND on all given filters.", 1259 | "type": { 1260 | "kind": "LIST", 1261 | "name": null, 1262 | "ofType": { 1263 | "kind": "NON_NULL", 1264 | "name": null, 1265 | "ofType": { 1266 | "kind": "INPUT_OBJECT", 1267 | "name": "PostFilter", 1268 | "ofType": null 1269 | } 1270 | } 1271 | }, 1272 | "defaultValue": null 1273 | }, 1274 | { 1275 | "name": "OR", 1276 | "description": "Logical OR on all given filters.", 1277 | "type": { 1278 | "kind": "LIST", 1279 | "name": null, 1280 | "ofType": { 1281 | "kind": "NON_NULL", 1282 | "name": null, 1283 | "ofType": { 1284 | "kind": "INPUT_OBJECT", 1285 | "name": "PostFilter", 1286 | "ofType": null 1287 | } 1288 | } 1289 | }, 1290 | "defaultValue": null 1291 | }, 1292 | { 1293 | "name": "id", 1294 | "description": "", 1295 | "type": { 1296 | "kind": "SCALAR", 1297 | "name": "ID", 1298 | "ofType": null 1299 | }, 1300 | "defaultValue": null 1301 | }, 1302 | { 1303 | "name": "id_not", 1304 | "description": "All values that are not equal to given value.", 1305 | "type": { 1306 | "kind": "SCALAR", 1307 | "name": "ID", 1308 | "ofType": null 1309 | }, 1310 | "defaultValue": null 1311 | }, 1312 | { 1313 | "name": "id_in", 1314 | "description": "All values that are contained in given list.", 1315 | "type": { 1316 | "kind": "LIST", 1317 | "name": null, 1318 | "ofType": { 1319 | "kind": "NON_NULL", 1320 | "name": null, 1321 | "ofType": { 1322 | "kind": "SCALAR", 1323 | "name": "ID", 1324 | "ofType": null 1325 | } 1326 | } 1327 | }, 1328 | "defaultValue": null 1329 | }, 1330 | { 1331 | "name": "id_not_in", 1332 | "description": "All values that are not contained in given list.", 1333 | "type": { 1334 | "kind": "LIST", 1335 | "name": null, 1336 | "ofType": { 1337 | "kind": "NON_NULL", 1338 | "name": null, 1339 | "ofType": { 1340 | "kind": "SCALAR", 1341 | "name": "ID", 1342 | "ofType": null 1343 | } 1344 | } 1345 | }, 1346 | "defaultValue": null 1347 | }, 1348 | { 1349 | "name": "id_lt", 1350 | "description": "All values less than the given value.", 1351 | "type": { 1352 | "kind": "SCALAR", 1353 | "name": "ID", 1354 | "ofType": null 1355 | }, 1356 | "defaultValue": null 1357 | }, 1358 | { 1359 | "name": "id_lte", 1360 | "description": "All values less than or equal the given value.", 1361 | "type": { 1362 | "kind": "SCALAR", 1363 | "name": "ID", 1364 | "ofType": null 1365 | }, 1366 | "defaultValue": null 1367 | }, 1368 | { 1369 | "name": "id_gt", 1370 | "description": "All values greater than the given value.", 1371 | "type": { 1372 | "kind": "SCALAR", 1373 | "name": "ID", 1374 | "ofType": null 1375 | }, 1376 | "defaultValue": null 1377 | }, 1378 | { 1379 | "name": "id_gte", 1380 | "description": "All values greater than or equal the given value.", 1381 | "type": { 1382 | "kind": "SCALAR", 1383 | "name": "ID", 1384 | "ofType": null 1385 | }, 1386 | "defaultValue": null 1387 | }, 1388 | { 1389 | "name": "id_contains", 1390 | "description": "All values containing the given string.", 1391 | "type": { 1392 | "kind": "SCALAR", 1393 | "name": "ID", 1394 | "ofType": null 1395 | }, 1396 | "defaultValue": null 1397 | }, 1398 | { 1399 | "name": "id_not_contains", 1400 | "description": "All values not containing the given string.", 1401 | "type": { 1402 | "kind": "SCALAR", 1403 | "name": "ID", 1404 | "ofType": null 1405 | }, 1406 | "defaultValue": null 1407 | }, 1408 | { 1409 | "name": "id_starts_with", 1410 | "description": "All values starting with the given string.", 1411 | "type": { 1412 | "kind": "SCALAR", 1413 | "name": "ID", 1414 | "ofType": null 1415 | }, 1416 | "defaultValue": null 1417 | }, 1418 | { 1419 | "name": "id_not_starts_with", 1420 | "description": "All values not starting with the given string.", 1421 | "type": { 1422 | "kind": "SCALAR", 1423 | "name": "ID", 1424 | "ofType": null 1425 | }, 1426 | "defaultValue": null 1427 | }, 1428 | { 1429 | "name": "id_ends_with", 1430 | "description": "All values ending with the given string.", 1431 | "type": { 1432 | "kind": "SCALAR", 1433 | "name": "ID", 1434 | "ofType": null 1435 | }, 1436 | "defaultValue": null 1437 | }, 1438 | { 1439 | "name": "id_not_ends_with", 1440 | "description": "All values not ending with the given string.", 1441 | "type": { 1442 | "kind": "SCALAR", 1443 | "name": "ID", 1444 | "ofType": null 1445 | }, 1446 | "defaultValue": null 1447 | }, 1448 | { 1449 | "name": "imageUrl", 1450 | "description": "", 1451 | "type": { 1452 | "kind": "SCALAR", 1453 | "name": "String", 1454 | "ofType": null 1455 | }, 1456 | "defaultValue": null 1457 | }, 1458 | { 1459 | "name": "imageUrl_not", 1460 | "description": "All values that are not equal to given value.", 1461 | "type": { 1462 | "kind": "SCALAR", 1463 | "name": "String", 1464 | "ofType": null 1465 | }, 1466 | "defaultValue": null 1467 | }, 1468 | { 1469 | "name": "imageUrl_in", 1470 | "description": "All values that are contained in given list.", 1471 | "type": { 1472 | "kind": "LIST", 1473 | "name": null, 1474 | "ofType": { 1475 | "kind": "NON_NULL", 1476 | "name": null, 1477 | "ofType": { 1478 | "kind": "SCALAR", 1479 | "name": "String", 1480 | "ofType": null 1481 | } 1482 | } 1483 | }, 1484 | "defaultValue": null 1485 | }, 1486 | { 1487 | "name": "imageUrl_not_in", 1488 | "description": "All values that are not contained in given list.", 1489 | "type": { 1490 | "kind": "LIST", 1491 | "name": null, 1492 | "ofType": { 1493 | "kind": "NON_NULL", 1494 | "name": null, 1495 | "ofType": { 1496 | "kind": "SCALAR", 1497 | "name": "String", 1498 | "ofType": null 1499 | } 1500 | } 1501 | }, 1502 | "defaultValue": null 1503 | }, 1504 | { 1505 | "name": "imageUrl_lt", 1506 | "description": "All values less than the given value.", 1507 | "type": { 1508 | "kind": "SCALAR", 1509 | "name": "String", 1510 | "ofType": null 1511 | }, 1512 | "defaultValue": null 1513 | }, 1514 | { 1515 | "name": "imageUrl_lte", 1516 | "description": "All values less than or equal the given value.", 1517 | "type": { 1518 | "kind": "SCALAR", 1519 | "name": "String", 1520 | "ofType": null 1521 | }, 1522 | "defaultValue": null 1523 | }, 1524 | { 1525 | "name": "imageUrl_gt", 1526 | "description": "All values greater than the given value.", 1527 | "type": { 1528 | "kind": "SCALAR", 1529 | "name": "String", 1530 | "ofType": null 1531 | }, 1532 | "defaultValue": null 1533 | }, 1534 | { 1535 | "name": "imageUrl_gte", 1536 | "description": "All values greater than or equal the given value.", 1537 | "type": { 1538 | "kind": "SCALAR", 1539 | "name": "String", 1540 | "ofType": null 1541 | }, 1542 | "defaultValue": null 1543 | }, 1544 | { 1545 | "name": "imageUrl_contains", 1546 | "description": "All values containing the given string.", 1547 | "type": { 1548 | "kind": "SCALAR", 1549 | "name": "String", 1550 | "ofType": null 1551 | }, 1552 | "defaultValue": null 1553 | }, 1554 | { 1555 | "name": "imageUrl_not_contains", 1556 | "description": "All values not containing the given string.", 1557 | "type": { 1558 | "kind": "SCALAR", 1559 | "name": "String", 1560 | "ofType": null 1561 | }, 1562 | "defaultValue": null 1563 | }, 1564 | { 1565 | "name": "imageUrl_starts_with", 1566 | "description": "All values starting with the given string.", 1567 | "type": { 1568 | "kind": "SCALAR", 1569 | "name": "String", 1570 | "ofType": null 1571 | }, 1572 | "defaultValue": null 1573 | }, 1574 | { 1575 | "name": "imageUrl_not_starts_with", 1576 | "description": "All values not starting with the given string.", 1577 | "type": { 1578 | "kind": "SCALAR", 1579 | "name": "String", 1580 | "ofType": null 1581 | }, 1582 | "defaultValue": null 1583 | }, 1584 | { 1585 | "name": "imageUrl_ends_with", 1586 | "description": "All values ending with the given string.", 1587 | "type": { 1588 | "kind": "SCALAR", 1589 | "name": "String", 1590 | "ofType": null 1591 | }, 1592 | "defaultValue": null 1593 | }, 1594 | { 1595 | "name": "imageUrl_not_ends_with", 1596 | "description": "All values not ending with the given string.", 1597 | "type": { 1598 | "kind": "SCALAR", 1599 | "name": "String", 1600 | "ofType": null 1601 | }, 1602 | "defaultValue": null 1603 | }, 1604 | { 1605 | "name": "description", 1606 | "description": "", 1607 | "type": { 1608 | "kind": "SCALAR", 1609 | "name": "String", 1610 | "ofType": null 1611 | }, 1612 | "defaultValue": null 1613 | }, 1614 | { 1615 | "name": "description_not", 1616 | "description": "All values that are not equal to given value.", 1617 | "type": { 1618 | "kind": "SCALAR", 1619 | "name": "String", 1620 | "ofType": null 1621 | }, 1622 | "defaultValue": null 1623 | }, 1624 | { 1625 | "name": "description_in", 1626 | "description": "All values that are contained in given list.", 1627 | "type": { 1628 | "kind": "LIST", 1629 | "name": null, 1630 | "ofType": { 1631 | "kind": "NON_NULL", 1632 | "name": null, 1633 | "ofType": { 1634 | "kind": "SCALAR", 1635 | "name": "String", 1636 | "ofType": null 1637 | } 1638 | } 1639 | }, 1640 | "defaultValue": null 1641 | }, 1642 | { 1643 | "name": "description_not_in", 1644 | "description": "All values that are not contained in given list.", 1645 | "type": { 1646 | "kind": "LIST", 1647 | "name": null, 1648 | "ofType": { 1649 | "kind": "NON_NULL", 1650 | "name": null, 1651 | "ofType": { 1652 | "kind": "SCALAR", 1653 | "name": "String", 1654 | "ofType": null 1655 | } 1656 | } 1657 | }, 1658 | "defaultValue": null 1659 | }, 1660 | { 1661 | "name": "description_lt", 1662 | "description": "All values less than the given value.", 1663 | "type": { 1664 | "kind": "SCALAR", 1665 | "name": "String", 1666 | "ofType": null 1667 | }, 1668 | "defaultValue": null 1669 | }, 1670 | { 1671 | "name": "description_lte", 1672 | "description": "All values less than or equal the given value.", 1673 | "type": { 1674 | "kind": "SCALAR", 1675 | "name": "String", 1676 | "ofType": null 1677 | }, 1678 | "defaultValue": null 1679 | }, 1680 | { 1681 | "name": "description_gt", 1682 | "description": "All values greater than the given value.", 1683 | "type": { 1684 | "kind": "SCALAR", 1685 | "name": "String", 1686 | "ofType": null 1687 | }, 1688 | "defaultValue": null 1689 | }, 1690 | { 1691 | "name": "description_gte", 1692 | "description": "All values greater than or equal the given value.", 1693 | "type": { 1694 | "kind": "SCALAR", 1695 | "name": "String", 1696 | "ofType": null 1697 | }, 1698 | "defaultValue": null 1699 | }, 1700 | { 1701 | "name": "description_contains", 1702 | "description": "All values containing the given string.", 1703 | "type": { 1704 | "kind": "SCALAR", 1705 | "name": "String", 1706 | "ofType": null 1707 | }, 1708 | "defaultValue": null 1709 | }, 1710 | { 1711 | "name": "description_not_contains", 1712 | "description": "All values not containing the given string.", 1713 | "type": { 1714 | "kind": "SCALAR", 1715 | "name": "String", 1716 | "ofType": null 1717 | }, 1718 | "defaultValue": null 1719 | }, 1720 | { 1721 | "name": "description_starts_with", 1722 | "description": "All values starting with the given string.", 1723 | "type": { 1724 | "kind": "SCALAR", 1725 | "name": "String", 1726 | "ofType": null 1727 | }, 1728 | "defaultValue": null 1729 | }, 1730 | { 1731 | "name": "description_not_starts_with", 1732 | "description": "All values not starting with the given string.", 1733 | "type": { 1734 | "kind": "SCALAR", 1735 | "name": "String", 1736 | "ofType": null 1737 | }, 1738 | "defaultValue": null 1739 | }, 1740 | { 1741 | "name": "description_ends_with", 1742 | "description": "All values ending with the given string.", 1743 | "type": { 1744 | "kind": "SCALAR", 1745 | "name": "String", 1746 | "ofType": null 1747 | }, 1748 | "defaultValue": null 1749 | }, 1750 | { 1751 | "name": "description_not_ends_with", 1752 | "description": "All values not ending with the given string.", 1753 | "type": { 1754 | "kind": "SCALAR", 1755 | "name": "String", 1756 | "ofType": null 1757 | }, 1758 | "defaultValue": null 1759 | } 1760 | ], 1761 | "name": "PostFilter", 1762 | "description": null, 1763 | "interfaces": null, 1764 | "enumValues": null, 1765 | "fields": null, 1766 | "kind": "INPUT_OBJECT", 1767 | "possibleTypes": null 1768 | }, 1769 | { 1770 | "inputFields": null, 1771 | "name": "PostOrderBy", 1772 | "description": null, 1773 | "interfaces": null, 1774 | "enumValues": [ 1775 | { 1776 | "name": "id_ASC", 1777 | "description": null, 1778 | "isDeprecated": false, 1779 | "deprecationReason": null 1780 | }, 1781 | { 1782 | "name": "id_DESC", 1783 | "description": null, 1784 | "isDeprecated": false, 1785 | "deprecationReason": null 1786 | }, 1787 | { 1788 | "name": "imageUrl_ASC", 1789 | "description": null, 1790 | "isDeprecated": false, 1791 | "deprecationReason": null 1792 | }, 1793 | { 1794 | "name": "imageUrl_DESC", 1795 | "description": null, 1796 | "isDeprecated": false, 1797 | "deprecationReason": null 1798 | }, 1799 | { 1800 | "name": "description_ASC", 1801 | "description": null, 1802 | "isDeprecated": false, 1803 | "deprecationReason": null 1804 | }, 1805 | { 1806 | "name": "description_DESC", 1807 | "description": null, 1808 | "isDeprecated": false, 1809 | "deprecationReason": null 1810 | } 1811 | ], 1812 | "fields": null, 1813 | "kind": "ENUM", 1814 | "possibleTypes": null 1815 | }, 1816 | { 1817 | "inputFields": null, 1818 | "name": "Query", 1819 | "description": null, 1820 | "interfaces": [], 1821 | "enumValues": null, 1822 | "fields": [ 1823 | { 1824 | "name": "allPosts", 1825 | "description": null, 1826 | "isDeprecated": false, 1827 | "deprecationReason": null, 1828 | "args": [ 1829 | { 1830 | "name": "filter", 1831 | "description": "", 1832 | "type": { 1833 | "kind": "INPUT_OBJECT", 1834 | "name": "PostFilter", 1835 | "ofType": null 1836 | }, 1837 | "defaultValue": null 1838 | }, 1839 | { 1840 | "name": "orderBy", 1841 | "description": null, 1842 | "type": { 1843 | "kind": "ENUM", 1844 | "name": "PostOrderBy", 1845 | "ofType": null 1846 | }, 1847 | "defaultValue": null 1848 | }, 1849 | { 1850 | "name": "skip", 1851 | "description": null, 1852 | "type": { 1853 | "kind": "SCALAR", 1854 | "name": "Int", 1855 | "ofType": null 1856 | }, 1857 | "defaultValue": null 1858 | }, 1859 | { 1860 | "name": "after", 1861 | "description": null, 1862 | "type": { 1863 | "kind": "SCALAR", 1864 | "name": "String", 1865 | "ofType": null 1866 | }, 1867 | "defaultValue": null 1868 | }, 1869 | { 1870 | "name": "before", 1871 | "description": null, 1872 | "type": { 1873 | "kind": "SCALAR", 1874 | "name": "String", 1875 | "ofType": null 1876 | }, 1877 | "defaultValue": null 1878 | }, 1879 | { 1880 | "name": "first", 1881 | "description": null, 1882 | "type": { 1883 | "kind": "SCALAR", 1884 | "name": "Int", 1885 | "ofType": null 1886 | }, 1887 | "defaultValue": null 1888 | }, 1889 | { 1890 | "name": "last", 1891 | "description": null, 1892 | "type": { 1893 | "kind": "SCALAR", 1894 | "name": "Int", 1895 | "ofType": null 1896 | }, 1897 | "defaultValue": null 1898 | } 1899 | ], 1900 | "type": { 1901 | "kind": "NON_NULL", 1902 | "name": null, 1903 | "ofType": { 1904 | "kind": "LIST", 1905 | "name": null, 1906 | "ofType": { 1907 | "kind": "NON_NULL", 1908 | "name": null, 1909 | "ofType": { 1910 | "kind": "OBJECT", 1911 | "name": "Post", 1912 | "ofType": null 1913 | } 1914 | } 1915 | } 1916 | } 1917 | }, 1918 | { 1919 | "name": "_allPostsMeta", 1920 | "description": null, 1921 | "isDeprecated": false, 1922 | "deprecationReason": null, 1923 | "args": [ 1924 | { 1925 | "name": "filter", 1926 | "description": "", 1927 | "type": { 1928 | "kind": "INPUT_OBJECT", 1929 | "name": "PostFilter", 1930 | "ofType": null 1931 | }, 1932 | "defaultValue": null 1933 | }, 1934 | { 1935 | "name": "orderBy", 1936 | "description": null, 1937 | "type": { 1938 | "kind": "ENUM", 1939 | "name": "PostOrderBy", 1940 | "ofType": null 1941 | }, 1942 | "defaultValue": null 1943 | }, 1944 | { 1945 | "name": "skip", 1946 | "description": null, 1947 | "type": { 1948 | "kind": "SCALAR", 1949 | "name": "Int", 1950 | "ofType": null 1951 | }, 1952 | "defaultValue": null 1953 | }, 1954 | { 1955 | "name": "after", 1956 | "description": null, 1957 | "type": { 1958 | "kind": "SCALAR", 1959 | "name": "String", 1960 | "ofType": null 1961 | }, 1962 | "defaultValue": null 1963 | }, 1964 | { 1965 | "name": "before", 1966 | "description": null, 1967 | "type": { 1968 | "kind": "SCALAR", 1969 | "name": "String", 1970 | "ofType": null 1971 | }, 1972 | "defaultValue": null 1973 | }, 1974 | { 1975 | "name": "first", 1976 | "description": null, 1977 | "type": { 1978 | "kind": "SCALAR", 1979 | "name": "Int", 1980 | "ofType": null 1981 | }, 1982 | "defaultValue": null 1983 | }, 1984 | { 1985 | "name": "last", 1986 | "description": null, 1987 | "type": { 1988 | "kind": "SCALAR", 1989 | "name": "Int", 1990 | "ofType": null 1991 | }, 1992 | "defaultValue": null 1993 | } 1994 | ], 1995 | "type": { 1996 | "kind": "NON_NULL", 1997 | "name": null, 1998 | "ofType": { 1999 | "kind": "OBJECT", 2000 | "name": "_QueryMeta", 2001 | "ofType": null 2002 | } 2003 | } 2004 | }, 2005 | { 2006 | "name": "Post", 2007 | "description": null, 2008 | "isDeprecated": false, 2009 | "deprecationReason": null, 2010 | "args": [ 2011 | { 2012 | "name": "id", 2013 | "description": "", 2014 | "type": { 2015 | "kind": "SCALAR", 2016 | "name": "ID", 2017 | "ofType": null 2018 | }, 2019 | "defaultValue": null 2020 | } 2021 | ], 2022 | "type": { 2023 | "kind": "OBJECT", 2024 | "name": "Post", 2025 | "ofType": null 2026 | } 2027 | }, 2028 | { 2029 | "name": "hello", 2030 | "description": "hello", 2031 | "isDeprecated": false, 2032 | "deprecationReason": null, 2033 | "args": [ 2034 | { 2035 | "name": "name", 2036 | "description": null, 2037 | "type": { 2038 | "kind": "SCALAR", 2039 | "name": "String", 2040 | "ofType": null 2041 | }, 2042 | "defaultValue": null 2043 | } 2044 | ], 2045 | "type": { 2046 | "kind": "OBJECT", 2047 | "name": "HelloPayload", 2048 | "ofType": null 2049 | } 2050 | }, 2051 | { 2052 | "name": "node", 2053 | "description": "Fetches an object given its ID", 2054 | "isDeprecated": false, 2055 | "deprecationReason": null, 2056 | "args": [ 2057 | { 2058 | "name": "id", 2059 | "description": "The ID of an object", 2060 | "type": { 2061 | "kind": "NON_NULL", 2062 | "name": null, 2063 | "ofType": { 2064 | "kind": "SCALAR", 2065 | "name": "ID", 2066 | "ofType": null 2067 | } 2068 | }, 2069 | "defaultValue": null 2070 | } 2071 | ], 2072 | "type": { 2073 | "kind": "INTERFACE", 2074 | "name": "Node", 2075 | "ofType": null 2076 | } 2077 | } 2078 | ], 2079 | "kind": "OBJECT", 2080 | "possibleTypes": null 2081 | }, 2082 | { 2083 | "inputFields": null, 2084 | "name": "_QueryMeta", 2085 | "description": "Meta information about the query.", 2086 | "interfaces": [], 2087 | "enumValues": null, 2088 | "fields": [ 2089 | { 2090 | "name": "count", 2091 | "description": null, 2092 | "isDeprecated": false, 2093 | "deprecationReason": null, 2094 | "args": [], 2095 | "type": { 2096 | "kind": "NON_NULL", 2097 | "name": null, 2098 | "ofType": { 2099 | "kind": "SCALAR", 2100 | "name": "Int", 2101 | "ofType": null 2102 | } 2103 | } 2104 | } 2105 | ], 2106 | "kind": "OBJECT", 2107 | "possibleTypes": null 2108 | }, 2109 | { 2110 | "inputFields": null, 2111 | "name": "__Directive", 2112 | "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL’s execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", 2113 | "interfaces": [], 2114 | "enumValues": null, 2115 | "fields": [ 2116 | { 2117 | "name": "name", 2118 | "description": null, 2119 | "isDeprecated": false, 2120 | "deprecationReason": null, 2121 | "args": [], 2122 | "type": { 2123 | "kind": "NON_NULL", 2124 | "name": null, 2125 | "ofType": { 2126 | "kind": "SCALAR", 2127 | "name": "String", 2128 | "ofType": null 2129 | } 2130 | } 2131 | }, 2132 | { 2133 | "name": "description", 2134 | "description": null, 2135 | "isDeprecated": false, 2136 | "deprecationReason": null, 2137 | "args": [], 2138 | "type": { 2139 | "kind": "SCALAR", 2140 | "name": "String", 2141 | "ofType": null 2142 | } 2143 | }, 2144 | { 2145 | "name": "locations", 2146 | "description": null, 2147 | "isDeprecated": false, 2148 | "deprecationReason": null, 2149 | "args": [], 2150 | "type": { 2151 | "kind": "NON_NULL", 2152 | "name": null, 2153 | "ofType": { 2154 | "kind": "LIST", 2155 | "name": null, 2156 | "ofType": { 2157 | "kind": "NON_NULL", 2158 | "name": null, 2159 | "ofType": { 2160 | "kind": "ENUM", 2161 | "name": "__DirectiveLocation", 2162 | "ofType": null 2163 | } 2164 | } 2165 | } 2166 | } 2167 | }, 2168 | { 2169 | "name": "args", 2170 | "description": null, 2171 | "isDeprecated": false, 2172 | "deprecationReason": null, 2173 | "args": [], 2174 | "type": { 2175 | "kind": "NON_NULL", 2176 | "name": null, 2177 | "ofType": { 2178 | "kind": "LIST", 2179 | "name": null, 2180 | "ofType": { 2181 | "kind": "NON_NULL", 2182 | "name": null, 2183 | "ofType": { 2184 | "kind": "OBJECT", 2185 | "name": "__InputValue", 2186 | "ofType": null 2187 | } 2188 | } 2189 | } 2190 | } 2191 | }, 2192 | { 2193 | "name": "onOperation", 2194 | "description": null, 2195 | "isDeprecated": true, 2196 | "deprecationReason": "Use `locations`.", 2197 | "args": [], 2198 | "type": { 2199 | "kind": "NON_NULL", 2200 | "name": null, 2201 | "ofType": { 2202 | "kind": "SCALAR", 2203 | "name": "Boolean", 2204 | "ofType": null 2205 | } 2206 | } 2207 | }, 2208 | { 2209 | "name": "onFragment", 2210 | "description": null, 2211 | "isDeprecated": true, 2212 | "deprecationReason": "Use `locations`.", 2213 | "args": [], 2214 | "type": { 2215 | "kind": "NON_NULL", 2216 | "name": null, 2217 | "ofType": { 2218 | "kind": "SCALAR", 2219 | "name": "Boolean", 2220 | "ofType": null 2221 | } 2222 | } 2223 | }, 2224 | { 2225 | "name": "onField", 2226 | "description": null, 2227 | "isDeprecated": true, 2228 | "deprecationReason": "Use `locations`.", 2229 | "args": [], 2230 | "type": { 2231 | "kind": "NON_NULL", 2232 | "name": null, 2233 | "ofType": { 2234 | "kind": "SCALAR", 2235 | "name": "Boolean", 2236 | "ofType": null 2237 | } 2238 | } 2239 | } 2240 | ], 2241 | "kind": "OBJECT", 2242 | "possibleTypes": null 2243 | }, 2244 | { 2245 | "inputFields": null, 2246 | "name": "__DirectiveLocation", 2247 | "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", 2248 | "interfaces": null, 2249 | "enumValues": [ 2250 | { 2251 | "name": "QUERY", 2252 | "description": "Location adjacent to a query operation.", 2253 | "isDeprecated": false, 2254 | "deprecationReason": null 2255 | }, 2256 | { 2257 | "name": "MUTATION", 2258 | "description": "Location adjacent to a mutation operation.", 2259 | "isDeprecated": false, 2260 | "deprecationReason": null 2261 | }, 2262 | { 2263 | "name": "SUBSCRIPTION", 2264 | "description": "Location adjacent to a subscription operation.", 2265 | "isDeprecated": false, 2266 | "deprecationReason": null 2267 | }, 2268 | { 2269 | "name": "FIELD", 2270 | "description": "Location adjacent to a field.", 2271 | "isDeprecated": false, 2272 | "deprecationReason": null 2273 | }, 2274 | { 2275 | "name": "FRAGMENT_DEFINITION", 2276 | "description": "Location adjacent to a fragment definition.", 2277 | "isDeprecated": false, 2278 | "deprecationReason": null 2279 | }, 2280 | { 2281 | "name": "FRAGMENT_SPREAD", 2282 | "description": "Location adjacent to a fragment spread.", 2283 | "isDeprecated": false, 2284 | "deprecationReason": null 2285 | }, 2286 | { 2287 | "name": "INLINE_FRAGMENT", 2288 | "description": "Location adjacent to an inline fragment.", 2289 | "isDeprecated": false, 2290 | "deprecationReason": null 2291 | }, 2292 | { 2293 | "name": "SCHEMA", 2294 | "description": "Location adjacent to a schema definition.", 2295 | "isDeprecated": false, 2296 | "deprecationReason": null 2297 | }, 2298 | { 2299 | "name": "SCALAR", 2300 | "description": "Location adjacent to a scalar definition.", 2301 | "isDeprecated": false, 2302 | "deprecationReason": null 2303 | }, 2304 | { 2305 | "name": "OBJECT", 2306 | "description": "Location adjacent to an object type definition.", 2307 | "isDeprecated": false, 2308 | "deprecationReason": null 2309 | }, 2310 | { 2311 | "name": "FIELD_DEFINITION", 2312 | "description": "Location adjacent to a field definition.", 2313 | "isDeprecated": false, 2314 | "deprecationReason": null 2315 | }, 2316 | { 2317 | "name": "ARGUMENT_DEFINITION", 2318 | "description": "Location adjacent to an argument definition.", 2319 | "isDeprecated": false, 2320 | "deprecationReason": null 2321 | }, 2322 | { 2323 | "name": "INTERFACE", 2324 | "description": "Location adjacent to an interface definition.", 2325 | "isDeprecated": false, 2326 | "deprecationReason": null 2327 | }, 2328 | { 2329 | "name": "UNION", 2330 | "description": "Location adjacent to a union definition.", 2331 | "isDeprecated": false, 2332 | "deprecationReason": null 2333 | }, 2334 | { 2335 | "name": "ENUM", 2336 | "description": "Location adjacent to an enum definition.", 2337 | "isDeprecated": false, 2338 | "deprecationReason": null 2339 | }, 2340 | { 2341 | "name": "ENUM_VALUE", 2342 | "description": "Location adjacent to an enum value definition.", 2343 | "isDeprecated": false, 2344 | "deprecationReason": null 2345 | }, 2346 | { 2347 | "name": "INPUT_OBJECT", 2348 | "description": "INPUT_OBJECT", 2349 | "isDeprecated": false, 2350 | "deprecationReason": null 2351 | }, 2352 | { 2353 | "name": "INPUT_FIELD_DEFINITION", 2354 | "description": "Location adjacent to an input object field definition.", 2355 | "isDeprecated": false, 2356 | "deprecationReason": null 2357 | } 2358 | ], 2359 | "fields": null, 2360 | "kind": "ENUM", 2361 | "possibleTypes": null 2362 | }, 2363 | { 2364 | "inputFields": null, 2365 | "name": "__EnumValue", 2366 | "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", 2367 | "interfaces": [], 2368 | "enumValues": null, 2369 | "fields": [ 2370 | { 2371 | "name": "name", 2372 | "description": null, 2373 | "isDeprecated": false, 2374 | "deprecationReason": null, 2375 | "args": [], 2376 | "type": { 2377 | "kind": "NON_NULL", 2378 | "name": null, 2379 | "ofType": { 2380 | "kind": "SCALAR", 2381 | "name": "String", 2382 | "ofType": null 2383 | } 2384 | } 2385 | }, 2386 | { 2387 | "name": "description", 2388 | "description": null, 2389 | "isDeprecated": false, 2390 | "deprecationReason": null, 2391 | "args": [], 2392 | "type": { 2393 | "kind": "SCALAR", 2394 | "name": "String", 2395 | "ofType": null 2396 | } 2397 | }, 2398 | { 2399 | "name": "isDeprecated", 2400 | "description": null, 2401 | "isDeprecated": false, 2402 | "deprecationReason": null, 2403 | "args": [], 2404 | "type": { 2405 | "kind": "NON_NULL", 2406 | "name": null, 2407 | "ofType": { 2408 | "kind": "SCALAR", 2409 | "name": "Boolean", 2410 | "ofType": null 2411 | } 2412 | } 2413 | }, 2414 | { 2415 | "name": "deprecationReason", 2416 | "description": null, 2417 | "isDeprecated": false, 2418 | "deprecationReason": null, 2419 | "args": [], 2420 | "type": { 2421 | "kind": "SCALAR", 2422 | "name": "String", 2423 | "ofType": null 2424 | } 2425 | } 2426 | ], 2427 | "kind": "OBJECT", 2428 | "possibleTypes": null 2429 | }, 2430 | { 2431 | "inputFields": null, 2432 | "name": "__Field", 2433 | "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", 2434 | "interfaces": [], 2435 | "enumValues": null, 2436 | "fields": [ 2437 | { 2438 | "name": "name", 2439 | "description": null, 2440 | "isDeprecated": false, 2441 | "deprecationReason": null, 2442 | "args": [], 2443 | "type": { 2444 | "kind": "NON_NULL", 2445 | "name": null, 2446 | "ofType": { 2447 | "kind": "SCALAR", 2448 | "name": "String", 2449 | "ofType": null 2450 | } 2451 | } 2452 | }, 2453 | { 2454 | "name": "description", 2455 | "description": null, 2456 | "isDeprecated": false, 2457 | "deprecationReason": null, 2458 | "args": [], 2459 | "type": { 2460 | "kind": "SCALAR", 2461 | "name": "String", 2462 | "ofType": null 2463 | } 2464 | }, 2465 | { 2466 | "name": "args", 2467 | "description": null, 2468 | "isDeprecated": false, 2469 | "deprecationReason": null, 2470 | "args": [], 2471 | "type": { 2472 | "kind": "NON_NULL", 2473 | "name": null, 2474 | "ofType": { 2475 | "kind": "LIST", 2476 | "name": null, 2477 | "ofType": { 2478 | "kind": "NON_NULL", 2479 | "name": null, 2480 | "ofType": { 2481 | "kind": "OBJECT", 2482 | "name": "__InputValue", 2483 | "ofType": null 2484 | } 2485 | } 2486 | } 2487 | } 2488 | }, 2489 | { 2490 | "name": "type", 2491 | "description": null, 2492 | "isDeprecated": false, 2493 | "deprecationReason": null, 2494 | "args": [], 2495 | "type": { 2496 | "kind": "NON_NULL", 2497 | "name": null, 2498 | "ofType": { 2499 | "kind": "OBJECT", 2500 | "name": "__Type", 2501 | "ofType": null 2502 | } 2503 | } 2504 | }, 2505 | { 2506 | "name": "isDeprecated", 2507 | "description": null, 2508 | "isDeprecated": false, 2509 | "deprecationReason": null, 2510 | "args": [], 2511 | "type": { 2512 | "kind": "NON_NULL", 2513 | "name": null, 2514 | "ofType": { 2515 | "kind": "SCALAR", 2516 | "name": "Boolean", 2517 | "ofType": null 2518 | } 2519 | } 2520 | }, 2521 | { 2522 | "name": "deprecationReason", 2523 | "description": null, 2524 | "isDeprecated": false, 2525 | "deprecationReason": null, 2526 | "args": [], 2527 | "type": { 2528 | "kind": "SCALAR", 2529 | "name": "String", 2530 | "ofType": null 2531 | } 2532 | } 2533 | ], 2534 | "kind": "OBJECT", 2535 | "possibleTypes": null 2536 | }, 2537 | { 2538 | "inputFields": null, 2539 | "name": "__InputValue", 2540 | "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", 2541 | "interfaces": [], 2542 | "enumValues": null, 2543 | "fields": [ 2544 | { 2545 | "name": "name", 2546 | "description": null, 2547 | "isDeprecated": false, 2548 | "deprecationReason": null, 2549 | "args": [], 2550 | "type": { 2551 | "kind": "NON_NULL", 2552 | "name": null, 2553 | "ofType": { 2554 | "kind": "SCALAR", 2555 | "name": "String", 2556 | "ofType": null 2557 | } 2558 | } 2559 | }, 2560 | { 2561 | "name": "description", 2562 | "description": null, 2563 | "isDeprecated": false, 2564 | "deprecationReason": null, 2565 | "args": [], 2566 | "type": { 2567 | "kind": "SCALAR", 2568 | "name": "String", 2569 | "ofType": null 2570 | } 2571 | }, 2572 | { 2573 | "name": "type", 2574 | "description": null, 2575 | "isDeprecated": false, 2576 | "deprecationReason": null, 2577 | "args": [], 2578 | "type": { 2579 | "kind": "NON_NULL", 2580 | "name": null, 2581 | "ofType": { 2582 | "kind": "OBJECT", 2583 | "name": "__Type", 2584 | "ofType": null 2585 | } 2586 | } 2587 | }, 2588 | { 2589 | "name": "defaultValue", 2590 | "description": "A GraphQL-formatted string representing the default value for this input value.", 2591 | "isDeprecated": false, 2592 | "deprecationReason": null, 2593 | "args": [], 2594 | "type": { 2595 | "kind": "SCALAR", 2596 | "name": "String", 2597 | "ofType": null 2598 | } 2599 | } 2600 | ], 2601 | "kind": "OBJECT", 2602 | "possibleTypes": null 2603 | }, 2604 | { 2605 | "inputFields": null, 2606 | "name": "__Schema", 2607 | "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", 2608 | "interfaces": [], 2609 | "enumValues": null, 2610 | "fields": [ 2611 | { 2612 | "name": "types", 2613 | "description": "A list of all types supported by this server.", 2614 | "isDeprecated": false, 2615 | "deprecationReason": null, 2616 | "args": [], 2617 | "type": { 2618 | "kind": "NON_NULL", 2619 | "name": null, 2620 | "ofType": { 2621 | "kind": "LIST", 2622 | "name": null, 2623 | "ofType": { 2624 | "kind": "NON_NULL", 2625 | "name": null, 2626 | "ofType": { 2627 | "kind": "OBJECT", 2628 | "name": "__Type", 2629 | "ofType": null 2630 | } 2631 | } 2632 | } 2633 | } 2634 | }, 2635 | { 2636 | "name": "queryType", 2637 | "description": "The type that query operations will be rooted at.", 2638 | "isDeprecated": false, 2639 | "deprecationReason": null, 2640 | "args": [], 2641 | "type": { 2642 | "kind": "NON_NULL", 2643 | "name": null, 2644 | "ofType": { 2645 | "kind": "OBJECT", 2646 | "name": "__Type", 2647 | "ofType": null 2648 | } 2649 | } 2650 | }, 2651 | { 2652 | "name": "mutationType", 2653 | "description": "If this server supports mutation, the type that mutation operations will be rooted at.", 2654 | "isDeprecated": false, 2655 | "deprecationReason": null, 2656 | "args": [], 2657 | "type": { 2658 | "kind": "OBJECT", 2659 | "name": "__Type", 2660 | "ofType": null 2661 | } 2662 | }, 2663 | { 2664 | "name": "subscriptionType", 2665 | "description": "If this server support subscription, the type that subscription operations will be rooted at.", 2666 | "isDeprecated": false, 2667 | "deprecationReason": null, 2668 | "args": [], 2669 | "type": { 2670 | "kind": "OBJECT", 2671 | "name": "__Type", 2672 | "ofType": null 2673 | } 2674 | }, 2675 | { 2676 | "name": "directives", 2677 | "description": "A list of all directives supported by this server.", 2678 | "isDeprecated": false, 2679 | "deprecationReason": null, 2680 | "args": [], 2681 | "type": { 2682 | "kind": "NON_NULL", 2683 | "name": null, 2684 | "ofType": { 2685 | "kind": "LIST", 2686 | "name": null, 2687 | "ofType": { 2688 | "kind": "NON_NULL", 2689 | "name": null, 2690 | "ofType": { 2691 | "kind": "OBJECT", 2692 | "name": "__Directive", 2693 | "ofType": null 2694 | } 2695 | } 2696 | } 2697 | } 2698 | } 2699 | ], 2700 | "kind": "OBJECT", 2701 | "possibleTypes": null 2702 | }, 2703 | { 2704 | "inputFields": null, 2705 | "name": "__Type", 2706 | "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", 2707 | "interfaces": [], 2708 | "enumValues": null, 2709 | "fields": [ 2710 | { 2711 | "name": "kind", 2712 | "description": null, 2713 | "isDeprecated": false, 2714 | "deprecationReason": null, 2715 | "args": [], 2716 | "type": { 2717 | "kind": "NON_NULL", 2718 | "name": null, 2719 | "ofType": { 2720 | "kind": "ENUM", 2721 | "name": "__TypeKind", 2722 | "ofType": null 2723 | } 2724 | } 2725 | }, 2726 | { 2727 | "name": "name", 2728 | "description": null, 2729 | "isDeprecated": false, 2730 | "deprecationReason": null, 2731 | "args": [], 2732 | "type": { 2733 | "kind": "SCALAR", 2734 | "name": "String", 2735 | "ofType": null 2736 | } 2737 | }, 2738 | { 2739 | "name": "description", 2740 | "description": null, 2741 | "isDeprecated": false, 2742 | "deprecationReason": null, 2743 | "args": [], 2744 | "type": { 2745 | "kind": "SCALAR", 2746 | "name": "String", 2747 | "ofType": null 2748 | } 2749 | }, 2750 | { 2751 | "name": "fields", 2752 | "description": null, 2753 | "isDeprecated": false, 2754 | "deprecationReason": null, 2755 | "args": [ 2756 | { 2757 | "name": "includeDeprecated", 2758 | "description": null, 2759 | "type": { 2760 | "kind": "SCALAR", 2761 | "name": "Boolean", 2762 | "ofType": null 2763 | }, 2764 | "defaultValue": "false" 2765 | } 2766 | ], 2767 | "type": { 2768 | "kind": "LIST", 2769 | "name": null, 2770 | "ofType": { 2771 | "kind": "NON_NULL", 2772 | "name": null, 2773 | "ofType": { 2774 | "kind": "OBJECT", 2775 | "name": "__Field", 2776 | "ofType": null 2777 | } 2778 | } 2779 | } 2780 | }, 2781 | { 2782 | "name": "interfaces", 2783 | "description": null, 2784 | "isDeprecated": false, 2785 | "deprecationReason": null, 2786 | "args": [], 2787 | "type": { 2788 | "kind": "LIST", 2789 | "name": null, 2790 | "ofType": { 2791 | "kind": "NON_NULL", 2792 | "name": null, 2793 | "ofType": { 2794 | "kind": "OBJECT", 2795 | "name": "__Type", 2796 | "ofType": null 2797 | } 2798 | } 2799 | } 2800 | }, 2801 | { 2802 | "name": "possibleTypes", 2803 | "description": null, 2804 | "isDeprecated": false, 2805 | "deprecationReason": null, 2806 | "args": [], 2807 | "type": { 2808 | "kind": "LIST", 2809 | "name": null, 2810 | "ofType": { 2811 | "kind": "NON_NULL", 2812 | "name": null, 2813 | "ofType": { 2814 | "kind": "OBJECT", 2815 | "name": "__Type", 2816 | "ofType": null 2817 | } 2818 | } 2819 | } 2820 | }, 2821 | { 2822 | "name": "enumValues", 2823 | "description": null, 2824 | "isDeprecated": false, 2825 | "deprecationReason": null, 2826 | "args": [ 2827 | { 2828 | "name": "includeDeprecated", 2829 | "description": null, 2830 | "type": { 2831 | "kind": "SCALAR", 2832 | "name": "Boolean", 2833 | "ofType": null 2834 | }, 2835 | "defaultValue": "false" 2836 | } 2837 | ], 2838 | "type": { 2839 | "kind": "LIST", 2840 | "name": null, 2841 | "ofType": { 2842 | "kind": "NON_NULL", 2843 | "name": null, 2844 | "ofType": { 2845 | "kind": "OBJECT", 2846 | "name": "__EnumValue", 2847 | "ofType": null 2848 | } 2849 | } 2850 | } 2851 | }, 2852 | { 2853 | "name": "inputFields", 2854 | "description": null, 2855 | "isDeprecated": false, 2856 | "deprecationReason": null, 2857 | "args": [], 2858 | "type": { 2859 | "kind": "LIST", 2860 | "name": null, 2861 | "ofType": { 2862 | "kind": "NON_NULL", 2863 | "name": null, 2864 | "ofType": { 2865 | "kind": "OBJECT", 2866 | "name": "__InputValue", 2867 | "ofType": null 2868 | } 2869 | } 2870 | } 2871 | }, 2872 | { 2873 | "name": "ofType", 2874 | "description": null, 2875 | "isDeprecated": false, 2876 | "deprecationReason": null, 2877 | "args": [], 2878 | "type": { 2879 | "kind": "OBJECT", 2880 | "name": "__Type", 2881 | "ofType": null 2882 | } 2883 | } 2884 | ], 2885 | "kind": "OBJECT", 2886 | "possibleTypes": null 2887 | }, 2888 | { 2889 | "inputFields": null, 2890 | "name": "__TypeKind", 2891 | "description": "An enum describing what kind of type a given `__Type` is.", 2892 | "interfaces": null, 2893 | "enumValues": [ 2894 | { 2895 | "name": "SCALAR", 2896 | "description": "Indicates this type is a scalar.", 2897 | "isDeprecated": false, 2898 | "deprecationReason": null 2899 | }, 2900 | { 2901 | "name": "OBJECT", 2902 | "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", 2903 | "isDeprecated": false, 2904 | "deprecationReason": null 2905 | }, 2906 | { 2907 | "name": "INTERFACE", 2908 | "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.", 2909 | "isDeprecated": false, 2910 | "deprecationReason": null 2911 | }, 2912 | { 2913 | "name": "UNION", 2914 | "description": "Indicates this type is a union. `possibleTypes` is a valid field.", 2915 | "isDeprecated": false, 2916 | "deprecationReason": null 2917 | }, 2918 | { 2919 | "name": "ENUM", 2920 | "description": "Indicates this type is an enum. `enumValues` is a valid field.", 2921 | "isDeprecated": false, 2922 | "deprecationReason": null 2923 | }, 2924 | { 2925 | "name": "INPUT_OBJECT", 2926 | "description": "Indicates this type is an input object. `inputFields` is a valid field.", 2927 | "isDeprecated": false, 2928 | "deprecationReason": null 2929 | }, 2930 | { 2931 | "name": "LIST", 2932 | "description": "Indicates this type is a list. `ofType` is a valid field.", 2933 | "isDeprecated": false, 2934 | "deprecationReason": null 2935 | }, 2936 | { 2937 | "name": "NON_NULL", 2938 | "description": "Indicates this type is a non-null. `ofType` is a valid field.", 2939 | "isDeprecated": false, 2940 | "deprecationReason": null 2941 | } 2942 | ], 2943 | "fields": null, 2944 | "kind": "ENUM", 2945 | "possibleTypes": null 2946 | }, 2947 | { 2948 | "inputFields": null, 2949 | "name": "Boolean", 2950 | "description": "The `Boolean` scalar type represents `true` or `false`.", 2951 | "interfaces": null, 2952 | "enumValues": null, 2953 | "fields": null, 2954 | "kind": "SCALAR", 2955 | "possibleTypes": null 2956 | }, 2957 | { 2958 | "inputFields": null, 2959 | "name": "ID", 2960 | "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", 2961 | "interfaces": null, 2962 | "enumValues": null, 2963 | "fields": null, 2964 | "kind": "SCALAR", 2965 | "possibleTypes": null 2966 | }, 2967 | { 2968 | "inputFields": null, 2969 | "name": "Int", 2970 | "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", 2971 | "interfaces": null, 2972 | "enumValues": null, 2973 | "fields": null, 2974 | "kind": "SCALAR", 2975 | "possibleTypes": null 2976 | }, 2977 | { 2978 | "inputFields": null, 2979 | "name": "String", 2980 | "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", 2981 | "interfaces": null, 2982 | "enumValues": null, 2983 | "fields": null, 2984 | "kind": "SCALAR", 2985 | "possibleTypes": null 2986 | } 2987 | ] 2988 | } 2989 | } 2990 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/ApolloDemoApplication.java: -------------------------------------------------------------------------------- 1 | package com.example.nburk.apollodemo; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import com.apollographql.apollo.ApolloClient; 7 | import com.apollographql.apollo.api.Operation; 8 | import com.apollographql.apollo.api.ResponseField; 9 | import com.apollographql.apollo.cache.normalized.CacheKey; 10 | import com.apollographql.apollo.cache.normalized.CacheKeyResolver; 11 | import com.apollographql.apollo.cache.normalized.NormalizedCacheFactory; 12 | import com.apollographql.apollo.cache.normalized.lru.EvictionPolicy; 13 | import com.apollographql.apollo.cache.normalized.lru.LruNormalizedCacheFactory; 14 | 15 | import java.util.Map; 16 | 17 | import javax.annotation.Nonnull; 18 | 19 | import okhttp3.OkHttpClient; 20 | 21 | public class ApolloDemoApplication extends Application { 22 | 23 | // replace __SIMPLE_API_ENDPOINT__ with the endpoint of your service's GraphQL API 24 | // looks like: https://api.graph.cool/simple/v1/__SERVICE_ID__ 25 | private static final String BASE_URL = "__SIMPLE_API_ENDPOINT__"; 26 | public static final String TAG = "graphcool"; 27 | 28 | private ApolloClient apolloClient; 29 | private static Context context; 30 | 31 | public static Context getAppContext() { 32 | return ApolloDemoApplication.context; 33 | } 34 | 35 | @Override public void onCreate() { 36 | super.onCreate(); 37 | ApolloDemoApplication.context = getApplicationContext(); 38 | 39 | OkHttpClient okHttpClient = new OkHttpClient.Builder() 40 | .build(); 41 | 42 | NormalizedCacheFactory cacheFactory = new LruNormalizedCacheFactory(EvictionPolicy.builder().maxSizeBytes(10 * 1024).build()); 43 | CacheKeyResolver cacheKeyResolver = new CacheKeyResolver() { 44 | @Nonnull 45 | @Override 46 | public CacheKey fromFieldRecordSet(@Nonnull ResponseField field, @Nonnull Map recordSet) { 47 | if (recordSet.containsKey("id")) { 48 | String id = (String) recordSet.get("id"); 49 | return CacheKey.from(id); 50 | } 51 | return CacheKey.NO_KEY; 52 | } 53 | 54 | @Nonnull @Override 55 | public CacheKey fromFieldArguments(@Nonnull ResponseField field, @Nonnull Operation.Variables variables) { 56 | return CacheKey.NO_KEY; 57 | } 58 | }; 59 | 60 | apolloClient = ApolloClient.builder() 61 | .serverUrl(BASE_URL) 62 | .normalizedCache(cacheFactory, cacheKeyResolver) 63 | .okHttpClient(okHttpClient) 64 | .build(); 65 | } 66 | 67 | public ApolloClient apolloClient() { 68 | return apolloClient; 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.nburk.apollodemo; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.DialogInterface; 5 | import android.os.Bundle; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.support.v7.widget.LinearLayoutManager; 8 | import android.support.v7.widget.RecyclerView; 9 | import android.support.v7.widget.Toolbar; 10 | import android.util.Log; 11 | import android.view.LayoutInflater; 12 | import android.view.Menu; 13 | import android.view.MenuInflater; 14 | import android.view.MenuItem; 15 | import android.view.View; 16 | import android.view.ViewGroup; 17 | import android.widget.EditText; 18 | import android.widget.ProgressBar; 19 | 20 | import com.AllPostsQuery; 21 | import com.CreatePostMutation; 22 | import com.apollographql.apollo.ApolloCall; 23 | import com.apollographql.apollo.api.Response; 24 | import com.apollographql.apollo.api.cache.http.HttpCachePolicy; 25 | import com.apollographql.apollo.exception.ApolloException; 26 | 27 | import javax.annotation.Nonnull; 28 | 29 | // https://laughingsquid.com/wp-content/uploads/2013/07/QjJjgS0.jpg 30 | // https://i.pinimg.com/originals/6d/90/af/6d90af5a16ed15f7e2c4a092b8884700.jpg 31 | 32 | public class MainActivity extends AppCompatActivity { 33 | 34 | ApolloDemoApplication application; 35 | MainRecyclerViewAdapter postsAdapter; 36 | ViewGroup content; 37 | ProgressBar progressBar; 38 | 39 | @Override 40 | protected void onCreate(Bundle savedInstanceState) { 41 | super.onCreate(savedInstanceState); 42 | setContentView(R.layout.activity_main); 43 | Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 44 | setSupportActionBar(myToolbar); 45 | Log.d(ApolloDemoApplication.TAG, "Creating activity..."); 46 | 47 | application = (com.example.nburk.apollodemo.ApolloDemoApplication) getApplication(); 48 | 49 | content = (ViewGroup) findViewById(R.id.content_holder); 50 | progressBar = (ProgressBar) findViewById(R.id.loading_bar); 51 | 52 | RecyclerView postsRecyclerView = (RecyclerView) findViewById(R.id.rv_posts_list); 53 | postsAdapter = new MainRecyclerViewAdapter(application.getApplicationContext()); 54 | postsRecyclerView.setAdapter(postsAdapter); 55 | postsRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 56 | 57 | fetchPosts(); 58 | } 59 | 60 | private ApolloCall.Callback createPostMutationCallback = new ApolloCall.Callback() { 61 | @Override 62 | public void onResponse(@Nonnull final Response dataResponse) { 63 | Log.d(ApolloDemoApplication.TAG, "Executed mutation: " + dataResponse.data()); 64 | fetchPosts(); 65 | } 66 | @Override 67 | public void onFailure(@Nonnull ApolloException e) { 68 | Log.d(ApolloDemoApplication.TAG, "Error:" + e.toString()); 69 | } 70 | }; 71 | 72 | private ApolloCall.Callback allPostsQueryCallback = new ApolloCall.Callback() { 73 | @Override 74 | public void onResponse(@Nonnull final Response dataResponse) { 75 | Log.d(ApolloDemoApplication.TAG, "Received posts: " + dataResponse.data().allPosts().size()); 76 | MainActivity.this.runOnUiThread(new Runnable() { 77 | @Override public void run() { 78 | postsAdapter.setPosts(dataResponse.data().allPosts()); 79 | progressBar.setVisibility(View.GONE); 80 | content.setVisibility(View.VISIBLE); 81 | } 82 | }); 83 | } 84 | 85 | @Override 86 | public void onFailure(@Nonnull ApolloException e) { 87 | Log.d(ApolloDemoApplication.TAG, "Error:" + e.toString()); 88 | } 89 | }; 90 | 91 | private void fetchPosts() { 92 | Log.d(ApolloDemoApplication.TAG, "Fetch posts ...."); 93 | application.apolloClient().query( 94 | AllPostsQuery.builder() 95 | .build() 96 | ).httpCachePolicy(HttpCachePolicy.CACHE_FIRST) 97 | .enqueue(allPostsQueryCallback); 98 | } 99 | 100 | private void createPost(String description, String imageUrl) { 101 | application.apolloClient().mutate( 102 | CreatePostMutation.builder() 103 | .description(description) 104 | .imageUrl(imageUrl) 105 | .build()) 106 | .enqueue(createPostMutationCallback); 107 | } 108 | 109 | public boolean onCreateOptionsMenu(Menu menu) { 110 | MenuInflater inflater = getMenuInflater(); 111 | inflater.inflate(R.menu.new_post, menu); 112 | return true; 113 | } 114 | 115 | public boolean onOptionsItemSelected(MenuItem item) { 116 | AlertDialog.Builder builder = new AlertDialog.Builder(this); 117 | LayoutInflater inflater = getLayoutInflater(); 118 | View viewInflated = inflater.inflate(R.layout.dialog_create_post, null); 119 | final EditText descriptionInput = (EditText) viewInflated.findViewById(R.id.description); 120 | final EditText imageUrlInput = (EditText) viewInflated.findViewById(R.id.imageUrl); 121 | 122 | builder.setView(viewInflated) 123 | .setPositiveButton("Create", new DialogInterface.OnClickListener() { 124 | @Override 125 | public void onClick(DialogInterface dialog, int id) { 126 | String description = descriptionInput.getText().toString(); 127 | String imageUrl = imageUrlInput.getText().toString(); 128 | Log.d(ApolloDemoApplication.TAG, "Create post with: " + description + ", " + imageUrl); 129 | createPost(description, imageUrl); 130 | } 131 | }) 132 | .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 133 | public void onClick(DialogInterface dialog, int id) { 134 | 135 | } 136 | }); 137 | 138 | builder.show(); 139 | return super.onOptionsItemSelected(item); 140 | } 141 | 142 | 143 | 144 | } 145 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/MainRecyclerViewAdapter.java: -------------------------------------------------------------------------------- 1 | package com.example.nburk.apollodemo; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.util.Log; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.ImageView; 10 | import android.widget.TextView; 11 | 12 | import com.AllPostsQuery; 13 | import com.squareup.picasso.Picasso; 14 | 15 | import java.util.Collections; 16 | import java.util.List; 17 | 18 | /** 19 | * Created by nburk on 26.10.17. 20 | */ 21 | 22 | public class MainRecyclerViewAdapter extends RecyclerView.Adapter { 23 | 24 | private List posts = Collections.emptyList(); 25 | private Context context; 26 | 27 | MainRecyclerViewAdapter(Context context) { 28 | this.context = context; 29 | } 30 | 31 | public void setPosts(List posts) { 32 | this.posts = posts; 33 | this.notifyDataSetChanged(); 34 | Log.d(ApolloDemoApplication.TAG, "Updated posts in adapter: " + posts.size()); 35 | } 36 | 37 | @Override 38 | public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 39 | LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); 40 | final View itemView = layoutInflater.inflate(R.layout.post_item_entry, parent, false); 41 | 42 | return new PostViewHolder(itemView, context); 43 | } 44 | 45 | @Override public void onBindViewHolder(PostViewHolder holder, int position) { 46 | final AllPostsQuery.AllPost post = this.posts.get(position); 47 | holder.setPost(post); 48 | } 49 | 50 | @Override public int getItemCount() { 51 | return posts.size(); 52 | } 53 | 54 | static class PostViewHolder extends RecyclerView.ViewHolder { 55 | 56 | private TextView postDescription; 57 | private ImageView postImage; 58 | private View postEntryContainer; 59 | private Context context; 60 | 61 | PostViewHolder(View itemView, Context context) { 62 | super(itemView); 63 | postDescription = (TextView) itemView.findViewById(R.id.post_description); 64 | postImage = (ImageView) itemView.findViewById(R.id.post_image); 65 | postEntryContainer = itemView.findViewById(R.id.post_entry_container); 66 | this.context = context; 67 | } 68 | 69 | void setPost(final AllPostsQuery.AllPost post) { 70 | postDescription.setText(post.description()); 71 | Picasso.with(context).load(post.imageUrl()).into(postImage); 72 | 73 | postEntryContainer.setOnClickListener(new View.OnClickListener() { 74 | @Override public void onClick(View v) { 75 | } 76 | }); 77 | 78 | } 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/java/com/example/nburk/apollodemo/dummy/DummyContent.java: -------------------------------------------------------------------------------- 1 | package com.example.nburk.apollodemo.dummy; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashMap; 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | /** 9 | * Helper class for providing sample content for user interfaces created by 10 | * Android template wizards. 11 | *

12 | * TODO: Replace all uses of this class before publishing your app. 13 | */ 14 | public class DummyContent { 15 | 16 | /** 17 | * An array of sample (dummy) items. 18 | */ 19 | public static final List ITEMS = new ArrayList(); 20 | 21 | /** 22 | * A map of sample (dummy) items, by ID. 23 | */ 24 | public static final Map ITEM_MAP = new HashMap(); 25 | 26 | private static final int COUNT = 25; 27 | 28 | static { 29 | // Add some sample items. 30 | for (int i = 1; i <= COUNT; i++) { 31 | addItem(createDummyItem(i)); 32 | } 33 | } 34 | 35 | private static void addItem(DummyItem item) { 36 | ITEMS.add(item); 37 | ITEM_MAP.put(item.id, item); 38 | } 39 | 40 | private static DummyItem createDummyItem(int position) { 41 | return new DummyItem(String.valueOf(position), "Item " + position, makeDetails(position)); 42 | } 43 | 44 | private static String makeDetails(int position) { 45 | StringBuilder builder = new StringBuilder(); 46 | builder.append("Details about Item: ").append(position); 47 | for (int i = 0; i < position; i++) { 48 | builder.append("\nMore details information here."); 49 | } 50 | return builder.toString(); 51 | } 52 | 53 | /** 54 | * A dummy item representing a piece of content. 55 | */ 56 | public static class DummyItem { 57 | public final String id; 58 | public final String content; 59 | public final String details; 60 | 61 | public DummyItem(String id, String content, String details) { 62 | this.id = id; 63 | this.content = content; 64 | this.details = details; 65 | } 66 | 67 | @Override 68 | public String toString() { 69 | return content; 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 15 | 16 | 22 | 23 | 32 | 33 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/layout/dialog_create_post.xml: -------------------------------------------------------------------------------- 1 | 5 | 16 | 29 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/layout/post_item_entry.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 20 | 21 | 29 | 30 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/menu/new_post.xml: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 | android:id="@+id/action_favorite" 5 | 8 | 9 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphcool-examples/android-graphql/4b7f7b909409f00324e069051f61eb9b146413a3/quickstart-with-apollo/ApolloDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #27AE60 4 | #0E9C4A 5 | #E00097 6 | 7 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 200dp 5 | 200dp 6 | 16dp 7 | 8 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ApolloDemo 3 | Posts 4 | Post Detail 5 | 6 | -------------------------------------------------------------------------------- /quickstart-with-apollo/ApolloDemo/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |