* Adapt to mailing lists
* Change the question if this is a mailing list (untested)
* rm unused fn
* Adapt to getSenderName -> getOverrideSenderName (untested)
* Use dc_msg_get_sender_first_name() because sometimes the first name was not correctly shown in mailing lists
* Don't let the user modify mailing list groups
* Fix crash
* Make Unnamed newsletter translatable, make the subtitle of mailing lists "Mailing list"
* tweak and hide some controls for mailing lists
* Update src/com/b44t/messenger/DcChat.java
Co-authored-by: bjoern <r10s@b44t.com>
* adapt to new dc_msg_get_real_chat() api, remove dc_msg_get_sender_first_name()
* remove now dead code
* add mailing list name to contact-request-question
move question-creation to a helper class
to avoid duplicated code.
* fix DcMsg.getOverrideSenderName()
* adapt to new dc_decide_on_contact_request() api
* re-allow changing name+image for mailinglists, see recent discussions on PRs
* remove memberlist- and settings-tab from mailinglist profile until there is some use for them
* adapt to new DC_CHAT_TYPE_MAILINGLIST type
Co-authored-by: Hocuri <hocuri@gmx.de>
add a static boolean doReinitializeDraft that is set to true in onPause() if this activity was started using startActivityForResult(). in onResume(), do if(doReinitializeDraft) { initializeDraft(); }.
Some people reported that drafts were disappearing, and I found a way to
reproduce it (my interpretation in brackets):
- Open Saved Messages chat, could be any other chat too
- Go to another app and share to DC
- In DC select Saved Messages
- (as sharing is done using startActivityForResult(), a second
ConversationActivity is created without affecting the existing one)
- Leave DC. (The second ConversationActivity will correctly save its
draft to the db)
- Open DC again from the "Recent apps". (The first ConversationActivity
will be loaded. It will not know that there is a newer draft and still
show the old draft, or nothing if there was none. When it's closed, it
will overwrite the draft)
I came to this conclusion by logging all writes to the draft in the db.
Also, when I set `REQUEST_RELAY` to -1 (`startActivityForResult(intent,
-1) will behave the same as `startActivity(intent)`) (but that's not a
solution, sometimes we need startActivityForResult(), see e.g.
https://github.com/deltachat/deltachat-android/pull/1412)
What's still a little weird: I tried replacing all calls to
`startActivityForResult(-intent for ConversationActivity-)` with
startActivity(), and the issue didn't go away. Apparently it's only
enough if all calls are replaced, which is the same as setting
`REQUEST_RELAY` to -1. Maybe it's enough if one activity in the call
chain is called using startActivityForResult().
The call to `initializeDraft()` makes the activity start & resume 2-3ms
slower, which is probably acceptable.
While going back and forth with activities & sharing, I also encountered
some more bugs (without trying to reproduce them), but they are not too
annoying (as opposed to losing your draft) and I'm hesitant to changing
the activity-switching logic too much as it is so easy to just break
things again.
While 4 weeks always fits in a month,
5 weeks (35 days) always covers at least a month,
so it can be used in a situation where messages are required to
be stored for a month.
* add get-mime-original apis
* remove unused control
* add 'Show full message' buttons
* split reusable WebViewActivity from LocalHelpActivity
* add FullMsgActivity
* load html via AsyncTask
* adapt to changed api
* handle mailto:-links in WebView
* block loading remote images by default, add user setting always/once/never
* do not hide 'Once' button in always-mode, playing around a day with hidden 'Once' that looks more like a bug :)
* wording: as 'Always' affects all messages, it is better to speak of multiple senders
* wording: use 'Load remote images'
this makes it easier for the user to find the option
if one sees, images are missing in the document.
* wording: shorten text.
* wording: change 'may' to 'can'. 'may' sounds a bit as if someone allows this.
* Don't use AsyncTask
* check 'once' if appropriate
* use lite-colored checkbox-emoji in dark-theme
* add comment about missing error logging
Co-authored-by: Hocuri <hocuri@gmx.de>
Using both `setMessage()` and `setView()` on the same AlertDialog,
on small screens the "OK" and "Cancel" buttons were not be show. So, put the
message into our custom view.
fix maybe #1748. Maybe not, because actually I don't understand why
issue #1748 even happened because we don't use the system background for
the bubble but an own one (see conversation_item_sent.xml:50). Probably
the system is somehow trying to forcefully create a dark mode.
So, let's see whether this PR fixes the issue, if not, I'll try again.
I can't tell if it helps, I personally was able to both play a 60min
audio and to play 32 voice messages after each other. Shouldn't hurt to
release them, though.
I tested my change, and at least it seems not to worsen anything.
Seems like in the first commit I was not careful enough: The color was
set to red, but then the view was reused in a RecyclerView and the color
stayed red. Therefore, after scrolling, more and more of the status icons got
red.
IIRC some time ago we talked about making the error icon red and make it
an exclamation mark to make it more visible.
Today someone complained to me that they thought the "x" looks like one
can close something and that it shouldn't be green, so I went ahead and
made it red :) (it's also a little bit bigger now)
- the image file is a vector (xml) file now, previously it was a png file.
Might this be a problem?
- it forwards media together with the text,
this is unexpected
- if forward is available, reply and reply-privately
should be available as well, however, this seems to be a bit much.
- the function had issues which would need fixing.
instead, we will add a 'Show in chat' function that is more powerful
and fixes all of the things above.
when server-deletion is enabled,
always show a hint about the impact below the option.
the hint is a summary of the conformation-dialog
so that the user is more aware of the impact
if enabling was some time ago
or the option was even enabled by the provider-db.
the 'inboxes' value contains the last lines of notification,
however, if the app is restarted for whatever reasons,
but notifications are persisted,
they do not contain all lines.
for the notification display, this is no big deal,
however, this cached value is not suitable
to check if there is a notification or not for a chat.
even if there is a notification, 'inboxes' may be empty,
this 'speed up' check was introduced
for a workaround of notification removal that requires lots of calls.
meanwhile, however, we have DC_EVENT_MSGS_NOTICED,
so we also remove this workaround.
I also deleted an unnecessary LinearLayout, so you should look at the
diff with --ignore-all-space
Firstly, I lifted quote_attachment_container out of the FrameLayout with
the thumbnail so that quote_attachment_container can be wrap_content
(and enlarge the quote if necessary) while the thumbnail still always
matches the size of the quote.
Then I made the document view itself a little smaller so it does not
enlarge the quote all the times.
i cannot see a usecase for forwarding info-messages as "member added",
so it might also confuse users when the option is offered at all.
as all selected messages are loaded into memory anyway,
this was easy to implement.
tbh, if we would track the selection by message-ids only and
this would have require a larger refactoring or performace issues
(imaging 100 messages to be checked on each new selected message),
i would not have implemented that now :)
i do not think, that sensitive information can be send accidentially this way,
even if Bob can forward an info-message as "Alice invited Claire" -
it is pretty clear to Bob that he forwards exactly that text.
(this is different from adding "Honey" to the group -
where "Honey" is an only locally given name for "Dr. Someone" ;)