diff --git a/README.md b/README.md index 2824442..99afd8a 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@

- moe counter + moe counter

Visitors (Since 2023/02/01)


One of the best theme for Pengu Loader (League of Legends)

diff --git a/src/index.ts b/src/index.ts index cec78a6..c2282c5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ * @link https://github.com/Elaina69 * @Nyan Meow~~~ */ +import "./src/utils/setTime.ts" import { log } from './src/utils/themeLog.ts'; log('By %cElaina Da Catto', 'color: #e4c2b3'); @@ -18,7 +19,6 @@ import './src/services/backupAndRestoreDatastore'; // Import modules import { Cdninit } from './src/theme/Cdninit.ts'; -import { CheckServerAvailability } from './src/services/checkServer.ts'; import { CheckUpdate } from "./src/updates/checkUpdate.ts" import { createHomePageTab, HomePage } from "./src/theme/homepage.ts"; import { transparentLobby, ApplyUI } from "./src/theme/applyUi.ts"; @@ -53,10 +53,6 @@ class ElainaTheme { } main() { - // Check theme server - const checkServerAvailability = new CheckServerAvailability() - checkServerAvailability.main() - // Check theme's version and available update const checkUpdate = new CheckUpdate() checkUpdate.main() diff --git a/src/src/assets/styles/components/sidebar-color.css b/src/src/assets/styles/components/sidebar-color.css new file mode 100644 index 0000000..bf938af --- /dev/null +++ b/src/src/assets/styles/components/sidebar-color.css @@ -0,0 +1,3 @@ +.sidebar-background { + background: var(--social-sidebar-bg-color) !important; +} \ No newline at end of file diff --git a/src/src/assets/styles/components/sidebar-transparent.css b/src/src/assets/styles/components/sidebar-transparent.css new file mode 100644 index 0000000..660801f --- /dev/null +++ b/src/src/assets/styles/components/sidebar-transparent.css @@ -0,0 +1,3 @@ +.sidebar-background { + background: transparent !important +} \ No newline at end of file diff --git a/src/src/assets/styles/themes/elaina.css b/src/src/assets/styles/themes/elaina.css index 241e837..d177046 100644 --- a/src/src/assets/styles/themes/elaina.css +++ b/src/src/assets/styles/themes/elaina.css @@ -36,6 +36,10 @@ html { filter: var(--play-button-filter) !important; } +.npe-header-league-logo { + filter: var(--play-button-filter) !important; +} + .stats-backdrop { opacity: 0.3!important; mix-blend-mode: difference !important; diff --git a/src/src/assets/styles/themes/rcp-fe-lol-parties.css b/src/src/assets/styles/themes/rcp-fe-lol-parties.css index f1f78c0..abeedc0 100644 --- a/src/src/assets/styles/themes/rcp-fe-lol-parties.css +++ b/src/src/assets/styles/themes/rcp-fe-lol-parties.css @@ -145,4 +145,12 @@ .confirm-button-container { filter: var(--find-match-button) !important; +} + +.tft-find-match-button-container { + filter: var(--find-match-button) !important; +} + +.parties-footer-notifications { + top: -120px !important; } \ No newline at end of file diff --git a/src/src/assets/styles/themes/rcp-fe-viewport-sidebar.css b/src/src/assets/styles/themes/rcp-fe-viewport-sidebar.css index 436159e..a002665 100644 --- a/src/src/assets/styles/themes/rcp-fe-viewport-sidebar.css +++ b/src/src/assets/styles/themes/rcp-fe-viewport-sidebar.css @@ -68,7 +68,6 @@ lol-social-roster-member .offline .member-name { .sidebar-background { height: 100%; width: 222px; - background: var(--social-sidebar-bg-color) !important; position: absolute; transition: transform 0.5s ease; transform: translateX(0px); diff --git a/src/src/plugins/autoAccept.ts b/src/src/plugins/autoAccept.ts index 74e98f7..1b89d7a 100644 --- a/src/src/plugins/autoAccept.ts +++ b/src/src/plugins/autoAccept.ts @@ -17,26 +17,26 @@ export class AutoAccept { } } - fetch_or_create_champselect_buttons_container(): Element | null { - if (document.querySelector(".cs-buttons-container")) { - return document.querySelector(".cs-buttons-container") + fetch_or_create_champselect_buttons_container(): any { + try { + document.querySelector(".cs-buttons-container")?.remove() + } + catch {} + + const div = document.createElement("div") + div.className = "cs-buttons-container" + + let nor: HTMLElement | null = document.querySelector(".v2-footer-notifications.ember-view") + let tft: HTMLElement | null = document.querySelector(".parties-footer-notifications.ember-view") + + if (nor) { + nor.append(div) + return div + } + else if (tft) { + tft?.append(div) + return div } - else { - const div = document.createElement("div") - div.className = "cs-buttons-container" - - let nor: HTMLElement | null = document.querySelector(".v2-footer-notifications.ember-view") - let tft: HTMLElement | null = document.querySelector(".parties-footer-notifications.ember-view") - - if (nor) { - nor.append(div) - return div - } - else { - tft?.append(div) - return div - } - } } acceptMatchmaking = async (): Promise => { @@ -55,30 +55,39 @@ export class AutoAccept { } } + + createButton = async (element: any) => { + const newOption = document.createElement("lol-uikit-radio-input-option") + const container = this.fetch_or_create_champselect_buttons_container() + const Option2 = document.createElement("div") + + newOption.setAttribute("id", "autoAcceptQueueButton") + newOption.setAttribute("onclick", "window.autoAcceptQueueButtonSelect()") + + Option2.classList.add("auto-accept-button-text") + Option2.innerHTML = await getString("auto_accept") + + if (window.DataStore.get("auto_accept")){ + newOption.setAttribute("selected", "") + } + + if (element && !document.getElementById("autoAcceptQueueButton")) { + if (window.DataStore.get("auto_accept_button")) { + container?.append(newOption) + newOption.append(Option2) + } + } + } + main = (auto_accept_button: boolean = true) => { window.autoAcceptQueueButtonSelect = this.autoAcceptQueueButtonSelect upl.observer.subscribeToElementCreation(".v2-lobby-root-component.ember-view .v2-footer-notifications.ember-view",async (element: any) => { - const newOption = document.createElement("lol-uikit-radio-input-option") - const container = this.fetch_or_create_champselect_buttons_container() - const Option2 = document.createElement("div") - - newOption.setAttribute("id", "autoAcceptQueueButton") - newOption.setAttribute("onclick", "window.autoAcceptQueueButtonSelect()") - - Option2.classList.add("auto-accept-button-text") - Option2.innerHTML = await getString("auto_accept") - - if (window.DataStore.get("auto_accept")){ - newOption.setAttribute("selected", "") - } - - if (element && !document.getElementById("autoAcceptQueueButton")) { - if (window.DataStore.get("auto_accept_button")) { - container?.append(newOption) - newOption.append(Option2) - } - } + await this.createButton(element) + }) + + upl.observer.subscribeToElementCreation(".tft-footer-container.ember-view .parties-footer-notifications.ember-view",async (element: any) => { + await this.createButton(element) }) if (auto_accept_button) { diff --git a/src/src/plugins/customProfile.ts b/src/src/plugins/customProfile.ts index ec2487f..ef3f3de 100644 --- a/src/src/plugins/customProfile.ts +++ b/src/src/plugins/customProfile.ts @@ -146,7 +146,8 @@ export class CustomProfile { get: () => value, set: (v) => v, }) - }catch {} + } + catch {} } } } @@ -247,7 +248,7 @@ export class CustomProfile { } } } - catch{} + catch {} }) upl.observer.subscribeToElementCreation(".collection-totals",(element: any)=>{ @@ -288,7 +289,7 @@ export class CustomProfile { },3000) } } - catch{} + catch {} }) upl.observer.subscribeToElementCreation(".crystal-wrapper",(element: any)=>{ diff --git a/src/src/plugins/hideFriendlist.ts b/src/src/plugins/hideFriendlist.ts index 4c0d9b9..d240d4d 100644 --- a/src/src/plugins/hideFriendlist.ts +++ b/src/src/plugins/hideFriendlist.ts @@ -14,7 +14,8 @@ export class HideFriendList { get: () => value, set: (v) => v, }) - }catch {} + } + catch {} } } } @@ -91,7 +92,8 @@ export class HideFriendList { if (!hide) { try { document.querySelector("#centerViewport")?.remove(); - } catch {} + } + catch {} utils.addStyleWithID("centerViewport", ` .parties-game-type-select-wrapper.ember-view { transform: translateX(0px); @@ -139,7 +141,8 @@ export class HideFriendList { else { try { document.querySelector("#centerViewport")?.remove(); - } catch {} + } + catch {} utils.addStyleWithID("centerViewport", ` .parties-game-type-select-wrapper.ember-view { transform: translateX(113px); @@ -227,7 +230,8 @@ export class HideFriendList { bg[i].remove() } } - } catch {} + } + catch {} this.createSidebarBackground() }) @@ -242,11 +246,14 @@ export class HideFriendList { button[i].remove() } } - } catch {} + } + catch {} - this.createButton() - this.buttonShowHideFriendlist(window.DataStore.get("HideFriendList")) - this.showHideFriendslist(window.DataStore.get("HideFriendList")) + if (window.DataStore.get("enable-hide-top-navbar-friendlist-button")) { + this.createButton() + this.buttonShowHideFriendlist(window.DataStore.get("HideFriendList")) + this.showHideFriendslist(window.DataStore.get("HideFriendList")) + } }) } } \ No newline at end of file diff --git a/src/src/plugins/inviteAllFriends.ts b/src/src/plugins/inviteAllFriends.ts index eb14fd2..d2b7896 100644 --- a/src/src/plugins/inviteAllFriends.ts +++ b/src/src/plugins/inviteAllFriends.ts @@ -40,7 +40,7 @@ export class InviteAllFriends { log("Friends list refreshed.") } } - catch{} + catch {} } addInviteAllButton = async (): Promise => { diff --git a/src/src/plugins/lootHelper.ts b/src/src/plugins/lootHelper.ts index 88701f9..890de06 100644 --- a/src/src/plugins/lootHelper.ts +++ b/src/src/plugins/lootHelper.ts @@ -148,9 +148,12 @@ function AddContextMenu(title: any, subTitle: any, items: any[] = []) { } function OnClickRefreshButton() { - document.querySelectorAll('.loot-category-information').forEach(elem => { - elem.remove(); - }); + try { + document.querySelectorAll('.loot-category-information').forEach(elem => { + elem.remove(); + }); + } + catch {} CreateChapmsInformation() CreateSkinsInformation() } @@ -470,8 +473,7 @@ export class LootHelper { upl.observer.subscribeToElementCreation((".loot-inventory-grid "), (element: any) => { log("%cLoot helper loaded", "color: #e4c2b3") - CreateChapmsInformation() - CreateSkinsInformation() + OnClickRefreshButton() }) upl.observer.subscribeToElementCreation((".loot-display-category-tabs-container"), (element: any) => { diff --git a/src/src/services/backupAndRestoreDatastore.ts b/src/src/services/backupAndRestoreDatastore.ts index df3a466..741db39 100644 --- a/src/src/services/backupAndRestoreDatastore.ts +++ b/src/src/services/backupAndRestoreDatastore.ts @@ -6,7 +6,7 @@ import { log, error } from '../utils/themeLog'; export class BackupRestoreData { async importData(url: string): Promise { const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), 2000); + const timeoutId = setTimeout(() => controller.abort(), 3000); try { const res = await fetch(url, { signal: controller.signal }); @@ -15,10 +15,11 @@ export class BackupRestoreData { return Data.default } else throw new Error(); - } catch { - let errorMsg = "Can't load default datastore from local" + } + catch (err: any) { + let errorMsg = "Can't load default datastore from local: " clearTimeout(timeoutId); - error(errorMsg); + error(errorMsg, err); window.Toast.error(errorMsg); } }; @@ -93,6 +94,6 @@ try { // Backup datastore backupRestoreData.backup() } -catch { error("Can not restore datastore") } +catch(err:any) { error("Can not restore datastore", err) } window.restoreDefaultDataStore = restoreDefaultDataStore \ No newline at end of file diff --git a/src/src/services/checkServer.ts b/src/src/services/checkServer.ts deleted file mode 100644 index 29bebc2..0000000 --- a/src/src/services/checkServer.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { log, error } from '../utils/themeLog'; - -export class CheckServerAvailability { - main = async () => { - log('Checking backup server availability'); - const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), 2000); - - try { - const response = await fetch('https://elainatheme.xyz/numberOfUsers', { signal: controller.signal }); - const { count } = await response.json(); - log('Number of users:', count); - const { default: serverModule } = await import('https://elainatheme.xyz/index.js'); - } - catch (err: any) { - clearTimeout(timeoutId); - throw err; - } - } -} \ No newline at end of file diff --git a/src/src/theme/Cdninit.ts b/src/src/theme/Cdninit.ts index b28851f..9e08f9c 100644 --- a/src/src/theme/Cdninit.ts +++ b/src/src/theme/Cdninit.ts @@ -5,7 +5,7 @@ let initLink: string export async function cdnImport(url: string, errorMsg: any): Promise { const controller = new AbortController(); - const timeoutId = setTimeout(() => controller.abort(), 2000); + const timeoutId = setTimeout(() => controller.abort(), 3000); try { const res = await fetch(url, { signal: controller.signal }); @@ -34,10 +34,4 @@ else { const { Cdninit } = await cdnImport(initLink, "Failed to load Init data") - .then( res => { return res ? res : {} }) - .catch( err => { - error("Failed to destructure init property", err) - window.restartClient() - }); - export { Cdninit } \ No newline at end of file diff --git a/src/src/theme/applyUi.ts b/src/src/theme/applyUi.ts index 6d81e44..b2f18cc 100644 --- a/src/src/theme/applyUi.ts +++ b/src/src/theme/applyUi.ts @@ -1,6 +1,6 @@ import * as upl from 'pengu-upl' import { getThemeName } from "../otherThings" -import { log, warn } from '../utils/themeLog'; +import { log, warn, error } from '../utils/themeLog'; let filters = (await import(`//plugins/${getThemeName()}/config/filters.js`)).default; let icdata = (await import(`//plugins/${getThemeName()}/config/icons.js`)).default; @@ -19,7 +19,8 @@ function freezeProperties(object: Object, properties: any[]) { get: () => value, set: (v) => v, }) - }catch {} + } + catch {} } } } @@ -45,7 +46,7 @@ upl.observer.subscribeToElementCreation(".parallax-layer-container",(element: an class AramOnlyMode { removeNode(obj: string): void { try { document.querySelector(obj)?.remove() } - catch{ log(`Can not remove ${obj}`)} + catch (err: any) { error(`Can not remove ${obj}:`, err)} } removeOtherGamemode = () => { @@ -141,6 +142,11 @@ class NewGamesearchQueue { element.style.cssText = `height: 28px;` ) upl.observer.subscribeToElementCreation('.parties-game-search-divider', this.DisplayNone) + upl.observer.subscribeToElementCreation('.parties-game-search-map', (element: any) => + element.style.cssText = ` + filter: ${filters["PartiesStatusCard"]}; + ` + ) // lol-parties-status-card upl.observer.subscribeToElementCreation('.parties-status-card-bg-container', this.DisplayNone) @@ -166,7 +172,6 @@ class NewGamesearchQueue { margin: -3px 10px 0 0; filter: ${filters["PartiesStatusCard"]}; ` - ) // lol-parties-game-invites @@ -185,23 +190,27 @@ class TransparentSettingsDialogs { let a = element.querySelector("lol-uikit-dialog-frame").shadowRoot.querySelector("div") a.style.background = style freezeProperties(a.style,["background"]) - }catch{} + } + catch{} try{ let b = element.querySelector("lol-uikit-dialog-frame > div") b.style.background = style freezeProperties(b.style,["background"]) - }catch{} + } + catch{} try{ let a: any = document.getElementsByClassName("dialog-frame") for(let i = 0; i< a.length; i++) { let b = a[i].shadowRoot.querySelector("div") b.style.background = style } - }catch{} + } + catch{} try{ let c = element.querySelector("lol-regalia-identity-customizer-element").shadowRoot.querySelector("lol-regalia-banner-v2-element") c.remove() - }catch{} + } + catch{} // Settings try{ @@ -211,7 +220,8 @@ class TransparentSettingsDialogs { a.style.background = style freezeProperties(obj.style,["background"]) freezeProperties(a.style,["background"]) - }catch{} + } + catch{} }) } @@ -331,7 +341,7 @@ class CustomIcon { hoverCard.style.backgroundImage = "var(--Hover-card-backdrop)" } } - catch { warn("Can't change hover card backdrop.") } + catch (err: any) { error("Can't change hover card backdrop.", err) } }) } diff --git a/src/src/theme/homepage.ts b/src/src/theme/homepage.ts index 55f9484..dcffd44 100644 --- a/src/src/theme/homepage.ts +++ b/src/src/theme/homepage.ts @@ -81,7 +81,7 @@ if (CdnKey === LocalKey) { const themeVersion = (await cdnImport(`${cdnUrl}/src/update/update.js`, "Can't get theme version")).default.version; window.DataStore.set("Theme-version", themeVersion); } - catch { error("Can't get theme version") } + catch (err: any) { error("Can't get theme version", err) } if (!window.DataStore.get(`Change-CDN-version`)) { const response = await fetch(`${cdnUrl}/package.json`); @@ -94,47 +94,47 @@ log(`%cCDN build : %c${window.DataStore.get("Cdn-version")}`, 'color: #e4c2b3', // Create and set new page as Homepage export function createHomePageTab(context: any) { - context.rcp.postInit('rcp-fe-lol-navigation', async (api: any) => { - //@ts-ignore - window.__RCP_NAV_API = api; - - try { - const originalCreate = api._apiHome.navigationManager.createSubNavigationFromJSON; - api._apiHome.navigationManager.createSubNavigationFromJSON = async function (e, t, n) { - console.dir(n); - - n.push({ - id: 'elaina-home', - displayName: await getString("home"), - isPlugin: false, - enabled: true, - visibile: true, - priority: 1, - url: 'https://elainatheme.xyz/blankpage', - }); - - return originalCreate.apply(this, [e, t, n]); - }; - } - catch { - error("Failed to create homepage, maybe you're in pbe version") - } - }); - - context.rcp.postInit("rcp-fe-lol-navigation", async (api) => { - try { - const navigationManager = api._apiHome.navigationManager; - api._apiHome.navigationManager = new Proxy(navigationManager, { - set(target, property, value) { - target[property] = (property === "firstNavItemId") ? 'elaina-home' : value; - return true; - } - }); - } - catch { - error("Failed to create homepage, maybe you're in pbe version") - } - }); + // context.rcp.postInit('rcp-fe-lol-navigation', async (api: any) => { + // //@ts-ignore + // window.__RCP_NAV_API = api; + + // try { + // const originalCreate = api._apiHome.navigationManager.createSubNavigationFromJSON; + // api._apiHome.navigationManager.createSubNavigationFromJSON = async function (e, t, n) { + // console.dir(n); + + // n.push({ + // id: 'elaina-home', + // displayName: await getString("home"), + // isPlugin: false, + // enabled: true, + // visibile: true, + // priority: 1, + // url: 'https://elainatheme.xyz/blankpage', + // }); + + // return originalCreate.apply(this, [e, t, n]); + // }; + // } + // catch { + // error("Failed to create homepage, maybe you're in pbe version") + // } + // }); + + // context.rcp.postInit("rcp-fe-lol-navigation", async (api) => { + // try { + // const navigationManager = api._apiHome.navigationManager; + // api._apiHome.navigationManager = new Proxy(navigationManager, { + // set(target, property, value) { + // target[property] = (property === "firstNavItemId") ? 'elaina-home' : value; + // return true; + // } + // }); + // } + // catch { + // error("Failed to create homepage, maybe you're in pbe version") + // } + // }); } function freezeProperties(object: Object, properties: any[]) { @@ -147,7 +147,8 @@ function freezeProperties(object: Object, properties: any[]) { get: () => value, set: (v) => v, }) - }catch {} + } + catch {} } } } @@ -165,15 +166,17 @@ class ChangeHomePageTabs { } else { warn(`Element not found for ${name}`); } - } catch (error: any) { + } + catch (error: any) { error(`Error hiding ${name} tab:`, error); } } else { try { document.querySelector(obj).style.display = "block"; - } catch { - error(`This client doesn't have ${name} tab`); + } + catch (err: any) { + error(`This client doesn't have ${name} tab`, err); } } }; @@ -655,7 +658,7 @@ class MainController { window.DataStore.set("NextBg_Count", window.DataStore.get("NextBg_Count") + 1); wallpaperController.nextWallpaper(); if (window.DataStore.get("NextBg_Count") >= 69 && window.DataStore.get("NSFW-Content")) { - window.open("https://elainatheme.xyz/elaina_nsfw/easteregg1", "_blank"); + window.open(`${window.DataStore.get("Elaina-domain-server")}elaina_nsfw/easteregg1`, "_blank"); window.DataStore.set("NextBg_Count", 0); } } @@ -797,7 +800,8 @@ class HideNavbarButton { button[i].remove() } } - } catch {} + } + catch {} this.checkNewContent() this.createHideButton() @@ -909,7 +913,7 @@ class HideTopNavbarButton { } this.changeButtonIcon(isHidden) } - catch { log("Can't find top navigation bar")} + catch (err: any) { error("Can't find top navigation bar", err)} } addHideButton = () => { @@ -924,7 +928,8 @@ class HideTopNavbarButton { button[i].remove() } } - } catch {} + } + catch {} this.createHideButton() window.setTimeout(()=> { @@ -1119,7 +1124,9 @@ export class HomePage { utils.mutationObserverAddCallback(addHomePage.pageListenner, ["screen-root"]); hideNavbarButton.addHideButton() - hideTopNavbarButton.addHideButton() + if (window.DataStore.get("enable-hide-top-navbar-friendlist-button")) { + hideTopNavbarButton.addHideButton() + } } } diff --git a/src/src/theme/loadCss.ts b/src/src/theme/loadCss.ts index 6469d93..c3da24c 100644 --- a/src/src/theme/loadCss.ts +++ b/src/src/theme/loadCss.ts @@ -85,6 +85,11 @@ class AddCss { css: "lobby-transparent-filter.css", altCss: "null.css" }, + { + key: "sidebar-transparent", + css: "sidebar-transparent.css", + altCss: "sidebar-color.css" + }, ], "iconCss": [ diff --git a/src/src/updates/updateKeyLocal.ts b/src/src/updates/updateKeyLocal.ts index 2c3b2dc..81c2694 100644 --- a/src/src/updates/updateKeyLocal.ts +++ b/src/src/updates/updateKeyLocal.ts @@ -1 +1 @@ -export default 432 \ No newline at end of file +export default 434 \ No newline at end of file diff --git a/src/src/utils/setTime.ts b/src/src/utils/setTime.ts new file mode 100644 index 0000000..c3a21b1 --- /dev/null +++ b/src/src/utils/setTime.ts @@ -0,0 +1 @@ +window.DataStore.set("start-time", Date.now()) \ No newline at end of file diff --git a/src/types.d.ts b/src/types.d.ts index 8cf20e0..bea6bc5 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -1,6 +1,3 @@ -// internal types -declare module 'https://elainatheme.xyz/index.js'; - interface Plugin { init?: (context: any) => any load?: () => any