Skip to content

Latest commit

 

History

History
402 lines (263 loc) · 22.6 KB

CHANGELOG.md

File metadata and controls

402 lines (263 loc) · 22.6 KB

Miscellaneous

  • rotate travis creds (#390)
  • Create notify_comments.yml (#392)
  • Fix duplicate Nullable annotation (#397)

See all changes between 3.3.1 and 3.3.2

Miscellaneous

  • re-encrypt config file (#384)
  • Chore/Adding codeowners to the appsync repo (#388)
  • Add checks to prevent re-initialization of the connectivitywatcher and unregistering before registering the same watcher to prevent too many requests to networkcallback registration (#387)

See all changes between 3.3.0 and 3.3.1

Features

  • port custom domain support. (#379)

Miscellaneous

  • Chore: rotate travisCI creds (#378)

See all changes between 3.2.1 and 3.3.0

Miscellaneous

  • Update README.md
  • Add support for Gradle 7 projects (#361)
  • Migrate project to AndroidX libraries (#362)
  • Add support for Gradle 7 projects (#372)

See all changes between 3.2.0 and 3.2.1

Features

  • add support for AWS_LAMBDA auth mode (#358)

See all changes between 3.1.4 and 3.2.0

Release 3.1.4

Bug Fixes

  • retry interceptor now closes previous response (#332)
  • use HTTPS endpoint for Github repo (#337)

  • Adding release automation workflow and scripts (#336)

See all changes between 3.1.3 and 3.1.4

  • Updates the Gradle Plugin so that it can be used with Android Studio 4.0.0+. Fixes incompatibilities with Gradle 6+.

Bug Fixes

  • Added fix to preserve null list items when parsing the response. See issue #156 for details.

Enhancements

  • Added support for connecting to AWS AppSync using pure WebSockets for GraphQL subscriptions.

    • Selection set filtering will be done per client as each client can define their own selection set. In this case the subscription selection set must be a subset of the mutation selection set. For example, a subscription addedPost{author title} linked to the mutation addPost(...){id author title url version} would receive only the author and the title of the post and none of the other fields. However, if the mutation didn't have the author in its selection set the subscriber would get a null value for the author field (or an error in case the author field is defined as required/not-null in the schema).
    • In the earlier SDK version, if you didn’t configure the associated subscription selection set with the required fields and relied on the mutation fields to push data to subscribed client, the behavior will change when you move to this version
      that use pure WebSockets. In the example above, a subscription without the "author" field defined in its selection set would still return the author name with MQTT over WebSockets as the field is defined in the mutation, the same behavior won’t apply for pure WebSockets. The subscription selection set is essential when using pure WebSockets: if a field is not explicitly defined in the subscription it won't be returned by AWS AppSync.
  • Adopted Semantic versioning

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.16.3 instead of 2.16.1.

Enhancements

  • Make GraphQLStoreOperation.Callback a public interface, so the AWSAppSyncStore asyncrhonous operations can be passed with a callback. Thanks @cjami for the contribution. See PR #193 for details.

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.16.1 instead of 2.13.5.

Bug Fixes

  • If an App Sync subscription attempts to be executed while in a non-Idle state, it will now pass the error back through the callback vs. crashing the app with a runtime exception. See issue#202

Enhancements

  • Add new validations in AWSAppSyncClient.Builder.
    • Throw RuntimeException when Android context passed in is null.
    • Throw RuntimException when there is no valid AuthMode object passed in.

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.13.5 instead of 2.13.4.

New Features

  • Support multiple authorization modes for a single AWS AppSync GraphQL endpoint.
  • Introduced clientDatabasePrefix(String) that accepts a prefix that will be used in the construction of database name for caching query responses, offline mutations and subscriptions metadata. The usage of the prefix can be enabled by the flag useClientDatabasePrefix(true). When the prefix is used, the name of the database would look as follows:
Purpose of cache No prefix Valid prefix
Query responses appsyncstore <ClientDatabasePrefix>_appsyncstore
Offline Mutations appsyncstore_mutation <ClientDatabasePrefix>_appsyncstore_mutation
Subscriptions metadata for Delta Sync appsync_deltasync_db <ClientDatabasePrefix>_appsync_deltasync_db
  • The ClientDatabasePrefix can be passed via awsconfiguration.json that is generated from the AWS AppSync Console and Amplify CLI.

       "AppSync": {
          "Default": {
            "ApiUrl": "https://xyz.appsync-api.us-east-2.amazonaws.com/graphql",
            "Region": "us-east-2",
            "AuthMode": "API_KEY",
            "ApiKey": "da2-xyz",
            "ClientDatabasePrefix": "MyAppSyncAPIName_API_KEY"
          }
        }
    

    The AWSAppSyncClient object can be constructed as follows:

        AWSAppSyncClient awsAppSyncClient = AWSAppSyncClient.builder()
                  .awsConfiguration(awsConfiguration)
                  .useClientDatabasePrefix(true)
                  .build();
  • Alternatively, the ClientDatabasePrefix can be passed via the AWSAppSyncClient.Builder.

       AWSAppSyncClient awsAppSyncClient = AWSAppSyncClient.builder()
                      .context(getApplicationContext())
                      .apiKey(new BasicAPIKeyAuthProvider("da2-apiKey"))
                      .serverUrl(serverUrl)
                      .region(region)
                      .useClientDatabasePrefix(true)
                      .clientDatabasePrefix("MyAppSyncAPIName_API_KEY")
                      .build();

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.13.4 instead of 2.13.2.

Bug Fixes

  • Fixed a bug with inconsistent capitalization of class names in generated code that represent GraphQL input types. See PR #150 for details.
  • Fixed a bug with inconsistent capitalization of variables in generated code that represent fields for GraphQL types. See PR #172 for details.

Enhancements

  • AWS AppSync plugin for gradle is now compatible with Gradle version 5.x. See issue#91 for details.

Bug Fixes

Bug Fixes

Bug Fixes

  • Fixed a bug that cause NullPointerException in the ApolloServerInterceptor. See PR #146 Thanks @alanvan0502 !
  • Sanitized useragent string of unicode characters that caused requests to fail. The unicode characters in this case came from the platform name (TM) symbol. See PR #146 Thanks @alanvan0502 !

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.13.2 instead of 2.13.0.

Bug Fixes

  • Fixed a bug that caused cursors to remain open in certain scenarios. See PR #141 Thanks @alanvan0502 ! See issue #140

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.13.0 instead of 2.12.1.

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.12.1 instead of 2.11.0.

Bug Fixes

  • Adjusted network connectivity check in mutation processing logic. See issue #108, issue #121
  • Fixed NoSuchElementException in Subscription Reconnection logic. See issue #114.

Bug Fixes

  • Fixed a memory leak in subscriptionsById map. See issue #111.
  • Prevent a NPE on the userCallback when canceling a subscription. See issue #114.

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.11.0 instead of 2.10.1.
  • Added support to check if mutation queue is empty and to clear mutation queue. See issue #96, and issue #101

Bug Fixes

  • Fixed bug in mutationQueueExecutionTimeout method. See issue #105
  • Fixed bug in mutation processing logic to handle case where cancel is called in the mutation callback. See issue #102

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.10.1 instead of 2.10.0.

Bug Fixes

Enhancements

  • Added logic to mutation queue processing to handle canceled mutations.

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.10.0 instead of 2.9.1.
  • Added mutationQueueExecutionTimeout method to AppSyncClient Builder to specify execution timeout for mutations.

Enhancements

  • Added subscriptionsAutoReconnect method to AppSyncClient Builder to enable/disable subscription auto reconnect.

Bug Fixes

  • Fixed bug in Complex Objects logic. See issue #11
  • Fixed connection tracking bug in unsubscribe logic

Enhancements

  • Improved Subscription Connection handling by optimizing MQTT connections
  • Moved subscription setup and cancel requests to a separate thread to avoid blocking the calling thread

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.9.1 instead of 2.8.2.

Bug Fixes

  • Adjusted mutation processing logic to remove mutations from the queue only after they have been processed by the server and maintain sequential execution semantics. See issue #40, issue #33, issue #72, and issue #82

New Features

  • Added support for Delta Sync Feature Delta Sync allows you to perform automatic synchronization with an AWS AppSync GraphQL server. The client will perform reconnection, exponential backoff, and retries when network errors take place for simplified data replication to devices. For more details, please refer documentation.

Enhancements

  • Added reconnection logic to subscriptions. Subscriptions will be automatically reconnected if the device loses connectivity temporarily or transitions between networks. See issue #45

Bug Fixes

  • Fixed bug in connection logic to close MQTT connection if all subscriptions are cancelled. See issue #7

Misc. Updates

  • AWSAppSync now depends on AWSCore version 2.8.0 instead of 2.7.7.

Bug Fixes

  • Fixed bug in subscribe call that was setting the QoS to be 0. It is now correctly set to QoS 1. See issue #54
  • Fixed bug that was causing a ConcurrentModificationException in the logic to handle connection loss. See PR #41 and issue #53
  • Fixed null pointer exception in the AppSyncOfflineMutationInterceptor. See issue #51

New Features

  • Allow multiple active subscriptions while using API_KEY auth.

Enhancements

  • Adjusted logic for service call retries. Retries will have adjusted Jitter logic and calls will be retried until max exponential backoff time has been reached.

Bug Fixes

  • Fixed connection handling bug that was causing unexpected disconnects. See issue #22

New Features

  • Add support for AWSConfiguration through awsconfiguration.json in AWSAppSyncClient.

Bug Fixes

  • Fix a bug where multiple instances of same subscriptions when cancelled cause a ConcurrentModificationException. See issue #22

Enhancements

  • Add retries for service calls with error code 5XX and 429. GraphQL calls for mutation, query, and subscription will be retried. This does not include retrying the connection for subscription messages.

New Features

  • Adds support for AWS AppSync Defined Scalars such as AWSTimestamp.

Bug Fixes

  • Fix premature execution of onCompleted method of AppSyncSubscriptionCall.Callback.

Enhancements

  • Call onCompleted method of AppSyncSubscriptionCall.Callback when a subscription is disconnected.
  • Remove static references to context. See issue #13

Bug Fixes

  • Prevent crashing when retrieving credentials to sign AppSync requests. Errors will now be routed to the onError callback. See issue #16
  • Remove references to subscription callback when subscription is cancelled. See issue #13

Enhancements

  • Lazy load token in BasicCognitoUserPoolsAuthProvider.

Enhancements

  • Improve dependency injection for gradle plugin. Uses implementation instead of compile when using higher than gradle version 2. Note: gradle version 0 and 1 are note supported.
  • Improve BasicCognitoUserPoolsAuthProvider retrieval of token.

Bug Fixes

  • Fixed dependency com.moowork.gradle:gradle-node-plugin:1.0.0 in gradle plugin

New Features

  • Adds OpenID Connect (OIDC) support as an authorization option.

Enhancements

  • Improve synchronization of shared data structures in multiple subscriptions.
  • Fixed bug that caused sigv4 signing not to be attached when okhttp client was specified in builder. See PR #4

New Features

  • Subscription support.
  • Complex objects allow fields to be S3 objects.
  • Conflict resolution surfaces mutation conflicts so that they can be resolved through a callback.

New Features

  • Initial release with support for Cognito UserPools, Cognito Identity, and API key based authentication.
  • Optimistic updates allow the cache to be updated before a server response is received (i.e. slow network or offline)
  • Offline mutation allows mutations to be queued while client is offline until online again.