Commit graph

85 commits

Author SHA1 Message Date
Damien Elmes
d396460332 ignore .DS_Store in trash
https://anki.tenderapp.com/discussions/ankidesktop/40035-anki-2123-on-macos-ds_store-files-in-new-anki-trash
2020-04-01 13:37:57 +10:00
Damien Elmes
6495240914 add some timeouts
I'm waiting to hear back from the reqwests author on the best way to
handle this. For now, this change just adds short timeouts
to the quick requests, and will wait for up to an hour when sending/
receiving files to allow for the slow connection+large file case.
2020-04-01 10:03:54 +10:00
Damien Elmes
fdeca610b0 drop separate RequestContext/StorageContext 2020-03-29 12:12:35 +10:00
Damien Elmes
f52e775354 NoteTypeID 2020-03-26 15:00:24 +10:00
Damien Elmes
14a970e923 rename long filenames in fields if files renamed in a previous sync 2020-03-23 18:38:45 +10:00
Damien Elmes
1f9e8e388a start on search tests 2020-03-20 21:15:23 +10:00
Damien Elmes
9752de5aaa finish the remaining searches
Searches that require multiple deck or note type lookups won't perform
very well at the moment - it either needs caching or to be split up
at the DB level.

Nothing tested yet.
2020-03-20 21:15:23 +10:00
Damien Elmes
94e4c40ebf move media folder/db paths into collection
this breaks background media syncing for now
2020-03-20 21:15:23 +10:00
Damien Elmes
47c142a74c move note code into notes.rs, add ability to rollback when unchanged 2020-03-20 21:15:23 +10:00
Damien Elmes
ae06b9e446 add Collection struct, and get media check working again
- media check no longer needs collection to be closed
- use savepoints for operations initiated by Rust, so they are
atomic without forcing a commit
2020-03-20 21:15:23 +10:00
Damien Elmes
04ca8ec038 initial work on DB handling in Rust
committing the Protobuf implementation for posterity, but will replace
it with json, as Protobuf measures about 6x slower for some workloads
like 'select * from notes'
2020-03-20 21:15:23 +10:00
Damien Elmes
e3a57a4193 fix clippy lint on other platforms 2020-03-19 10:58:52 +10:00
Damien Elmes
617b18ff49 correctly handle NFD content in media DB from older Anki versions 2020-03-19 10:20:42 +10:00
Damien Elmes
9736e4a970 ignore remote file links in media check 2020-03-10 13:46:52 +10:00
Damien Elmes
0f4c3ab611 add restore media action 2020-03-10 13:35:09 +10:00
Damien Elmes
255d6f8af7 don't clean up the trash folder automatically
The media check now reports if any files are in the trash folder,
and a method has been exposed to clear the trash.
2020-03-10 12:02:38 +10:00
Damien Elmes
6e30572e6d log sync errors 2020-03-10 09:43:48 +10:00
Damien Elmes
b4af0ca825 tweak logging 2020-03-10 09:30:05 +10:00
Damien Elmes
18cd841246 don't try to read file data when file marked as a deletion
If the user hadn't used the media check to clean up files with
invalid names on disk,  the long filename would break the 'automatically
rename long filenames when syncing' functionality, causing the original
long filename to be uploaded to AnkiWeb as an addition instead of
a deletion
2020-03-10 09:29:36 +10:00
Damien Elmes
2f20be7a5a fix incorrect mark_collection_modified()
- usn shouldn't be changed
- mtime is in milliseconds
2020-03-05 14:55:03 +10:00
Damien Elmes
ba4fe71eba make logging explicit, and support logging to a file 2020-02-29 20:44:01 +10:00
Damien Elmes
3a1fc74ec3 remove some unused imports 2020-02-29 15:21:11 +10:00
Damien Elmes
801c5fcc40 don't require a media scan after media deleted inside Anki 2020-02-29 14:45:16 +10:00
Damien Elmes
9f7c3a2fcf expand clozes before rendering LaTeX
https://anki.tenderapp.com/discussions/ankidesktop/39071-latex-media-windows-version-2121-683b7983-fail-rendering-latex
2020-02-24 18:34:08 +10:00
Damien Elmes
4430c67069 rework Fluent handling
- all .ftl files for a language are concatenated into a single file
at build time
- all languages are included in the binary
- external ftl files placed in the ftl folder can override the
built-in definitions
- constants are automatically generated for each string key
- dropped the separate StringsGroup enum
2020-02-23 13:22:50 +10:00
Damien Elmes
44053f0715 fix deletion notices being sent unnecessarily 2020-02-17 17:21:58 +10:00
Damien Elmes
cc99f221be expose StringsGroup enum in protobuf 2020-02-17 08:40:17 +10:00
Damien Elmes
319390f0c6 more frequent progress updates 2020-02-17 08:40:17 +10:00
Damien Elmes
5c8e3df612 include report in MediaCheckOutput 2020-02-17 08:40:17 +10:00
Damien Elmes
dc9362d4ed add i18n support to Rust code using Fluent 2020-02-17 08:40:17 +10:00
Damien Elmes
ee27711b65 remove redundant test_ prefix 2020-02-17 08:40:17 +10:00
Damien Elmes
23483b0a57 mark deletions in media DB when files are deleted 2020-02-17 08:40:17 +10:00
Damien Elmes
1b0e8485fd ignore errors when file to delete is already gone
May be marked as pending upload or in media check screen, then removed
by user.
2020-02-17 08:40:17 +10:00
Damien Elmes
df201c164f make sure we don't leave a trailing dot or space when truncating 2020-02-17 08:40:17 +10:00
Damien Elmes
1ff6cbc54d make sure renames generated during sync don't get immediately removed 2020-02-17 08:40:17 +10:00
Damien Elmes
d394aed5fd don't filter out invalid filenames when we're sending them as a deletion 2020-02-17 08:40:17 +10:00
Damien Elmes
44a1a5f987 fix the wrong named being returned when renaming in sync 2020-02-17 08:40:17 +10:00
Damien Elmes
4c0f216df2 use media.trash for unused media deletion as well 2020-02-17 08:40:17 +10:00
Damien Elmes
c890ef871e include LaTeX png/svg files when checking for unused media 2020-02-17 08:40:17 +10:00
Damien Elmes
4cca3ecef5 files with leading underscore are ignored 2020-02-17 08:40:17 +10:00
Damien Elmes
9913dcd5dc include normalized filenames in the rename list
Since they'll need to be uploaded on the next sync, better not to
hide them from the list
2020-02-17 08:40:17 +10:00
Damien Elmes
6f158c8555 plug new media check in 2020-02-17 08:40:17 +10:00
Damien Elmes
c1939aebd1 when adding hash suffix, need length in hex, not bytes 2020-02-17 08:40:17 +10:00
Damien Elmes
fabfcb0338 gather field references in Rust; media check now mostly complete 2020-02-17 08:40:17 +10:00
Damien Elmes
58da7988c3 catch trailing space/period as well 2020-02-17 08:40:17 +10:00
Damien Elmes
5ccdeb46b8 check [ instead of con in unit test, so test works on Windows as well 2020-02-17 08:40:17 +10:00
Damien Elmes
87c73741d0 test shouldn't depend on dentry order 2020-02-17 08:40:17 +10:00
Damien Elmes
314e643140 expire media trash after a week 2020-02-17 08:40:17 +10:00
Damien Elmes
e9f51a694c use our own trash folder instead of using the system trash
the trash crate was invoking external commands on Macs and Linux
which is slow and likely to fall over if a large number of files need
to be deleted at once.
2020-02-17 08:40:17 +10:00
Damien Elmes
660a9bf7ad tidying 2020-02-17 08:40:17 +10:00