Commit graph

25 commits

Author SHA1 Message Date
nikec caf4fc5cde
[ENG-1353] explorer dnd (#1737)
* locations dnd

* fix icon

* reduce navigate timeout

* fix types

* another

* fix drag overlay count

* Update pnpm-lock.yaml

* merge

* ephemeral support and other improvements

* merge

* Tag dnd

* merge

* type

* merge

* remove offset

* update dnd logic to not depend on drag source

* handle allowed types if parent isn't available

* saved searches dnd navigation

* well

* rendering

* Update pnpm-lock.yaml

* types

* remove width

* Temporary solution

* merge

* @dnd-kit/utilities

* Update pnpm-lock.yaml

* explorer path dnd

* remove unused drag hook

* fix dnd on LayeredFileIcon

---------

Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-12-13 11:59:27 +00:00
Jamie Pine 27f077ea0b
[ENG-1269] Search options (#1561)
* 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>
2023-11-17 06:58:44 +00:00
Brendan Allan 0ef65fce2d
[ENG-1423] Multiple tabs (#1777)
* 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>
2023-11-16 15:14:47 +00:00
ameer2468 f4e89da4d7
[ENG-1190] New shortcuts system (#1718)
* 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
2023-11-06 10:37:24 +00:00
ameer2468 f1bb69324f
[ENG-1327] Loading indicator if a location is indexing (#1663)
* Loading indicator if a location is indexing

* Change check to completed_task_count rather than complete
2023-10-23 12:22:07 +00:00
Vítor Vasconcellos ce568981c1
[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
2023-10-21 15:02:54 +00:00
jake e51a58fe28
[ENG-1283, ENG-1284, partially ENG-1303] Fix MacOS window bar showing when full-screen (#1582)
* 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>
2023-10-21 11:57:04 +00:00
jake cc72f54c3d
[ENG-1210] Navigate to location after adding it (#1454)
* 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>
2023-10-20 21:01:13 +00:00
ameer2468 fe345d2375
[ENG-1301] mouse4 mouse5 dont work when hovering (#1601)
* Fix mouse navigation bug when file/folder is hovered

* remove imports
2023-10-16 15:29:18 +00:00
ameer2468 2dd28540f1
[ENG-1288] Copy, cut, and paste shortcuts (#1591)
* copy paste shortcut

* add cut shortcut
2023-10-15 10:47:03 +00:00
Jamie Pine 77a6ab1d73
Release landing page (#1464)
* start

* not for this branch lol

* fix dates

* fix spacing

* revert mistake

* progress

* blog

* improve wording

* more blog

* more blog moment

* moreee blog

* cant spell can i

* bloggggg

* change name

* some rambling

* sentence meowment

* merge

* prep

* perfect app ui template for landing

* updated landing image

* fix border

* section

* fix query param handling

* remove apps/snapshot

* remove `WindowControls`

* Playwright in setup script

* `showControls` in a store

* better screenshot + fixed stars with fadeout

* fix show controls store mistake

* begin bento boxes

* bento box stuff

* taggrid

* release blog post: clarifying punctuation & rearrange some sentences (#1097)

* landing page wip

* Update index.tsx

* tweak

* Update pnpm-lock.yaml

* Update app.webp

* better app image + line animation wip

* wip

* tweak + image

* tweaks + 60 fps ball

* 60 fps platforms anim

* landing updates

* static globe

* tweaks

* device detect and dynamic imports

* Accessibility and minor performance improvements from Lh report.

* Update globe.webp

* Improve randomness of line animation, better cloud image

* isMobile vid support

* Update index.tsx

* new art

* docs

* docs

* Improvements and feedback

* Update index.tsx

* improvements

* quick art tweak

* updated art

* increase size

* SVG animation

* animations

* convert platforms to arr and framer motion

* new section - wip preview

* remove border app animation - more animation work

* mobile tweaks

* tweak

* duration adjustment

* animation improvements

* different floating times for other circles

* Pricing page

* tweak

* optimize images, accessibility values, svg attribute cleanup

* launch prep

* fix blog link

* adding location docs

* hover effect

* fixes to layout

* Update index.tsx

* another show controls method

* use PageLayoutContext in other file

* merge

* desktop release download api

* update publishing api

* hook up desktop releases api to landing page

* screenshot stuff

* Delete .github/scripts/setup-system.sh

* Update october-alpha-release.mdx

* rotating screenshots, fixed blog and apple download chooser

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
Co-authored-by: pr <pineapplerind.info@gmail.com>
Co-authored-by: ameer2468 <33054370+ameer2468@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
2023-10-11 04:05:40 +00:00
nikec 2828617461
[ENG-1157] fix useKeybind (#1393)
* remove

* fix
2023-09-28 05:37:08 +00:00
ameer2468 d0dd8d11ec
[ENG-1126] Key matcher hook (#1358)
* key matcher hook

* Update TopBarOptions.tsx
2023-09-19 15:34:35 +00:00
ameer2468 8645b47838
[ENG-1089] Tooltips visual upgrade and shortcuts (#1351)
* 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
2023-09-15 13:39:58 +00:00
nikec 48adb2c732
[ENG-556] New toast component (#1235)
* toast

* remove useToasts

* toast improvements
2023-08-23 10:07:16 +00:00
Brendan Allan 06de379169
[ENG-816, ENG-821] Re-implement reveal in finder + ContextMenu overhaul (#1029)
* mostly there

* native opening working

* more

* cleanup

* reorganise

* remove unnecessary import

* uncomment some stuff

* spacing

* store quickview ref inside provider

* fix linting

* clippy

---------

Co-authored-by: Utku <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
2023-06-27 15:34:53 +00:00
ameer2468 1079171e44
[ENG-804, ENG-802, ENG-800] Minor UI Fixes (#1016)
* 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>
2023-06-25 16:27:03 +00:00
Vítor Vasconcellos a73b6f325e
[ENG-764] Fix macOS shortcuts showing on all OSes (#990)
* 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>
2023-06-22 07:03:17 +00:00
ameer2468 57e1440c96
[ENG-534] Themes UI & appearance (#896)
* Themes UI & appearance

* Theme switching + theme hooks + de-select emoji on feedback ui

* un-necessary for now

* hue slider

* tweaks

* ui tweaks

* ui tweaks

* ui tweak

* tweak

* opacity

* change to themeStore instead of get

* cleanup

---------

Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
2023-06-06 04:41:32 +00:00
Vítor Vasconcellos 0676c40331
[ENG-651] Fix PDF rendering breaking app on macOS (#854)
* 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
2023-05-25 06:34:18 +00:00
Vítor Vasconcellos b4dad087e4
[ENG-591] - Fix some funky behaviors (#827)
* 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
2023-05-20 03:11:10 +00:00
Vítor Vasconcellos 30e7c9d709
[ENG-528] QuickPreview isn't correctly handling errors for video/audio playback (#815)
* 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
2023-05-18 03:31:15 +00:00
Brendan Allan 835de32fd6
zod-powered search params (#790)
* zod-powered search params

* fix ci

* fix context menu

* fix the *other* context menu

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2023-05-05 05:39:52 +00:00
Brendan Allan 26f46036b5
fix recursive imports and explorer params (#787)
* fix recursive imports and explorer params

* fix types

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2023-05-04 19:16:07 +00:00
Vítor Vasconcellos 90a3509469
[ENG-471, ENG-472] Add dry_run parameter to some API routes and related UI changes (#750)
* 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>
2023-04-29 10:49:51 +00:00