Alexander Krotov
3e2bfc35e3
Delete hidden expired messages
...
The condition remains from the time when expired messages were hidden
instead of being moved into trash chat. As a result, old hidden
messages, such as location messages, were not deleted.
2020-05-15 20:46:41 +03:00
Simon Laux
c2c0c81f1c
cargo fmt
2020-05-11 11:51:40 +02:00
Simon Laux
fe23907eb3
fix muting dm chats
...
and rewrite the erroro message so that it makes more sense
2020-05-11 11:51:40 +02:00
Alexander Krotov
2dbb1bbbea
Do not reply to hidden messages
...
Especially with read receipts, it is wrong, because they are never
encrypted and their Message-IDs are not known to other users in a group.
2020-05-09 19:11:23 +03:00
bjoern
30be5e33d7
Merge pull request #1410 from deltachat/remove_addremove
...
remove all member_added/remove_events
2020-04-23 00:59:09 +02:00
bjoern
7846c23edd
Merge pull request #1411 from deltachat/delete-no-hide
...
Delete expired messages instead of hiding them
2020-04-20 18:04:30 +02:00
Alexander Krotov
6c0dd8543d
Delete expired messages instead of hiding them
...
For hidden messages, blobs are not deleted during housekeeping. To
actually free the space used by media files, messages should be moved to
trash instead of being hidden.
2020-04-20 02:29:55 +03:00
holger krekel
70c082a1b1
remove all member_added/remove_events
2020-04-19 21:15:45 +02:00
holger krekel
9eda710538
refine member-added and member-removed plugin hooks to signal the sender (who added/removed a contact )
...
add ac_chat_modified hook event
add account.get_contact_by_addr (thanks @r10s)
2020-04-19 21:00:55 +02:00
B. Petersen
0b6b8ced92
remove unused dc_chat_get_subtitle() api
2020-04-16 22:08:17 +02:00
Alexander Krotov
3a91c87c73
clippy: use as_deref()
2020-04-13 23:02:57 +03:00
Alexander Krotov
5f574cf283
get_next_media: replace indexing with .get()
2020-04-13 23:02:57 +03:00
Alexander Krotov
92f1e6da1e
get_next_media: enumerate() instead of indexing
2020-04-13 23:02:57 +03:00
holger krekel
1855f84fe0
fix bug in that remove-contact failed on new groups where we didn't have the peerstate of the removed-contact yet
2020-04-13 17:39:31 +02:00
holger krekel
a1d5120e58
sipmlify plugins and tests and remove superflous core event
2020-04-13 17:39:31 +02:00
holger krekel
f38386d164
fix member_added/member_removed event with tests and and provide a group-tracking example
2020-04-13 17:39:31 +02:00
holger krekel
d66829702f
fix #164 add MEMBER_REMOVED event and member_removed plugin python hook
2020-04-13 17:39:31 +02:00
holger krekel
84f17b7539
emit "DC_EVENT_MEMBER_ADDED" and python plugin event "member_added" for securejoin or non-securejoin additions of a contact to a chat. also fixup some docs
2020-04-13 17:39:31 +02:00
Alexander Krotov
e9967c32e6
chat: filter parent messages by state instead of UID
...
Since introduction of server message deletion, message may not have
server UID even when it is not a draft or pending message. To handle
such messages correctly, we explicitly check message state.
2020-04-13 17:38:42 +02:00
Alexander Krotov
f65dbee74b
Add basic test for ChatId.parent_is_encrypted()
2020-04-13 17:38:42 +02:00
Alexander Krotov
f51fd1267f
chat: move parent_query() and related methods from Chat to ChatId
2020-04-13 17:38:42 +02:00
Friedel Ziegelmayer
24f4cbbb27
refactor: replace failure
...
- failure is deprecated
- thiserror for deriving Error impl
- anyhow for highlevel error handling
2020-04-10 22:39:28 +02:00
Alexander Krotov
916fab7d4b
hide_device_expired_messages: allow missing self or device chat
2020-04-03 12:12:56 +03:00
Alexander Krotov
4e0a08106d
ChatId.get_param: remove unnecessary type annotation
2020-04-01 20:06:27 +03:00
Alexander Krotov
fc57cbfb49
Refactor hiding of expired messages
...
Now there is only one function: hide_device_expired_messages().
If any messages are hidden event DC_EVENT_MSGS_CHANGED(0,0) is emitted
now, which is more correct than DC_EVENT_CHAT_MODIFIED and also triggers
chatlist reload.
2020-04-01 20:06:27 +03:00
Alexander Krotov
7522fec044
Do not emit "chat modified" events when loading chatlist
...
Otherwise chatlist will be loaded twice, once right after hiding expired
messages, and once in response to event emitted by try_load().
2020-04-01 20:06:27 +03:00
Alexander Krotov
237dabb907
Do not hide hidden messages in ChatId.delete_device_expired_messages()
...
This prevents infinite event loop, when chatlist is reloaded in response
to event, and event is emitted by hiding messages before chatlist reload.
2020-04-01 20:06:27 +03:00
Alexander Krotov
3686048ab6
chatlist: hide all expired messages before loading
2020-04-01 20:06:27 +03:00
Alexander Krotov
2bf4c5d7e7
Emit "chat modified" event when messages expire
2020-04-01 20:06:27 +03:00
Alexander Krotov
051d80b2f3
Move delete_device_expired_messages() to ChatId
...
This allows to check if chat is a self-talk or device chat.
Messages are deleted only in viewed chats now.
2020-04-01 20:06:27 +03:00
Alexander Krotov
adaa1e856c
chat: add ChatId.is_self_talk() and ChatId.is_device_talk()
2020-04-01 20:06:27 +03:00
Alexander Krotov
4daa57c98e
delete_device_expired_messages: set text to DELETED for hidden messages
...
This makes debugging easier: DELETED messages should never be shown.
2020-04-01 20:06:27 +03:00
Alexander Krotov
7e67b2cbb3
Do not delete messages from special chats
2020-04-01 20:06:27 +03:00
Alexander Krotov
270d18a88a
Move prune_tombstones() to sql:: and call from housekeeping()
2020-04-01 20:06:27 +03:00
Alexander Krotov
25f8a735a9
get_chat_msgs: remove locally expired messages
...
Expired messages are hidden right before retrieving messages from the
database, so expired messages are not shown to the user.
2020-04-01 20:06:27 +03:00
Alexander Krotov
9eb672ea17
Move removal of chat message tombstones to a separate function
...
DELETE operation may be slow compared to UPDATE. It is better to do in
a separate job.
2020-04-01 20:06:27 +03:00
Alexander Krotov
9febc762da
Add chat::delete_device_expired_messages() function
2020-04-01 20:06:27 +03:00
Alexander Krotov
f2aa17c9d0
Resultify MsgId.delete_from_db()
2020-04-01 20:06:27 +03:00
Alexander Krotov
4452cab987
Turn Message::Delete_from_db into MsgId method
2020-04-01 20:06:27 +03:00
Alexander Krotov
958802a233
Add system message only if contact was removed successfully
2020-03-31 18:08:19 +02:00
Alexander Krotov
508b8ef2e2
Improve documentation, mostly by hiding behind pub(crate)
2020-02-20 23:37:13 +03:00
B. Petersen
fa3d98a492
add a function to delete records from the chats_contacts table
2020-02-18 17:51:28 +01:00
Alexander Krotov
8ed08f701d
Do not use grpid to find last inserted row in chats table
...
Instead, use last_insert_rowid() function to find the row.
There is no race condition in using last_insert_rowid(), because
last_insert_rowid() returns row id last inserted in this connection. As
we hold the connection during the whole transaction, it is impossible
that some other thread will execute INSERT statement in parallel.
This commit is part of the effort to get rid of sql::get_rowid hack and
use transactions more for related SQL statements.
2020-02-17 01:35:56 +03:00
B. Petersen
a9ac69fe9c
fix pinning test by forcing a reliable order
2020-02-16 00:55:13 +01:00
B. Petersen
1f9520dc78
target comments from @flub
2020-02-14 13:43:48 +01:00
B. Petersen
a177df32b7
omit values in ChatVisibility enum as suggested by @dignifiedquire and @flub
2020-02-14 13:43:48 +01:00
B. Petersen
f25d5dd123
do not unpin chats on sending/receiving messages
2020-02-14 13:43:48 +01:00
B. Petersen
4cfa9e6165
send event as before, uis depend on that
2020-02-14 13:43:48 +01:00
B. Petersen
0303ea7f57
rename to ChatVisibility, simplify ffi
2020-02-14 13:43:48 +01:00
B. Petersen
2813e01e61
remove unneeded sql-roundtrip on getting archived state
2020-02-14 11:28:55 +01:00