mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-21 18:46:00 +00:00
markdown manifest
This commit is contained in:
@@ -46,6 +46,12 @@ const configLoader = () => ({
|
||||
reloadTrigger: 'config-changed',
|
||||
});
|
||||
|
||||
const markdownManifestLoader = () => ({
|
||||
url: 'files/markdown-manifest',
|
||||
params: {},
|
||||
reloadTrigger: 'files-changed-markdown',
|
||||
});
|
||||
|
||||
// const sqlObjectListLoader = ({ conid, database }) => ({
|
||||
// url: 'metadata/list-objects',
|
||||
// params: { conid, database },
|
||||
@@ -269,3 +275,10 @@ export function getFiles(args) {
|
||||
export function useFiles(args) {
|
||||
return useCore(filesLoader, args);
|
||||
}
|
||||
|
||||
export function getMarkdownManifest(args) {
|
||||
return getCore(markdownManifestLoader, args);
|
||||
}
|
||||
export function useMarkdownManifest(args) {
|
||||
return useCore(markdownManifestLoader, args);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import localforage from 'localforage';
|
||||
import { changeTab } from './common';
|
||||
import { useSetOpenedTabs } from './globalState';
|
||||
|
||||
export default function useEditorData({ tabid, loadFromArgs = null }) {
|
||||
export default function useEditorData({ tabid, reloadToken = 0, loadFromArgs = null }) {
|
||||
const localStorageKey = `tabdata_${tabid}`;
|
||||
const setOpenedTabs = useSetOpenedTabs();
|
||||
const changeCounterRef = React.useRef(0);
|
||||
@@ -57,19 +57,20 @@ export default function useEditorData({ tabid, loadFromArgs = null }) {
|
||||
|
||||
React.useEffect(() => {
|
||||
initialLoad();
|
||||
}, []);
|
||||
}, [reloadToken]);
|
||||
|
||||
const saveToStorage = React.useCallback(async () => {
|
||||
if (valueRef.current == null) return;
|
||||
try {
|
||||
await localforage.setItem(localStorageKey, valueRef.current);
|
||||
localStorage.removeItem(localStorageKey);
|
||||
savedCounterRef.current = changeCounterRef.current;
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}, [localStorageKey, valueRef]);
|
||||
|
||||
const saveToStorageFallback = React.useCallback(() => {
|
||||
const saveToStorageSync = React.useCallback(() => {
|
||||
if (valueRef.current == null) return;
|
||||
if (savedCounterRef.current == changeCounterRef.current) return; // all saved
|
||||
// on window unload must be synchronous actions, save to local storage instead
|
||||
@@ -86,10 +87,10 @@ export default function useEditorData({ tabid, loadFromArgs = null }) {
|
||||
};
|
||||
|
||||
React.useEffect(() => {
|
||||
window.addEventListener('beforeunload', saveToStorageFallback);
|
||||
window.addEventListener('beforeunload', saveToStorageSync);
|
||||
return () => {
|
||||
saveToStorage();
|
||||
window.removeEventListener('beforeunload', saveToStorageFallback);
|
||||
window.removeEventListener('beforeunload', saveToStorageSync);
|
||||
};
|
||||
}, []);
|
||||
|
||||
@@ -99,5 +100,7 @@ export default function useEditorData({ tabid, loadFromArgs = null }) {
|
||||
isLoading,
|
||||
initialData: initialDataRef.current,
|
||||
errorMessage,
|
||||
saveToStorage,
|
||||
saveToStorageSync,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user