mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-16 11:23:10 +02:00
## Description Adds an explicit **“Save As”** button to the desktop viewer so users can always save a copy of the current PDF to a different location, even if the original file already has a local path. This complements the existing smart **Save/Download** behavior: - The existing download button continues to either save back to the original path (when available) or prompt for a path when needed. - The new **Save As** button always opens a save dialog to choose a location/name for a new copy. ## Changes - **RightRail (viewer controls)** - Added a new **Save As** action icon in the right rail settings section. - The button: - Uses `viewerContext.exportActions.saveAsCopy()` to get the current viewer state as a PDF. - Calls `downloadFile` without a `localPath`, ensuring the desktop app shows a **Save As** dialog. - Picks the first selected file (if any) or the first active file as the source for the filename. - **Desktop / Web behavior** - In the desktop app (Tauri), clicking **Save As**: - Opens a native save dialog so the user can choose a different folder and filename. - Writes a new copy without changing the existing file’s `localFilePath` or dirty state. - In the web app, the button behaves like a standard download of a copy (browser-controlled save dialog / download). ## Motivation - Users often want to apply operations on a PDF while **keeping the original unmodified**. - The existing smart Save behavior chooses between Save and Save As automatically, but there was no way to explicitly request **Save As**. - This change gives desktop users a clear, dedicated **“Save As”** control while preserving the current Save/Download behavior. ## Notes - No backend changes. - No changes to the existing Save / Download button behavior. - The new button uses existing viewer export and download utilities, minimizing new logic. --------- Co-authored-by: James Brunton <[email protected]>
This commit is contained in:
co-authored by
James Brunton
parent
a7f2abcb22
commit
55bcb92810
@@ -2,8 +2,9 @@ import UploadIcon from '@mui/icons-material/Upload';
|
||||
import DownloadOutlinedIcon from '@mui/icons-material/DownloadOutlined';
|
||||
|
||||
/**
|
||||
* File action icons for web builds
|
||||
* Desktop builds override this with different icons
|
||||
* File action icons for web builds.
|
||||
* Desktop builds override this file via TypeScript path aliases to provide
|
||||
* different icons (e.g. Save icon instead of Download, and a Save As icon).
|
||||
*/
|
||||
export function useFileActionIcons() {
|
||||
return {
|
||||
@@ -11,5 +12,8 @@ export function useFileActionIcons() {
|
||||
download: DownloadOutlinedIcon,
|
||||
uploadIconName: 'upload' as const,
|
||||
downloadIconName: 'download' as const,
|
||||
// Web builds do not expose a Save As icon — the button is hidden when this is undefined.
|
||||
// Desktop builds override this file and return a real icon name.
|
||||
saveAsIconName: undefined as string | undefined,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user