diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-04-23 13:00:59 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-04-23 13:00:59 +0300 |
commit | 2660b7fee51fe87c375307891e4a8abb98c07a69 (patch) | |
tree | 0be402f081d029bdc6a82bd80e8df0b7add65ce6 /lib/Controller | |
parent | 1bdb0ff3eaa0f8a874bbf306ca5fe8a45f8e6ff4 (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.php | 19 |
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 ]); } |