Opinie o sklepie
Opinie naszych klientów są dla nas niezwykle ważne – to one najlepiej pokazują, co sprawia, że nasze produkty stają się częścią Waszej codzienności. Dzięki nim wiemy, jak łączyć wysoką jakość, modny styl i komfort, który doceniacie każdego dnia. Wasze słowa to dla nas nie tylko inspiracja, ale także motywacja do dalszego rozwoju. Jako marka oferująca szeroki wybór produktów i cenione światowe marki, chcemy dostarczać to, co najlepsze – zgodnie z Waszymi oczekiwaniami.
Podziel się swoją opinią! Twój głos pomaga nam ulepszać ofertę i tworzyć jeszcze lepsze doświadczenia zakupowe
(() => {
// fetch('https://trustmate.io/widget/api/1071e6c3-5390-47a0-bc7c-a786a04cf7a5/html') - TODO: remove after platform multihornet fix - !!!frontend do not remove
const UI = {
last: (where, what) => {where?.append(what)},
first: (where, what) => {where?.insertBefore(what, where.firstChild)},
after: (where, what) => {where?.parentNode.insertBefore(what, where.nextSibling)},
before: (where, what) => {where?.parentNode.insertBefore(what, where)},
replace: (where, what) => {where?.replaceWith(what)}
};
const RELOADS_LIMIT = 10;
let reloadsCount = 0;
let lastAttributeValue = null;
function loadWidgetHtml({ type }) {
const tag = document.getElementById('1071e6c3-5390-47a0-bc7c-a786a04cf7a5');
if (tag) {
widgetConfig = {
target: tag.dataset.t,
action: tag.dataset.a,
observe: tag.dataset.o,
itemId: tag.dataset.i
};
if (widgetConfig.target && widgetConfig.action) {
if (!Object.hasOwn(UI, widgetConfig.action)) {
console.error(`TrustMate: action '${widgetConfig.action}' is wrong`);
return;
}
const target = document.querySelector(widgetConfig.target);
if (!target) {
console.error(`TrustMate: target '${widgetConfig.target}' not found`);
return;
}
UI[widgetConfig.action](target, tag);
}
tag.innerHTML = `
`;
if (widgetConfig.itemId && widgetConfig.target) {
const target = document.querySelector(widgetConfig.target);
if (!target) return;
const initialElement = target.querySelector(`[${widgetConfig.itemId}]`) || target.closest(`[${widgetConfig.itemId}]`);
if (initialElement) {
lastAttributeValue = initialElement.getAttribute(widgetConfig.itemId);
}
}
if (widgetConfig.target && widgetConfig.action && widgetConfig.observe) {
const observeTag = document.querySelector(widgetConfig.observe);
if (observeTag) {
const widgetObserver = new MutationObserver((mutations, observer) => {
const tag = document.getElementById('1071e6c3-5390-47a0-bc7c-a786a04cf7a5');
function checkProductIdChange() {
if (tag) {
const currentItemId = tag.dataset.i;
const dynamicSelector = `[${currentItemId}]`;
const target = document.querySelector(widgetConfig.target);
if (!target) return;
const elementWithDynamicSelector = target.querySelector(dynamicSelector) || target.closest(dynamicSelector);
const attributeValue = elementWithDynamicSelector?.getAttribute(currentItemId);
window.tmWidgetItemId = attributeValue;
if (attributeValue && attributeValue !== lastAttributeValue) {
lastAttributeValue = attributeValue;
widgetConfig.itemId = currentItemId;
const newUrl = `https://trustmate.io/widget/api/1071e6c3-5390-47a0-bc7c-a786a04cf7a5/html`;
const modifiedUrl = newUrl.replace(/product=[^&]*/, 'product=' + attributeValue);
fetch(modifiedUrl)
.then((response) => {
if (!response.ok) {
throw new Error('There was a problem with fetching widget.');
}
return response.text();
})
.then((html) => {
if (tag) {
tag.innerHTML = html;
}
const widgetsWithObserver = [
'hydra',
'productFerret2',
'hornet',
];
if (widgetsWithObserver.includes(type)) {
const intersectionObserver = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
window.tmWidgetScripts?.[type]?.({ spaWidget: tag });
intersectionObserver.unobserve(tag);
}
}, {
rootMargin: '600px',
threshold: 0.01
});
intersectionObserver.observe(tag);
} else {
window.tmWidgetScripts?.[type]?.({ spaWidget: tag });
}
return;
})
.catch((err) => console.error('Error fetching new content:', err));
}
return;
}
}
checkProductIdChange();
if (tag) {
return;
}
observer.disconnect();
if (reloadsCount >= RELOADS_LIMIT) {
console.error('TrustMate: widget 1071e6c3-5390-47a0-bc7c-a786a04cf7a5 reload limit reached');
return;
}
++reloadsCount;
const newTag = document.createElement('div');
newTag.id = '1071e6c3-5390-47a0-bc7c-a786a04cf7a5';
newTag.dataset.a = widgetConfig.action;
newTag.dataset.t = widgetConfig.target;
newTag.dataset.o = widgetConfig.observe;
const target = document.querySelector(widgetConfig.target);
if (!target) {
console.error(`TrustMate: target '${widgetConfig.target}' not found after last html change`);
return;
}
UI[widgetConfig.action](target, newTag);
loadWidgetScript();
});
widgetObserver.observe(observeTag, {childList: true, subtree: true});
}
}
} else {
console.error('TrustMate: No tag for 1071e6c3-5390-47a0-bc7c-a786a04cf7a5');
}
}
function waitForWindow() {
let index = 0;
const intervalWindowId = setInterval(function() {
if (typeof window !== 'undefined') {
clearInterval(intervalWindowId);
loadWidgetScript();
}
index += 1;
if (index > 50) {
clearInterval(intervalWindowId);
}
}, 50);
}
function loadWidgetScript() {
if (467699 < 10) return;
function scriptExists(url) {
return document.querySelectorAll(`script[src="${url}"]`).length > 0;
}
if(scriptExists('https\u003A\/\/trustmate.io\/build\/js\/widget\/chupacabra2.4b88579f.js')) {
function removeJs(src) {
document.querySelector(`script[src="${src}"]`).remove();
}
removeJs('https\u003A\/\/trustmate.io\/build\/js\/widget\/chupacabra2.4b88579f.js');
}
const widgetScript = document.createElement('script');
widgetScript.src = 'https\u003A\/\/trustmate.io\/build\/js\/widget\/chupacabra2.4b88579f.js';
widgetScript.defer = true;
widgetScript.onload = () => {
loadWidgetHtml({ type: 'chupacabra2' });
};
document.body.appendChild(widgetScript);
}
if (typeof window === 'undefined') {
waitForWindow();
} else {
loadWidgetScript();
}
})();