removed markdown manifest, used favorites instead

This commit is contained in:
Jan Prochazka
2020-12-12 20:19:39 +01:00
parent ae0606cc84
commit 2978063ac8
5 changed files with 72 additions and 94 deletions

View File

@@ -6,10 +6,45 @@ import axios from '../utility/axios';
import useOpenNewTab from '../utility/useOpenNewTab';
import { SavedFileAppObjectBase } from './SavedFileAppObject';
export function useOpenFavorite() {
const openNewTab = useOpenNewTab();
const openFavorite = React.useCallback(
async (favorite) => {
const { icon, tabComponent, title, props, tabdata } = favorite;
let tabdataNew = tabdata;
if (props.savedFile) {
const resp = await axios.post('files/load', {
folder: props.savedFolder,
file: props.savedFile,
format: props.savedFormat,
});
tabdataNew = {
...tabdata,
editor: resp.data,
};
}
openNewTab(
{
title,
icon: icon || 'img favorite',
props,
tabComponent,
},
tabdataNew
);
},
[openNewTab]
);
return openFavorite;
}
export function FavoriteFileAppObject({ data, commonProps }) {
const { icon, tabComponent, title, props, tabdata } = data;
const openNewTab = useOpenNewTab();
const showModal = useShowModal();
const openFavorite = useOpenFavorite();
const editFavorite = () => {
showModal((modalState) => <FavoriteModal modalState={modalState} editingData={data} />);
@@ -24,27 +59,7 @@ export function FavoriteFileAppObject({ data, commonProps }) {
title={title}
disableRename
onLoad={async (data) => {
let tabdataNew = tabdata;
if (props.savedFile) {
const resp = await axios.post('files/load', {
folder: props.savedFolder,
file: props.savedFile,
format: props.savedFormat,
});
tabdataNew = {
...tabdata,
editor: resp.data,
};
}
openNewTab(
{
title,
icon: icon || 'img favorite',
props,
tabComponent,
},
tabdataNew
);
openFavorite(data);
}}
menuExt={<DropDownMenuItem onClick={editFavorite}>Edit</DropDownMenuItem>}
/>

View File

@@ -26,6 +26,8 @@ export default function FavoriteModal({ modalState, editingData = undefined, sav
return {
title: editingData.title,
icon: editingData.icon,
showInToolbar: editingData.showInToolbar,
openOnStartup: editingData.openOnStartup,
};
}
}, []);

View File

@@ -52,12 +52,6 @@ const favoritesLoader = () => ({
reloadTrigger: 'files-changed-favorites',
});
const markdownManifestLoader = () => ({
url: 'files/markdown-manifest',
params: {},
reloadTrigger: 'files-changed-markdown',
});
// const sqlObjectListLoader = ({ conid, database }) => ({
// url: 'metadata/list-objects',
// params: { conid, database },
@@ -282,13 +276,6 @@ export function useFiles(args) {
return useCore(filesLoader, args);
}
export function getMarkdownManifest(args) {
return getCore(markdownManifestLoader, args);
}
export function useMarkdownManifest(args) {
return useCore(markdownManifestLoader, args);
}
export function getFavorites(args) {
return getCore(favoritesLoader, args);
}

View File

@@ -4,7 +4,7 @@ import ConnectionModal from '../modals/ConnectionModal';
import styled from 'styled-components';
import ToolbarButton, { ToolbarButtonExternalImage } from './ToolbarButton';
import useNewQuery from '../query/useNewQuery';
import { useConfig, useMarkdownManifest } from '../utility/metadataLoaders';
import { useConfig, useFavorites } from '../utility/metadataLoaders';
import { useSetOpenedTabs, useOpenedTabs, useCurrentTheme, useSetCurrentTheme } from '../utility/globalState';
import useNewFreeTable from '../freetable/useNewFreeTable';
import ImportExportModal from '../modals/ImportExportModal';
@@ -16,6 +16,7 @@ import AboutModal from '../modals/AboutModal';
import useOpenNewTab from '../utility/useOpenNewTab';
import tabs from '../tabs';
import FavoriteModal from '../modals/FavoriteModal';
import { useOpenFavorite } from '../appobj/FavoriteFileAppObject';
const ToolbarContainer = styled.div`
display: flex;
@@ -36,7 +37,8 @@ export default function ToolBar({ toolbarPortalRef }) {
const setCurrentTheme = useSetCurrentTheme();
const extensions = useExtensions();
const electron = getElectron();
const markdownManifest = useMarkdownManifest();
const favorites = useFavorites();
const openFavorite = useOpenFavorite();
const currentTab = openedTabs.find((x) => x.selected);
@@ -84,45 +86,46 @@ export default function ToolBar({ toolbarPortalRef }) {
showModal((modalState) => <FavoriteModal modalState={modalState} savingTab={currentTab} />);
};
function openTabFromButton(page) {
if (
openedTabs.find(
(x) => x.tabComponent == 'MarkdownViewTab' && x.props && x.props.file == page.file && x.closedTime == null
)
) {
setOpenedTabs((tabs) =>
tabs.map((tab) => ({
...tab,
selected: tab.tabComponent == 'MarkdownViewTab' && tab.props && tab.props.file == page.file,
}))
);
} else {
openNewTab({
title: page.button || page.file,
tabComponent: 'MarkdownViewTab',
icon: page.icon || 'img markdown',
props: {
file: page.file,
},
});
}
function openTabFromButton(favorite) {
openFavorite(favorite);
// if (
// openedTabs.find(
// (x) => x.tabComponent == 'MarkdownViewTab' && x.props && x.props.file == page.file && x.closedTime == null
// )
// ) {
// setOpenedTabs((tabs) =>
// tabs.map((tab) => ({
// ...tab,
// selected: tab.tabComponent == 'MarkdownViewTab' && tab.props && tab.props.file == page.file,
// }))
// );
// } else {
// openNewTab({
// title: page.button || page.file,
// tabComponent: 'MarkdownViewTab',
// icon: page.icon || 'img markdown',
// props: {
// file: page.file,
// },
// });
// }
}
React.useEffect(() => {
for (const page of (markdownManifest || []).filter((x) => x.autorun)) {
openTabFromButton(page);
for (const fav of (favorites || []).filter((x) => x.openOnStartup)) {
openTabFromButton(fav);
}
}, [markdownManifest]);
}, [favorites]);
return (
<ToolbarContainer>
<ConnectionModal modalState={modalState} />
{!electron && <ToolbarButtonExternalImage image="/logo192.png" onClick={showAbout} />}
{(markdownManifest || [])
.filter((x) => x.button)
{(favorites || [])
.filter((x) => x.showInToolbar)
.map((x) => (
<ToolbarButton key={x.button} onClick={() => openTabFromButton(x)} icon={x.icon || 'icon markdown'}>
{x.button}
<ToolbarButton key={x.file} onClick={() => openTabFromButton(x)} icon={x.icon || 'icon favorite'}>
{x.title}
</ToolbarButton>
))}
{config.runAsPortal == false && (