Mercurial > libervia-web
diff libervia/web/pages/photos/_browser/__init__.py @ 1518:eb00d593801d
refactoring: rename `libervia` to `libervia.web` + update imports following backend changes
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 02 Jun 2023 16:49:28 +0200 |
parents | libervia/pages/photos/_browser/__init__.py@5ea06e8b06ed |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libervia/web/pages/photos/_browser/__init__.py Fri Jun 02 16:49:28 2023 +0200 @@ -0,0 +1,62 @@ +from browser import window, bind, DOMNode +from javascript import JSON +from bridge import Bridge +import dialog + +bridge = Bridge() + + +def album_delete_cb(item_elt, item): + print(f"deleted {item['name']}") + + +def album_delete_eb(failure, item_elt, item): + # TODO: cleaner error notification + window.alert(f"error while deleting {item['name']}: failure") + + +def interest_retract_cb(item_elt, item): + print(f"{item['name']} removed successfuly from list of interests") + item_elt.classList.add("state_deleted") + item_elt.bind("transitionend", lambda evt: item_elt.remove()) + bridge.file_sharing_delete( + item['service'], + item.get('path', ''), + item.get('files_namespace', ''), + callback=lambda __: album_delete_cb(item_elt, item), + errback=lambda failure: album_delete_eb(failure, item_elt, item), + ) + + +def interest_retract_eb(failure_, item_elt, item): + # TODO: cleaner error notification + window.alert(f"Can't delete album {item['name']}: {failure_['message']}") + + +def delete_ok(evt, notif_elt, item_elt, item): + bridge.interest_retract( + "", item['id'], + callback=lambda: interest_retract_cb(item_elt, item), + errback=lambda failure:interest_retract_eb(failure, item_elt, item)) + + +def delete_cancel(evt, notif_elt, item_elt, item): + notif_elt.remove() + item_elt.classList.remove("selected_for_deletion") + + +@bind(".action_delete", "click") +def on_delete(evt): + evt.stopPropagation() + target = evt.currentTarget + item_elt = DOMNode(target.closest('.item')) + item_elt.classList.add("selected_for_deletion") + item = JSON.parse(item_elt.dataset.item) + dialog.Confirm( + f"album {item['name']!r} will be deleted (inluding all its photos), " + f"are you sure?", + ok_label="delete", + ).show( + ok_cb=lambda evt, notif_elt: delete_ok(evt, notif_elt, item_elt, item), + cancel_cb=lambda evt, notif_elt: delete_cancel(evt, notif_elt, item_elt, item), + )