From 21e84003c469a45f3a6dbab4317f03ecd5df671a Mon Sep 17 00:00:00 2001
From: ShimaginAndrey <andrey.shimagin@onlyoffice.com>
Date: Thu, 16 Sep 2021 17:21:00 +0300
Subject: [PATCH 1/2] [DE PE SSE] Fix render components in main

---
 apps/documenteditor/mobile/src/page/main.jsx     | 4 +++-
 apps/presentationeditor/mobile/src/page/main.jsx | 5 ++++-
 apps/spreadsheeteditor/mobile/src/page/main.jsx  | 7 +++++--
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/apps/documenteditor/mobile/src/page/main.jsx b/apps/documenteditor/mobile/src/page/main.jsx
index ba64208dc..d45a1c027 100644
--- a/apps/documenteditor/mobile/src/page/main.jsx
+++ b/apps/documenteditor/mobile/src/page/main.jsx
@@ -150,7 +150,9 @@ class MainPage extends Component {
                   !this.state.collaborationVisible ? null :
                       <Collaboration onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} page={this.state.collaborationPage} />
               }
-              <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
+              {!appOptions.isDocReady ? null :
+                    <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
+              }  
           </Page>
       )
   }
diff --git a/apps/presentationeditor/mobile/src/page/main.jsx b/apps/presentationeditor/mobile/src/page/main.jsx
index 403e3b8f5..bd98e4663 100644
--- a/apps/presentationeditor/mobile/src/page/main.jsx
+++ b/apps/presentationeditor/mobile/src/page/main.jsx
@@ -142,7 +142,10 @@ class MainPage extends Component {
                         !this.state.collaborationVisible ? null :
                             <CollaborationView onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} />
                     }
-                    <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
+                    {!appOptions.isDocReady ? null :
+                        <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
+                    }   
+                    
                 </Page>
             </Fragment>
         )
diff --git a/apps/spreadsheeteditor/mobile/src/page/main.jsx b/apps/spreadsheeteditor/mobile/src/page/main.jsx
index 1551f1503..62b66fe14 100644
--- a/apps/spreadsheeteditor/mobile/src/page/main.jsx
+++ b/apps/spreadsheeteditor/mobile/src/page/main.jsx
@@ -131,13 +131,16 @@ class MainPage extends Component {
                 }
 
                 {!appOptions.isDocReady ? null :
-                    <FilterOptionsController />
+                    <>
+                        <FilterOptionsController />
+                        <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
+                    </>
                 }
                 
                 <Statusbar />
 
                 <FunctionGroups /> {/* hidden component*/}
-                <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
+                
             </Page>
       )
   }

From 858c2e248374c9e0289bd4178881c37cca2517b1 Mon Sep 17 00:00:00 2001
From: ShimaginAndrey <andrey.shimagin@onlyoffice.com>
Date: Mon, 20 Sep 2021 15:10:54 +0300
Subject: [PATCH 2/2] [DE PE SSE] Fix render FilterOptionsController and
 refactoring

---
 apps/documenteditor/mobile/src/page/main.jsx             | 4 +---
 apps/presentationeditor/mobile/src/page/main.jsx         | 4 +---
 .../mobile/src/controller/FilterOptions.jsx              | 6 +++---
 apps/spreadsheeteditor/mobile/src/page/main.jsx          | 9 ++++-----
 4 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/apps/documenteditor/mobile/src/page/main.jsx b/apps/documenteditor/mobile/src/page/main.jsx
index d45a1c027..0ced452e7 100644
--- a/apps/documenteditor/mobile/src/page/main.jsx
+++ b/apps/documenteditor/mobile/src/page/main.jsx
@@ -150,9 +150,7 @@ class MainPage extends Component {
                   !this.state.collaborationVisible ? null :
                       <Collaboration onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} page={this.state.collaborationPage} />
               }
-              {!appOptions.isDocReady ? null :
-                    <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
-              }  
+              {appOptions.isDocReady && <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} /> }  
           </Page>
       )
   }
diff --git a/apps/presentationeditor/mobile/src/page/main.jsx b/apps/presentationeditor/mobile/src/page/main.jsx
index bd98e4663..bf948d244 100644
--- a/apps/presentationeditor/mobile/src/page/main.jsx
+++ b/apps/presentationeditor/mobile/src/page/main.jsx
@@ -142,9 +142,7 @@ class MainPage extends Component {
                         !this.state.collaborationVisible ? null :
                             <CollaborationView onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} />
                     }
-                    {!appOptions.isDocReady ? null :
-                        <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
-                    }   
+                    {appOptions.isDocReady && <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />}   
                     
                 </Page>
             </Fragment>
diff --git a/apps/spreadsheeteditor/mobile/src/controller/FilterOptions.jsx b/apps/spreadsheeteditor/mobile/src/controller/FilterOptions.jsx
index 2d3cd2bd8..1166dff4e 100644
--- a/apps/spreadsheeteditor/mobile/src/controller/FilterOptions.jsx
+++ b/apps/spreadsheeteditor/mobile/src/controller/FilterOptions.jsx
@@ -1,10 +1,10 @@
-import React, { useEffect,useRef,useState } from 'react';
+import React, { memo, useEffect,useRef,useState } from 'react';
 import FilterView from '../../src/view/FilterOptions';
 import { f7,Sheet,Popover } from 'framework7-react';
 import { Device } from '../../../../common/mobile/utils/device';
 import { useTranslation } from 'react-i18next';
 
-const FilterOptionsController = () => {
+const FilterOptionsController = memo( () => {
     const { t } = useTranslation();
     const _t = t('View.Edit', {returnObjects: true});
     const configRef = useRef();
@@ -126,6 +126,6 @@ const FilterOptionsController = () => {
         <FilterView onSort={onSort} listVal={listVal} checkSort={checkSort} isValid={isValid} onUpdateCell={onUpdateCell} 
         onDeleteFilter={onDeleteFilter} onClearFilter={onClearFilter}/>
     )
-};
+});
 
 export default FilterOptionsController;
\ No newline at end of file
diff --git a/apps/spreadsheeteditor/mobile/src/page/main.jsx b/apps/spreadsheeteditor/mobile/src/page/main.jsx
index 62b66fe14..5af097530 100644
--- a/apps/spreadsheeteditor/mobile/src/page/main.jsx
+++ b/apps/spreadsheeteditor/mobile/src/page/main.jsx
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { Component, Fragment } from 'react';
 import { Page, View, Navbar, Subnavbar, Icon } from 'framework7-react';
 import { observer, inject } from "mobx-react";
 import { Device } from '../../../../common/mobile/utils/device';
@@ -130,17 +130,16 @@ class MainPage extends Component {
                         <CollaborationView onclosed={this.handleOptionsViewClosed.bind(this, 'coauth')} />
                 }
 
-                {!appOptions.isDocReady ? null :
-                    <>
+                {appOptions.isDocReady &&
+                    <Fragment key='filter-context'>
                         <FilterOptionsController />
                         <ContextMenu openOptions={this.handleClickToOpenOptions.bind(this)} />
-                    </>
+                    </Fragment>
                 }
                 
                 <Statusbar />
 
                 <FunctionGroups /> {/* hidden component*/}
-                
             </Page>
       )
   }