From 729e4ea6fcf89f3d8132d31aa1fe7f7fb8ffb551 Mon Sep 17 00:00:00 2001 From: Egor Savkin Date: Fri, 12 Jul 2024 17:17:07 +0800 Subject: [PATCH] Add possibility for crateless options Signed-off-by: Egor Savkin --- static/js/shop/OptionsWrapper.jsx | 6 ++++-- static/js/shop/ProductCartItem.jsx | 9 +++++---- static/js/shop/SummaryCrateCard.jsx | 10 +++++----- static/js/shop_data.js | 9 ++++++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/static/js/shop/OptionsWrapper.jsx b/static/js/shop/OptionsWrapper.jsx index 73326c2..5a2103c 100644 --- a/static/js/shop/OptionsWrapper.jsx +++ b/static/js/shop/OptionsWrapper.jsx @@ -5,7 +5,8 @@ import {SummaryPopup} from "./options/SummaryPopup"; export function OptionsDialogWrapper({crate_index, card_index, first, last}) { const crate_id = useShopStore((state) => state.crates[crate_index].id); - const options = useShopStore((state) => state.crates[crate_index].items[card_index].options); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); + const options = useShopStore((state) => state.crates[crate_index].items[card_index][use_options]); const options_data = useShopStore((state) => state.crates[crate_index].items[card_index].options_data); const card_size = useShopStore((state) => state.crates[crate_index].items[card_index].size); const card_id = useShopStore((state) => state.crates[crate_index].items[card_index].id); @@ -53,7 +54,8 @@ export function OptionsDialogWrapper({crate_index, card_index, first, last}) { export function OptionsSummaryWrapper({crate_index, card_index}) { const card_id = useShopStore((state) => state.crates[crate_index].items[card_index].id); - const options = useShopStore((state) => state.crates[crate_index].items[card_index].options); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); + const options = useShopStore((state) => state.crates[crate_index].items[card_index][use_options]); const options_data = useShopStore((state) => state.crates[crate_index].items[card_index].options_data); return ( diff --git a/static/js/shop/ProductCartItem.jsx b/static/js/shop/ProductCartItem.jsx index 39b7fc7..559e692 100644 --- a/static/js/shop/ProductCartItem.jsx +++ b/static/js/shop/ProductCartItem.jsx @@ -25,7 +25,8 @@ export function ProductCartItem({card_index, crate_index, first, last}) { const card_counted_resources = useShopStore(state => state.crates[crate_index].items[card_index].counted_resources, compareObjectsEmptiness); const highlighted = useShopStore((state) => state.crates[crate_index].id === state.highlighted.crate && card_index === state.highlighted.card); - const options_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); + const warnings_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); const crate_id = useShopStore((state) => state.crates[crate_index].id); const setHighlight = useShopStore((state) => state.highlightCard); const removeHighlight = useShopStore((state) => state.highlightReset); @@ -35,9 +36,9 @@ export function ProductCartItem({card_index, crate_index, first, last}) { console.log("ProductCartItem renders: ", renderCount) - const options = !options_disabled && card && card.options && card.options.length > 0; - const warnings = !options_disabled && card_show_warnings && card_show_warnings.length > 0; - const resources = !options_disabled && card_counted_resources && card_counted_resources.length > 0; + const options = use_options && card && card[use_options] && card[use_options].length > 0; + const warnings = !warnings_disabled && card_show_warnings && card_show_warnings.length > 0; + const resources = !warnings_disabled && card_counted_resources && card_counted_resources.length > 0; return ( diff --git a/static/js/shop/SummaryCrateCard.jsx b/static/js/shop/SummaryCrateCard.jsx index 3edc55d..00c5658 100644 --- a/static/js/shop/SummaryCrateCard.jsx +++ b/static/js/shop/SummaryCrateCard.jsx @@ -23,16 +23,16 @@ export function SummaryCrateCard({crate_index, card_index}) { (a, b) => a.id === b.id); const card_show_warnings = useShopStore(state => state.crates[crate_index].items[card_index].show_warnings, compareObjectsEmptiness); const card_options_data = useShopStore(state => state.crates[crate_index].items[card_index].options_data, compareObjectsEmptiness); - const options_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); - + const warnings_disabled = useShopStore((state) => !!state.crateParams(state.crates[crate_index].crate_mode).warnings_disabled); + const use_options = useShopStore((state) => state.crateParams(state.crates[crate_index].crate_mode).options); // #!render_count console.log("SummaryCrateCard renders: ", renderCount) - const options = !options_disabled && card && card.options && card.options.length > 0; - const options_data = !options_disabled && card_options_data && Object.keys(card_options_data).length > 0; - const warnings = !options_disabled && card_show_warnings && card_show_warnings.length > 0; + const options = use_options && card && card[use_options] && card[use_options].length > 0; + const options_data = card_options_data && Object.keys(card_options_data).length > 0; + const warnings = !warnings_disabled && card_show_warnings && card_show_warnings.length > 0; return (