Skip to content

Commit d0163c0

Browse files
committed
Request refund from WooShippingLabelRefundViewModel
This commit introduces the functionality to request a refund for a shipping label directly from the `WooShippingLabelRefundViewModel`.
1 parent 8f5239c commit d0163c0

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/orders/wooshippinglabels/refund/WooShippingLabelRefundViewModel.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import androidx.lifecycle.viewModelScope
77
import com.woocommerce.android.R
88
import com.woocommerce.android.extensions.formatToLocalizedMedium
99
import com.woocommerce.android.tools.NetworkStatus
10+
import com.woocommerce.android.tools.SelectedSite
11+
import com.woocommerce.android.ui.orders.wooshippinglabels.networking.WooShippingLabelRepository
1012
import com.woocommerce.android.util.CurrencyFormatter
1113
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.Exit
1214
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ShowSnackbar
@@ -23,6 +25,8 @@ import javax.inject.Inject
2325
@HiltViewModel
2426
class WooShippingLabelRefundViewModel @Inject constructor(
2527
savedState: SavedStateHandle,
28+
private val selectedSite: SelectedSite,
29+
private val repository: WooShippingLabelRepository,
2630
private val networkStatus: NetworkStatus,
2731
private val currencyFormatter: CurrencyFormatter,
2832
) : ScopedViewModel(savedState) {
@@ -56,6 +60,19 @@ class WooShippingLabelRefundViewModel @Inject constructor(
5660
if (networkStatus.isConnected()) {
5761
_viewState.update { ViewState.Loading }
5862
launch {
63+
selectedSite.getOrNull()?.let {
64+
repository.refundLabel(
65+
it,
66+
arguments.orderId,
67+
arguments.shipment.labelId ?: return@launch
68+
)
69+
}?.takeIf { it.isError.not() }?.let {
70+
triggerEvent(ShowSnackbar(R.string.shipping_label_refund_success))
71+
triggerEvent(Exit)
72+
} ?: run {
73+
triggerEvent(ShowSnackbar(R.string.order_refunds_amount_refund_error))
74+
loadDataState()
75+
}
5976
}
6077
} else {
6178
triggerEvent(ShowSnackbar(R.string.offline_error))

0 commit comments

Comments
 (0)