SYNC: Handle error when saving to team files

This commit is contained in:
SPRINX0\prochazka
2025-11-24 17:34:40 +01:00
committed by Diflow
parent 67ee130a9e
commit 5553e3cd8d
4 changed files with 44 additions and 21 deletions

View File

@@ -115,7 +115,7 @@ registerCommand({
toolbar: true,
icon: 'icon new-connection',
toolbarName: __t('command.new.connection', { defaultMessage: 'Add connection' }),
category: __t('command.new', { defaultMessage: 'New'}),
category: __t('command.new', { defaultMessage: 'New' }),
toolbarOrder: 1,
name: __t('command.new.connection', { defaultMessage: 'Connection' }),
testEnabled: () => !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase,
@@ -561,7 +561,10 @@ registerCommand({
testEnabled: () => true,
onClick: () => {
showModal(ConfirmModal, {
message: _t('command.file.resetLayoutConfirm', { defaultMessage: 'Really reset layout data? All opened tabs, settings and layout data will be lost. Connections and saved files will be preserved. After this, restart DbGate for applying changes.' }),
message: _t('command.file.resetLayoutConfirm', {
defaultMessage:
'Really reset layout data? All opened tabs, settings and layout data will be lost. Connections and saved files will be preserved. After this, restart DbGate for applying changes.',
}),
onConfirm: async () => {
await apiCall('config/delete-settings');
localStorage.clear();
@@ -665,7 +668,9 @@ registerCommand({
'currentArchive',
];
for (const key of keys) removeLocalStorage(key);
showSnackbarSuccess(_t('command.view.restart', { defaultMessage: 'Restart DbGate (or reload on web) for applying changes' }));
showSnackbarSuccess(
_t('command.view.restart', { defaultMessage: 'Restart DbGate (or reload on web) for applying changes' })
);
},
});
@@ -799,7 +804,9 @@ registerCommand({
registerCommand({
id: 'file.exit',
category: __t('command.file', { defaultMessage: 'File' }),
name: isMac() ? __t('command.file.quit', { defaultMessage: 'Quit' }) : __t('command.file.exit', { defaultMessage: 'Exit' }),
name: isMac()
? __t('command.file.quit', { defaultMessage: 'Quit' })
: __t('command.file.exit', { defaultMessage: 'Exit' }),
// keyText: isMac() ? 'Command+Q' : null,
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('quit-app'),
@@ -862,6 +869,7 @@ export function registerFileCommands({
undoRedo = false,
executeAdditionalCondition = null,
copyPaste = false,
defaultTeamFolder = false,
}) {
if (save) {
registerCommand({
@@ -874,7 +882,7 @@ export function registerFileCommands({
toolbar: true,
isRelatedToTab: true,
testEnabled: () => getCurrentEditor() != null,
onClick: () => saveTabFile(getCurrentEditor(), 'save', folder, format, fileExtension),
onClick: () => saveTabFile(getCurrentEditor(), 'save', folder, format, fileExtension, defaultTeamFolder),
});
registerCommand({
id: idPrefix + '.saveAs',
@@ -882,14 +890,14 @@ export function registerFileCommands({
category,
name: __t('command.saveAs', { defaultMessage: 'Save As' }),
testEnabled: () => getCurrentEditor() != null,
onClick: () => saveTabFile(getCurrentEditor(), 'save-as', folder, format, fileExtension),
onClick: () => saveTabFile(getCurrentEditor(), 'save-as', folder, format, fileExtension, defaultTeamFolder),
});
registerCommand({
id: idPrefix + '.saveToDisk',
category,
name: __t('command.saveToDisk', { defaultMessage: 'Save to disk' }),
testEnabled: () => getCurrentEditor() != null && getElectron() != null,
onClick: () => saveTabFile(getCurrentEditor(), 'save-to-disk', folder, format, fileExtension),
onClick: () => saveTabFile(getCurrentEditor(), 'save-to-disk', folder, format, fileExtension, defaultTeamFolder),
});
}

View File

@@ -14,6 +14,8 @@
import { closeCurrentModal, showModal } from './modalTools';
import FormCloudFolderSelect from '../forms/FormCloudFolderSelect.svelte';
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
import { useConfig } from '../utility/metadataLoaders';
import { showSnackbarError } from '../utility/snackbar';
export let data;
export let name;
@@ -24,26 +26,37 @@
export let onSave = undefined;
export let folid;
export let skipLocal = false;
export let defaultTeamFolder = false;
// export let cntid;
const values = writable({ name, cloudFolder: folid ?? '__local' });
const configValue = useConfig();
const values = writable({
name,
cloudFolder: folid ?? '__local',
saveToTeamFolder: !!(getCurrentConfig()?.storageDatabase && defaultTeamFolder),
});
const electron = getElectron();
const handleSubmit = async e => {
const { name, cloudFolder } = e.detail;
if ($values['saveToTeamFolder']) {
const { teamFileId } = await apiCall('team-files/create-new', { fileType: folder, file: name, data });
closeCurrentModal();
if (onSave) {
onSave(name, {
savedFile: name,
savedFolder: folder,
savedFilePath: null,
savedCloudFolderId: null,
savedCloudContentId: null,
savedTeamFileId: teamFileId,
});
const resp = await apiCall('team-files/create-new', { fileType: folder, file: name, data });
if (resp.apiErrorMessage) {
showSnackbarError(resp.apiErrorMessage);
} else if (resp.teamFileId) {
closeCurrentModal();
if (onSave) {
onSave(name, {
savedFile: name,
savedFolder: folder,
savedFilePath: null,
savedCloudFolderId: null,
savedCloudContentId: null,
savedTeamFileId: resp.teamFileId,
});
}
}
} else if (cloudFolder === '__local') {
await apiCall('files/save', { folder, file: name, data, format });
@@ -124,7 +137,7 @@
]}
/>
{/if}
{#if getCurrentConfig().storageDatabase}
{#if $configValue?.storageDatabase}
<FormCheckboxField label="Save to team folder" name="saveToTeamFolder" />
{/if}

View File

@@ -8,6 +8,7 @@
folder: 'diagrams',
format: 'json',
fileExtension: 'diagram',
defaultTeamFolder: true,
undoRedo: true,
});

View File

@@ -11,7 +11,7 @@ import getElectron from './getElectron';
// return derived(editorStore, editor => editor != null);
// }
export default async function saveTabFile(editor, saveMode, folder, format, fileExtension) {
export default async function saveTabFile(editor, saveMode, folder, format, fileExtension, defaultTeamFolder) {
const tabs = get(openedTabs);
const tabid = editor.activator.tabid;
const data = editor.getData();
@@ -94,6 +94,7 @@ export default async function saveTabFile(editor, saveMode, folder, format, file
filePath: savedFilePath,
onSave,
folid: savedCloudFolderId,
defaultTeamFolder,
// cntid: savedCloudContentId,
});
}