From 74b068623ffc4c5bf89b4b3cb0b1dba16ffbd21c Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Mon, 11 Apr 2022 07:26:27 +0200
Subject: [PATCH] works very well for three pages document/simple scenarios

---
 app/components/viewer/index.js            | 40 +++++++++++++++--------
 app/components/viewer/thumbnails/index.js |  6 +---
 2 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/app/components/viewer/index.js b/app/components/viewer/index.js
index c09dd30..3afae65 100644
--- a/app/components/viewer/index.js
+++ b/app/components/viewer/index.js
@@ -152,19 +152,33 @@ export default class ViewerComponent extends Component {
   }
 
   @action
-  onThumbnailsPositionChanged({original_pos, page_ids}) {
-    let all_pages, drop_placeholder_pos;
-
-    drop_placeholder_pos = this.pages.findIndex(item => item.is_drop_placeholder);
-
-    console.log(`onThumbnailsPositionChanged  drop_placeholder_pos=${drop_placeholder_pos} original_pos=${original_pos} page_ids=${page_ids}`);
-    //all_pages = this.pages;
-    //
-    //this.pages = reposition_items({
-    //  items: all_pages,
-    //  selected_ids: page_ids,
-    //  drop_pos: drop_placeholder_pos
-    //});
+  onThumbnailsPositionChanged(page_ids) {
+    /*
+    ``page_ids`` will be moved to the new position
+    indicated by drop placeholder.
+    Page is drop placeholder if ``page.is_drop_placeholder`` is true.
+    */
+    let pages_without_placeholder,
+      drop_placeholder_pos;
+
+    // learn where user wants to move pages by
+    // findind drop placeholder position
+    drop_placeholder_pos = this.pages.findIndex(
+      item => item.is_drop_placeholder
+    );
+
+    // remove placeholder from pages array
+    this.pages.splice(drop_placeholder_pos, 1);
+    pages_without_placeholder = this.pages;
+
+    console.log(`repositioning items page_ids=${page_ids}`);
+    console.log(`repositioning items drop_pos=${drop_placeholder_pos}`);
+    // reposition pages
+    this.pages = reposition_items({
+      items: pages_without_placeholder,
+      selected_ids: page_ids,
+      drop_pos: drop_placeholder_pos
+    });
   }
 
   @action
diff --git a/app/components/viewer/thumbnails/index.js b/app/components/viewer/thumbnails/index.js
index bc8c324..c2be6d6 100644
--- a/app/components/viewer/thumbnails/index.js
+++ b/app/components/viewer/thumbnails/index.js
@@ -21,7 +21,6 @@ export default class ViewerThumbnailsComponent extends Component {
     let data,
       json_data,
       page_ids,
-      original_pos,
       drop_pos,
       source_doc_id;
 
@@ -33,15 +32,12 @@ export default class ViewerThumbnailsComponent extends Component {
     }
     json_data = JSON.parse(data);
 
-    original_pos = json_data['original_pos']
     page_ids = json_data['pages'].map(page => page.id);
     source_doc_id = json_data['source_doc_id'];
 
     if (source_doc_id == this.args.doc.id) {
       // pages moved within same document
-      this.args.onThumbnailsPositionChanged({
-        original_pos, page_ids
-      });
+      this.args.onThumbnailsPositionChanged(page_ids);
     } else {
       // pages moved to another document
       this.args.onIncomingPages({
-- 
GitLab