From d68ba1521a7fbcc80da449ffd27072e2c7cbe75b Mon Sep 17 00:00:00 2001 From: Alphons Joseph <93847055+Crazypersonalph@users.noreply.github.com> Date: Mon, 9 Sep 2024 18:16:59 +0800 Subject: [PATCH] About page button --- src/SEQTA.ts | 99 +++++++++++++++++++ src/seqta/utils/listeners/MessageListener.ts | 8 +- .../pages/settings/general.svelte | 12 ++- 3 files changed, 117 insertions(+), 2 deletions(-) diff --git a/src/SEQTA.ts b/src/SEQTA.ts index 5eac2715..0f25e7eb 100644 --- a/src/SEQTA.ts +++ b/src/SEQTA.ts @@ -343,6 +343,105 @@ export function OpenWhatsNewPopup() { }) } +export function OpenAboutPage() { + const background = document.createElement('div') + background.id = 'whatsnewbk' + background.classList.add('whatsnewBackground') + + const container = document.createElement('div') + container.classList.add('whatsnewContainer') + + var header: any = stringToHTML( + /* html */ + `
+

About

+

BetterSEQTA+ V${browser.runtime.getManifest().version}

+
` + ).firstChild + + let imagecont = document.createElement('div') + imagecont.classList.add('whatsnewImgContainer') + + let textcontainer = document.createElement('div') + textcontainer.classList.add('whatsnewTextContainer') + + let text = stringToHTML( + /* html */ ` +
+

Yo

+
+ `, + ).firstChild + + let footer = stringToHTML( + /* html */ ` +
+
+ Report bugs and feedback: + + + + + + + + + + +
+
+ `).firstChild + + let exitbutton = document.createElement('div') + exitbutton.id = 'whatsnewclosebutton' + + container.append(header) + container.append(imagecont) + container.append(textcontainer) + container.append(text as ChildNode) + container.append(footer as ChildNode) + container.append(exitbutton) + + background.append(container) + + document.getElementById('container')!.append(background) + + let bkelement = document.getElementById('whatsnewbk') + let popup = document.getElementsByClassName('whatsnewContainer')[0] + + if (settingsState.animations) { + animate( + [popup, bkelement as HTMLElement], + { scale: [0, 1], opacity: [0, 1] }, + { easing: spring({ stiffness: 220, damping: 18 }) } + ) + + animate( + '.whatsnewTextContainer *', + { opacity: [0, 1], y: [10, 0] }, + { + delay: stagger(0.05, { start: 0.1 }), + duration: 0.5, + easing: [.22, .03, .26, 1] + } + ) + } + + delete settingsState.justupdated + + bkelement!.addEventListener('click', function (event) { + // Check if the click event originated from the element itself and not any of its children + if (event.target === bkelement) { + DeleteWhatsNew() + } + }); + + var closeelement = document.getElementById('whatsnewclosebutton') + closeelement!.addEventListener('click', function () { + DeleteWhatsNew() + }) +} + export async function finishLoad() { try { document.querySelector('.legacy-root')?.classList.remove('hidden'); diff --git a/src/seqta/utils/listeners/MessageListener.ts b/src/seqta/utils/listeners/MessageListener.ts index b4d53146..8dca6921 100644 --- a/src/seqta/utils/listeners/MessageListener.ts +++ b/src/seqta/utils/listeners/MessageListener.ts @@ -1,6 +1,6 @@ import browser from 'webextension-polyfill' -import { closeSettings, MenuOptionsOpen, OpenMenuOptions, OpenWhatsNewPopup } from '../../../SEQTA'; +import { closeSettings, MenuOptionsOpen, OpenMenuOptions, OpenWhatsNewPopup, OpenAboutPage } from '../../../SEQTA'; import { deleteTheme } from '@/seqta/ui/themes/deleteTheme'; import { getAvailableThemes } from '@/seqta/ui/themes/getAvailableThemes'; import { saveTheme } from '@/seqta/ui/themes/saveTheme'; @@ -79,6 +79,12 @@ export class MessageHandler { closeSettings(); sendResponse({ status: 'success' }); break; + + case 'OpenAboutPage': + OpenAboutPage(); + closeSettings(); + sendResponse({ status: 'success' }); + break; case 'OpenThemeCreator': const themeID = request?.body?.themeID; diff --git a/src/svelte-interface/pages/settings/general.svelte b/src/svelte-interface/pages/settings/general.svelte index c4afd9ad..81e53913 100644 --- a/src/svelte-interface/pages/settings/general.svelte +++ b/src/svelte-interface/pages/settings/general.svelte @@ -90,10 +90,20 @@ onChange: (isOn: boolean) => settingsState.lessonalert = isOn } }, + { + title: "About BetterSEQTA+", + description: "Opens About page.", + id: 9, + Component: Button, + props: { + onClick: () => browser.runtime.sendMessage({ type: 'currentTab', info: 'OpenAboutPage' }), + text: "Open" + } + }, { title: "BetterSEQTA+", description: "Enables BetterSEQTA+ features", - id: 9, + id: 10, Component: Switch, props: { state: $settingsState.onoff,