feat: predvolena cenovka je sablona Super vyhodne | Cervena (neda sa zmazat)
- volba Predvolena COOP cenovka v produkte zrusena; produkty bez sablony dostanu predvolenu sablonu automaticky - sablony z prehliadaca (localStorage) sa pridavaju len ak este nie su ulozene v databaze, zmazane sablony sa uz nevracaju Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
184e55ad5b
commit
b747a3ba74
5 files changed
+56
-10
No files matched your search
+30
-1
@@ -71,7 +71,8 @@ export default function Home() {
|
||||
if (Array.isArray(parsed)) {
|
||||
const existingIds = new Set(loaded.map((b) => b.id));
|
||||
for (const b of parsed) {
|
||||
if (!existingIds.has(b.id)) {
|
||||
// len šablóny neuložené do databázy – zmazané šablóny sa z prehliadača nesmú vrátiť
|
||||
if (!existingIds.has(b.id) && String(b.id).startsWith('badge-')) {
|
||||
loaded.push(b);
|
||||
existingIds.add(b.id);
|
||||
}
|
||||
@@ -92,6 +93,34 @@ export default function Home() {
|
||||
fetchBadges();
|
||||
}, [isBadgeEditorOpen]);
|
||||
|
||||
// Predvolená cenovka: produkty bez šablóny (nové, importované bez zhody, staršie s pôvodnou COOP cenovkou)
|
||||
// dostanú predvolenú šablónu z databázy
|
||||
const defaultBadge = availableBadges.find((b) => b.isDefault);
|
||||
useEffect(() => {
|
||||
if (!defaultBadge) return;
|
||||
// jednorazové doplnenie chýbajúcej cenovky do dát (zmení stav len keď nejaký produkt šablónu nemá)
|
||||
// eslint-disable-next-line react-hooks/set-state-in-effect
|
||||
setCampaign((prev) => {
|
||||
let changed = false;
|
||||
const modules = prev.modules.map((m) => {
|
||||
if (m.type !== 'products_grid') return m;
|
||||
const products = m.data.products || [];
|
||||
if (!products.some((p: ProductItem) => !p.badgeCustomTemplate && !p.customBadgePngUrl)) return m;
|
||||
changed = true;
|
||||
return {
|
||||
...m,
|
||||
data: {
|
||||
...m.data,
|
||||
products: products.map((p: ProductItem) =>
|
||||
p.badgeCustomTemplate || p.customBadgePngUrl ? p : { ...p, badgeCustomTemplate: defaultBadge, badgeId: defaultBadge.id }
|
||||
)
|
||||
}
|
||||
};
|
||||
});
|
||||
return changed ? { ...prev, modules } : prev;
|
||||
});
|
||||
}, [campaign.modules, defaultBadge]);
|
||||
|
||||
// Pomocné funkcie pre fixné ukotvenie hlavičky, spodných letákov, receptov a pätičky
|
||||
const isTopModule = (m: NewsletterModule) => m.type === 'header' || m.type === 'announcement';
|
||||
|
||||
|
||||
Reference in new issue
Block a user