Skip to content
This repository was archived by the owner on Feb 4, 2025. It is now read-only.

Commit 54e2405

Browse files
Merge pull request #2972 from wordpress-mobile/order-deletion
Preparations to support order deletion from the app
2 parents 1dd9616 + 3f88c50 commit 54e2405

File tree

6 files changed

+32
-7
lines changed

6 files changed

+32
-7
lines changed

plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/di/WCDatabaseModule.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import dagger.Binds
55
import dagger.Module
66
import dagger.Provides
77
import org.wordpress.android.fluxc.module.DatabaseModule
8+
import org.wordpress.android.fluxc.persistence.OrderSqlUtils
89
import org.wordpress.android.fluxc.persistence.TransactionExecutor
910
import org.wordpress.android.fluxc.persistence.WCAndroidDatabase
1011
import org.wordpress.android.fluxc.persistence.dao.AddonsDao
1112
import org.wordpress.android.fluxc.persistence.dao.CouponsDao
1213
import org.wordpress.android.fluxc.persistence.dao.OrdersDao
14+
import javax.inject.Inject
1315
import javax.inject.Singleton
1416

1517
@Module(
@@ -49,6 +51,11 @@ interface WCDatabaseModule {
4951

5052
@Provides fun provideWooPaymentsDepositsOverviewDao(database: WCAndroidDatabase) =
5153
database.wooPaymentsDepositsOverviewDao
54+
55+
/**
56+
* OrderSqlUtils is a Kotlin object, we can't use [Inject] to inject it.
57+
*/
58+
@Provides fun provideOrderSqlUtils() = OrderSqlUtils
5259
}
5360
@Binds fun bindTransactionExecutor(database: WCAndroidDatabase): TransactionExecutor
5461
}

plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/model/WCOrderListDescriptor.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ import org.wordpress.android.fluxc.model.list.ListDescriptor
55
import org.wordpress.android.fluxc.model.list.ListDescriptorTypeIdentifier
66
import org.wordpress.android.fluxc.model.list.ListDescriptorUniqueIdentifier
77

8-
class WCOrderListDescriptor(
8+
data class WCOrderListDescriptor(
99
val site: SiteModel,
1010
val statusFilter: String? = null,
1111
val searchQuery: String? = null,
1212
val excludeFutureOrders: Boolean = false,
1313
val beforeFilter: String? = null,
1414
val afterFilter: String? = null,
1515
val productId: Long? = null,
16-
val customerId: Long? = null
16+
val customerId: Long? = null,
17+
val excludedIds: List<Long>? = null
1718
) : ListDescriptor {
1819
override val config: ListConfig = ListConfig.default
1920

plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/network/rest/wpcom/wc/order/OrderRestClient.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,8 @@ class OrderRestClient @Inject constructor(
152152
"before" to listDescriptor.beforeFilter,
153153
"after" to listDescriptor.afterFilter,
154154
"customer" to listDescriptor.customerId?.toString(),
155-
"product" to listDescriptor.productId?.toString()
155+
"product" to listDescriptor.productId?.toString(),
156+
"exclude" to listDescriptor.excludedIds?.joinToString()
156157
)
157158

158159
val response = wooNetwork.executeGetGsonRequest(

plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/persistence/OrderSqlUtils.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ object OrderSqlUtils {
5252
.execute()
5353
}
5454

55+
fun deleteOrderSummaryById(site: SiteModel, orderId: Long) {
56+
WellSql.delete(WCOrderSummaryModel::class.java)
57+
.where()
58+
.equals(WCOrderSummaryModelTable.LOCAL_SITE_ID, site.id)
59+
.equals(WCOrderSummaryModelTable.REMOTE_ORDER_ID, orderId)
60+
.endWhere()
61+
.execute()
62+
}
63+
5564
fun insertOrUpdateOrderStatusOption(orderStatus: WCOrderStatusModel): Int {
5665
val result = WellSql.select(WCOrderStatusModel::class.java)
5766
.where().beginGroup()

plugins/woocommerce/src/main/kotlin/org/wordpress/android/fluxc/store/OrderUpdateStore.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import org.wordpress.android.fluxc.model.order.UpdateOrderRequest
1717
import org.wordpress.android.fluxc.network.rest.wpcom.wc.WooResult
1818
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderDtoMapper.Companion.toDto
1919
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderRestClient
20+
import org.wordpress.android.fluxc.persistence.OrderSqlUtils
2021
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
2122
import org.wordpress.android.fluxc.persistence.dao.OrdersDaoDecorator
2223
import org.wordpress.android.fluxc.store.WCOrderStore.OnOrderChanged
@@ -37,7 +38,8 @@ class OrderUpdateStore @Inject internal constructor(
3738
private val coroutineEngine: CoroutineEngine,
3839
private val wcOrderRestClient: OrderRestClient,
3940
private val ordersDaoDecorator: OrdersDaoDecorator,
40-
private val siteSqlUtils: SiteSqlUtils
41+
private val siteSqlUtils: SiteSqlUtils,
42+
private val orderSqlUtils: OrderSqlUtils
4143
) {
4244
suspend fun updateCustomerOrderNote(
4345
orderId: Long,
@@ -276,6 +278,7 @@ class OrderUpdateStore @Inject internal constructor(
276278
WooResult(result.error)
277279
} else {
278280
ordersDaoDecorator.deleteOrder(site.localId(), orderId)
281+
orderSqlUtils.deleteOrderSummaryById(site, orderId)
279282
WooResult(Unit)
280283
}
281284
}

plugins/woocommerce/src/test/java/org/wordpress/android/fluxc/store/OrderUpdateStoreTest.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.CoreOrderStatus
2525
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderDto.Billing
2626
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderDto.Shipping
2727
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderRestClient
28+
import org.wordpress.android.fluxc.persistence.OrderSqlUtils
2829
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
2930
import org.wordpress.android.fluxc.persistence.dao.OrdersDaoDecorator
3031
import org.wordpress.android.fluxc.store.WCOrderStore.OnOrderChanged
@@ -45,6 +46,7 @@ class OrderUpdateStoreTest {
4546
private val siteSqlUtils: SiteSqlUtils = mock {
4647
on { getSiteWithLocalId(any()) } doReturn site
4748
}
49+
private val orderSqlUtils: OrderSqlUtils = mock()
4850
private val ordersDaoDecorator: OrdersDaoDecorator = mock {
4951
onBlocking { getOrder(TEST_REMOTE_ORDER_ID, TEST_LOCAL_SITE_ID) } doReturn initialOrder
5052
}
@@ -56,9 +58,10 @@ class OrderUpdateStoreTest {
5658
TestCoroutineScope().coroutineContext,
5759
mock()
5860
),
59-
orderRestClient,
60-
ordersDaoDecorator,
61-
siteSqlUtils
61+
wcOrderRestClient = orderRestClient,
62+
ordersDaoDecorator = ordersDaoDecorator,
63+
siteSqlUtils = siteSqlUtils,
64+
orderSqlUtils = orderSqlUtils
6265
)
6366
}
6467

@@ -518,6 +521,7 @@ class OrderUpdateStoreTest {
518521
)
519522

520523
verify(ordersDaoDecorator).deleteOrder(site.localId(), TEST_REMOTE_ORDER_ID)
524+
verify(orderSqlUtils).deleteOrderSummaryById(site, TEST_REMOTE_ORDER_ID)
521525
}
522526

523527
private companion object {

0 commit comments

Comments
 (0)