Example #1
0
        private static void PrepareForUpload(ISimpleJsonRest web, APIBodySync body, StandardFileNote note, List <StandardFileTag> tags, APIResultAuthorize token, StandardNoteConfig cfg, bool delete)
        {
            var appdata = new Dictionary <string, Dictionary <string, object> >();

            SetAppDataBool(appdata, APPDATA_PINNED, note.IsPinned);
            SetAppDataBool(appdata, APPDATA_LOCKED, note.IsLocked);

            var jsnContent = new ContentNote
            {
                title      = note.InternalTitle,
                text       = note.Text,
                references = new List <APIResultContentRef>(),
                appData    = appdata,
            };

            foreach (var itertag in note.InternalTags.ToList())
            {
                var itag = itertag;

                if (itag.UUID == null)
                {
                    var newTag = tags.FirstOrDefault(e => e.Title == itag.Title);
                    if (newTag == null)
                    {
                        newTag = new StandardFileTag(Guid.NewGuid(), itag.Title);
                        tags.Add(newTag);
                    }

                    note.UpgradeTag(itag, newTag);
                    itag = newTag;
                }

                Debug.Assert(itag.UUID != null, "itag.UUID != null");
                jsnContent.references.Add(new APIResultContentRef {
                    content_type = "Tag", uuid = itag.UUID.Value
                });
            }

            var cdNote = StandardNoteCrypt.EncryptContent(token.version, web.SerializeJson(jsnContent), note.ID, token.masterkey, token.masterauthkey);

            body.items.Add(new APIBodyItem
            {
                content_type = "Note",
                uuid         = note.ID,
                created_at   = note.CreationDate,
                enc_item_key = cdNote.enc_item_key,
                auth_hash    = cdNote.auth_hash,
                content      = cdNote.enc_content,
                deleted      = delete,
            });
        }
Example #2
0
        private static void PrepareNoteForUpload(ISimpleJsonRest web, APIBodySync body, ref List <APIRawBodyItem> bodyraw, StandardFileNote note, List <StandardFileTag> allTags, APIResultAuthorize token, StandardNoteConfig cfg, bool delete)
        {
            var appdata = new Dictionary <string, Dictionary <string, object> >();

            SetAppDataBool(appdata, APPDATA_PINNED, note.IsPinned);
            SetAppDataBool(appdata, APPDATA_LOCKED, note.IsLocked);

            var objContent = new ContentNote
            {
                title      = note.InternalTitle,
                text       = note.Text.Replace("\r\n", "\n"),
                references = new List <APIResultContentRef>(),
                appData    = appdata,
            };

            // Set correct tag UUID if tag already exists
            foreach (var itertag in note.InternalTags.ToList())
            {
                var itag = itertag;

                if (itag.UUID == null)
                {
                    var newTag = allTags.FirstOrDefault(e => e.Title == itag.Title)?.ToRef();
                    if (newTag == null)
                    {
                        newTag = new StandardFileTagRef(Guid.NewGuid(), itag.Title);
                        allTags.Add(new StandardFileTag(newTag.UUID, newTag.Title, Enumerable.Repeat(note.ID, 1)));
                    }

                    note.UpgradeTag(itag, newTag);
                }
            }

            // Notes no longer have references to their tags (see issue #88)
            //foreach (var itertag in note.InternalTags.ToList())
            //{
            //	Debug.Assert(itertag.UUID != null, "itertag.UUID != null");
            //	jsnContent.references.Add(new APIResultContentRef { content_type = "Tag", uuid = itertag.UUID.Value });
            //}

            var jsonContent = web.SerializeJson(objContent);

            var cryptData = StandardNoteCrypt.EncryptContent(token.version, jsonContent, note.ID, token.masterkey, token.masterauthkey);

            body.items.Add(new APIBodyItem
            {
                content_type = "Note",
                uuid         = note.ID,
                created_at   = note.CreationDate,
                enc_item_key = cryptData.enc_item_key,
                auth_hash    = cryptData.auth_hash,
                content      = cryptData.enc_content,
                deleted      = delete,
            });
            bodyraw.Add(new APIRawBodyItem
            {
                content_type = "Note",
                uuid         = note.ID,
                created_at   = note.CreationDate,
                content      = jsonContent,
                deleted      = delete,
            });
        }