Lazy Chat: Implement editing of messages.

Change-Id: I291201da1fbc7c2b6563f0837f7ce3e2f7f8555c
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
index f2e3067..cb4c20f 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java
@@ -3,10 +3,9 @@
 import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
 
-import eu.mulk.mulkcms2.benki.accesscontrol.Role;
+import eu.mulk.mulkcms2.benki.posts.Post;
 import eu.mulk.mulkcms2.benki.posts.PostFilter;
 import eu.mulk.mulkcms2.benki.posts.PostResource;
-import eu.mulk.mulkcms2.benki.users.User;
 import io.quarkus.qute.Template;
 import io.quarkus.qute.TemplateInstance;
 import io.quarkus.qute.api.ResourcePath;
@@ -21,9 +20,6 @@
 import javax.json.JsonObject;
 import javax.transaction.Transactional;
 import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.ws.rs.BadRequestException;
 import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
@@ -51,12 +47,10 @@
       @FormParam("uri") URI uri,
       @FormParam("title") @NotEmpty String title,
       @FormParam("description") String description,
-      @FormParam("visibility") @NotNull @Pattern(regexp = "public|semiprivate|private")
-          String visibility)
+      @FormParam("visibility") Post.Visibility visibility)
       throws URISyntaxException {
 
-    var userName = identity.getPrincipal().getName();
-    var user = User.findByNickname(userName);
+    var user = getCurrentUser();
 
     var bookmark = new Bookmark();
     bookmark.uri = uri.toString();
@@ -66,14 +60,7 @@
     bookmark.owner = user;
     bookmark.date = OffsetDateTime.now();
 
-    if (visibility.equals("public")) {
-      Role world = Role.find("from Role r join r.tags tag where tag = 'world'").singleResult();
-      bookmark.targets = Set.of(world);
-    } else if (visibility.equals("semiprivate")) {
-      bookmark.targets = Set.copyOf(user.defaultTargets);
-    } else if (!visibility.equals("private")) {
-      throw new BadRequestException(String.format("invalid visibility “%s”", visibility));
-    }
+    assignPostTargets(visibility, user, bookmark);
 
     bookmark.persistAndFlush();