diff --git a/interface/src/pages/Settings.tsx b/interface/src/pages/Settings.tsx
index 46d2b4c4..50d440f8 100644
--- a/interface/src/pages/Settings.tsx
+++ b/interface/src/pages/Settings.tsx
@@ -48,6 +48,11 @@ const Settings: React.FC = () => {
description: "Customise the overall theme colour of SEQTA Learn.",
modifyElement:
},
+ {
+ title: "Edit Sidebar Layout",
+ description: "Customise the sidebar layout.",
+ modifyElement:
+ },
{
title: "Transparency Effects",
description: "Enables transparency effects on certain elements such as blur. (May impact battery life)",
diff --git a/src/SEQTA.js b/src/SEQTA.js
index deb72d51..8631bcf0 100644
--- a/src/SEQTA.js
+++ b/src/SEQTA.js
@@ -11,13 +11,14 @@ import loading, { AppendLoadingSymbol } from "./seqta/ui/Loading.js";
import assessmentsicon from "./seqta/icons/assessmentsIcon.js";
import coursesicon from "./seqta/icons/coursesIcon.js";
import StorageListener from "./seqta/utils/StorageListener.js";
+import { MessageHandler } from "./seqta/utils/MessageListener.js";
import { updateBgDurations } from "./seqta/ui/Animation.js";
import { updateAllColors } from "./seqta/ui/colors/Manager.js";
import { appendBackgroundToUI } from "./seqta/ui/ImageBackgrounds.js";
export let isChrome = window.chrome;
let SettingsClicked = false;
-let MenuOptionsOpen = false;
+export let MenuOptionsOpen = false;
let UserInitalCode = "";
let currentSelectedDate = new Date();
let LessonInterval;
@@ -717,6 +718,7 @@ export function AppendElementsToDisabledPage() {
}
new StorageListener();
+new MessageHandler();
var PageLoaded = false;
async function CheckLoadOnPeriods() {
@@ -771,6 +773,13 @@ document.addEventListener(
true,
);
+export function closeSettings() {
+ var extensionsettings = document.getElementById("ExtensionPopup");
+
+ extensionsettings.classList.add("hide");
+ SettingsClicked = false;
+}
+
function addExtensionSettings() {
let link = document.createElement("link");
link.href = chrome.runtime.getURL("popup/popup.css");
@@ -893,7 +902,7 @@ function cloneAttributes(target, source) {
});
}
-function OpenMenuOptions() {
+export function OpenMenuOptions() {
chrome.storage.local.get(null, function (result) {
var container = document.getElementById("container");
var menu = document.getElementById("menu");
diff --git a/src/background.js b/src/background.js
index df175f7a..77e909c1 100644
--- a/src/background.js
+++ b/src/background.js
@@ -101,6 +101,15 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
HandleIntexedDB(request, sendResponse);
return true;
+ case "currentTab":
+ chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, request, function (response) {
+ // send response from current tab to popup
+ sendResponse(response);
+ });
+ });
+ return true;
+
case "githubTab":
chrome.tabs.create({ url: "github.com/SethBurkart123/EvenBetterSEQTA" });
break;
diff --git a/src/seqta/utils/MessageListener.js b/src/seqta/utils/MessageListener.js
new file mode 100644
index 00000000..67ecfc15
--- /dev/null
+++ b/src/seqta/utils/MessageListener.js
@@ -0,0 +1,33 @@
+/* global chrome */
+
+import { MenuOptionsOpen, OpenMenuOptions, closeSettings } from "../../SEQTA.js";
+
+export class MessageHandler {
+ constructor() {
+ // Register this class as the message handler for the Chrome extension
+ chrome.runtime.onMessage.addListener(this.routeMessage.bind(this));
+ }
+
+ routeMessage(request) {
+ // You can use a switch-case or an object to route the message to the correct handler
+ switch (request.info) {
+
+ case "EditSidebar":
+ this.editSidebar();
+ break;
+ // Add more cases as needed
+ default:
+ console.log("Unknown request info:", request.info);
+
+ }
+ }
+
+ editSidebar() {
+ if (!MenuOptionsOpen) {
+ OpenMenuOptions();
+ closeSettings();
+ }
+ }
+
+ // Add more methods for handling other message types
+}
\ No newline at end of file