Commit Graph

69 Commits

Author SHA1 Message Date
Harris 00f06ab034
Namespace retrieval and storage with auth (#880)
* feat: add migration and fork info for upcoming auth and closed group retrieval updates

* feat: add closed group poller calls and include namespace to parse raw messages function

* feat: add DB upgrades and queries for namespaces

* fix: fix the polling for post-HF signatures and group messages

* fix: realise we need a compound key for namespaces in received hashes, test explicitly setting namespace

* feat: add setForkInfo implementation

* refactor: include default fork info command on create, refactor migration to use new table since we can't add constraints in alter for PK, replace `lastHash` with `last_hash` in case that fixes paging

* refactor: include namespace and use when statement for closed group polling

* refactor: revert to main net

* refactor: use namespace constants

* refactor: revert to testnet and log the poll result

* fix: use or to log either poller

* fix: revert to default network and add more logging, only set the latest fork info if it is an increment

* build: update minor version

* refactor: use single target snode and namespace list for message sending

* fix: link previews and expiring messages in closed groups
2022-05-18 10:20:57 +10:00
Harris e1b6bb7e56
Add one on one calls over clearnet (#864)
* feat: adding basic webrtc deps and test activity

* more testing code

* feat: add protos and bump version

* feat: added basic call functionality

* feat: adding UI and flipping cameras

* feat: add stats and starting call bottom sheet

* feat: hanging up and bottom sheet behaviors should work now

* feat: add call stats report on frontend

* feat: add relay toggle for answer and offer

* fix: add keep screen on and more end call message on back pressed / on finish

* refactor: removing and replacing dagger 1 dep with android hilt

* feat: include latest proto

* feat: update to utilise call ID

* feat: add stun and turn

* refactor: playing around with deps and transport types

* feat: adding call service functionality and permissions for calls

* feat: add call manager and more static intent building functions for WebRtcCallService.kt

* feat: adding ringers and more audio boilerplate

* feat: audio manager call service boilerplate

* feat: update kotlin and add in call view model and more management functions

* refactor: moving call code around to service and viewmodel interactions

* feat: plugging CallManager.kt into view model and service, fixing up dependencies

* feat: implementing more WebRtcCallService.kt functions and handlers for actions as well as lifecycle

* feat: adding more lifecycle vm and callmanager / call service functionality

* feat: adding more command handlers in WebRtcCallService.kt

* feat: more commands handled, adding lock manager and bluetooth permissions

* feat: adding remainder of basic functionality to services and CallManager.kt

* feat: hooking up calls and fixing broken dependencies and compile errors

* fix: add timestamp to incoming call

* feat: some connection and service launching / ring lifecycle

* feat: call establishing and displaying

* fix: fixing call connect flows

* feat: ringers and better state handling

* feat: updating call layout

* feat: add fixes to bluetooth and begin the network renegotiation

* feat: add call related permissions and more network handover tests

* fix: don't display call option in conversation and don't show notification if option not enabled

* fix: incoming ringer fix on receiving call, call notification priorities and notification channel update

* build: update build number for testing

* fix: bluetooth auto-connection and re-connection fixes, removing finished todos, allowing self-send call messages for deduping answers

* feat: add pre-offer information and action handling in web rtc call service

* refactor: discard offer messages from non-matching pre-offers we are already expecting

* build: build numbers and version name update

* feat: handle discarding pending calls from linked devices

* feat: add signing props to release config build

* docs: fix comment on time being 300s (5m) instead of 30s

* feat: adding call messages for incoming/outgoing/missed

* refactor: handle in-thread call notifications better and replace deny button intent with denyCallIntent instead of hangup

* feat: add a hangup via data channel message

* feat: process microphone enabled events and remove debuggable from build.gradle

* feat: add first call notification

* refactor: set the buttons to match iOS in terms of enable disable and colours

* refactor: change the call logos in control messages

* refactor: more bluetooth improvements

* refactor: move start ringer and init of audio manager to CallManager.kt and string fix up

* build: remove debuggable for release build

* refactor: replace call icons

* feat: adding a call time display

* refactor: change the call time to update every second

* refactor: testing out the full screen intents

* refactor: wrapper use corrected session description, set title to recipient displayName, indicate session calls

* fix: crash on view with a parent already attached

* refactor: aspect ratio fit preserved

* refactor: add wantsToAnswer ability in pre-init for fullscreenintent

* refactor: prevent calls from non hasSent participants

* build: update gradle code

* refactor: replace timeout schedule with a seconds count

* fix: various bug fixes for calls

* fix: remove end call from busy

* refactor: use answerCall instead of manual intent building again

* build: new version

* feat: add silenced notifications for call notification builder. check pre-offer and connecting state for pending connection

* build: update build number

* fix: text color uses overridden style value

* fix: remove wrap content for renderers and look more at recovering from network switches

* build: update build number

* refactor: remove whitespace

* build: update build number

* refactor: used shared number for BatchMessageReceiveJob.kt parameter across pollers

* fix: glide in update crash

* fix: bug fixes for self-send answer / hangup messages

* build: update build number

* build: update build.gradle number

* refactor: compile errors and refactoring to view binding

* fix: set the content to binding.root view

* build: increase build number

* build: update build numbers

* feat: adding base for rotation and picking random subset of turn servers

* feat: starting the screen rotation processing

* feat: setting up rotation for the remote render view

* refactor: applying rotation and mirroring based on front / rear cameras that wraps nicely, only scale reworking needed

* refactor: calls video stretching but consistent

* refactor: state machine and tests for the transition events

* feat: new call state processing

* refactor: adding reconnecting logic and visuals

* feat: state machine reconnect logic wip

* feat: add reconnecting and merge fixes

* feat: check new session based off current state

* feat: reconnection logic works correctly now

* refactor: reduce TIMEOUT_SECONDS to 30 from 90

* feat: reset peer connection on DC to prevent ICE messages from old connection or stale state in reconnecting

* refactor: add null case

* fix: set approved on new outgoing threads, use approved more deeply and invalidate the options menu on recipient modified. Add approvedMe flag toggles for visible message receive

* fix: add name update in action bar on modified, change where approvedMe is set

* build: increment build number

* build: update build number

* fix: merge compile errors and increment build number

* refactor: remove negotiation based on which party dropped connection

* refactor: call reconnection improvement tested cross platform to re-establish

* refactor: failed and disconnect events only handled if either the reconnect or the timeout runnables are not set

* build: update version number

* fix: reduce timeout

* fix: fixes the incoming hangup logic for linked devices

* refactor: match iOS styling for call activity closer

* chore: upgrade build numbers

* feat: add in call settings dialog for if calls is disabled in conversation

* feat: add a first call missed control message and info popup with link to privacy settings

* fix: looking at crash for specific large transaction in NotificationManager

* refactor: removing the people in case transaction size reduces to fix notif crash

* fix: comment out the entire send multiple to see if it fixes the issue

* refactor: revert to including the full notification process in a try/catch to handle weird responses from NotificationManager

* fix: add in notification settings prompt for calls and try to fall back to dirty full screen intent / start activity if we're allowed

* build: upgrade build number
2022-04-19 14:25:40 +10:00
Harris dd1da6b1a4
Add a global search (#834)
* feat: modifying search functionalities to include contacts

* feat: add global search UI input layouts and color attributes

* feat: add global search repository and model content

* feat: adding diff callbacks and wiring up global search vm to views

* feat: adding scroll to message, figuring out new query for recipient thread search

* feat: messing with the search and highlighting functionality after wiring up bindings

* fix: compile error from merge

* fix: gradlew build errors

* feat: filtering contacts by existing un-archived threads

* refactor: prevent note to self breaking, update queries and logic in search repo to include member->group reverse searches

* feat: adding home screen new redesigns for search

* feat: replacing designs and adding new group subtitle text

* feat: small design improvements and incrementing gradle build number to install on device

* feat: add scrollbars for search

* feat: replace isVisible for cancel button now that GlobalSearchInputLayout.kt replaces header

* refactor: all queries are debounced not just all but 2 char

* refactor: remove visibility modifiers for cancel icon

* refactor: use simplified non-db and context related models in display, remove db get group members call from binding data

* fix: use threadId instead of group's address

* refactor: better close on cancel, removing only yourself from group member list in open groups

* refactor: seed view back to inflated on create and visibility for empty placeholder and seed view text

* refactor: fixing build issues and new designs for message list

* refactor: use dynamic limit

* refactor: include raw session ID string search for non-empty threads

* fix: build lint errors

* fix: build issues

* feat: add in path to the settings activity

* refactor: remove wildcard imports
2022-02-07 17:06:27 +11:00
ryanzhao 29e355c6ab send unsend request as sync message 2021-08-16 14:03:06 +10:00
ryanzhao 0ebb87ef6f allow self send and notify for unsend requests 2021-08-10 16:47:52 +10:00
ryanzhao c3e45a308a store server hash 2021-08-10 16:42:15 +10:00
Niels Andriesse 07f43121c3
Merge pull request #672 from hjubb/chat_ux_improvements
Fixes Open Group Quote Bug
2021-07-23 16:22:29 +10:00
Harris 3c6b1eff44 fix: open groups update the sent timestamp locally to be the returned group 2021-07-23 16:04:18 +10:00
Niels Andriesse 118447799a Handle incorrect clock setting 2021-07-23 14:09:27 +10:00
Niels Andriesse 66e7df22bb Don't notify for closed group control messages
This addresses an issue where:

• someone would create a closed group
• on other peoples' devices this control message would be received through a background poll or a push notification
• the received message timestamps table would be updated
• processing wouldn't be finished (during a background poll or while handling a push notification the system can cut you off at any time)
• some of the added users don't see the new closed group because when they open the app and get the control message from their swarm it's considered a duplicate and isn't processed again
2021-05-24 08:53:27 +10:00
Niels Andriesse 49c3ffd9ca Remove redundant code 2021-05-21 15:02:34 +10:00
Niels Andriesse 6243443262 Move files 2021-05-18 16:11:38 +10:00
Niels Andriesse c1548a4e51 Move files 2021-05-18 09:50:16 +10:00
Niels Andriesse dc8938c269 Move protos 2021-05-18 09:44:06 +10:00
Niels Andriesse 961972a723 Move protos 2021-05-18 09:34:45 +10:00
Niels Andriesse a88322a033 Move files 2021-05-18 09:12:33 +10:00
Niels Andriesse a2c886468d Clean 2021-05-13 16:14:54 +10:00
nielsandriesse f5238982c3 Add missing message padding 2021-05-12 15:47:17 +10:00
jubb fe8dc2d392 fix: slight UI and handling protocols at onion request level 2021-05-03 15:21:53 +10:00
jubb ef19c0d10e fix: fixing up LokiMessageDatabase.kt table structure, deletion closer to finished 2021-04-29 17:13:42 +10:00
jubb 51554f1cdf Merge remote-tracking branch 'upstream/dev' into open_groups_V2, working on compact poller implementation
# Conflicts:
#	app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java
#	app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java
#	app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/api/BackgroundPollWorker.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/api/PublicChatManager.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/database/LokiThreadDatabase.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/utilities/MentionManagerUtilities.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/utilities/OpenGroupUtilities.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt
#	app/src/main/java/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt
#	libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt
#	libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt
#	libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentUploadJob.kt
#	libsession/src/main/java/org/session/libsession/messaging/mentions/MentionsManager.kt
#	libsession/src/main/java/org/session/libsession/messaging/messages/Destination.kt
#	libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt
#	libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessageV2.kt
#	libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupV2.kt
#	libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt
#	libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt
#	libsession/src/main/java/org/session/libsession/messaging/utilities/DotNetAPI.kt
#	libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt
#	libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt
#	libsession/src/main/java/org/session/libsession/snode/SnodeMessage.kt
#	libsession/src/main/java/org/session/libsession/utilities/mentions/MentionsManager.kt
#	libsignal/src/main/java/org/session/libsignal/service/loki/api/SwarmAPI.kt
#	libsignal/src/main/java/org/session/libsignal/service/loki/api/opengroups/PublicChat.kt
#	libsignal/src/main/java/org/session/libsignal/service/loki/utilities/mentions/MentionsManager.kt
2021-04-28 17:41:30 +10:00
jubb 5d8f036f82 fix: attachment downloads and uploads
enable multi-threaded attachment handling for messages to speed up download/upload and free up message processing queue.

leaving group removes appropriate entries now in threaddb
2021-04-27 17:29:37 +10:00
Niels Andriesse 69f05dabdf Clean 2021-04-26 11:23:09 +10:00
Niels Andriesse 17e764fc31 Clean 2021-04-26 11:14:45 +10:00
Niels Andriesse 25307068e8 Match iOS protobuf 2021-04-26 11:06:00 +10:00
Niels Andriesse bc66c45bca Clean 2021-04-26 10:26:31 +10:00
jubb 6272856ef9 feat: syncing / joining / leaving working on open group v2 2021-04-23 17:49:24 +10:00
Niels Andriesse 7415c728eb Merge branch 'hardfork' of github.com:oxen-io/session-android into hardfork 2021-04-23 16:11:31 +10:00
Niels Andriesse 979c21ccbf Fix duplicated API 2021-04-23 16:09:47 +10:00
jubb 1e164f8648 feat: adding default group handling to frontend viewmodel 2021-04-20 17:22:36 +10:00
Niels Andriesse b7272bdf66 Increase TTL & remove PoW 2021-04-15 10:42:47 +10:00
Brice-W d7c03c9d0a group updates fixes 2021-03-26 15:46:37 +11:00
jubb 7f5f1e4559 Merge remote-tracking branch 'upstream/dev' into origin/refactor-sending
# Conflicts:
#	app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt
2021-03-23 11:13:00 +11:00
jubb 6f2bad9b59 fix: no duplicate group left messages, more efficient closed group polling 2021-03-23 10:00:51 +11:00
jubb b685846d7e Merge remote-tracking branch 'upstream/dev' into origin/refactor-sending
# Conflicts:
#	app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
#	app/src/main/java/org/thoughtcrime/securesms/loki/database/LokiAPIDatabase.kt
#	libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt
#	libsession/src/main/java/org/session/libsession/messaging/messages/control/ExpirationTimerUpdate.kt
#	libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupMessage.kt
#	libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderClosedGroup.kt
2021-03-18 09:26:13 +11:00
Ryan ZHAO 333533785b fix crash on attachment send failure 2021-03-17 16:22:43 +11:00
Ryan ZHAO 39aef68b04 refactor precondition failure error 2021-03-17 10:48:20 +11:00
Ryan ZHAO 778a0d083f Merge branch 'dev' of https://github.com/oxen-io/session-android into refactor-sending-error-handling 2021-03-16 16:31:58 +11:00
Ryan ZHAO 95646ed04e make error description show in the message detail activity 2021-03-16 16:31:52 +11:00
jubb 7e509a1cf0 fix: pad the plaintext before encryption 2021-03-16 15:49:31 +11:00
jubb 6508873e57 fix: fix the sent / receive timestamps for linking quotes 2021-03-15 15:03:23 +11:00
Ryan ZHAO 4628f27d9f fix error handling 2021-03-15 13:14:45 +11:00
Ryan ZHAO d7e525d828 clean 2021-03-12 14:52:59 +11:00
Ryan ZHAO 0a7fecfb52 fix sending link preview 2021-03-09 10:50:02 +11:00
Ryan ZHAO d84b593da2 fix expiration timer animation 2021-03-05 09:53:58 +11:00
Ryan ZHAO e0ff5a7e7a fix sending expiration update message 2021-03-04 17:14:12 +11:00
Ryan ZHAO aa7071ad80 send typing indicator using new pipeline 2021-03-04 15:57:01 +11:00
Ryan ZHAO 88ac390495 plug in closed group message sender 2021-03-04 14:54:32 +11:00
Ryan ZHAO c51593a914 fix sending attachments including link previews 2021-03-04 14:03:18 +11:00
Ryan ZHAO 0ea1ed15e7 WIP: make attachment work 2021-03-02 17:22:56 +11:00