Damselfly icon indicating copy to clipboard operation
Damselfly copied to clipboard

Feature request for photo deletion

Open tschweitzer opened this issue 2 years ago • 9 comments

I could not find a way to delete photos within Damselfly. It is possible to add photos to the basket and delete photos from the basket. My flow where deleting (physically from disk) would be great is when quality checking all the photos that I took and delete those that I do not want to keep. Ideally this would work like:

  1. Start showing a photo in the single view mode
  2. Have a shortcut to mark the photo for the basket and maybe directly move to the next photo 2.1 If I want to keep the photo, I just press the left/right key to proceed to the next photo
  3. Verify the photos in the basket that these are really the ones I would like to delete
  4. Delete (from disk) all photos that are currently in the basket

tschweitzer avatar Nov 29 '22 10:11 tschweitzer

I've thought about adding move/delete for a while, but have deliberately shied away from it because it might mean actual destruction of people's data, which makes me nervous. Obviously I can add confirm boxes etc.

My thought was that I'd have more of a recycle bin function, where people can move stuff to a bin folder, and perhaps an admin can empty that (either directly within Damselfly, or via their own file manager). Thoughts?

Webreaper avatar Nov 29 '22 12:11 Webreaper

Having the functionality to move selected photos to a certain folder like a recycle bin would work for my use case. IMO being able to do a quality check of photos and decide which to keep and which not is an important aspect of a photo management tool. Whether it would be direct deletion or via the mentioned recycle bin indirection I am not having a strong opinion. However other users might think differently than me :-)

tschweitzer avatar Nov 30 '22 10:11 tschweitzer

I would very much appreciate a 'delete' workflow as well. If there was one, I could dump my pics straight from my device into damselfly and process what to keep from within damselfly. I like the recycle bin idea. maybe coupled with tag-attribute = invisible?

Standard permissions allows tag=delete. (=> makes pic invisible) Admin gets to move stuff to recycle bin and (maybe) delete things in bin.

martinhelmer avatar Jan 23 '23 02:01 martinhelmer

Quick update - I pushed an initial implementation of move functionality to the dev branch. You can select a bunch of files, then right-click any folder and choose Move selected images to here and the files will be moved on the server and re-indexing of the source and destination folders triggered.

I'll look at adding more fully-featured move/copy/delete functionality soon.

Webreaper avatar Jul 11 '23 09:07 Webreaper

Move/copy/delete is in the next version. Some enhancements (drag/drop to move, and config for the trash folder name or actually deleting photos, will come later).

Webreaper avatar Jul 11 '23 21:07 Webreaper

This is really awesome and I like it a lot! However in Chrome when loading the page it gives me the error: An unexpected error has occurred starting Damselfly. [Click here to Reload (my.server.com)

Using incognito mode works. I also tried clearing browser data for the url, but it keeps failing.

In the browser console I see:

my.server.com/:16     GET http://my.server.com/_content/Syncfusion.Blazor.Themes/bootstrap5.css net::ERR_ABORTED 404 (Not Found)

(index):41 Uncaught TypeError: Cannot read properties of undefined (reading 'register')
    at (index):41:33
(anonymous) @ (index):41

(index):42 Uncaught TypeError: Cannot read properties of undefined (reading 'register')
    at (index):42:33
(anonymous) @ (index):42

blazor.webassembly.js:1     GET http://my.server.com/_framework/dotnet.wasm 404 (Not Found)
loadResourceWithoutCaching @ blazor.webassembly.js:1
loadResource @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1
start @ blazor.webassembly.js:1
Vt @ blazor.webassembly.js:1
await in Vt (async)
(anonymous) @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1

blazor.webassembly.js:1 WebAssembly resource does not have the expected content type "application/wasm", so falling back to slower ArrayBuffer instantiation.
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
instantiateWasm @ blazor.webassembly.js:1
(anonymous) @ dotnet.runtime.8.0.0-preview.6.23329.7.ab9jbmssxw.js:3
e.instantiateWasm @ dotnet.runtime.8.0.0-preview.6.23329.7.ab9jbmssxw.js:3
createWasm @ dotnet.native.8.0.0-preview.6.23329.7.sona0twjd3.js:8
(anonymous) @ dotnet.native.8.0.0-preview.6.23329.7.sona0twjd3.js:8
ge @ dotnet.js:3
(anonymous) @ dotnet.js:3
await in (anonymous) (async)
me @ dotnet.js:3
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
start @ blazor.webassembly.js:1
Vt @ blazor.webassembly.js:1
await in Vt (async)
(anonymous) @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1

blazor.webassembly.js:1 CompileError: WebAssembly.instantiate(): BufferSource argument is empty
u @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
instantiateWasm @ blazor.webassembly.js:1
(anonymous) @ dotnet.runtime.8.0.0-preview.6.23329.7.ab9jbmssxw.js:3
e.instantiateWasm @ dotnet.runtime.8.0.0-preview.6.23329.7.ab9jbmssxw.js:3
createWasm @ dotnet.native.8.0.0-preview.6.23329.7.sona0twjd3.js:8
(anonymous) @ dotnet.native.8.0.0-preview.6.23329.7.sona0twjd3.js:8
ge @ dotnet.js:3
(anonymous) @ dotnet.js:3
await in (anonymous) (async)
me @ dotnet.js:3
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
start @ blazor.webassembly.js:1
Vt @ blazor.webassembly.js:1
await in Vt (async)
(anonymous) @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1

blazor.webassembly.js:1 Uncaught (in promise) CompileError: WebAssembly.instantiate(): BufferSource argument is empty
    at blazor.webassembly.js:1:45799
    at async blazor.webassembly.js:1:45327
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
instantiateWasm @ blazor.webassembly.js:1
(anonymous) @ dotnet.runtime.8.0.0-preview.6.23329.7.ab9jbmssxw.js:3
e.instantiateWasm @ dotnet.runtime.8.0.0-preview.6.23329.7.ab9jbmssxw.js:3
createWasm @ dotnet.native.8.0.0-preview.6.23329.7.sona0twjd3.js:8
(anonymous) @ dotnet.native.8.0.0-preview.6.23329.7.sona0twjd3.js:8
ge @ dotnet.js:3
(anonymous) @ dotnet.js:3
await in (anonymous) (async)
me @ dotnet.js:3
(anonymous) @ blazor.webassembly.js:1
await in (anonymous) (async)
start @ blazor.webassembly.js:1
Vt @ blazor.webassembly.js:1
await in Vt (async)
(anonymous) @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1

tschweitzer avatar Jul 15 '23 12:07 tschweitzer

Is that the dev release or the full release?

If you press Shift-Refresh does the error go away?

Webreaper avatar Jul 15 '23 13:07 Webreaper

It is the dev release. With shift-refresh it works. I didn't even know about shift-refresh. Probably this reloads some still cached things.

tschweitzer avatar Jul 15 '23 13:07 tschweitzer

Don't use the dev release. The new functionality is available in the 4.0.5 release I pushed out last week.

Dev is now on .Net 8 preview 6 which is a beta, so all sorts of weird stuff might be happening.

Webreaper avatar Jul 15 '23 13:07 Webreaper