markdown manifest

This commit is contained in:
Jan Prochazka
2020-12-10 18:34:02 +01:00
parent d502dc0dfd
commit ac4aa94976
16 changed files with 187 additions and 74 deletions

View File

@@ -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);
}

View File

@@ -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,
};
}