diff --git a/apps/roam/src/components/Export.tsx b/apps/roam/src/components/Export.tsx index 92ba297cf..c44a91504 100644 --- a/apps/roam/src/components/Export.tsx +++ b/apps/roam/src/components/Export.tsx @@ -43,14 +43,13 @@ import { render as renderToast } from "roamjs-components/components/Toast"; import { getNodeEnv } from "roamjs-components/util/env"; import apiGet from "roamjs-components/util/apiGet"; import apiPut from "roamjs-components/util/apiPut"; -import localStorageGet from "roamjs-components/util/localStorageGet"; import { ExportGithub } from "./ExportGithub"; -import localStorageSet from "roamjs-components/util/localStorageSet"; import isLiveBlock from "roamjs-components/queries/isLiveBlock"; import createPage from "roamjs-components/writes/createPage"; import { createInitialTldrawProps } from "~/utils/createInitialTldrawProps"; import { isCanvasPage as checkIfCanvasPage } from "~/utils/isCanvasPage"; import sendErrorEmail from "~/utils/sendErrorEmail"; +import { getSetting, setSetting } from "~/utils/extensionSettings"; const ExportProgress = ({ id }: { id: string }) => { const [progress, setProgress] = useState(0); @@ -115,8 +114,8 @@ const ExportDialog: ExportDialogComponent = ({ isExportDiscourseGraph = false, initialPanel, }) => { - const [selectedRepo, setSelectedRepo] = useState( - localStorageGet("selected-repo"), + const [selectedRepo, setSelectedRepo] = useState( + getSetting("selected-repo", ""), ); const exportId = useMemo(() => nanoid(), []); useEffect(() => { @@ -169,8 +168,10 @@ const ExportDialog: ExportDialogComponent = ({ discourseGraphEnabled as boolean, ); const [gitHubAccessToken, setGitHubAccessToken] = useState( - localStorageGet("oauth-github"), + getSetting("oauth-github", null), ); + + console.log("gitHubAccessToken", gitHubAccessToken); const [canSendToGitHub, setCanSendToGitHub] = useState(false); const writeFileToRepo = async ({ @@ -199,7 +200,7 @@ const ExportDialog: ExportDialogComponent = ({ if (response.status === 401) { setGitHubAccessToken(null); setError("Authentication failed. Please log in again."); - localStorageSet("oauth-github", ""); + setSetting("oauth-github", ""); return { status: 401 }; } return { status: response.status }; diff --git a/apps/roam/src/components/ExportGithub.tsx b/apps/roam/src/components/ExportGithub.tsx index 36bfedcd0..b72b0181b 100644 --- a/apps/roam/src/components/ExportGithub.tsx +++ b/apps/roam/src/components/ExportGithub.tsx @@ -3,16 +3,16 @@ import nanoid from "nanoid"; import React, { useCallback, useEffect, + useMemo, useRef, useState, - useMemo, } from "react"; import MenuItemSelect from "roamjs-components/components/MenuItemSelect"; import apiGet from "roamjs-components/util/apiGet"; import apiPost from "roamjs-components/util/apiPost"; import { getNodeEnv } from "roamjs-components/util/env"; -import localStorageGet from "roamjs-components/util/localStorageGet"; -import localStorageSet from "roamjs-components/util/localStorageSet"; +import getExtensionApi from "roamjs-components/util/extensionApiContext"; +import { setSetting } from "~/utils/extensionSettings"; type UserReposResponse = { data: [ @@ -58,40 +58,42 @@ export const ExportGithub = ({ const repoSelectEnabled = isGitHubAppInstalled && gitHubAccessToken; const isDev = useMemo(() => getNodeEnv() === "development", []); - const setRepo = (repo: string) => { setSelectedRepo(repo); - localStorageSet("selected-repo", repo); + setSetting("selected-repo", repo); }; const handleReceivedAccessToken = (token: string) => { - localStorageSet("oauth-github", token); + setSetting("oauth-github", token); setGitHubAccessToken(token); setClickedInstall(false); authWindow.current?.close(); }; - const fetchAndSetInstallation = useCallback(async () => { + const fetchAndSetInstallation = useCallback(async (token: string) => { try { const res = await apiGet<{ installations: { app_id: number }[] }>({ domain: "https://api.github.com", path: "user/installations", headers: { - Authorization: `token ${localStorageGet("oauth-github")}`, + Authorization: `token ${token}`, }, }); + const installations = res.installations; const APP_ID = isDev ? 882491 : 312167; // TODO - pull from process.env.GITHUB_APP_ID const isAppInstalled = installations.some( (installation) => installation.app_id === APP_ID, ); + setIsGitHubAppInstalled(isAppInstalled); return isAppInstalled; } catch (error) { const e = error as Error; + if (e.message === "Bad credentials") { setGitHubAccessToken(null); - localStorageSet("oauth-github", ""); + setSetting("oauth-github", ""); } return false; } @@ -103,6 +105,7 @@ export const ExportGithub = ({ const key = nanoid().replace(/_/g, "-"); const state = `github_${otp}_${key}`; setState(state); + const handleGitHubAuthMessage = (event: MessageEvent) => { const targetOrigin = isDev ? "https://samepage.ngrok.io" @@ -125,7 +128,7 @@ export const ExportGithub = ({ // check for installation useEffect(() => { - if (gitHubAccessToken) fetchAndSetInstallation(); + if (gitHubAccessToken) fetchAndSetInstallation(gitHubAccessToken); }, [gitHubAccessToken]); // get the list of repos diff --git a/apps/roam/src/components/settings/DiscourseRelationConfigPanel.tsx b/apps/roam/src/components/settings/DiscourseRelationConfigPanel.tsx index 83c6d3be8..a9b81a214 100644 --- a/apps/roam/src/components/settings/DiscourseRelationConfigPanel.tsx +++ b/apps/roam/src/components/settings/DiscourseRelationConfigPanel.tsx @@ -49,6 +49,7 @@ import getDiscourseNodes from "~/utils/getDiscourseNodes"; import { getConditionLabels } from "~/utils/conditionToDatalog"; import { formatHexColor } from "./DiscourseNodeCanvasSettings"; import posthog from "posthog-js"; +import { getSetting, setSetting } from "~/utils/extensionSettings"; const DEFAULT_SELECTED_RELATION = { display: "none", @@ -868,7 +869,7 @@ export const RelationEditPanel = ({ style={{ marginRight: 8 }} /> - {!!localStorage.getItem("roamjs:discourse-relation-copy") && ( + {!!getSetting("discourse-relation-copy") && (