Skip to content

Commit 5f284c8

Browse files
Merge branch 'trunk' into issue/12836-media-upload-wpv2
2 parents 333e94d + 81b12c9 commit 5f284c8

30 files changed

+1516
-381
lines changed

RELEASE-NOTES.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
*** PLEASE FOLLOW THIS FORMAT: [<priority indicator, more stars = higher priority>] <description> [<PR URL>]
22
*** Use [*****] to indicate smoke tests of all critical flows should be run on the final APK before release (e.g. major library or targetSdk updates).
33
*** For entries which are touching the Android Wear app's, start entry with `[WEAR]` too.
4-
21.3
5-
-----
6-
- [*] Switched to use `/wp/v2` for media uploads on Jetpack sites, this fixes media upload issues caused by XMLRPC problems [https://github.com/woocommerce/woocommerce-android/pull/12938]
74

85
21.2
96
- [Internal] Changed a way how authenticated web view opened in the IPP flows [https://github.com/woocommerce/woocommerce-android/pull/12908]
107
- [*] Fixed an inconsistent state while refreshing the orders list [https://github.com/woocommerce/woocommerce-android/pull/12948]
11-
-----
128
- [**][Payments] Fixed a bug when IPP onboarding was not possible to finish from the app [https://github.com/woocommerce/woocommerce-android/pull/12917]
139
- [*] Fixed shipping lines being editable at all states [https://github.com/woocommerce/woocommerce-android/pull/12890]
1410
- [*] Fixed a crash that occurred when tapping on the customer shipping address in the order details screen [https://github.com/woocommerce/woocommerce-android/pull/12920]
11+
- [*][Payments] Fixed a bug when loading indicator was shown forever after fetching of a receipt failed [https://github.com/woocommerce/woocommerce-android/pull/12950]
12+
- [**] Enables creating a new WP.com account during Jetpack activation flow [https://github.com/woocommerce/woocommerce-android/issues/11114]
13+
- [*] Switched to use `/wp/v2` for media uploads on Jetpack sites, this fixes media upload issues caused by XMLRPC problems [https://github.com/woocommerce/woocommerce-android/pull/12938]
1514

1615
21.1
1716
-----

WooCommerce/build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,9 +567,7 @@ static def loadPropertiesFromFile(inputFile) {
567567
}
568568

569569
def isLeakCanaryEnabled() {
570-
return project.properties.getOrDefault('enableLeakCanary', 'true') == 'true'
570+
return developerProperties.get("enable_leak_canary") ?: true
571571
}
572572

573-
574-
575573
apply from: '../config/gradle/build_optimization.gradle'

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/login/jetpack/wpcom/JetpackActivationWPComEmailViewModel.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.woocommerce.android.analytics.AnalyticsTracker
1010
import com.woocommerce.android.analytics.AnalyticsTrackerWrapper
1111
import com.woocommerce.android.model.JetpackStatus
1212
import com.woocommerce.android.ui.login.WPComLoginRepository
13-
import com.woocommerce.android.util.FeatureFlag
1413
import com.woocommerce.android.util.StringUtils
1514
import com.woocommerce.android.viewmodel.MultiLiveEvent
1615
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.Exit
@@ -30,7 +29,8 @@ import javax.inject.Inject
3029
class JetpackActivationWPComEmailViewModel @Inject constructor(
3130
savedStateHandle: SavedStateHandle,
3231
private val wpComLoginRepository: WPComLoginRepository,
33-
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper
32+
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper,
33+
private val stringUtils: StringUtils,
3434
) : ScopedViewModel(savedStateHandle) {
3535
private val navArgs: JetpackActivationWPComEmailFragmentArgs by savedStateHandle.navArgs()
3636

@@ -106,10 +106,10 @@ class JetpackActivationWPComEmailViewModel @Inject constructor(
106106
when (failure?.type) {
107107
AuthOptionsErrorType.UNKNOWN_USER -> {
108108
when {
109-
!StringUtils.isValidEmail(emailOrUsername) ->
109+
!stringUtils.isValidEmail(emailOrUsername) ->
110110
errorMessage.value = R.string.username_not_registered_wpcom
111111

112-
FeatureFlag.JETPACK_FLOW_ACCOUNT_CREATION.isEnabled() -> {
112+
else -> {
113113
triggerEvent(
114114
ShowMagicLinkScreen(
115115
emailOrUsername,
@@ -119,8 +119,6 @@ class JetpackActivationWPComEmailViewModel @Inject constructor(
119119
)
120120
isSignup = true
121121
}
122-
123-
else -> errorMessage.value = R.string.email_not_registered_wpcom
124122
}
125123
}
126124

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Column
55
import androidx.compose.foundation.layout.Row
66
import androidx.compose.foundation.layout.fillMaxWidth
77
import androidx.compose.foundation.layout.padding
8-
import androidx.compose.material.Divider
98
import androidx.compose.material.Text
109
import androidx.compose.runtime.Composable
1110
import androidx.compose.ui.Alignment
@@ -27,7 +26,6 @@ internal fun PurchasesSection(
2726
modifier: Modifier = Modifier
2827
) {
2928
Column(modifier) {
30-
Divider()
3129
MarkComplete(
3230
markOrderComplete = markOrderComplete,
3331
onMarkOrderCompleteChange = onMarkOrderCompleteChange
@@ -45,7 +43,6 @@ internal fun PurchasesSectionLandscape(
4543
modifier: Modifier = Modifier
4644
) {
4745
Column(modifier.fillMaxWidth()) {
48-
Divider()
4946
Row(verticalAlignment = Alignment.CenterVertically) {
5047
MarkComplete(
5148
markOrderComplete = markOrderComplete,
@@ -76,7 +73,7 @@ fun PurchasesSectionLandscapePreview() {
7673
}
7774

7875
@Composable
79-
private fun MarkComplete(
76+
internal fun MarkComplete(
8077
markOrderComplete: Boolean,
8178
onMarkOrderCompleteChange: (Boolean) -> Unit,
8279
modifier: Modifier = Modifier
@@ -102,7 +99,7 @@ private fun MarkComplete(
10299
}
103100

104101
@Composable
105-
private fun PurchaseButton(
102+
internal fun PurchaseButton(
106103
total: String?,
107104
onPurchaseShippingLabel: () -> Unit,
108105
modifier: Modifier = Modifier
@@ -127,7 +124,7 @@ private fun PurchaseButton(
127124

128125
@Preview
129126
@Composable
130-
private fun PurchasesSectionPreview() {
127+
internal fun PurchasesSectionPreview() {
131128
WooThemeWithBackground {
132129
PurchasesSection(
133130
total = null,

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

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import androidx.compose.ui.unit.dp
4444
import com.woocommerce.android.R
4545
import com.woocommerce.android.model.Address
4646
import com.woocommerce.android.ui.compose.animations.SkeletonView
47-
import com.woocommerce.android.ui.compose.component.BottomSheetHandle
4847
import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground
4948
import com.woocommerce.android.util.StringUtils
5049
import kotlinx.coroutines.launch
@@ -55,12 +54,12 @@ fun ShipmentDetails(
5554
scaffoldState: BottomSheetScaffoldState,
5655
markOrderComplete: Boolean,
5756
onMarkOrderCompleteChange: (Boolean) -> Unit,
58-
onPurchaseShippingLabel: () -> Unit,
5957
modifier: Modifier = Modifier,
58+
handlerModifier: Modifier = Modifier,
6059
) {
6160
val scope = rememberCoroutineScope()
6261
Column(
63-
modifier
62+
handlerModifier
6463
.clickable(
6564
onClick = {
6665
scope.launch {
@@ -79,7 +78,16 @@ fun ShipmentDetails(
7978
verticalArrangement = Arrangement.Center,
8079
horizontalAlignment = Alignment.CenterHorizontally
8180
) {
82-
BottomSheetHandle(modifier = Modifier.padding(top = dimensionResource(R.dimen.minor_100)))
81+
Icon(
82+
modifier = Modifier.padding(top = dimensionResource(R.dimen.minor_100)),
83+
painter = if (scaffoldState.bottomSheetState.isExpanded) {
84+
painterResource(R.drawable.ic_arrow_down_26)
85+
} else {
86+
painterResource(R.drawable.ic_arrow_up_26)
87+
},
88+
contentDescription = stringResource(R.string.order_creation_expand_collapse_order_totals),
89+
tint = colorResource(id = R.color.color_primary),
90+
)
8391
AnimatedVisibility(visible = scaffoldState.bottomSheetState.isCollapsed) {
8492
Text(
8593
text = stringResource(R.string.shipping_label_shipment_details_title),
@@ -90,16 +98,12 @@ fun ShipmentDetails(
9098
}
9199
}
92100
if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE) {
93-
ShipmentDetailsLandscape(
94-
markOrderComplete = markOrderComplete,
95-
onMarkOrderCompleteChange = onMarkOrderCompleteChange,
96-
onPurchaseShippingLabel = onPurchaseShippingLabel
97-
)
101+
ShipmentDetailsLandscape(modifier = modifier)
98102
} else {
99103
ShipmentDetailsPortrait(
104+
modifier = modifier,
100105
markOrderComplete = markOrderComplete,
101-
onMarkOrderCompleteChange = onMarkOrderCompleteChange,
102-
onPurchaseShippingLabel = onPurchaseShippingLabel
106+
onMarkOrderCompleteChange = onMarkOrderCompleteChange
103107
)
104108
}
105109
}
@@ -108,7 +112,6 @@ fun ShipmentDetails(
108112
private fun ShipmentDetailsPortrait(
109113
markOrderComplete: Boolean,
110114
onMarkOrderCompleteChange: (Boolean) -> Unit,
111-
onPurchaseShippingLabel: () -> Unit,
112115
modifier: Modifier = Modifier,
113116
) {
114117
Column(modifier) {
@@ -134,20 +137,16 @@ private fun ShipmentDetailsPortrait(
134137
modifier = Modifier.padding(dimensionResource(R.dimen.major_100))
135138
)
136139
}
137-
PurchasesSection(
138-
total = "$120.99",
140+
Divider()
141+
MarkComplete(
139142
markOrderComplete = markOrderComplete,
140-
onMarkOrderCompleteChange = onMarkOrderCompleteChange,
141-
onPurchaseShippingLabel = onPurchaseShippingLabel
143+
onMarkOrderCompleteChange = onMarkOrderCompleteChange
142144
)
143145
}
144146
}
145147

146148
@Composable
147149
private fun ShipmentDetailsLandscape(
148-
markOrderComplete: Boolean,
149-
onMarkOrderCompleteChange: (Boolean) -> Unit,
150-
onPurchaseShippingLabel: () -> Unit,
151150
modifier: Modifier = Modifier,
152151
) {
153152
Column(modifier) {
@@ -185,12 +184,6 @@ private fun ShipmentDetailsLandscape(
185184
)
186185
}
187186
}
188-
PurchasesSectionLandscape(
189-
total = "$120.99",
190-
markOrderComplete = markOrderComplete,
191-
onMarkOrderCompleteChange = onMarkOrderCompleteChange,
192-
onPurchaseShippingLabel = onPurchaseShippingLabel
193-
)
194187
}
195188
}
196189

@@ -273,11 +266,7 @@ private fun OrderDetailsSectionLandscape(
273266
fun ShipmentDetailsLandscapePreview() {
274267
WooThemeWithBackground {
275268
Surface {
276-
ShipmentDetailsLandscape(
277-
markOrderComplete = false,
278-
onMarkOrderCompleteChange = {},
279-
onPurchaseShippingLabel = {}
280-
)
269+
ShipmentDetailsLandscape()
281270
}
282271
}
283272
}

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

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.woocommerce.android.ui.orders.wooshippinglabels
33
import android.content.res.Configuration
44
import androidx.compose.foundation.background
55
import androidx.compose.foundation.clickable
6+
import androidx.compose.foundation.layout.Box
67
import androidx.compose.foundation.layout.Column
78
import androidx.compose.foundation.layout.Row
89
import androidx.compose.foundation.layout.fillMaxSize
@@ -12,6 +13,7 @@ import androidx.compose.foundation.rememberScrollState
1213
import androidx.compose.foundation.shape.RoundedCornerShape
1314
import androidx.compose.foundation.verticalScroll
1415
import androidx.compose.material.BottomSheetScaffold
16+
import androidx.compose.material.BottomSheetScaffoldState
1517
import androidx.compose.material.ExperimentalMaterialApi
1618
import androidx.compose.material.Icon
1719
import androidx.compose.material.IconButton
@@ -27,6 +29,7 @@ import androidx.compose.runtime.mutableStateOf
2729
import androidx.compose.runtime.remember
2830
import androidx.compose.ui.Alignment
2931
import androidx.compose.ui.Modifier
32+
import androidx.compose.ui.platform.LocalConfiguration
3033
import androidx.compose.ui.res.colorResource
3134
import androidx.compose.ui.res.dimensionResource
3235
import androidx.compose.ui.res.painterResource
@@ -57,17 +60,52 @@ fun WooShippingLabelCreationScreen(
5760
onPurchaseShippingLabel: () -> Unit
5861
) {
5962
val scaffoldState = rememberBottomSheetScaffoldState()
63+
Box(modifier = Modifier.fillMaxSize()) {
64+
LabelCreationScreenWithBottomSheet(
65+
modifier = modifier,
66+
onSelectPackageClick = onSelectPackageClick,
67+
scaffoldState = scaffoldState
68+
)
69+
val elevation = if (scaffoldState.bottomSheetState.isCollapsed) { 0.dp } else { 4.dp }
70+
Box(
71+
modifier = Modifier
72+
.fillMaxWidth()
73+
.align(Alignment.BottomCenter)
74+
) {
75+
Surface(elevation = elevation) {
76+
if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE) {
77+
PurchasesSectionLandscape(
78+
total = "$34.89",
79+
markOrderComplete = true,
80+
onMarkOrderCompleteChange = { },
81+
onPurchaseShippingLabel = onPurchaseShippingLabel
82+
)
83+
} else {
84+
PurchaseButton(total = "$34.89", onPurchaseShippingLabel = { })
85+
}
86+
}
87+
}
88+
}
89+
}
90+
91+
@OptIn(ExperimentalMaterialApi::class)
92+
@Composable
93+
private fun LabelCreationScreenWithBottomSheet(
94+
modifier: Modifier = Modifier,
95+
onSelectPackageClick: () -> Unit,
96+
scaffoldState: BottomSheetScaffoldState
97+
) {
6098
BottomSheetScaffold(
6199
sheetContent = {
62100
val markOrderComplete = remember { mutableStateOf(false) }
63101
ShipmentDetails(
102+
modifier = Modifier.padding(bottom = 74.dp),
64103
scaffoldState = scaffoldState,
65104
markOrderComplete = markOrderComplete.value,
66-
onMarkOrderCompleteChange = { markOrderComplete.value = it },
67-
onPurchaseShippingLabel = onPurchaseShippingLabel
105+
onMarkOrderCompleteChange = { markOrderComplete.value = it }
68106
)
69107
},
70-
sheetPeekHeight = 64.dp,
108+
sheetPeekHeight = 132.dp,
71109
scaffoldState = scaffoldState,
72110
topBar = {
73111
TopAppBar(

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/cardreader/payment/CardReaderPaymentViewModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,7 @@ class CardReaderPaymentViewModel
744744
errorDescription = receiptResult.exceptionOrNull()?.message ?: "Unknown error",
745745
)
746746
triggerEvent(ShowSnackbar(R.string.receipt_fetching_error))
747+
onCancelPaymentFlow()
747748
}
748749
}
749750
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/payments/methodselection/SelectPaymentMethodFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class SelectPaymentMethodFragment : BaseFragment(R.layout.fragment_select_paymen
213213
if (findNavController().currentDestination?.id == R.id.selectPaymentMethodFragment) {
214214
findNavController().navigate(
215215
SelectPaymentMethodFragmentDirections
216-
.actionSelectPaymentMethodFragmentToCardReaderPaymentFlow(
216+
.actionWooPosSelectPaymentMethodFragmentToCardReaderPaymentFlow(
217217
event.cardReaderFlowParam,
218218
event.cardReaderType
219219
)

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/selector/VariationListHandler.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ class VariationListHandler @Inject constructor(private val repository: Variation
1515

1616
fun getVariationsFlow(productId: Long) = repository.observeVariations(productId)
1717

18+
fun canLoadMore(): Boolean {
19+
return canLoadMore
20+
}
21+
1822
suspend fun fetchVariations(productId: Long, forceRefresh: Boolean = false): Result<Unit> = mutex.withLock {
1923
// Reset the offset
2024
offset = 0
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.woocommerce.android.ui.woopos.home.items
2+
3+
sealed class WooPosBaseViewState(
4+
open val reloadingProductsWithPullToRefresh: Boolean
5+
)
6+
7+
interface ContentViewState {
8+
val items: List<WooPosItem>
9+
val loadingMore: Boolean
10+
val reloadingProductsWithPullToRefresh: Boolean
11+
}

0 commit comments

Comments
 (0)