diff --git a/packages/web/src/modals/FavoriteModal.js b/packages/web/src/modals/FavoriteModal.js
index 190aab126..391947fcc 100644
--- a/packages/web/src/modals/FavoriteModal.js
+++ b/packages/web/src/modals/FavoriteModal.js
@@ -20,6 +20,7 @@ import useHasPermission from '../utility/useHasPermission';
import _ from 'lodash';
import getElectron from '../utility/getElectron';
import { copyTextToClipboard } from '../utility/clipboard';
+import localforage from 'localforage';
function FontIconPreview() {
const { values } = useForm();
@@ -32,32 +33,46 @@ export default function FavoriteModal({ modalState, editingData = undefined, sav
const savedProperties = ['title', 'icon', 'showInToolbar', 'openOnStartup', 'urlPath'];
const initialValues = React.useMemo(() => {
if (savingTab) {
- return {
+ const res = {
title: savingTab.title,
icon: savingTab.icon,
urlPath: _.kebabCase(_.deburr(savingTab.title)),
};
+ if (!hasPermission('files/favorites/write')) {
+ res.shareAsLink = true;
+ }
+ return res;
}
if (editingData) {
return _.pick(editingData, savedProperties);
}
}, []);
- // const savedFile = savingTab && savingTab.props && savingTab.props.savedFile;
+ const savedFile = savingTab && savingTab.props && savingTab.props.savedFile;
const getTabSaveData = async (values) => {
const tabdata = {};
+ const skipEditor = !!savedFile && values.whatToSave != 'content';
const re = new RegExp(`tabdata_(.*)_${savingTab.tabid}`);
+ for (const key in await localforage.keys()) {
+ const match = key.match(re);
+ if (!match) continue;
+ if (skipEditor && match[1] == 'editor') continue;
+ tabdata[match[1]] = JSON.parse(await localforage.getItem(key));
+ }
for (const key in localStorage) {
const match = key.match(re);
if (!match) continue;
- if (match[1] == 'editor') continue;
+ if (skipEditor && match[1] == 'editor') continue;
tabdata[match[1]] = JSON.parse(localStorage.getItem(key));
}
return {
- props: savingTab.props,
+ props:
+ values.whatToSave == 'content' && savingTab.props
+ ? _.omit(savingTab.props, ['savedFile', 'savedFormat', 'savedFolder'])
+ : savingTab.props,
tabComponent: savingTab.tabComponent,
tabdata,
..._.pick(values, savedProperties),
@@ -119,22 +134,19 @@ export default function FavoriteModal({ modalState, editingData = undefined, sav
- {!!savingTab && !electron && }
+ {!!savingTab && !electron && hasPermission('files/favorites/write') && (
+
+ )}
!values.shareAsLink}>
- {
-
-
-
- {/* */}
-
-
- {/*
- */}
-
-}
+ {!!savingTab && !!savedFile && (
+
+
+
+
+ )}
!values.shareAsLink && hasPermission('files/favorites/write')}>