* search options start
* small progress
* more
* bunch of stuff
* semi functioning filters
* cleanup setup api
* progress
* remove filters
* hooked up to query epic moment
* fix
* move db stuff to specific modules
* in/notIn for some fields
* generate ts
* big gains
* working filter options for locations, tags and kind
* working search query
* perfect fixed filters
* saved searches lol
* merge error
* saved searches via api
* better routing
* [ENG-1338] Fix fresh Spacedrive install failing to start due to attempting to query a nonexistent Library (#1649)
Fix Spacedrive failing to start due to attempting to query a nonexistent Library
- Rename useShoudRedirect to useRedirectToNewLocations
- Improve behaviour for the immedite redirection after adding a new location
* Show hidden files false by default (#1652)
bool
* fix remove filter in list
* tweaks
* fix nav buttons
* unify MediaData search handling
* cleanup saved search writing
* Add left top bar portals for tags and search + fixed media view on tags
* added search to filter dropdown
* render cycle improvements
* hotfix
* wip
* Refactor with Brendan, but this is a WIP and the search query no longer works
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
* progress
* fix location/$id page
* fix tags too
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
* 3rd refactor lol
epic style
* half-done with enum-ification of SearchFilterArgs
* broken fixed filters but working inNotIn filters
* search name + extension kinda working
* hidden filter
* fixed filters working??
* deferred search value
* extensions works
* filtered search items mostly working
* tweaks
* stacked approach working for non-search filters
* move to Explorer/Search
* actually use filterArgs in queries
things actually work properly now
* added new icons from Mint
* goof
* cleanup types, filters and mutation logic
* actually use search value
* remove overview from sidebar
* don't shrink LibrariesDropdown ga
* remove overview from sidebar and default to /network
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
Co-authored-by: Brendan Allan <Brendonovich@users.noreply.github.com>
* tabs w/ multiple router instances
* fix router switching
* keybinds
* manual history tracking
* eslint
* remove scroll restoration
* fix tab removal
* route title + tab create delay
* typescript
* put tab list up top
* Remove import + show close button only if tabs length more than 1
* lint
* unify blur across whole top bar
* add to keybindings page, tauri drag region, and tooltip
* fix blur
* more drag regions
* merge moment
---------
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
* wip new shortcuts system
* Shortcuts system and cleanup
add duplicate short, fix delete object windows context menu symbol, shortcuts system
Add cut to Edit menu
if quickPreview is open do not open the folder/doubleClick()
Update index.tsx
Update RenameTextBox.tsx
* add listObjectsNav for list view
* refactored
* Update useShortcut.ts
* Update useShortcut.ts
* remove imports
* fix copy pasting and conflicts
Fix Spacedrive failing to start due to attempting to query a nonexistent Library
- Rename useShoudRedirect to useRedirectToNewLocations
- Improve behaviour for the immedite redirection after adding a new location
* fix(UI): remove the swift code that was causing the top bar to show when the window is maximized
* fix(UI): limit the keybind handler to the `$libraryId` layout
The keybind handler is how we get MacOS menu bar events to the front-end, and to navigate to the settings page correctly we need the current library UUID. We should hide/disable the settings button (and any future buttons that require a library/certain state - e.g. during onboarding) from the menu bar.
* chore(swift): remove unused function
* fix(UI): git didn't detect hook rename
* fix(deps): revert tauri version downgrade
Was probably caused by a bad merge
* fix(UI): remove rounding of window borders on macos
This was allowing the borders to still show on MacOS, despite the app being fully maximized. This doesn't impact non-maximized styling of the app, as we have native window decorations enabled within the Tauri config (well, that's my best guess as to why this fixes the issue).
* fix(UI): conditionally enable/disable menu items on macos
This is dependent on whether a library is present or not. If there's no library, we disable things such as copy/paste/select all.
* fix(UI): try and conditionally show the border radius
I think some cached files aren't being rebuilt correctly as this *should* work fine, it uses the same conditions as the traffic lights do to determine if we're fullscreen or not.
* remove copy/select all/paste as they have uses outside of the explorer
* feat(UI): overhaul native macos menu
* fix: add toast for quick rescan and free up the ctrl+r keybind
* more menu rearrangements
* update menu further
* add comment about rounded edges
* some polish
* add working overview redirect
* fix(UI): correct border edges when non-maximized, and full corners when maximized
* cleanup event handling
* add media view and disable non-working buttons
* fix(UI): raise sidebar on fullscreen to prevent empty corner
* adjust settings padding when maximized on macos
* failed sidebar animation
* rm old stuff
* fix(UI): better transitions (i'm learning!)
* add comment about why new library is disabled during onboarding
* make the settings page static and `pt-6`
* add mock-up library selector in menu
* `maximized` -> `fullScreen`
* fix animation when fullscreening
* clippy
* change animation to 300ms
---------
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
* remove annoying log
* return location id on creation
* add checkbox to open new location once it's been added
* redirect if checkbox was true and a location id was provided, and update bindings
* add `new()` for `MissingFieldError`
* return location id on location relink
* working, clean redirecting
* accordion closing tag
* navigate to location after adding
* chore: remove erroneous `{' '}`
* multiple location redirect support
* oops missed check
* cleanup
* fix bad merge
---------
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
* tooltip visual upgrade and shortcuts
This gives tooltips an upgrade, visually + supporting keybinds
* B to V
* Cannot make tooltip do conversion due to dependency cycle
* semantics
* Update style.scss
* useKeyBind to consider upper and lowercase
* Change from strings to array + small visual tweaks
* oops
* Minor UI Fixes
* adjustments
* show file name and extension only if truncated and with tooltip
* name
* oops
* truncate lib name
* cleanup
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* WIP
* Add keybind utility
* Fix Ctrl instead of Cmd in macOS
* Fix keyboard shortcuts for search
- Implement keyboard shortcut for inspector
* Minor fix for setup script
* Implement shortcut for new tag and for opening files
- Change quickpreview shortcut logic to follow others
- Fix OpenFilePath not reporting error
* fix types
---------
Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
* Fix macOS PDF rendering
- Fix app crashing due to PDF rendering receiving empty URLs
- Attempt fix PDF rendering empty PDFs due to it not supporting range requests
* Fix dumb change from `data` to `src` in `<object>`
- Fix QuickPreview not closing with space bar
- Fix double-click simultaneously renaming and opening file
- Minor improvements to QuickPreview header
- Fix Button inside Button react error in QuickPreview
- Don't render thumb without a valid source
* ExternalObject events must not influence the link state
- More macOS PDF range changes
* Use `<iframe>` instead of `<embed>` or `<object>` to load pdf in macOS
- Revert removing range support for macOS pdf type
- Rename `ExternalObject` to `PDFViewer`
- Fix `AddLocationDialog` sometimes requiring multiple confimations on first load
* `Accept-Ranges: none` Header response as it breaks linux video playback
- Extract location id from from `ExplorerItemData`, to allow rendering original versions on `Overview`
* Format
* cargo fmt
* WIP
* Some minor fixes for light theme
- Fix `useIsDark` not reading the initial theme value (only reacting to theme changes)
- Fix `Inspector` always showing a dark image when no item was selected
- Fix `Thumb` video extension using black text on light theme
* Improve form error messages
- Fix `addLocationDialog` not registering the path input
- Remove `@hookform/error-message`
* Fix Dialog not respecting max-width
- Fix ErrorMessage animation jumping
* A lot of misc fixes
- Implement an `useExplorerItemData` (cleaner fix for thumbnail flicker)
- Fix broken image showing for `Thumb` due a rece condition when props are updated
- Implement an `ExternalObject` component that hacks an alternative for `onLoad` and `onError` events for <object>
- Fix `Overview` broken layout when `Inspector` is open and window is small
- Improve `IndexerRuleEditor` UX in `AddLocationDialog`
- Improve the way `IndexerRuleEditor` handles rules deletion
- Fix `IndexerRuleEditor` closing the the new rule form even when the rule creation fails
- Add an editable prop to `IndexerRuleEditor` to disable all editable functions
- Fix `getIcon` fallbacking to Document instead of the dark version of an icon if it exists
- Add some missing colors to white theme
* Format
* Fix Backup restore key dialog not resetting after error
* Feedback
* Format
* Normalize imports
* Fix ColorPicker export
* Fix Thumb video ext not showing in MediaView with show square thumbnails
- Fix AddLocationDialog Error resetting when changing IndexRules
* Centralize the file preview logic in `Thumb.tsx`
* Fix useEffect
* Fix Inspector thumb keeping internal state from previous selected files
- Change video border to follow video aspect-ratio, just like Finder
* Restore memo to Thumb
- Only add borders to video thumb, not the video itself
* Simplify and improve Thumb logic
- Add A internal Thumbnail component
- Rename main component to FileThumb to match mobile naming
- Move getIcon utility function to assets/icons
* Add new `useCallbackToWatchResize` hook
- Replace `ResizeObserver` with new resize hook in `Thumb`
- Simplify and improve `useIsDark` hook by replacing `react-responsive` with direct usage of WebAPI `matchMedia`
- Fix `Thumb` src not updating correctly
- Fix video extension incorrectly showing when size <= 80 in `Thumb`
* Fix `Inspector` not updating thumb type
- Remove superfluous `newThumb` from `getExplorerItemData`
* Remove superfluous `ThumSize`
* Forgot a `?`
* Fix incorrect className check in `Thumb`
- Updated changed files to use the hooks root import
* Format
* Fix PDF preview compleatly breaking the application
- Allow Linux to access both the spacedrive:// custom protocol and the workaround webserver
- On Linux only use the webserver for audio and video, which don't work when requested through a custom protocol
- Configure tauri IPC to allow API access to the spacedrive://localhost domain, to avoid PDF previews from breaking the security scope and rendering the application unusable
- Configure CSP to allow the pdf plugin custom protocol used by webkit
- Fix race condition between Thumb error handler and thumbType useEffect, by using replacing it with a useLayoutEffect
- Improve Thumb's error handling
* Add dry_run for `location.create` and `location.addLibrary`
* Add dry_run to IndexerRuleCreateArgs
- Add invalidate_query to create and edit api method of the location route
- Adjust some code to use the new dry_run property
* `AddLocationDialog` and `IndexerRuleEditor` now validate with backend without user interaction
- Create `useCallbackToWatchForm` to make it easier to watch form changes with an async function that also executes during component mount
- `method` is now part of the `addLocationDialog` form schema, and a hidden input
- Add an `index.ts` for hooks and components
* Fix mobile
* Remove redundant type definition
* Add `useCallbackToWatchForm` as an additional hook to `react-hooks/exhaustive-deps`
- Improve `useCallbackToWatchForm` argument handling, to avoid duplicated references to form
* Fix unnecessary form value updates in `addLocationDialog`
- Move reset `method` on `path` change logic from the superfluous `useEffect` to `useCallbackToWatchForm` in `addLocationDialog`
- Improve core API debug logs for `dry_run`
- Fix incorrect file name for `useCallbackToWatchForm` hook
- Improve the documentation for `useCallbackToWatchForm`
- Fix `useCallbackToWatchForm` not ignoring callback errors
- Fix `useCallbackToWatchForm` ignoring returned Promise from `onWatch`
- Add basic validation for the `form` argument in `useCallbackToWatchForm`
* Remove superflous if checks
- generate new core.ts
* Remove DryRunError
* Remove unused import
---------
Co-authored-by: Brendan Allan <brendonovich@outlook.com>