Fix wrong url being generated for shared diagrams

This commit is contained in:
1ilit 2024-09-01 19:52:23 +04:00
parent 9aec2f02d0
commit 59a388f44c
4 changed files with 15 additions and 32 deletions

View File

@ -1,7 +1,6 @@
import { Button, Input, Spin, Toast } from "@douyinfe/semi-ui"; import { Button, Input, Spin, Toast } from "@douyinfe/semi-ui";
import { useCallback, useContext, useEffect, useState, useMemo } from "react"; import { useCallback, useContext, useEffect, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { Octokit } from "octokit";
import { IdContext } from "../../Workspace"; import { IdContext } from "../../Workspace";
import { IconLink } from "@douyinfe/semi-icons"; import { IconLink } from "@douyinfe/semi-icons";
import { import {
@ -13,6 +12,7 @@ import {
useTypes, useTypes,
} from "../../../hooks"; } from "../../../hooks";
import { databases } from "../../../data/databases"; import { databases } from "../../../data/databases";
import { octokit } from "../../../data/octokit";
export default function Share({ title }) { export default function Share({ title }) {
const { t } = useTranslation(); const { t } = useTranslation();
@ -24,17 +24,8 @@ export default function Share({ title }) {
const { types } = useTypes(); const { types } = useTypes();
const { enums } = useEnums(); const { enums } = useEnums();
const { transform } = useTransform(); const { transform } = useTransform();
const url =
const userToken = localStorage.getItem("github_token"); window.location.origin + window.location.pathname + "?shareId=" + gistId;
const octokit = useMemo(() => {
return new Octokit({
auth: userToken ?? import.meta.env.VITE_GITHUB_ACCESS_TOKEN,
});
}, [userToken]);
const url = useMemo(
() => window.location.href + "?shareId=" + gistId,
[gistId],
);
const diagramToString = useCallback(() => { const diagramToString = useCallback(() => {
return JSON.stringify({ return JSON.stringify({
@ -80,7 +71,7 @@ export default function Share({ title }) {
} finally { } finally {
setLoading(false); setLoading(false);
} }
}, [gistId, octokit, diagramToString]); }, [gistId, diagramToString]);
const generateLink = useCallback(async () => { const generateLink = useCallback(async () => {
setLoading(true); setLoading(true);
@ -103,7 +94,7 @@ export default function Share({ title }) {
} finally { } finally {
setLoading(false); setLoading(false);
} }
}, [octokit, setGistId, diagramToString]); }, [setGistId, diagramToString]);
useEffect(() => { useEffect(() => {
const updateOrGenerateLink = async () => { const updateOrGenerateLink = async () => {

View File

@ -1,10 +1,4 @@
import { import { useState, useEffect, useCallback, createContext } from "react";
useState,
useEffect,
useCallback,
createContext,
useMemo,
} from "react";
import ControlPanel from "./EditorHeader/ControlPanel"; import ControlPanel from "./EditorHeader/ControlPanel";
import Canvas from "./EditorCanvas/Canvas"; import Canvas from "./EditorCanvas/Canvas";
import { CanvasContextProvider } from "../context/CanvasContext"; import { CanvasContextProvider } from "../context/CanvasContext";
@ -30,7 +24,7 @@ import { useTranslation } from "react-i18next";
import { databases } from "../data/databases"; import { databases } from "../data/databases";
import { isRtl } from "../i18n/utils/rtl"; import { isRtl } from "../i18n/utils/rtl";
import { useSearchParams } from "react-router-dom"; import { useSearchParams } from "react-router-dom";
import { Octokit } from "octokit"; import { octokit } from "../data/octokit";
export const IdContext = createContext({ gistId: "" }); export const IdContext = createContext({ gistId: "" });
@ -64,12 +58,6 @@ export default function WorkSpace() {
const { undoStack, redoStack, setUndoStack, setRedoStack } = useUndoRedo(); const { undoStack, redoStack, setUndoStack, setRedoStack } = useUndoRedo();
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
let [searchParams] = useSearchParams(); let [searchParams] = useSearchParams();
const userToken = localStorage.getItem("github_token");
const octokit = useMemo(() => {
return new Octokit({
auth: userToken ?? import.meta.env.VITE_GITHUB_ACCESS_TOKEN,
});
}, [userToken]);
const handleResize = (e) => { const handleResize = (e) => {
if (!resize) return; if (!resize) return;
const w = isRtl(i18n.language) ? window.innerWidth - e.clientX : e.clientX; const w = isRtl(i18n.language) ? window.innerWidth - e.clientX : e.clientX;
@ -335,7 +323,6 @@ export default function WorkSpace() {
} else { } else {
window.name = ""; window.name = "";
} }
try { try {
const res = await octokit.request(`GET /gists/${shareId}`, { const res = await octokit.request(`GET /gists/${shareId}`, {
gist_id: shareId, gist_id: shareId,
@ -345,6 +332,7 @@ export default function WorkSpace() {
}); });
const diagramSrc = res.data.files["share.json"].content; const diagramSrc = res.data.files["share.json"].content;
const d = JSON.parse(diagramSrc); const d = JSON.parse(diagramSrc);
setGistId("")
setUndoStack([]); setUndoStack([]);
setRedoStack([]); setRedoStack([]);
setLoadedFromGistId(shareId); setLoadedFromGistId(shareId);
@ -366,7 +354,6 @@ export default function WorkSpace() {
} }
}, },
[ [
octokit,
setAreas, setAreas,
setDatabase, setDatabase,
setEnums, setEnums,

View File

@ -4,7 +4,7 @@ import { templateSeeds } from "./seeds";
export const db = new Dexie("drawDB"); export const db = new Dexie("drawDB");
db.version(6).stores({ db.version(6).stores({
diagrams: "++id, lastModified, &loadedFromGistId", diagrams: "++id, lastModified, loadedFromGistId",
templates: "++id, custom", templates: "++id, custom",
}); });

5
src/data/octokit.js Normal file
View File

@ -0,0 +1,5 @@
import { Octokit } from "octokit";
export const octokit = new Octokit({
auth: import.meta.env.VITE_GITHUB_ACCESS_TOKEN,
});