@@ -859,6 +859,7 @@ public function update(Entity $entity): Bookmark {
859859 if ($ entity ->isWebLink ()) {
860860 $ entity ->setUrl ($ this ->urlNormalizer ->normalize ($ entity ->getUrl ()));
861861 }
862+ $ entity ->setUrlHash (hash ('xxh128 ' , $ entity ->getUrl ()));
862863 $ entity ->setLastmodified (time ());
863864 parent ::update ($ entity );
864865 $ this ->eventDispatcher ->dispatchTyped (new ManipulateEvent ('bookmark ' , $ entity ->getId ()));
@@ -883,19 +884,25 @@ public function insert(Entity $entity): Bookmark {
883884 if ($ entity ->isWebLink ()) {
884885 $ entity ->setUrl ($ this ->urlNormalizer ->normalize ($ entity ->getUrl ()));
885886 }
886- $ entity ->setUrlHash (hash ('xxh128 ' , $ entity ->getUrl ()));
887+ $ entityToInsert = new Bookmark ();
888+ foreach ($ entity ->getUpdatedFields () as $ field => $ _value ) {
889+ $ value = $ entity ->{'get ' . ucfirst ($ field )}();
890+ $ entityToInsert ->{'set ' . ucfirst ($ field )}($ value );
891+ }
887892
888- if ($ entity ->getAdded () === null ) {
889- $ entity ->setAdded (time ());
893+ $ entityToInsert ->setUrlHash (hash ('xxh128 ' , $ entity ->getUrl ()));
894+
895+ if ($ entityToInsert ->getAdded () === null ) {
896+ $ entityToInsert ->setAdded (time ());
890897 }
891- $ entity ->setLastmodified (time ());
892- $ entity ->setLastPreview (0 );
893- $ entity ->setClickcount (0 );
898+ $ entityToInsert ->setLastmodified (time ());
899+ $ entityToInsert ->setLastPreview (0 );
900+ $ entityToInsert ->setClickcount (0 );
894901
895902 try {
896- parent ::insert ($ entity );
897- $ this ->eventDispatcher ->dispatchTyped (new InsertEvent ('bookmark ' , $ entity ->getId ()));
898- return $ entity ;
903+ parent ::insert ($ entityToInsert );
904+ $ this ->eventDispatcher ->dispatchTyped (new InsertEvent ('bookmark ' , $ entityToInsert ->getId ()));
905+ return $ entityToInsert ;
899906 } catch (Exception $ e ) {
900907 if ($ e ->getReason () === Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION ) {
901908 if ($ this ->db ->inTransaction ()) {
@@ -919,12 +926,15 @@ public function insert(Entity $entity): Bookmark {
919926 public function insertOrUpdate (Entity $ entity ): Bookmark {
920927 try {
921928 $ newEntity = $ this ->insert ($ entity );
922- } catch (AlreadyExistsError $ e ) {
929+ } catch (AlreadyExistsError ) {
923930 try {
924931 $ bookmark = $ this ->findByUrl ($ entity ->getUserId (), $ entity ->getUrl ());
925- $ entity ->setId ($ bookmark ->getId ());
926- $ newEntity = $ this ->update ($ entity );
927- } catch (DoesNotExistException $ e ) {
932+ foreach ($ entity ->getUpdatedFields () as $ field => $ _value ) {
933+ $ value = $ entity ->{'get ' . ucfirst ($ field )}();
934+ $ bookmark ->{'set ' . ucfirst ($ field )}($ value );
935+ }
936+ $ newEntity = $ this ->update ($ bookmark );
937+ } catch (DoesNotExistException ) {
928938 $ newEntity = $ this ->insert ($ entity );
929939 }
930940 }
0 commit comments