Skip to content

Conversation

@irfano
Copy link
Contributor

@irfano irfano commented Oct 23, 2025

Description

This adds a skeleton (shimmer) loading animation to the Bookings list, displayed when there’s no data and it’s being fetched.

Test Steps

You need to make a fresh install to reproduce the no-data case.

  1. Install the app.
  2. Launch it.
  3. Log in with a site that has bookings available.
  4. Open the Bookings tab.

Images/gif

Screenshot_20251023_143100
  • I have considered if this change warrants release notes and have added them to RELEASE-NOTES.txt if necessary. Use the "[Internal]" label for non-user-facing changes.

Replaced the circular progress indicator in the booking list screen with a new `BookingListIsLoading` composable that displays a skeleton/shimmer loading animation.
@wpmobilebot
Copy link
Collaborator

wpmobilebot commented Oct 23, 2025

📲 You can test the changes from this Pull Request in WooCommerce-Wear Android by scanning the QR code below to install the corresponding build.
App NameWooCommerce-Wear Android
Platform⌚️ Wear OS
FlavorJalapeno
Build TypeDebug
Commit8b65ac3
Direct Downloadwoocommerce-wear-prototype-build-pr14806-8b65ac3.apk

@wpmobilebot
Copy link
Collaborator

wpmobilebot commented Oct 23, 2025

📲 You can test the changes from this Pull Request in WooCommerce Android by scanning the QR code below to install the corresponding build.

App NameWooCommerce Android
Platform📱 Mobile
FlavorJalapeno
Build TypeDebug
Commit8b65ac3
Direct Downloadwoocommerce-prototype-build-pr14806-8b65ac3.apk

@codecov-commenter
Copy link

codecov-commenter commented Oct 23, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 38.17%. Comparing base (6389cb4) to head (8b65ac3).
⚠️ Report is 72 commits behind head on trunk.

Additional details and impacted files
@@            Coverage Diff            @@
##              trunk   #14806   +/-   ##
=========================================
  Coverage     38.17%   38.17%           
- Complexity    10076    10077    +1     
=========================================
  Files          2133     2133           
  Lines        120318   120318           
  Branches      16450    16450           
=========================================
+ Hits          45928    45932    +4     
+ Misses        69761    69759    -2     
+ Partials       4629     4627    -2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@AdamGrzybkowski AdamGrzybkowski self-assigned this Oct 23, 2025
Copy link
Contributor

@AdamGrzybkowski AdamGrzybkowski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Loogs good! Left some comments, so won't merge.

}

@Composable
private fun BookingListIsLoading(controlsState: BookingListControlsState) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⛏️ Nitpick, but the is in the name was a bit confusing, and I kinda expected two states for loading and not. Probably because that's a common prefix for Boolean values.

Suggested change
private fun BookingListIsLoading(controlsState: BookingListControlsState) {
private fun BookingListLoading(controlsState: BookingListControlsState) {

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I totally agree. Done: 8b65ac3

Comment on lines +261 to +273
Column(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
) {
SkeletonView(Modifier.size(173.dp, 22.dp))
Spacer(Modifier.height(2.dp))
SkeletonView(Modifier.size(256.dp, 18.dp))
Spacer(Modifier.height(8.dp))
SkeletonView(Modifier.size(138.dp, 22.dp))
}
HorizontalDivider(Modifier.padding(start = 16.dp))
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ We have a very similar skeleton layout here that tries to mimic the same component. Would it make sense to extract and reuse?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the design, the summary has 4 rows, and the list screen item has 3. But in the app, they’re both the same. Was this intentional, or did we overlook that the details view is different on design?

If we decided to keep them the same across both screens, then yes, it makes sense to use a single skeleton composable, and I can make that change here.

image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those used to be the same, but the design was changed after the implementation. I guess that makes sense to keep those separate. 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 I’m merging this, and I’ll also update the design on the booking details screen.

@irfano irfano merged commit 09fa497 into trunk Oct 24, 2025
16 checks passed
@irfano irfano deleted the issue/WOOMOB-1435-booking-list-loading-shimmer branch October 24, 2025 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants