diff --git a/controller/editorcontroller.php b/controller/editorcontroller.php
index bfd63ee7..e588f151 100644
--- a/controller/editorcontroller.php
+++ b/controller/editorcontroller.php
@@ -677,10 +677,7 @@ public function config($fileId, $filePath = NULL, $shareToken = NULL, $directTok
             }
         }
 
-        if ($folderLink !== NULL
-            && $inframe !== 2
-            && empty($directToken) //todo: fix in ds 5.5
-            ) {
+        if ($folderLink !== NULL && $inframe !== 2) {
             $params["editorConfig"]["customization"]["goback"] = [
                 "url"  => $folderLink
             ];
@@ -688,7 +685,7 @@ public function config($fileId, $filePath = NULL, $shareToken = NULL, $directTok
             if (!$desktop) {
                 if ($this->config->GetSameTab()) {
                     $params["editorConfig"]["customization"]["goback"]["blank"] = false;
-                    if ($inframe === 1) {
+                    if ($inframe === 1 || !empty($directToken)) {
                         $params["editorConfig"]["customization"]["goback"]["requestClose"] = true;
                     }
                 }
diff --git a/js/directeditor.js b/js/directeditor.js
index b3d3baab..e29dabd9 100644
--- a/js/directeditor.js
+++ b/js/directeditor.js
@@ -65,6 +65,9 @@
     }
 
     OCA.Onlyoffice.directEditor = {
+        close: function() {
+            callMobileMessage("close");
+        },
         loaded: function() {
             callMobileMessage("loaded");
         }
diff --git a/js/editor.js b/js/editor.js
index 4b54ccb6..2c0c4c4c 100644
--- a/js/editor.js
+++ b/js/editor.js
@@ -72,14 +72,12 @@
             params.push("directToken=" + encodeURIComponent(directToken));
         }
 
-        if (OCA.Onlyoffice.inframe) {
-            var dsVersion = DocsAPI.DocEditor.version();
-            var versionArray = dsVersion.split(".");
-            if (versionArray[0] < 5 || versionArray[1] < 5) {
-                params.push("inframe=2");
-            } else {
-                params.push("inframe=1");
-            }
+        var dsVersion = DocsAPI.DocEditor.version();
+        var versionArray = dsVersion.split(".");
+        if (versionArray[0] < 5 || versionArray[1] < 5) {
+            params.push("inframe=2");
+        } else if (OCA.Onlyoffice.inframe) {
+            params.push("inframe=1");
         }
 
         if (OCA.Onlyoffice.Desktop) {
@@ -138,11 +136,12 @@
                         config.events.onAppReady = OCA.Onlyoffice.directEditor.loaded;
                     }
 
-                    if (OCA.Onlyoffice.inframe) {
+                    if (OCA.Onlyoffice.directEditor || OCA.Onlyoffice.inframe) {
                         config.events.onRequestClose = OCA.Onlyoffice.onRequestClose;
-                        if (config._files_sharing) {
-                            config.events.onRequestSharingSettings = OCA.Onlyoffice.onRequestSharingSettings;
-                        }
+                    }
+
+                    if (OCA.Onlyoffice.inframe && config._files_sharing) {
+                        config.events.onRequestSharingSettings = OCA.Onlyoffice.onRequestSharingSettings;
                     }
 
                     OCA.Onlyoffice.docEditor = new DocsAPI.DocEditor("iframeEditor", config);
@@ -266,6 +265,11 @@
     };
 
     OCA.Onlyoffice.onRequestClose = function () {
+        if (OCA.Onlyoffice.directEditor) {
+            OCA.Onlyoffice.directEditor.close();
+            return;
+        }
+
         window.parent.postMessage({
             method: "editorRequestClose"
         });