Commit Graph

340 Commits

Author SHA1 Message Date
jake
a376e0518d deps: remove ffmpeg-next from the core (#808)
remove ffmpeg-next from the core
2023-05-10 04:44:27 +00:00
ameer2468
2a5d5be4c0 Job Manager improvement & refactor (#783)
* d

* wip

* Nit: margin and padding tweak

* UI design tweaks

* Update Job.tsx

* Improve UI

* [WIP] - Refactor job manager

* remove invalidate explorer event on thumb generation. the event above performs atomic updates on the front end when new thumbnails are generated, now just need to make that work

* prettier formatting + removed unused imports

* UI tweaks

* progress bar width adjustment

* tweaks

* fix em

* fix thumbnail generation

* fix progress bar

* fix time

---------

Co-authored-by: Jamie Pine <ijamespine@me.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
2023-05-08 22:31:49 +00:00
Brendan Allan
0c4bb2e290 Eng 510 open with in context menu (#803)
* somewhat

* proper macos support

* formatting
2023-05-08 09:22:24 +00:00
jake
fe326c6692 [ENG-592] Prevent libraries with blank names/no names from being created (#800)
* prevent libraries having all null or empty names

* stop onboarding continuation if name field is empty

* prevent libraries with entirely empty names from being created in TS

* remove trim from schema

* add comment explaining regex, and `.trim()`
2023-05-06 07:32:32 +00:00
jake
5e63256b27 source has_thumbnail correctly for the recent file query (#797)
* source `has_thumbnail` correctly

* correctly check if thumbnail exists in watcher

* regen bindings

* add helper fn for getting thumbnail directory and cleanup old thumbnails if the watcher creates a new one
2023-05-05 22:01:34 +00:00
nikec
0849e9d605 [ENG-575] Infinite scroll (#785)
Infinite scroll
2023-05-04 19:08:38 +00:00
Oscar Beaumont
a972e64956 Upgrade rspc TS (#775)
* finally

* should be working?

* fix types

* fix types

* Wouldn't it be nice if Metro would just work

* idk

* try harder Metro

* potentially fix bundling issues

* idk, maybe fix it?

* fix metro

* update podfile.lock

* bruh

* bruhz

* tailwind is drunk again

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2023-05-04 06:21:42 +00:00
ameer2468
7d56bda3e5 ENG-287: Overview recent files (#780)
* experimental recent file querying

* working recent files

* fix querying and make amount returned customisable

* experimental recent file querying

* working recent files

* fix querying and make amount returned customisable

* return `FilePath`s from `files.getRecent`

* return `ExplorerItem` from `files.getRecent`

* Overview recents

* commands.ts

* cleanup

---------

Co-authored-by: brxken128 <77554505+brxken128@users.noreply.github.com>
2023-05-03 17:06:09 +00:00
Brendan Allan
00a1dd300d paginated location explorer (#774)
* paginated location explorer

* remove props from GridView

* formatting
2023-05-01 09:45:25 +00:00
Brendan Allan
d47b5925d9 update prisma (#773)
* update prisma

* idk
2023-04-30 23:03:23 -07:00
Vítor Vasconcellos
d0f8e01839 [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
Brendan Allan
a93103ab17 Remove all field name string literals (#772)
remove all field name string literals
2023-04-28 21:59:11 -07:00
Brendan Allan
ec280e35a8 File Opening (#762)
* file opening

* eslint disable in gererated commands

* bruh?

* Fixing materialized_path joining and some warnings

* no unwraps

* formatting

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-04-28 06:55:00 -07:00
Oscar Beaumont
2623843b43 Spacedrop (#761)
* A hint of file drop

* backport from #671

* accept/reject Spacedrop working

* final cleanup

* Rename spacedrop.tsx to Spacedrop.tsx

* Update index.tsx
2023-04-27 04:41:33 +00:00
Brendan Allan
d8ee053d74 Give file paths pub_id and use it primarily (#754)
* give file paths pub_id and use it primarily

* fix object indexing

* file path location + sync

* remove future plan

* use id instead of pub_id for more indexer queries

* use chain_optional_iter

---------

Co-authored-by: Oscar Beaumont <oscar@otbeaumont.me>
2023-04-25 16:53:36 +00:00
Oscar Beaumont
c5f68bc341 fix type exporting 2023-04-25 23:51:48 +08:00
Oscar Beaumont
3f1a93ffb8 fix desktop 2023-04-25 22:47:41 +08:00
Oscar Beaumont
7724c738ec Rspc v3 syntax (#758)
just fixed a couple of lines
2023-04-25 17:12:42 +08:00
Oscar Beaumont
a435acf4a7 rspc 0.1.3 prep (#756)
* Upgrade rspc + Specta + PCR

* fix jsonrpc executor

* fix invalidate excessive logging

* fix `Protected` type

* fix mobile

* clippy

* lol
2023-04-25 15:14:52 +08:00
jake
da58ba916f [ENG-490] Add support for late key manager setup (#740)
* support for late key manager setup and remove password from onboarding

* mobile

* delete master-password.tsx

* remove secure temp keystore

* remove more km_config artifacts

* fix builds

* Fix most of the UI, there still some minor bugs

* Workaround portalled closing Popovers

* Restore search in core/src/api/mod.rs

* Fix Password eye icon closing Popover on click

* Fix keymanager setup submit button spinner not centered
 - Fix keymanager setup missing logic for disabling form
 - Adjust keymanager tab roundness to match app style

* Restore .gitignore

* Restore .prettierignore

* fixerino tests

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
Co-authored-by: Vítor Vasconcellos <vasconcellos.dev@gmail.com>
2023-04-22 09:10:21 +00:00
Ericson "Fogo" Soares
101699c23c [Eng 495] Better job report fields (#726)
* Changing action column on job table

* Introducing action and is_background info

* Requested changes
2023-04-22 06:17:50 +00:00
Vítor Vasconcellos
31a87f6794 [ENG-384] Indexer rules editor (#723)
* WIP Create Indexer Rule UI + Backend api fix

* Complete IndexerEditor UI for creating new rules
- WIP testing to ensure all rules are parsed correctly
- Add utilities to satisfy the TypeScript typechecker
- Introduce a utility function to facilitate extracting information from an RSPCError
- Modify AddLocationDialog to utilize the aforementioned utility function

* Validation and submit logic is now functional
- Reorganize UI for improved user flow
- Implement validation and error messaging, replace some bare inputs with form inputs, and fix styling issues
- Resolve issues with post-processing of rules during submission
- Wrap editable portion of component in a `FormProvider` due to the `Form` being in a `Portal`
- Add specialized `ErrorMessage` component to `@sd/ui` library
- Update `AddLocationDialog` and `FormField` to utilize the new `ErrorMessage` component

* Fix submit not waiting for confirmation from backend
 - Reset form after submit
 - Disable form while submiting
 - Update form related dependencies

* Implement deleting an indexer rule
 - Modify indexer rule api route to disallow deleting default rules

* Fix form reset on error
 - Minor style adjustments
2023-04-22 04:30:11 +00:00
jake
b26ac18dbe [ENG-516] Prevent copies/cuts to the same source/dest (#748)
* add basic UI protection to stop cut/copies to the same path

* add rust src/dest protections

* fix pasting logic

* fix path canonicalization

* skip paths instead of overwriting them

* Using non-blocking ops and fixing some warnings

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-04-22 02:11:59 +00:00
ameer2468
ca33a9d44e [ENG-473] - Job Manager UI Improvements (#745)
* add support for deleting a specific job

* wip

* Update JobManager.tsx

* Job manager design tweaks + popover open state ignore prop

* tweaks

---------

Co-authored-by: jake <77554505+brxken128@users.noreply.github.com>
2023-04-21 17:08:32 -07:00
Brendan Allan
356519848a Explorer search (#738)
* basic file path search

* cleanup

* render explorer in search page

* update materialized path docs
2023-04-21 14:49:46 +00:00
nikec
d4eb84e7e2 [ENG-295] Explorer media view (#730)
* remove unused onScroll

* Add open media file with double click

* Hide file thumb in inspector

* Enable media layout

* Add media layout options

* Add media view

* Fix vertical images

* Fix vertical square aspect

* query

* Update Location.tsx

* Some optimizations on explorer data query

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-04-21 02:15:22 +00:00
Oscar Beaumont
5f5afccaba Eng 494 adding a location does not update the UI (#728)
* `sd_init.json` support

* bruh

* Add `sd_init.json` to developer docs

* Ran cargo clippy --fix to fix warnings

* Dafuq, cargo clippy --fix messed up cargo fmt

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-04-20 22:05:57 +00:00
Ericson "Fogo" Soares
28994434f4 Checking if new location is nested or already exists (#716)
* Checking if new location is nested or already exists

* Also checking for children locations on check nested

* Rust fmt
2023-04-19 05:03:28 +00:00
jake
aeb17e8e72 remove int-enum (#721) 2023-04-19 01:33:32 +00:00
Ericson "Fogo" Soares
02a14135a2 [Eng 493] Job manager status showing incorrect (#722)
* Fixing path report for indexer on job manager

* Fixing warnings on migrator tests
2023-04-19 01:05:30 +00:00
Utku
ab6c954753 Prisma Schema Comments (#720)
* add comments to prisma schema

* fix

* Update schema.prisma
2023-04-18 15:49:34 +00:00
Oscar Beaumont
ddada65b2a Eng 488 fix app migrations system (#719)
* improve app level migration system

* basic unit tests for app migrator
We kinda don't want this going wrong so extra barrier is good.

* fix migrator tests
2023-04-18 08:51:01 +00:00
Vítor Vasconcellos
54c08365c2 [ENG-286] Set default indexer rules for location (#690)
* Implement multiple Glob matches in the same indexer rule
 - Replace matching logic to use GlobSet instead of simple Glob
 - Add `No OS protected` indexer rule to avoid indexing OS protected files
 - Enable `No OS protected` indexer rule by default

* Rust fmt

* Reduce `No OS protected` rule Glob list by using OR matches

* Add globs for android and ios files in `No OS protected` rule

* Add some more unix special path to be ignored

* Add a new property to IndexerRule to enable it by default when adding a new location:
- Modify the Prisma schema to add the default property to the IndexerRule model.
- Adjust the IndexerRule struct's create and save logic to consider the new property.
- Adjust AddLocationDialog to properly load the default indexer rules from the backend.
- Minorly improve IndexerRuleEditor to avoid adding duplicate entries to its assigned form field.
- Add editorconfig entries for SQL and Prisma types.

* rust fmt

* Add Windows users special folders and files to `No OS protected` rule

* Construct `No OS protected` globs from string vec
 - Don't repeat windows globs that require both a root and C: version

* Apply review feedback and add error handling for `IndexerRuleEditor`
- Revert manual changes made to init migration
- Create external migration that adds a `default` prop in `IndexerRule` model
- Remove redundant `useMemo`
- Replace destructuring of `useQuery`
- Provide feedback to user when a error occurs while querying indexer rules

* useMemo only for `indexerRulesIds` and not the whole `defaultValues` object
 - Remove logic to accpet unix root path for windows indexer `No OS protected` rule
2023-04-18 06:25:57 +00:00
Oscar Beaumont
096e1e81cc Automatic job progress (#717)
Remove time tracker task + sender level debouncing
2023-04-18 06:24:06 +00:00
Vítor Vasconcellos
7edcfb0ef5 [ENG-461] Location creation fails for '/' (root) and 'C:' ([A-Z] drives) (#710)
* Fix issue with root locations failing to be added
 - Add `normpath` dependency to the core
 - Improve automatic name resolution for new locations

* Add `MetadataExt` trait to extend the `created` and `modified` methods of `Metadata`
- Prevent failure in the Indexer job caused by paths without associated created or modified times; assume current time for both when unavailable
- Rename possible location in root path from `/` to `Root`

* Improve hadling of location path on Windows
 - Normalize location's path to ensure a valid format on Windows
 - Improve error handling when adding a path
 - Avoid consuming symlinks on Linux by not normalizing location's path
 - Improve location naming logic
2023-04-18 06:12:02 +00:00
Brendan Allan
026dac1b87 job parent id fix (#714) 2023-04-17 10:26:27 -07:00
Oscar Beaumont
54f757bf1f Job system improvements v2 (#707)
* Add `JobInitData` trait + change `StatefulJob::name` to a constant

* `StatefulJob::new`

* Move `invalidate_query` into `StatefulJob::finalize`

* Cleanup `spawn_job` signature

* Remove `queue_job` and run jobs from the `StatefulJob::finalize` method

* `StatefulJob::queue_jobs`

* `JobManager::ingest` return `Result`

* Remove `jobs.isRunning`

* Invalidation system direct push + batching invalidate

* Look ma, only a single clippy warning!!!!

* Error handling for JobManager

* Rust fmt

* Introducing Job hierarchy to enable job enqueuing

* Rust fmt again 🙄

* core.ts

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
2023-04-15 14:43:04 +08:00
Brendan Allan
3f3a5be557 Revert "Give FilePath a pub_id (#691)"
This reverts commit aef277af4e.
2023-04-14 10:50:37 +08:00
jake
d8ea2c172c update to ffmpeg 6.0.0 (#697) 2023-04-13 14:10:23 +00:00
Brendan Allan
aef277af4e Give FilePath a pub_id (#691)
* checkpoint - indexer parent ids need fixing

* use pub_id for file paths

* Removing LastFilePathIdManager and fixing some loose ends

---------

Co-authored-by: Ericson "Fogo" Soares <ericson.ds999@gmail.com>
2023-04-12 21:58:23 -07:00
Ericson "Fogo" Soares
0359fd59d1 ENG-462 Object size is 0 when it shouldn't be (#702)
* Fixing file size not being collected from system

* Rust fmt
2023-04-13 01:06:27 +00:00
Vítor Vasconcellos
bee9c0b350 ENG-460 Location creation fails for some writable directories (#696)
Remove read-only check when creating a location
- Revert location creation if writing the `.spacedrive` file or updating the library location manager fails
2023-04-12 12:51:32 +00:00
nikec
096741a8fd [Desktop] Renamable files (#675)
* Add rename file option

* make Ericson's changes

* Prevent arrow selecting when renaming, start renaming with Enter option

* fix rename

---------

Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>
2023-04-11 20:43:19 -07:00
Oscar Beaumont
5bc234ae87 [ENG-414] P2P Shutdown (#688)
* `Event::Shutdown` in P2P system

* Mdns shutdown broadcast + await shutdown

* Fix mdns service name & prevent poll after shutdown
2023-04-11 15:05:50 +00:00
Oscar Beaumont
b1d619c42f Add MetadataManager into sd-p2p (#686)
* Add `MetadataManager` into sd-p2p

* Add `update_metadata` helper to P2P manager

* Praise Clippy our lord and saviour

* change mdns advertisement log level

* Casually broke Linux
2023-04-11 10:20:14 +08:00
Vítor Vasconcellos
b8eba88e90 QuickPreview Component (Needs test on MacOS) (#665)
* Add QuickPreview Component
 - Improve the handling of Range requests
 - Implement logic to answer HEAD and OPTIONS methods
 - Handle CORS pre-flight requests
 - Expand accepted file types
 - Improve error handling of invalid Range requests

* Fix linter errors
 - Add `use std::cmp::min` to custom_uri (Required on MacOS & Windows)
 - Improve logic for retrieving file information in QuickPreview.tsx

* More linter errors

* Simplify `QuickPreview` by extracting the logic for choosing the file preview tag to a `FilePreview` component
 - Fix the typo in `QuickPreview` props name
 - Remove the unused `handleMedia` ref
 - Move the remaining `QuickPreview` logic to the `transitions` callback
 - Simplify the `cors` return type in `custom_uri.rs`

* Refactor range handling in `handle_file` function
 - Move range handling logic to the initialization of the `range` variable
 - Replace `if let` with `match` to reduce code duplication
 - Don't export FilePreview
 - Export QuickPreviewProps

* Fix typo in `RangeNotSatisfiable` error message
 - Remove redundant variables

* Fixing cas_id generation on watcher
Some improvements on watcher file creation

* Rust fmt

---------

Co-authored-by: Ericson Soares <ericson.ds999@gmail.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>
2023-04-05 21:15:13 -07:00
Brendan Allan
5d1c8a3017 fix syncing (#679) 2023-04-05 19:47:10 -07:00
Vítor Vasconcellos
a2fcdd68cf Fix cas_id sample hashing logic (#672) 2023-04-04 13:59:19 +00:00
Brendan Allan
5575575875 fix core 2023-04-04 15:12:09 +08:00
Brendan Allan
98aa82b30e some more sync impls (#669)
a lil more sync impls
2023-04-03 22:45:00 -07:00