From 013bb3394a06970312c1eccf2fd9520d3633e931 Mon Sep 17 00:00:00 2001 From: Edward <> Date: Fri, 13 Dec 2024 15:48:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=84=E7=90=86getcartById=20=E5=BD=93ca?= =?UTF-8?q?rt=E4=B8=BA=E7=A9=BA=E6=97=B6=E5=80=99=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E8=BF=94=E5=9B=9Enull=20=E4=B8=8D=E5=86=8D=E7=BB=8F=E8=BF=87js?= =?UTF-8?q?on=E8=BD=ACmodel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/shopify/src/shopify_cart.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/shopify/src/shopify_cart.dart b/lib/shopify/src/shopify_cart.dart index cfbf1e8d..3a3c6901 100644 --- a/lib/shopify/src/shopify_cart.dart +++ b/lib/shopify/src/shopify_cart.dart @@ -1,3 +1,4 @@ +import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:shopify_flutter/graphql_operations/storefront/mutations/cart/cart_buyer_identity_update.dart'; import 'package:shopify_flutter/graphql_operations/storefront/mutations/cart/cart_create.dart'; import 'package:shopify_flutter/graphql_operations/storefront/mutations/cart/cart_discount_code_update_mutation.dart'; @@ -7,7 +8,6 @@ import 'package:shopify_flutter/graphql_operations/storefront/mutations/cart/car import 'package:shopify_flutter/graphql_operations/storefront/mutations/cart/cart_note_update.dart'; import 'package:shopify_flutter/graphql_operations/storefront/queries/get_cart_by_id.dart'; import 'package:shopify_flutter/mixins/src/shopify_error.dart'; -import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:shopify_flutter/models/src/cart/cart_model.dart'; import 'package:shopify_flutter/shopify/src/shopify_localization.dart'; @@ -25,7 +25,7 @@ class ShopifyCart with ShopifyError { /// Returns a [Cart] object. /// /// Returns the [Cart] object of the Cart with the [cartId]. - Future getCartById(String cartId) async { + Future getCartById(String cartId) async { final cartById = WatchQueryOptions( document: gql(getCartByIdQuery), variables: { @@ -37,6 +37,10 @@ class ShopifyCart with ShopifyError { QueryResult result = await _graphQLClient!.query(cartById); checkForError(result); + if (result.data!['cart'] == null) { + return null; + } + return Cart.fromJson(result.data!['cart'] ?? const {}); } From a82ff663f5017fbc7c9428f9daef89f5bb439757 Mon Sep 17 00:00:00 2001 From: Edward <> Date: Mon, 30 Dec 2024 15:26:49 +0800 Subject: [PATCH 2/2] Add shopping cart reverse order parameters --- .../cart/cart_discount_code_update_mutation.dart | 4 ++-- .../mutations/cart/cart_line_item_add.dart | 4 ++-- .../mutations/cart/cart_line_item_remove.dart | 4 ++-- .../mutations/cart/cart_line_item_update.dart | 4 ++-- .../storefront/queries/get_cart_by_id.dart | 4 ++-- lib/shopify/src/shopify_cart.dart | 15 ++++++++++++--- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/lib/graphql_operations/storefront/mutations/cart/cart_discount_code_update_mutation.dart b/lib/graphql_operations/storefront/mutations/cart/cart_discount_code_update_mutation.dart index c401a330..7ac4a93d 100644 --- a/lib/graphql_operations/storefront/mutations/cart/cart_discount_code_update_mutation.dart +++ b/lib/graphql_operations/storefront/mutations/cart/cart_discount_code_update_mutation.dart @@ -1,6 +1,6 @@ /// mutation to update cart discount codes const String updateCartDiscountCodesMutation = r''' -mutation cartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!], $country: CountryCode) @inContext(country: $country) { +mutation cartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!], $country: CountryCode, $reverse: Boolean!) @inContext(country: $country) { cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) { cart { id @@ -71,7 +71,7 @@ mutation cartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!], $count } } } - lines(first: 250, reverse: true) { + lines(first: 250, reverse: $reverse) { edges { cursor node { diff --git a/lib/graphql_operations/storefront/mutations/cart/cart_line_item_add.dart b/lib/graphql_operations/storefront/mutations/cart/cart_line_item_add.dart index 8c204a7d..47fa98c8 100644 --- a/lib/graphql_operations/storefront/mutations/cart/cart_line_item_add.dart +++ b/lib/graphql_operations/storefront/mutations/cart/cart_line_item_add.dart @@ -1,6 +1,6 @@ /// mutation to add a line item to the cart const String addLineItemToCartMutation = r''' -mutation cartLineItemAdd($country: CountryCode, $cartId: ID!, $lines: [CartLineInput!]!) @inContext(country: $country) { +mutation cartLineItemAdd($country: CountryCode, $cartId: ID!, $lines: [CartLineInput!]!, $reverse: Boolean!) @inContext(country: $country) { cartLinesAdd(cartId: $cartId, lines: $lines) { cart { id @@ -71,7 +71,7 @@ mutation cartLineItemAdd($country: CountryCode, $cartId: ID!, $lines: [CartLineI } } } - lines(first: 250, reverse: true) { + lines(first: 250, reverse: $reverse) { edges { cursor node { diff --git a/lib/graphql_operations/storefront/mutations/cart/cart_line_item_remove.dart b/lib/graphql_operations/storefront/mutations/cart/cart_line_item_remove.dart index 6e18043b..275cb771 100644 --- a/lib/graphql_operations/storefront/mutations/cart/cart_line_item_remove.dart +++ b/lib/graphql_operations/storefront/mutations/cart/cart_line_item_remove.dart @@ -1,6 +1,6 @@ /// mutation to remove a line item from the cart const String removeLineItemFromCartMutation = r''' -mutation cartLinesRemove($country: CountryCode, $cartId: ID!, $lineIds: [ID!]!) @inContext(country: $country) { +mutation cartLinesRemove($country: CountryCode, $cartId: ID!, $lineIds: [ID!]!, $reverse: Boolean!) @inContext(country: $country) { cartLinesRemove(cartId: $cartId, lineIds: $lineIds) { cart { id @@ -71,7 +71,7 @@ mutation cartLinesRemove($country: CountryCode, $cartId: ID!, $lineIds: [ID!]!) } } } - lines(first: 250, reverse: true) { + lines(first: 250, reverse: $reverse) { edges { cursor node { diff --git a/lib/graphql_operations/storefront/mutations/cart/cart_line_item_update.dart b/lib/graphql_operations/storefront/mutations/cart/cart_line_item_update.dart index 9b45730e..5d2524d4 100644 --- a/lib/graphql_operations/storefront/mutations/cart/cart_line_item_update.dart +++ b/lib/graphql_operations/storefront/mutations/cart/cart_line_item_update.dart @@ -1,6 +1,6 @@ /// mutation to update a line item in the cart const String updateLineItemInCartMutation = r''' -mutation cartLinesUpdate($country: CountryCode, $cartId: ID!, $lines: [CartLineUpdateInput!]!) @inContext(country: $country) { +mutation cartLinesUpdate($country: CountryCode, $cartId: ID!, $lines: [CartLineUpdateInput!]!, $reverse: Boolean!) @inContext(country: $country) { cartLinesUpdate(cartId: $cartId, lines: $lines) { cart { id @@ -71,7 +71,7 @@ mutation cartLinesUpdate($country: CountryCode, $cartId: ID!, $lines: [CartLineU } } } - lines(first: 250, reverse: true) { + lines(first: 250, reverse: $reverse) { edges { cursor node { diff --git a/lib/graphql_operations/storefront/queries/get_cart_by_id.dart b/lib/graphql_operations/storefront/queries/get_cart_by_id.dart index 392f34ff..3c916207 100644 --- a/lib/graphql_operations/storefront/queries/get_cart_by_id.dart +++ b/lib/graphql_operations/storefront/queries/get_cart_by_id.dart @@ -1,6 +1,6 @@ /// query to get cart by id const String getCartByIdQuery = r''' -query cart($country: CountryCode, $id: ID!) @inContext(country: $country) { +query cart($country: CountryCode, $id: ID!, $reverse: Boolean!) @inContext(country: $country) { cart(id: $id) { id checkoutUrl @@ -98,7 +98,7 @@ query cart($country: CountryCode, $id: ID!) @inContext(country: $country) { } } } - lines(first: 250, reverse: true) { + lines(first: 250, reverse: $reverse) { edges { cursor node { diff --git a/lib/shopify/src/shopify_cart.dart b/lib/shopify/src/shopify_cart.dart index 3a3c6901..3ea655d2 100644 --- a/lib/shopify/src/shopify_cart.dart +++ b/lib/shopify/src/shopify_cart.dart @@ -25,12 +25,13 @@ class ShopifyCart with ShopifyError { /// Returns a [Cart] object. /// /// Returns the [Cart] object of the Cart with the [cartId]. - Future getCartById(String cartId) async { + Future getCartById(String cartId, {bool reverse = false}) async { final cartById = WatchQueryOptions( document: gql(getCartByIdQuery), variables: { 'id': cartId, 'country': ShopifyLocalization.countryCode, + 'reverse': reverse }, fetchPolicy: ShopifyConfig.fetchPolicy, ); @@ -70,6 +71,7 @@ class ShopifyCart with ShopifyError { Future addLineItemsToCart({ required String cartId, required List cartLineInputs, + bool reverse = false, }) async { final lineInputs = cartLineInputs.map((e) { final json = e.toJson(); @@ -81,7 +83,8 @@ class ShopifyCart with ShopifyError { variables: { 'cartId': cartId, 'lines': lineInputs, - 'country': ShopifyLocalization.countryCode + 'country': ShopifyLocalization.countryCode, + 'reverse': reverse }, ); QueryResult result = await _graphQLClient!.mutate(addLineItem); @@ -95,13 +98,15 @@ class ShopifyCart with ShopifyError { Future removeLineItemsFromCart({ required String cartId, required List lineIds, + bool reverse = false, }) async { final MutationOptions removeLineItem = MutationOptions( document: gql(removeLineItemFromCartMutation), variables: { 'cartId': cartId, 'lineIds': lineIds, - 'country': ShopifyLocalization.countryCode + 'country': ShopifyLocalization.countryCode, + 'reverse': reverse }, ); QueryResult result = await _graphQLClient!.mutate(removeLineItem); @@ -115,6 +120,7 @@ class ShopifyCart with ShopifyError { Future updateLineItemsInCart({ required String cartId, required List cartLineInputs, + bool reverse = false, }) async { final lineInputs = cartLineInputs.map((e) => e.toJson()).toList(); final MutationOptions updateLineItem = MutationOptions( @@ -123,6 +129,7 @@ class ShopifyCart with ShopifyError { 'cartId': cartId, 'lines': lineInputs, 'country': ShopifyLocalization.countryCode, + 'reverse': reverse }, ); QueryResult result = await _graphQLClient!.mutate(updateLineItem); @@ -156,6 +163,7 @@ class ShopifyCart with ShopifyError { Future updateCartDiscountCodes({ required String cartId, required List discountCodes, + bool reverse = false, }) async { final MutationOptions updateDiscountCodes = MutationOptions( document: gql(updateCartDiscountCodesMutation), @@ -163,6 +171,7 @@ class ShopifyCart with ShopifyError { 'cartId': cartId, 'discountCodes': discountCodes, 'country': ShopifyLocalization.countryCode, + 'reverse': reverse }, ); QueryResult result = await _graphQLClient!.mutate(updateDiscountCodes);