diff --git a/src/App.tsx b/src/App.tsx
index d2bc8a20..822f4e0b 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,7 +1,7 @@
import { useEffect } from "react";
-import Start from "./pages/start";
-import Home from "./pages/home";
-import Loading from "./pages/loading";
+import Start from "./popup/pages/start";
+import Home from "./popup/pages/home";
+import Loading from "./popup/pages/loading";
import { useAuth } from "./hooks/useAuth";
import { goTo } from "react-chrome-extension-router";
diff --git a/src/content-scripts/components/AICodeRefactor/ChangeSuggestorButton.ts b/src/content-scripts/components/AICodeRefactor/ChangeSuggestorButton.ts
index 047e3160..fa6f1c58 100644
--- a/src/content-scripts/components/AICodeRefactor/ChangeSuggestorButton.ts
+++ b/src/content-scripts/components/AICodeRefactor/ChangeSuggestorButton.ts
@@ -38,9 +38,6 @@ const handleSubmit = async (commentNode: HTMLElement) => {
if (!descriptionConfig) {
return;
}
- if (!descriptionConfig.enabled) {
- return alert("AI PR description is disabled!");
- }
logo.classList.toggle("animate-spin");
button.classList.toggle("pointer-events-none");
diff --git a/src/content-scripts/components/GenerateAIDescription/DescriptionGeneratorButton.ts b/src/content-scripts/components/GenerateAIDescription/DescriptionGeneratorButton.ts
index 7a44ea59..d10f5000 100644
--- a/src/content-scripts/components/GenerateAIDescription/DescriptionGeneratorButton.ts
+++ b/src/content-scripts/components/GenerateAIDescription/DescriptionGeneratorButton.ts
@@ -16,7 +16,6 @@ export const DescriptionGeneratorButton = () => {
Generate PR description`,
onclick: handleSubmit,
-
});
return descriptionGeneratorButton;
@@ -34,6 +33,13 @@ const handleSubmit = async () => {
if (!logo || !button) {
return;
}
+
+ const descriptionConfig = await getAIDescriptionConfig();
+
+ if (!descriptionConfig) {
+ return;
+ }
+
logo.classList.toggle("animate-spin");
button.classList.toggle("pointer-events-none");
diff --git a/src/content-scripts/github.ts b/src/content-scripts/github.ts
index a1e4f9e3..917bfcf1 100644
--- a/src/content-scripts/github.ts
+++ b/src/content-scripts/github.ts
@@ -26,7 +26,7 @@ const processGithubPage = async () => {
} else if (isPullRequestFilesChangedPage(window.location.href)) {
prReviewWatch(injectChangeSuggestorButton, 500);
} else if (isGithubPullRequestPage(window.location.href)) {
- prEditWatch(injectDescriptionGeneratorButton);
+ prEditWatch(injectDescriptionGeneratorButton, 500);
void injectAddPRToHighlightsButton();
} else if (isGithubProfilePage(window.location.href)) {
const username = getGithubUsername(window.location.href);
diff --git a/src/popup/components/ToggleSwitch.tsx b/src/popup/components/ToggleSwitch.tsx
new file mode 100644
index 00000000..8ffa270a
--- /dev/null
+++ b/src/popup/components/ToggleSwitch.tsx
@@ -0,0 +1,55 @@
+import { useState } from "react";
+
+const Toggle = ({ settingName, settingLabel, enabledSetting }: { settingName: string; enabledSetting: boolean; settingLabel: string }) => {
+ const [enabled, setEnabled] = useState(enabledSetting);
+
+ const changeSetting = async (value: boolean) => {
+ const settingsConfig = await chrome.storage.sync.get("osSettingsConfig");
+
+ if (settingsConfig.osSettingsConfig === undefined) {
+ const defaultSettings = { aiPrDescription: false };
+
+ await chrome.storage.sync.set({ osSettingsConfig: defaultSettings });
+ }
+
+ const newSettingsConfig = { ...settingsConfig.osSettingsConfig, [settingName]: value };
+
+ await chrome.storage.sync.set({ osSettingsConfig: newSettingsConfig });
+
+ setEnabled(value);
+ };
+
+ return (
+
+
+ {settingLabel}
+
+
+
-
-
@@ -103,7 +79,7 @@ const AIPRDescription = () => {
ref={setRefFromKey("form")}
onSubmit={handleFormSubmit}
>
-