Prevent creating duplicates when loading from gist
This commit is contained in:
parent
c6c24d02b9
commit
9aec2f02d0
@ -388,7 +388,9 @@ export default function Modal({
|
|||||||
((modal === MODAL.IMG || modal === MODAL.CODE) && !exportData.data) ||
|
((modal === MODAL.IMG || modal === MODAL.CODE) && !exportData.data) ||
|
||||||
(modal === MODAL.SAVEAS && saveAsTitle === "") ||
|
(modal === MODAL.SAVEAS && saveAsTitle === "") ||
|
||||||
(modal === MODAL.IMPORT_SRC && importSource.src === ""),
|
(modal === MODAL.IMPORT_SRC && importSource.src === ""),
|
||||||
|
hidden: modal === MODAL.SHARE,
|
||||||
}}
|
}}
|
||||||
|
hasCancel={modal !== MODAL.SHARE}
|
||||||
cancelText={t("cancel")}
|
cancelText={t("cancel")}
|
||||||
width={getModalWidth(modal)}
|
width={getModalWidth(modal)}
|
||||||
bodyStyle={{
|
bodyStyle={{
|
||||||
|
@ -9,6 +9,7 @@ import {
|
|||||||
useDiagram,
|
useDiagram,
|
||||||
useEnums,
|
useEnums,
|
||||||
useNotes,
|
useNotes,
|
||||||
|
useTransform,
|
||||||
useTypes,
|
useTypes,
|
||||||
} from "../../../hooks";
|
} from "../../../hooks";
|
||||||
import { databases } from "../../../data/databases";
|
import { databases } from "../../../data/databases";
|
||||||
@ -22,6 +23,7 @@ export default function Share({ title }) {
|
|||||||
const { areas } = useAreas();
|
const { areas } = useAreas();
|
||||||
const { types } = useTypes();
|
const { types } = useTypes();
|
||||||
const { enums } = useEnums();
|
const { enums } = useEnums();
|
||||||
|
const { transform } = useTransform();
|
||||||
|
|
||||||
const userToken = localStorage.getItem("github_token");
|
const userToken = localStorage.getItem("github_token");
|
||||||
const octokit = useMemo(() => {
|
const octokit = useMemo(() => {
|
||||||
@ -44,8 +46,19 @@ export default function Share({ title }) {
|
|||||||
...(databases[database].hasTypes && { types: types }),
|
...(databases[database].hasTypes && { types: types }),
|
||||||
...(databases[database].hasEnums && { enums: enums }),
|
...(databases[database].hasEnums && { enums: enums }),
|
||||||
title: title,
|
title: title,
|
||||||
|
transform: transform,
|
||||||
});
|
});
|
||||||
}, [areas, notes, tables, relationships, database, title, enums, types]);
|
}, [
|
||||||
|
areas,
|
||||||
|
notes,
|
||||||
|
tables,
|
||||||
|
relationships,
|
||||||
|
database,
|
||||||
|
title,
|
||||||
|
enums,
|
||||||
|
types,
|
||||||
|
transform,
|
||||||
|
]);
|
||||||
|
|
||||||
const updateGist = useCallback(async () => {
|
const updateGist = useCallback(async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
@ -37,6 +37,7 @@ export const IdContext = createContext({ gistId: "" });
|
|||||||
export default function WorkSpace() {
|
export default function WorkSpace() {
|
||||||
const [id, setId] = useState(0);
|
const [id, setId] = useState(0);
|
||||||
const [gistId, setGistId] = useState("");
|
const [gistId, setGistId] = useState("");
|
||||||
|
const [loadedFromGistId, setLoadedFromGistId] = useState("");
|
||||||
const [title, setTitle] = useState("Untitled Diagram");
|
const [title, setTitle] = useState("Untitled Diagram");
|
||||||
const [resize, setResize] = useState(false);
|
const [resize, setResize] = useState(false);
|
||||||
const [width, setWidth] = useState(340);
|
const [width, setWidth] = useState(340);
|
||||||
@ -98,6 +99,7 @@ export default function WorkSpace() {
|
|||||||
todos: tasks,
|
todos: tasks,
|
||||||
pan: transform.pan,
|
pan: transform.pan,
|
||||||
zoom: transform.zoom,
|
zoom: transform.zoom,
|
||||||
|
loadedFromGistId: loadedFromGistId,
|
||||||
...(databases[database].hasEnums && { enums: enums }),
|
...(databases[database].hasEnums && { enums: enums }),
|
||||||
...(databases[database].hasTypes && { types: types }),
|
...(databases[database].hasTypes && { types: types }),
|
||||||
})
|
})
|
||||||
@ -121,6 +123,7 @@ export default function WorkSpace() {
|
|||||||
gistId: gistId ?? "",
|
gistId: gistId ?? "",
|
||||||
pan: transform.pan,
|
pan: transform.pan,
|
||||||
zoom: transform.zoom,
|
zoom: transform.zoom,
|
||||||
|
loadedFromGistId: loadedFromGistId,
|
||||||
...(databases[database].hasEnums && { enums: enums }),
|
...(databases[database].hasEnums && { enums: enums }),
|
||||||
...(databases[database].hasTypes && { types: types }),
|
...(databases[database].hasTypes && { types: types }),
|
||||||
})
|
})
|
||||||
@ -166,6 +169,7 @@ export default function WorkSpace() {
|
|||||||
database,
|
database,
|
||||||
enums,
|
enums,
|
||||||
gistId,
|
gistId,
|
||||||
|
loadedFromGistId,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const load = useCallback(async () => {
|
const load = useCallback(async () => {
|
||||||
@ -182,6 +186,7 @@ export default function WorkSpace() {
|
|||||||
}
|
}
|
||||||
setId(d.id);
|
setId(d.id);
|
||||||
setGistId(d.gistId);
|
setGistId(d.gistId);
|
||||||
|
setLoadedFromGistId(d.loadedFromGistId);
|
||||||
setTitle(d.name);
|
setTitle(d.name);
|
||||||
setTables(d.tables);
|
setTables(d.tables);
|
||||||
setRelationships(d.references);
|
setRelationships(d.references);
|
||||||
@ -218,6 +223,7 @@ export default function WorkSpace() {
|
|||||||
}
|
}
|
||||||
setId(diagram.id);
|
setId(diagram.id);
|
||||||
setGistId(diagram.gistId);
|
setGistId(diagram.gistId);
|
||||||
|
setLoadedFromGistId(diagram.loadedFromGistId);
|
||||||
setTitle(diagram.name);
|
setTitle(diagram.name);
|
||||||
setTables(diagram.tables);
|
setTables(diagram.tables);
|
||||||
setRelationships(diagram.references);
|
setRelationships(diagram.references);
|
||||||
@ -323,6 +329,13 @@ export default function WorkSpace() {
|
|||||||
|
|
||||||
const loadFromGist = useCallback(
|
const loadFromGist = useCallback(
|
||||||
async (shareId) => {
|
async (shareId) => {
|
||||||
|
const d = await db.diagrams.get({ loadedFromGistId: shareId });
|
||||||
|
if (d) {
|
||||||
|
window.name = "d " + d.id;
|
||||||
|
} else {
|
||||||
|
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,
|
||||||
@ -332,14 +345,16 @@ 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);
|
||||||
console.log(d);
|
setUndoStack([]);
|
||||||
window.name = "";
|
setRedoStack([]);
|
||||||
|
setLoadedFromGistId(shareId);
|
||||||
setDatabase(d.database);
|
setDatabase(d.database);
|
||||||
setTitle(d.title);
|
setTitle(d.title);
|
||||||
setTables(d.tables);
|
setTables(d.tables);
|
||||||
setRelationships(d.relationships);
|
setRelationships(d.relationships);
|
||||||
setNotes(d.notes);
|
setNotes(d.notes);
|
||||||
setAreas(d.subjectAreas);
|
setAreas(d.subjectAreas);
|
||||||
|
setTransform(d.transform);
|
||||||
if (databases[d.database].hasTypes) {
|
if (databases[d.database].hasTypes) {
|
||||||
setTypes(d.types ?? []);
|
setTypes(d.types ?? []);
|
||||||
}
|
}
|
||||||
@ -359,6 +374,9 @@ export default function WorkSpace() {
|
|||||||
setRelationships,
|
setRelationships,
|
||||||
setTables,
|
setTables,
|
||||||
setTypes,
|
setTypes,
|
||||||
|
setTransform,
|
||||||
|
setRedoStack,
|
||||||
|
setUndoStack,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@ import { templateSeeds } from "./seeds";
|
|||||||
|
|
||||||
export const db = new Dexie("drawDB");
|
export const db = new Dexie("drawDB");
|
||||||
|
|
||||||
db.version(5).stores({
|
db.version(6).stores({
|
||||||
diagrams: "++id, lastModified",
|
diagrams: "++id, lastModified, &loadedFromGistId",
|
||||||
templates: "++id, custom",
|
templates: "++id, custom",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user