NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Gitti Nailpolish Collection
// @namespace https://www.gitticonsciousbeauty.com/
// @version 1.0
// @description mark every owned nailpolish on the gitti website
// @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt
// @author Oliviate
// @match https://www.gitticonsciousbeauty.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gitticonsciousbeauty.com
// @grant none
// ==/UserScript==
window.collection = [];
window.wishlist = [];
// water
window.collection.push(
30 // Blue Cashmere
);
// plant
window.collection.push(
102, // Klassisch Rot
103, // Aubergine
105, // Minze
111, // Pfirsichrosa
133, // Orange
134, // Weiss
135, // Schwarz
137, // Leuchtendes Gelb
141, // Digital Dance
142, // Afterglow
146, // Wild Orchid
151, // Grass Green
154, // Aurora Pink
156, // Pool Position
162, //
167, // Digital Lavender
168, // Royal Purple
169, // Cream Tan
170, // Viva Magenta
175, // Berlin Sun
177 // Jade Green
);
// glitter / metallic
window.collection.push(
202, // Lilac Spark
204, // Liquid Gold
211, // Green Spark
212, // Cranberry Glitter
301, // Rise Above Red
302, // Better Me Bronze
303, // A Muse Me Black
304, // Boundless Blue
305, // Vanity Vert
306 // Mother Me Mauve
);
// coats
window.collection.push(
'nail-highlighter',
'top-base-coat'
);
// wishlist
window.wishlist.push(
10, // Dunkles Beerenrot
19, // Sanftes Korall
26, // Puderrosa
32, // Aperitivo
34, // Golden Hour
126, // Pastellrot
127, // Pflaumenrot
132, // Lavendel
140, // Sweet Heat
143, // That's Hot
150, // Forest Green
160, // Caramel Fudge
180, // Pumpkin Spice
'smoothing-nail-primer',
'high-gloss-top-coat'
);
window.respondToVisibility = function (element, callback) {
var options = {
root: document.documentElement,
};
var observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
console.log(entry,entry.intersectionRatio > 0);
callback(element);
});
}, options);
observer.observe(element);
};
window.waitForElement = function (selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
window.markCollected = function (element) {
const parent = element || document;
Array.from(parent.querySelectorAll('.swatch-grid-item > [class*="swatch-"], .swatch_wrapper > [class*="swatch-"]'))
.forEach(i => {
if(!i.className) return;
let itemName = i.className.match(/swatch-(\S+)/);
if(itemName) {
itemName = itemName[1];
itemName = parseInt(itemName) || itemName;
}
if(!itemName) return;
if(window.collection.indexOf(itemName) > -1) {
i.classList.add('swatch-owned');
} else if(window.wishlist.indexOf(itemName) > -1) {
i.classList.add('swatch-wanted');
}
});
};
(function(win) {
'use strict';
const style = document.createElement('style');
style.innerText = ".swatch-owned { \
outline: 2px solid limegreen; \
} \
.swatch-wanted { \
outline: 2px solid blue; \
}";
console.log(style);
document.head.appendChild(style);
try {
console.log('script start');
win.markCollected();
/*const overlay = document.querySelector('.bundle_overlay');
console.log('overlay', overlay);
win.respondToVisibility(overlay, win.markCollected);*/
win.waitForElement('.bundle_overlay').then((el) => {
win.markCollected(el);
});
console.log('script end');
} catch(ex) {
console.log('script error: ',ex);
}
})(window);