From c3be1b4298206c084e397b4c0a3e2e840baf6d8e Mon Sep 17 00:00:00 2001 From: Miroslav Prasil Date: Tue, 1 May 2018 16:54:22 +0100 Subject: [PATCH] Fix FolderCipher creation, handle some errors --- src/api/core/ciphers.rs | 8 ++++++-- src/db/models/cipher.rs | 8 ++++---- src/db/models/folder.rs | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/api/core/ciphers.rs b/src/api/core/ciphers.rs index 1a3b183c..a6b95b32 100644 --- a/src/api/core/ciphers.rs +++ b/src/api/core/ciphers.rs @@ -174,7 +174,9 @@ fn update_cipher_from_data(cipher: &mut Cipher, data: CipherData, headers: &Head // Copy the type data and change the names to the correct case copy_values(&type_data, &mut values); - cipher.move_to_folder(data.folderId, &headers.user.uuid, &conn); + if cipher.move_to_folder(data.folderId, &headers.user.uuid, &conn).is_err() { + err!("Error saving the folder information") + } cipher.name = data.name; cipher.notes = data.notes; cipher.fields = uppercase_fields.map(|f| f.to_string()); @@ -429,7 +431,9 @@ fn move_cipher_selected(data: Json, headers: Headers, conn: DbConn) -> Em } // Move cipher - cipher.move_to_folder(folder_id.clone(), &headers.user.uuid, &conn); + if cipher.move_to_folder(folder_id.clone(), &headers.user.uuid, &conn).is_err() { + err!("Error saving the folder information") + } cipher.save(&conn); } diff --git a/src/db/models/cipher.rs b/src/db/models/cipher.rs index aec4e327..370996ff 100644 --- a/src/db/models/cipher.rs +++ b/src/db/models/cipher.rs @@ -163,10 +163,10 @@ impl Cipher { current_folder.delete(&conn).or(Err("Failed removing old folder mapping")) }, None => Ok(()) // Weird, but nothing to do - }; - - FolderCipher::new(&new_folder, &self.uuid) - .save(&conn).or(Err("Couldn't save folder setting")) + }.and_then( + |()| FolderCipher::new(&new_folder, &self.uuid) + .save(&conn).or(Err("Couldn't save folder setting")) + ) } }, None => { diff --git a/src/db/models/folder.rs b/src/db/models/folder.rs index 6319d787..8e0b6720 100644 --- a/src/db/models/folder.rs +++ b/src/db/models/folder.rs @@ -55,10 +55,10 @@ impl Folder { } impl FolderCipher { - pub fn new(cipher_uuid: &str, folder_uuid: &str) -> Self { + pub fn new(folder_uuid: &str, cipher_uuid: &str) -> Self { Self { - cipher_uuid: cipher_uuid.to_string(), folder_uuid: folder_uuid.to_string(), + cipher_uuid: cipher_uuid.to_string(), } } }