Commit Graph

77 Commits

Author SHA1 Message Date
Abdullah Atta
e1fc116994 core: improve content conflict detection using proper HTML diffing (#1183)
Since HTML is a tree-like language it is futile to compare it character
for character. `html1 === html2` is almost always false. This commit
introduces a simple diffing algorithm that only checks the text inside
the html + a few other attributes to decide whether the 2 HTMLs are
actually different or not. This is obviously not foolproof and it will
ignore everything aesthetic (b, em, strong tags etc.). This is actually
desireable because in our case only the text difference should
warrant a conflict. Everything else can easily be brought back.
Similarly, this also ignores whitespace differences surrouding the
tags.

All in all it'll provide a more reliable alternative to MD5 hashing the
2 HTMLs.
2022-10-13 19:22:32 +05:00
Abdullah Atta
f3fa7fe744 core: update core version to 5.8 2022-10-13 19:18:52 +05:00
Abdullah Atta
c09715d053 core: make item migration fall through all db versions
this was not exactly a bug but it can cause a lot of unintended
behaviour. Previously, you'd have to manually specify which version the
item migration should jump to. This was buggy and poorly designed.
This change makes the item iterate over all the db migrations one by one
automatically.

For example:

An item at version 5.2 will go through:
- 5.3
- 5.4
- and so on
2022-10-13 19:18:52 +05:00
Abdullah Atta
7c99c3acb9 core: add migrations for notebooks & settings (#1020) 2022-09-21 11:47:09 +05:00
Abdullah Atta
6c613c6f1e Merge branch 'move-pins-out' 2022-09-21 10:45:58 +05:00
Ammar Ahmed
e5e965415d feat: realtime & auto sync for all users (#944) 2022-09-20 18:33:55 +05:00
Abdullah Atta
ac7aad93b3 core: shorcuts -> shortcuts 2022-09-07 14:13:26 +05:00
Abdullah Atta
1e99d7732c core: add new collection for shortcuts 2022-09-07 12:47:02 +05:00
Abdullah Atta
d81f5dba65 refactor: migrate to theme-ui from rebass 2022-08-31 07:26:27 +05:00
Abdullah Atta
c317774c8a docs: add license header 2022-08-30 16:17:04 +05:00
thecodrr
cf9bad7db8 fix: content type being set to "content" during sync
this bug broke export/publishing & basically
everything that depends on content type
to function.
2022-08-06 10:45:15 +05:00
thecodrr
5b96009875 fix: merge settings with conflict expectation 2022-07-20 19:55:00 +05:00
thecodrr
32d4cfa594 feat: disable interruptible syncing 2022-07-20 07:19:48 +05:00
thecodrr
530a1cc625 feat: add log messages all over the place 2022-07-19 11:16:46 +05:00
thecodrr
4e34f33f1d fix: expect merge conflicts in notebooks 2022-07-13 12:21:00 +05:00
thecodrr
3f54f36d50 feat: migrate from tiny -> tiptap 2022-07-07 13:17:55 +05:00
thecodrr
2cbe8dffd8 feat: make sync more resilient 2022-03-30 20:45:16 +05:00
thecodrr
4135028137 feat: improve sync over websockets 2022-03-30 15:52:48 +05:00
thecodrr
aa764e6cc8 fix: merge deleted attachments directly 2022-03-16 22:12:41 +05:00
thecodrr
9fe100f09f fix: add null checks 2022-03-11 15:06:21 +05:00
thecodrr
f78e56fdcb feat: add full support for localOnly items 2022-03-11 12:40:42 +05:00
thecodrr
1d283c73f4 fix: improve content conflict resolution
this fixes the "undefined is not a function" error originated from
SparkMD5. Basically, sometimes the remote content or local content is
an object — an invalid state. So we need to check for that.
(fixes streetwriters/notesnook#371)
2022-02-25 15:27:00 +05:00
thecodrr
23fac959f4 fix: get remoteItem id from decrypted data 2022-01-12 23:51:21 +05:00
thecodrr
6c6e5a7676 fix: throw error if decrypted data is undefined 2022-01-03 14:54:23 +05:00
thecodrr
c16bfd31e3 fix: cannot read property dateResolved of undefined 2022-01-01 20:58:56 +05:00
thecodrr
43bb3d2785 fix: throw proper error if local db version is lower than required 2021-12-31 11:50:21 +05:00
thecodrr
d52cb6a82e fix: keep local content if resolved 2021-12-31 10:45:10 +05:00
thecodrr
edd9dc5de2 fix: notes not merging on sync 2021-12-29 09:34:20 +05:00
thecodrr
06828ac35c feat: dateEdited -> dateModified 2021-12-20 14:37:06 +05:00
thecodrr
2e00ba2e8a refactor: seperate note add & merging 2021-12-20 09:28:17 +05:00
thecodrr
2cc5ec74c2 fix: images are not attached on note publish 2021-12-01 20:18:14 +05:00
thecodrr
64535cc61c fix: repair all notebook references on sync/backup 2021-11-12 11:47:03 +05:00
thecodrr
e608eaaedf fix: repair notebook references in notes on sync 2021-11-12 10:32:25 +05:00
thecodrr
b139623420 feat: remove trash from merger & backup 2021-11-12 09:38:11 +05:00
thecodrr
011a99d322 fix: improve syncing & merge conflict detection 2021-10-27 10:53:36 +05:00
thecodrr
41fd0042dc fix: merge everything serially always 2021-10-26 12:14:37 +05:00
thecodrr
51794e001e feat: add 3-layer-encryption for attachments 2021-10-25 11:35:00 +05:00
thecodrr
69defdb367 feat: handle attachments merge conflict 2021-10-23 11:41:17 +05:00
thecodrr
6b619e5d3d feat: add upload/download cancellation support 2021-09-29 09:53:50 +05:00
thecodrr
7d16b8f388 feat: refactors and add support for upload/download progress 2021-09-26 11:47:13 +05:00
thecodrr
1c51824b33 feat: add attachments support 2021-09-20 12:10:36 +05:00
thecodrr
14fed3e8bb fix: use dateResolved to prevent recursive merge conflicts 2021-08-10 11:59:56 +05:00
thecodrr
bbf05064e4 feat: allow overwriting date edited of note content 2021-07-25 11:31:44 +05:00
thecodrr
7679b19fae refactor: minor refactor 2021-07-06 20:56:54 +05:00
thecodrr
1113c5cfcd fix: exception when mergin locked notes 2021-06-17 10:41:50 +05:00
thecodrr
3a5fd2ea65 fix: check and handle undefined data during sync merge 2021-06-03 09:18:18 +05:00
thecodrr
d28e29a09f fix: undefined remote.data during conflict 2021-04-19 10:05:47 +05:00
thecodrr
ad970c2348 fix: do not cause conflict if remote === undefined 2021-03-06 09:39:47 +05:00
thecodrr
f6bdfa9a47 fix: do not migrate vaultKey 2021-03-06 09:36:50 +05:00
thecodrr
03e21221c7 feat: add notebook merging 2021-02-25 19:41:17 +05:00