Friedel Ziegelmayer
b23ca26908
refactor(chatlist): rustify
2019-07-28 11:32:48 +02:00
Alexander Krotov
21d94b1d09
Remove misplaced comment
2019-07-27 19:28:39 +03:00
Alexander Krotov
ae1cbc9596
dc_array: store locations as Vec<dc_location>
2019-07-27 19:28:39 +03:00
Alexander Krotov
86d047f618
dc_chat: use get_id instead of accessing array fields directly
2019-07-27 19:28:39 +03:00
Alexander Krotov
1cd7cb541c
Rewrite most location array member accessors
2019-07-27 19:28:39 +03:00
Alexander Krotov
f27dda86ff
Move dc_array_search_id into dc_array_t implementation
2019-07-27 19:28:39 +03:00
Alexander Krotov
51319f89e8
Create dc_array_t in dc_get_locations without unsafe
2019-07-27 19:28:39 +03:00
Alexander Krotov
8b4acbb63a
Move dc_array_get_ptr inside dc_array_t implementation
2019-07-27 19:28:39 +03:00
Alexander Krotov
928361429e
Move dc_array_get_{uint,id} inside dc_array_t implementation
2019-07-27 19:28:39 +03:00
Alexander Krotov
c17632188a
Avoid using return in dc_array_get_cnt implementation
2019-07-27 19:28:39 +03:00
Alexander Krotov
ea3c89e913
Move dc_array_unref logic inside dc_array_t implementation
...
This will allow to make dc_array_t members private in the future.
2019-07-27 19:28:39 +03:00
Alexander Krotov
ea84edf13a
Implement dc_array_t::len()
2019-07-27 19:28:39 +03:00
Alexander Krotov
c335348f20
Implement dc_array_t::is_empty()
2019-07-27 19:28:39 +03:00
Alexander Krotov
1e91f6a204
Merge dc_array_free_ptr into dc_array_unref
2019-07-27 19:28:39 +03:00
Alexander Krotov
dfd43cbb97
Rename dc_array_new_typed into dc_array_new_locations
...
dc_array_new_typed is only used internally, so we can change its API.
2019-07-27 19:28:39 +03:00
Alexander Krotov
c7a6b3caae
Remove unnecessary check in dc_array_new_typed
...
Allocating Vec with 0 capacity is correct.
2019-07-27 19:28:39 +03:00
Alexander Krotov
f3eea41914
Reimplement dc_array_new without dc_array_new_typed
2019-07-27 19:28:39 +03:00
Alexander Krotov
8d43ad4809
Construct dc_array_t id arrays using safe methods
2019-07-27 19:28:39 +03:00
Alexander Krotov
1f63753a8b
Simplify dc_array_search_id
2019-07-27 19:28:39 +03:00
Alexander Krotov
e796a4c438
Move dc_array_add_{uint,id} implementations into dc_array_t
2019-07-27 19:28:39 +03:00
Alexander Krotov
85dfd65e48
Simplify dc_array_get_string
2019-07-27 19:28:39 +03:00
Alexander Krotov
a323fe68a6
Simplify dc_array_duplicate
2019-07-27 19:28:39 +03:00
Alexander Krotov
05aca2c529
Make dc_array_new and dc_array_new_typed safe
...
Just like Box::into_raw, these functions are safe,
even though the caller is responsible for the allocated structure.
2019-07-27 19:16:42 +03:00
Alexander Krotov
1dfad65afd
dc_array.rs: remove magic field
...
It was always set to DC_ARRAY_MAGIC, except immediately before freeing the memory.
2019-07-27 19:16:42 +03:00
Alexander Krotov
e15e3a1e84
Use Vec to store dc_array_t data
2019-07-27 18:25:24 +03:00
Alexander Krotov
252697b174
Implement dc_array_t::new() and use Box to allocate dc_array_t
2019-07-27 18:25:24 +03:00
Alexander Krotov
7764ab3ff3
Replace C loop with Rust loop in dc_array_search_id
2019-07-27 18:25:24 +03:00
Alexander Krotov
7585dc49e3
Replace C loop with Rust loop in dc_array_free_ptr
2019-07-27 18:25:24 +03:00
Alexander Krotov
f0ae5fcd7c
Add DC_ARRAY_LOCATIONS constant
2019-07-27 18:25:24 +03:00
Alexander Krotov
7cba2b3f66
Remove unused dc_array_sort_strings
2019-07-27 18:25:23 +03:00
Alexander Krotov
a0594338b2
Remove repr(C) from dc_array_t
...
All members of dc_array_t structure are private, C code does not need to interact with them.
2019-07-27 17:14:09 +03:00
Floris Bruynooghe
4902310138
Make stock strings rusty
...
This converts the stock strings API to be more safe-rust style. The
API is kept roughly the same for now but moved to methods on the
context.
2019-07-27 12:37:22 +02:00
Friedel Ziegelmayer
44b8629811
Merge pull request #232 from deltachat/fix_markseen
...
(jikstra, hpk) fix markseen logic to work like C
2019-07-27 12:31:59 +02:00
Dmitry Bogatov
36b5f4da53
Check if input to dc_send_text_msg is valid utf8
...
With this change, passing invalid utf8 string to `dc_send_text_msg' does not
crash application, it prints warning and returns error code.
It should be admitted that this fix is sub-optimal: if input C string is valid
utf8 (which is likely), result of successful conversion to `&str' is discarded
in `dc_send_text_msg', and the same input C string is converted again with
`as_str' in `prepare_msg_raw'.
It is not clear how to fix it in non-disruptive way, since input C string is
passed down to call stack as part of `dc_msg_t' struct, which is part of C ABI.
2019-07-27 09:04:20 +00:00
holger krekel
67d9515033
(jikstra, hpk) fix markseen logic to work like C: ignore if we get no rows for a message (eg desktop calls itwith msg_id=9 which is a special id -- and C just ignored it)
2019-07-26 09:02:11 +02:00
Alexander Krotov
c7ebf6de09
cargo fmt
2019-07-25 23:32:17 +02:00
Alexander Krotov
2f204fd2aa
Simplify dc_simplify_t implementation
...
- Replace dc_simplify_new and dc_simplify_unref with ::new()
- Move dc_simplify_simplify and dc_simplify_simplify_plain_text into impl
2019-07-25 23:32:17 +02:00
Alexander Krotov
9f75a5049e
dc_location: store marker as Option<String> instead of C string
2019-07-25 22:41:33 +02:00
Alexander Krotov
ec6cc5c355
Allocate dc_kml_t in a rusty way
2019-07-25 22:41:33 +02:00
Alexander Krotov
b0ef825e67
Implement dc_location::new() and dc_kml_t::new()
2019-07-25 22:41:33 +02:00
Alexander Krotov
a791f76e4b
Rename _dc_location into dc_location
2019-07-25 22:41:33 +02:00
holger krekel
2cf227571a
pure cargo fmt
2019-07-25 21:51:39 +02:00
holger krekel
9a9b49f8f0
- remove current_block logic from dc_chat.rs with the "OK_TO_CONTINUE"
...
pattern -- re-indentation will come after this commit with a pure application of "cargo fmt"
- bring back comment from C code
- make some path helpers return bool
2019-07-25 21:51:39 +02:00
holger krekel
9d87f2f10b
carefully replace msg state and type numbers with DC_MSG_* and DC_STATE_* constants and also declare them as i32 to avoid tons of casts
2019-07-25 09:45:04 +02:00
Dmitry Bogatov
004cdf6491
Improve punctuation of message, printed by "repl" program
...
This patch changes output of following command (from README.md)
$ cargo run --example repl -- /tmp/main.db
from
First time init: creating tables in ""/tmp/main.db""
[...]
Opened ""/tmp/main.db"".
to
First time init: creating tables in "/tmp/main.db"
[...]
Opened "/tmp/main.db".
Note lack of double quotation mark, which was confusing and could have been
interpreted as part of file name.
2019-07-24 11:36:51 +02:00
Dmitry Bogatov
72ad8b5199
Improve error handling in dc_send_text_msg()
...
Previously, dc_send_text_msg() silently returned 0 in case of incorrect
input. This way "send" command in repl reported "Sending failed" without
any clue what exactly went wrong.
2019-07-24 09:52:17 +02:00
Alexander Krotov
cb75ac3842
Remove dc_location_t
...
dc_location_t is an incomplete copy of _dc_location
The difference is that it lacks `int independent` field.
As a result, calloc did not allocate memory for this field.
deltachat-core (C version) has only one dc_location_t, that includes the last field.
2019-07-24 09:37:04 +02:00
Alexander Krotov
a5553f98af
dc_location.rs: rewrite is_marker in safe Rust
2019-07-24 09:16:44 +02:00
Alexander Krotov
648d3d78aa
Remove dc_arr_to_string function that was used only once
2019-07-23 10:09:52 +02:00
holger krekel
afcf48f833
add test, fix and high level python api for dc_delete_contact
...
the rust-logic was inverted -- you can not delete a contact that still has messages with it.
2019-07-23 09:37:21 +02:00