@@ -118,45 +85,45 @@ const NewItemPage = () => {
{variables.getMessage('marketplace:product.details')}
- {item?.updated_at &&
+ {selectedItem?.updated_at &&
moreInfoItem(
,
variables.getMessage('marketplace:product.updated_at'),
formattedDate,
)}
- {item?.quotes &&
+ {selectedItem?.quotes &&
moreInfoItem(
,
variables.getMessage('marketplace:product.no_quotes'),
- item.quotes.length,
+ selectedItem.quotes.length,
)}
- {item?.photos &&
+ {selectedItem?.photos &&
moreInfoItem(
,
variables.getMessage('marketplace:product.no_images'),
- item.photos.length,
+ selectedItem.photos.length,
)}
- {item?.quotes && item?.language
+ {selectedItem?.quotes && selectedItem?.language
? moreInfoItem(
,
variables.getMessage('settings:sections.language.title'),
- languageNames.of(item.language),
+ languageNames.of(selectedItem.language),
)
: null}
- {/*{moreInfoItem(
+ {moreInfoItem(
,
variables.getMessage('settings:sections.background.type.title'),
variables.getMessage(
- 'marketplace:' + this.getName(this.props.data.data.type),
+ 'marketplace:' + getName(selectedItem.type),
) || 'marketplace',
- )}*/}
+ )}
);
};
const ItemShowcase = () => {
- switch (item.type) {
+ switch (selectedItem.type) {
case 'quotes':
return (
<>
@@ -166,7 +133,7 @@ const NewItemPage = () => {
| {key} |
@@ -204,7 +171,7 @@ const NewItemPage = () => {
this.incrementCount('settings')}>
- {this.state.count !== this.props.data.data.settings.length
+ {count !== selectedItem.settings.length
? variables.getMessage('marketplace:product.show_all')
: variables.getMessage('marketplace:product.show_less')}
@@ -221,8 +188,8 @@ const NewItemPage = () => {
let languageNames = new Intl.DisplayNames([shortLocale], { type: 'language' });
let dateObj, formattedDate;
- if (item.updated_at) {
- dateObj = new Date(item.updated_at);
+ if (selectedItem.updated_at) {
+ dateObj = new Date(selectedItem.updated_at);
formattedDate = new Intl.DateTimeFormat(shortLocale, {
year: 'numeric',
month: 'long',
@@ -241,7 +208,7 @@ const NewItemPage = () => {
onRequestClose={() => setShareModal(false)}
>
setShareModal(false)}
/>
@@ -267,18 +234,18 @@ const NewItemPage = () => {
{moreInfoItem(
,
variables.getMessage('marketplace:product.created_by'),
- item.author,
+ selectedItem.author,
)}
{itemWarning()}
- {/*{this.props.data.data.photos && (
+ {selectedItem.photos && (
)}
- {this.props.data.data.settings && (
+ {/*{selectedItem.settings && (
{
{variables.getMessage('marketplace:product.description')}
- {item.description}
+ {selectedItem.description}
@@ -301,7 +268,7 @@ const NewItemPage = () => {
@@ -309,7 +276,7 @@ const NewItemPage = () => {
className="icon"
alt="icon"
draggable={false}
- src={item.icon_url}
+ src={selectedItem.icon_url}
onError={(e) => {
e.target.onerror = null;
e.target.src = placeholderIcon;
@@ -329,7 +296,7 @@ const NewItemPage = () => {
)}
)}
- {item.sideload !== true && (
+ {selectedItem.sideload !== true && (
)}
- {/*}
- {this.props.data.data.in_collections?.length > 0 && (
+ {selectedItem.in_collections?.length > 0 && (
@@ -364,18 +330,18 @@ const NewItemPage = () => {
+ /*onClick={() =>
this.props.toggleFunction(
'collection',
- this.props.data.data.in_collections[0].name,
+ selectedItem.in_collections[0].name,
)
- }
+ }*/
>
- {this.props.data.data.in_collections[0].display_name}
+ {selectedItem.in_collections[0].display_name}
- )}*/}
+ )}
diff --git a/src/features/misc/views/Marketplace.jsx b/src/features/misc/views/Marketplace.jsx
index 8ba726c0..7ea7fb62 100644
--- a/src/features/misc/views/Marketplace.jsx
+++ b/src/features/misc/views/Marketplace.jsx
@@ -1,94 +1,42 @@
-import variables from 'config/variables';
-import { memo, useState, useEffect } from 'react';
-
+import { memo, useEffect } from 'react';
+import { useMarketData } from 'features/marketplace/api/MarketplaceDataContext';
import MarketplaceTab from '../../marketplace/views/Browse';
-import { sortItems } from '../../marketplace/api';
import { NewItems as Items } from '../../marketplace/components/Items/NewItems';
import { useTab } from 'components/Elements/MainModal/backend/TabContext';
import { NewItemPage } from '../../marketplace/views/newItemPage';
import { AnimatePresence, motion } from 'framer-motion';
function Marketplace(props) {
- const [done, setDone] = useState(false);
- const [items, setItems] = useState([]);
- const [type, setType] = useState('all');
- const [selectedItem, setSelectedItem] = useState(null);
+ const { done, items, getItems } = useMarketData();
const { subTab } = useTab();
- const controller = new AbortController();
-
- async function getItems() {
- setDone(false);
- const dataURL =
- variables.constants.API_URL +
- (type === 'collections' ? '/marketplace/collections' : '/marketplace/items/' + type);
-
- const { data } = await (
- await fetch(dataURL, {
- signal: controller.signal,
- })
- ).json();
-
- if (controller.signal.aborted === true) {
- return;
- }
-
- setItems(sortItems(data, 'z-a'));
- setDone(true);
- }
-
useEffect(() => {
if (navigator.onLine === false || localStorage.getItem('offlineMode') === 'true') {
return;
}
-
getItems();
}, []);
return (
- {
- /* props.changeTab(type)} current="marketplace" modalClose={props.modalClose}>
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
- */
- },
- (
-
-
- {subTab === '' ? (
-
-
-
- ) : (
-
-
-
- )}
-
-
- )
+ {subTab === '' ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+
);
}
diff --git a/src/i18n/en-GB/main.yml b/src/i18n/en-GB/main.yml
index 6001e836..8c2fdc54 100644
--- a/src/i18n/en-GB/main.yml
+++ b/src/i18n/en-GB/main.yml
@@ -72,7 +72,7 @@ modals:
file_upload_error: File is over 2MB
navbar:
settings: Settings
- addons: Add-ons
+ addons: Library
marketplace: Marketplace
error_boundary:
title: Error