Removed default values from `marketplaceViewProps` – we are now handling this in the tracking function.
Changed `selectedTab` dependency of `useEffect` hook in content.tsx to `query?.tab`. The `selectedTab` state was being reset after (or at least not at the same time as) the change of the tab param in the query string. For this reason, we were recording two page views when you changed from Extensions tab and Shipping category to Themes tab. This doesn't seem to break anything! We are still setting the `selectedTab` based on the query string in the `Tabs` component, so they should still be in sync.
Removed the condition skipping marketplace page view when there was no `prop.view`. This meant that when you switched to the Discovery tab from another tab, we weren't recording the page view.
Also setting default category prop `_all` when no category is specified on extensions, themes and search tabs. This allows us to bundle the default views of those tabs with the views got by clicking on the "All" category link.
Addressing linter errors.
* Marketplace: Add the right URL parameters to product URLs
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: raicem <unalancem@gmail.com>
Co-authored-by: github-actions <github-actions@github.com>
- `ProductListContextProvider` provides `setIsLoading` function as well as `isLoading`.
- `Discover` uses these values from context, instead of keeping a loading state in itself.
- `FeedbackModal` calls `maybSetTimeout` when `isLoading` changes. If `isLoading` isn't truthy, and snackbar hasn't already rendered, it sets a timeout of 5 seconds to show it.
- Removed wrapping <WooFooterItem> from around Footer component, so it's no longer a child of the WooCommerce Admin `.woocommerce-layout__footer` footer.
- Removed the `position: relative` from `.woocommerce-layout__footer`. It needs to be `position: fixed`.
- Added FooterContent component to Footer, to allow the layout we want.
- Changed use of context. This now only has states for the selected tab and loading state.
- We use this context in `Tabs` and `Content` to keep track of which tab is selected, and set the selected tab.
- We also use it in `Discover` and `Extensions`, which both report loading state to the context. This allows us to use it to only render the snackbar when loading is complete.
- Extensions: moved `productList` and `setProductList` and logic for getting product list from the context provider to a state in this component. We don't need to share the list of products in the context.
- Renamed `ProductListContext`, `ProductListContextProvider` and `productListContextValue` to more generic `MarketplaceContext`, `MarketplaceContextProvider` and `marketplaceContextValue`.
- Renamed a constant and created constants for API paths.
- Only shows snackbar after content has loaded, and after a timeout. We set a date `marketplace_redesign_2023_last_shown_date` in local storage to ensure we only show one snackbar.
We were hitting the WCCOM API directly from the front end. However,
that limits of in terms of caching and reducing the load on WCCOM.
To prevent that, we added a REST API endpoint. This endpoint
fetches discover page content from WCCOM and puts in a transient.
This is actually how the page works in the previous version. So
we were able to reuse a lot of the code.