Commit Graph

245 Commits

Author SHA1 Message Date
adbenitez f4e693ca63 improve performance 2022-08-25 16:11:55 -04:00
adbenitez b66117de99 add "seen recently" indicator 2022-08-25 00:02:30 -04:00
adbenitez 31f55a315c go back to chatlist when back button is pressed or user touches outside the dialog in the dialog asking to confirm to forward message inside chat 2022-04-07 00:35:58 -04:00
B. Petersen 645864217f update summaries for webxdc drafts, so one can see what one is sending 2022-01-30 11:48:45 +01:00
bjoern b102026158 show errors when sending fails (#2193)
this happens only in rare cases as usually the message is always added
and errors happen far later.

but some conditions are checked very soon (webxdc sizes),
and these let an message not even being added.

note, that this pr only shows the error,
it does not change draft handling or so -
it would eg. be better if the message is re-converted to a draft,
however, that would be a larger refactoring and maybe not worth the effort.
2022-01-18 17:18:07 +01:00
bjoern 9e70aa7cad webxdc (#2174)
* add new w30 APIs

* create the webview,
disable internet access,
inject deltachat.js

* connect deltachat to the webview

* promisify api

* use msgActionButton to start the w30 apps

* cleanup

- create observers in onCreate() to avoid memory leak,
- derive from WebViewActivity to easier deal with particularities
  and to saves >100 loc
- reorder some methods to reflect lifetimes

* make it more clear, which uri-part is 'domain' and which one is 'path'

* unify logging

* it is 'statusUpdate' not 'stateUpdate'; not sure if promise is needed at the end, we can readd that as needed, simple code for now

* use core implementation for status updates

* disable debugging enabled by default, streamline code

* use same name for InternalJSApi for both, js and java

* getStatusUpdates() always return an array

* call JSON.stringify() on payload

* fix typo, fix equal operator

* use shorter function names in js land

* adapt to new zipped w30 format

* load any file from w30 archives

* add fallback if getMimeTypeFromExtension() fails

* rename w30 to webxdc

* add selfName()

* return selfAddr() if selfName() is empty

* rename deltachat.js to webxdc.js

* observer correct event

* rename getBlobFromArchive() to getWebxdcBlob()

* show webxdc app name in title bar

* swap payload and descr in sendUpdate() (adapt to new core api)

* allow user-defined-texts for webxdc apps, make room for icon+name

* show webxdc icon and name in chats

* render webxdc drafts accordingly

* allow configuring drafts

* do not destroy webxdc-message to be sent out by removing it via setDraft(null)

* fix crash when replying to webxdc messages

* add webxdc messages to profile's document tab

* hide 'search menu' for webxdc apps

* show app summary beside app icon

* remove outdated comment

* add precautious WebView restrictions

* Update src/org/thoughtcrime/securesms/ConversationItem.java

Co-authored-by: Asiel Díaz Benítez <adbenitez@nauta.cu>

* Update src/org/thoughtcrime/securesms/ConversationItem.java

Co-authored-by: Asiel Díaz Benítez <adbenitez@nauta.cu>

* Update src/org/thoughtcrime/securesms/ConversationActivity.java

Co-authored-by: Hocuri <hocuri@gmx.de>

* Webxdc requires at least Android 5 Lollipop

see https://github.com/deltachat/deltachat-android/pull/2174#discussion_r785436874

* recognize .xdc files on android10

based on @Hocuri's findings in #2188

Co-authored-by: Simon Laux <mobile.info@simonlaux.de>
Co-authored-by: adbenitez <asieldbenitez@gmail.com>
Co-authored-by: Asiel Díaz Benítez <adbenitez@nauta.cu>
Co-authored-by: Hocuri <hocuri@gmx.de>
2022-01-18 10:52:09 +01:00
adbenitez d5afe5f655 don't hide the attachment manager if not necessary 2021-11-29 20:19:18 -05:00
bjoern ab5c57736a re-add "Add Attachment" menu entry (#2094)
it was removed to have some less menu entries,
however, on recent discussions,
it turns out clearer and clearte that this will break some workflows
(writing text first, then adding attachment).

i just had a look at other "large" messengers -
all of them support "write text, then add attachment" -
as well as our iOS and Desktop apps.
also, this order seems to be pretty normal when it comes to "E-Mail".

all in all,
i think, we should not sacrify this workflow just to save one menu entry.

at some point,
maybe we want to have the "Attach" button always visible left of the input bar
as most other messengers do (as well as iOS and Desktop),
however, this is a larger thing and also has its drawbacks on smaller screens.

so, just leave things as is seems not to be the worse idea here.

the "View Profile" menu entry, however stays, removed,
so, there is some cleanup.
2021-10-27 10:42:53 +02:00
Hocuri 1fcda9c2d2 Remove "View Profile" and "Add Attachment" from menu (#2079)
The menu has grown waaaaay to big, before it has been up to 8 entries,
now it's two entries less.
2021-10-13 22:31:38 +02:00
Hocuri d8913cf17e Adapt to new direct share api (#1852)
Fix #1777
2021-10-13 17:33:55 +02:00
adbenitez 9d41055379 hidde keyboard when compose panel is hidden 2021-10-08 02:49:04 -04:00
bjoern 1eed088f66 rename isGroup() to isMultiUser() (#2063)
* rename isGroup() to isMultiUser()

* rename isGroupConversation()/isPushGroupConversation() to isMultiUser()

* rename chatIsGroup to chatIsMultiUser

* rename isGroupRecipient() to isMultiUserRecipient()
2021-09-30 21:31:18 +02:00
bjoern e71f5d9bba broadcasts android ui (#2060)
* add broadcasts ffi

* add 'broadcast' options to menu, chat, profile etc.

* generate initial broadcast names

* reword broadcast hint

* make 'Broadcasts Lists' experimental; while on that, also add a confirmation dialog to the location streaming switch (wording taken from ios)

* Update res/values/strings.xml

Co-authored-by: Hocuri <hocuri@gmx.de>

* comment on strings.xml

* tweak 'experimental' appearing, avoid the 'test tube'-emoji that is not supported on many devices

Co-authored-by: Hocuri <hocuri@gmx.de>
2021-09-30 15:44:17 +02:00
Hocuri e2b2d6bea4 [WIP] Fix "Can't edit shared image" (#2034)
Fix #2032

The problem was that after returning from the image editor, `doReinitializeDraft` was true and therefore we the draft was reinitialized to the originally shared, unedited image.

This was introduced in
https://github.com/deltachat/deltachat-android/pull/1770. I im pretty
sure that what I changed is fine, but we had so many regressions in the
past in this area that we should thoroughly test this change before
merging.

I extended
https://github.com/deltachat/interface/edit/master/user-testing/mailto-links.md
a bit; before merging this PR we should test that everything there still
works.
2021-08-16 12:39:58 +02:00
Hocuri b8cbc6d3b0 Add some @NonNull annotations, remove unused method (#2028)
This was in an attempt to find the cause for #2026. I didn't succeed,
but this is an improvement, anyway.
2021-08-11 23:13:12 +02:00
Hocuri 44ffbdbb58 Fix: When searching, entering an archived chat, and going back, go back to search (#2025)
Steps to reproduce the bug:
- Search and select an archived chat
- Press back

Expected: Go back to the search activity.
Actual: Go to the Archived chats list activity. The user has to press
"back" again to get to the search.
2021-08-10 17:06:05 +02:00
Hocuri 5952f30334 Fix: When returning to chat after blocking it, hide request buttons (#2023)
Steps to reproduce the bug:

- Go to a contact request
- Go to the profile
- Block the contact
- Press back

Expected behavior: Only the compose panel is shown, not the request
buttons.
Actual behavior: Both the panel and the request buttons are shown
because the panel visibility is updated, but not the request button's.

I fixed this by always calling `initializeContactRequest()` after
`setComposePanelVisibility()`.
2021-08-10 17:05:43 +02:00
Asiel Díaz Benítez 13dbb3f87c avoid showing compose panel when pressing block button (#2004)
* stop observing DC_EVENT_CONTACTS_CHANGED events before blocking chat so the input bar is not made visible in handleEvent()

* add comment about removing DC_EVENT_CONTACTS_CHANGED observer on blocking

Co-authored-by: B. Petersen <r10s@b44t.com>
2021-08-01 23:29:22 +02:00
Asiel Díaz Benítez 6bd46a8532 Merge pull request #1985 from deltachat/use-accounts-api
use dc_accounts_t
2021-07-31 16:19:33 -04:00
bjoern a7d6dda1a3 hide question from request panel for now (#1996)
* hide question from request panel for now, if needed we can do something more specific in the future

* remove 'Done' toast to avoid problems with lost activity

for whatever reason,
i just got a crash related to the toast that could not find its activity,
probably we should have used the app context and not the activity.

however, the toast was annoying me already,
there is no point in adding it, the change is visible instantly to the user
on the screen.
2021-07-29 23:36:16 +02:00
B. Petersen 634c8d1e49 use accounts event emitter 2021-07-26 21:37:32 +02:00
B. Petersen b28a62a1ea remove functions from subclassed DcContext
the functions were part of ApplicationDcContext for no special reason,
however, now standing in the way of avoiding subclassing DcContext
(to use the DcContext objects returned from DcAccounts directly).
2021-07-26 18:41:42 +02:00
Hocuri f941fd3c53 Remove Deaddrop chat (Android UI) (#1975)
See deltachat/deltachat-core-rust#2514

Fixes #1963
Fixes #1890

Before deleting a chat the user is asked for confirmation. Before blocking not, because blocking is not "destructive" (i.e. can be completely reverted by unblocking the contact). I'm wondering whether we should show a snackbar with an Undo button though, but we can probably wait for user feedback on this.

* Start removing deaddrop chat

* Generally works

* Fix the buttons

(it's not easy to not show one of the buttons in
ConstraintLayout; if problems turn up, we should probably
just not use ConstraintLayout)

* fix more things

* restartLoader() instead of notifyDataSetChanged() because the latter didn't do anything

* Archived badge

* Rename "Contact request" to "Request"

* oops

* Remove setStockTranslation(8, context.getString(R.string.chat_contact_request));

* Remove commented-out code, we probably won't need it

* Don't show "Delete" button for 1:1 chats

* Get rid of short flickering when declining a request

* Set the app's night mode to match the preference

This added 6ms to startup time, but I think that's OK, as
we will also be able to use more `-night` views in the future

* Make "Accept" text a bit brighter and easier to read in dark mode

* Check if the chattype is Group instead of members.length == 1
2021-07-26 13:01:59 +02:00
Hocuri 7ad227f789 Hide unnecessary controls if you can't send (#1951)
- Imediately hide the compose panel when you left the group and
EVENT_CHAT_CHANGED was sent
- Hide the "Leave" button if you are not a member of a group. I solved
this by checking `canSend()`; I could also have checked
`dc_is_contact_in_chat(CONTACT_ID_SELF)`, but this would be more
complexity for now.

  When we add the possibility to leave mailing lists, the core will have
  to explicitly tell the UI whether it's possible to leave a chat, but
  that's not for now.
2021-07-15 13:25:11 +02:00
B. Petersen c873e9c607 allow quote-replies for stickers
once the sticker is sent together with the quote,
the quote is cleared.

if there is some draft text, however, that is kept as draft.
tickers together with text are discouraged.
2021-06-09 11:28:09 +02:00
B. Petersen d7729b6001 send images from 'Image keyboard' as stickers
see https://developer.android.com/guide/topics/text/image-keyboard
2021-06-09 11:28:09 +02:00
Hocuri 60f8c41263 In-Chat-Search: Start searching at the newest (=last) message, not the oldest 2021-05-16 11:12:22 +02:00
Hocuri 030f1f857d Also remove supportInvalidateOptionsMenu() calls 2021-05-03 12:29:06 +02:00
adbenitez 5b520e1c9a remove invalidateOptionsMenu calls 2021-05-02 19:16:49 -04:00
adbenitez c4354a5a1e use mute API directly 2021-04-09 15:30:51 -04:00
adbenitez 7b6f1bd507 add lock recording feature 2021-03-14 15:28:23 +01:00
Hocuri 720f553717 Make the upper back button return to conversation list even if the keyboard is open
As discussed in the Testing group
2021-03-08 14:21:22 +01:00
B. Petersen 113a6c8f75 remove DcEventCenter from wrapper as it belongs to *.connect 2021-03-05 11:28:33 +01:00
bjoern c814885f5c mailinglists3 (#1781)
* 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>
2021-02-07 23:39:48 +01:00
Hocuri b645dc60a0 Improve performance and make sure that there is no race condition
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(); }.
2021-02-05 22:32:50 +01:00
Hocuri cd5f0c212c Fix disappearing drafts
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.
2021-02-05 22:32:50 +01:00
Hocuri 09e890f443 Keyboard correctly closes when it is open and a quote to another chat is clicked
Reported by Treefit
2020-11-08 11:43:23 +01:00
B. Petersen 5cbfd8cdb8 disallow muting saved-messages, there are no notifications for saved-messages 2020-10-26 13:38:30 +01:00
B. Petersen 7773f2ac79 disable 'disappearing messages' when a chat is not sendable; this is currently the device-chat, but may be others in the future 2020-10-25 01:09:56 +02:00
Hocuri 15373f9cc1 move directly to first-unread message fix #1654 2020-10-16 18:51:59 +02:00
Hocuri c720df5d5c Add swipe-to-reply quotes 2020-10-11 22:09:51 +03:00
B. Petersen 33fccc6d52 avoid unnecessary chat updates by filtering event-chat-id correctly 2020-09-20 16:28:54 +02:00
B. Petersen 41603e6688 pass DcEvent object to handlers to avoid error-prone casts 2020-09-20 15:50:40 +02:00
B. Petersen 097891e72a remove outdated reminder
the warning about outdated apps
was pretty unreliable in the past -
because of too short timings
and also because of the "installation date"
and the fact that an "installer" was used, is not always reliable.

also, the "installer date" could be wrong -
if the installation was done when the clock was altered badly.

as we cannot rely on the things the system provides here,
we move the whole thing to the core at
https://github.com/deltachat/deltachat-core-rust/pull/1901
which has also the advantage that this is done for all uis then.
2020-09-16 16:06:43 +02:00
B. Petersen e5112616bd remove some more unused function parameters 2020-09-10 00:41:16 +02:00
B. Petersen f27b530118 remove some unused minor functions and parameters 2020-09-10 00:22:26 +02:00
B. Petersen 4350fe120c remove dead code (by Android Studio / Analyze / Run Inspection by Name / Unused declarations 2020-09-09 22:55:18 +02:00
B. Petersen 33cd22552f make 'disappearing messages' a standard-feature 2020-09-04 14:28:52 +02:00
B. Petersen 4a2f6a32da request mic/cam permission more directly, a toast is not needed as all important information are already shown and it would appear on 'cancel' only 2020-08-22 00:52:24 +02:00
bjoern 9e0c4535d3 Merge pull request #1590 from deltachat/faster-camera-permission
Fix #1585 User asked for camera permission twice
2020-08-21 16:48:39 +02:00