Custom Profile Backgrounds

KoGaMa Custom Profile Background Support.

// ==UserScript==
// @name         Custom Profile Backgrounds
// @version      0.3
// @author       Devork
// @description  KoGaMa Custom Profile Background Support.
// @namespace    https://github.com/Devorkk/
// @match        https://www.kogama.com/profile/*
// @match        https://kogama.com.br/profile/*
// @match        https://friends.kogama.com/profile/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

const InsertBeforeLoad = async () => {
	const DESCRIPTION_TEXT = document.querySelector('#description-extend > div > div.text').innerHTML;
	const BACKGROUND_AVATAR = document.querySelector('.background-avatar')
	const BACKGROUND_SECTION = document.querySelector('.section-top-background')
	const BACKGROUND_REGEXP = /background:\s*(\d+)(?:,\s*filter:\s*(light|dark|blur|none))?;/i
	const BACKGROUND_DETAILS = BACKGROUND_REGEXP.exec(DESCRIPTION_TEXT)

	if (typeof BACKGROUND_DETAILS == 'object') {
		const FETCH = (await (await fetch(`/game/published/?q=${BACKGROUND_DETAILS[1]}`)).json())
		const IMAGE = FETCH.images.large.replace('cache', 'images').replace('_600x240.jpg', '.png')

		BACKGROUND_AVATAR.style.backgroundImage = `url(${IMAGE})`;

		switch (BACKGROUND_DETAILS[2]) {
			case 'blur':
				BACKGROUND_AVATAR.style.opacity = 'unset';
				BACKGROUND_SECTION.style.backgroundImage = 'none';
				break;
			case 'none':
				BACKGROUND_AVATAR.style.opacity = 'unset';
				BACKGROUND_AVATAR.style.filter = 'none';
				BACKGROUND_SECTION.style.backgroundImage = 'none';
				break;
			case 'dark':
				BACKGROUND_SECTION.style.backgroundImage = 'none';
				break;
		}
	}
};

document.addEventListener('DOMContentLoaded', InsertBeforeLoad);