Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-04-23 13:00:59 +0300
committerJulius Härtl <jus@bitgrid.net>2019-04-23 13:00:59 +0300
commit2660b7fee51fe87c375307891e4a8abb98c07a69 (patch)
tree0be402f081d029bdc6a82bd80e8df0b7add65ce6 /lib/Controller
parent1bdb0ff3eaa0f8a874bbf306ca5fe8a45f8e6ff4 (diff)
Add first file handling
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/Controller')
-rw-r--r--lib/Controller/SessionController.php19
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/Controller/SessionController.php b/lib/Controller/SessionController.php
index 7416bd5c3..2347d953c 100644
--- a/lib/Controller/SessionController.php
+++ b/lib/Controller/SessionController.php
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace OCA\Text\Controller;
+use OC\Files\Node\File;
use OCA\Text\Service\DocumentService;
use OCA\Text\Service\SessionService;
use OCP\AppFramework\Controller;
@@ -16,6 +17,7 @@ use OCP\ICacheFactory;
use OCP\IRequest;
use OCP\ITempManager;
use OCP\Security\ISecureRandom;
+use OCA\Text\DocumentSaveConflictException;
class SessionController extends Controller {
@@ -97,13 +99,26 @@ class SessionController extends Controller {
* @NoCSRFRequired
* @NoAdminRequired
*/
- public function sync($documentId, $version = 0): DataResponse {
+ public function sync($documentId, $sessionId, $token, $version = 0, $autosaveContent = null): DataResponse {
+ if (!$this->sessionService->isValidSession($documentId, $sessionId, $token)) {
+ return new DataResponse([], 500);
+ }
if ($version === $this->cache->get('document-version-'.$documentId)) {
return new DataResponse(['steps' => []]);
}
+ try {
+ $document = $this->documentService->autosave($documentId, $version, $autosaveContent);
+ } catch (DocumentSaveConflictException $e) {
+ /** @var File $file */
+ $file = $this->documentService->getFile($documentId);
+ return new DataResponse([
+ 'outsideChange' => $file->getContent()
+ ], 409);
+ }
return new DataResponse([
'steps' => $this->documentService->getSteps($documentId, $version),
- 'sessions' => $this->sessionService->getActiveSessions($documentId)
+ 'sessions' => $this->sessionService->getActiveSessions($documentId),
+ 'document' => $document
]);
}