Commit graph

71 commits

Author SHA1 Message Date
Morgan Pretty
dbead5e3c8 Got the '/inbox' APIs and encryption/decryption/validation working
Added a few types to make the code more readable
Added the inbox request to the polling
Added a couple of properties to the TSContactThread to indicate the originating open group to support SOGS DMs
Added code to store the latest message id for an open group inbox
Added a bunch of documentation from the API docs into the OpenGroupAPI (and associated models)
Updated the OpenGroupAPI to match the latest docs
Fixed the incorrect structure of the SendDirectMessageRequest
Fixed an incorrect inbox endpoint path
Tweaked the batch response handling so it wouldn't fail to parse all responses if a single one failed
Renamed IdPrefix to SessionId.Prefix and cleaned up the type to be more readable & self-documenting
2022-02-25 11:59:29 +11:00
Morgan Pretty
1edd500dab Updated to the latest blinding behaviour
Added a couple more dependencies for unit testing injection
Updated the MessageSender to set the sender of the message to the appropriate blinded/unblinded key
Updated the OpenGroup Message to handle verification of both blinded and unblinded messages
Updated the MessageSender to use dependency injection for it's sendToOpenGroupDestination method
Updated the JSONDecoder to support getting dependencies (for signature verification)
Fixed tests broken by updating the signing logic
2022-02-21 10:01:53 +11:00
Morgan Pretty
ef09d4d5aa Additional encryption work on id blinding
Got the updated blinding logic working (at least when authenticating a request - still need to deal with message signing and verification)
Storing the server capabilities in the database now so we can correctly blind requests based on them
Renamed the remaining 'v2' functions and classes to just be 'OpenGroup' since there isn't a 'V2' anymore
Cleaned up a few TODOs and functions
2022-02-17 18:33:23 +11:00
Morgan Pretty
b655882cbd Started resolving TODOs
Added some new properties to the OpenGroupV2
Moved a number of methods and variables from OpenGroupAPI to OpenGroupManager (anything doing actual logic)
Moved the message signing into the OpenGroupAPI (since that's the only place it happens)
Renamed remaining old model classes to start with 'Legacy' to make clean up easier
Updated the OpenGroupAPI poll method to use the same logic as it previously did to determine if it should retrieve recent messages or messages since the last one
2022-02-16 10:31:08 +11:00
Morgan Pretty
4963a84ddd Added more unit tests for the OpenGroupAPI (fixed a couple bugs as well) 2022-02-15 16:00:51 +11:00
Morgan Pretty
c90f346d6a Further SOGS V4 integration work
Added in the v4 onion requests logic
Added in the new pin/unpin APIs
Split up additional legacy methods to try and simplify the refactoring
Added a number of TODOs around usage of legacy request methods
2022-02-14 14:07:45 +11:00
Morgan Pretty
4f3900771e More work on getting SOGS V4 integrated
Updated the MessageSendJob to support V4 messages (V2 messages will be upgraded to V4 if they get re-encoded)
Renamed the Message+Destination from 'openGroup' & 'openGroupV2' to 'legacyOpenGroup' and 'openGroup'
Started plugging in more of the V4 APIs
Renamed a number of the V2 APIs to start with 'legacy'
2022-02-11 16:48:16 +11:00
Morgan Pretty
2284375fc0 Started work on updated SOGS support
Split the OpenGroupAPIV2 into separate files
Started working on the new auth and blinded-id approaches (new auth working with un-blinded id suggesting blinded-id code is incorrect)
Updated the SOGS request/response types to use Codable
Updated the SOGS Request type to use enums instead of strings for keys (to reduce likelihood of typos breaking things)
Updated SessionMessagingKit to use Codable and JSONEncoder/JSONDecoder instead of the legacy JSONSerialization
Cleaned up some naming conventions in the SessionMessagingKit (calling a URLRequest body 'parameters' is very confusing...)
Removed the custom TSRequest class (just using standard URLRequest everywhere instead)
Added a number of extension functions to enable some more functional-coding styles
Added extensions to Sodium methods to allow scalar multiplication and the ability to hash providing a salt and a personalisation value (both needed for new SOGS auth)
Fixed an issue where the legacy auth for SOGS could crash due to threading issues (multiple threads accessing the same variable)
Fixed an issue where if you were in two rooms in a single SOGS and deleted one of them, the other room would stop getting updates as the server public key was getting removed
2022-02-10 11:17:41 +11:00
Morgan Pretty
394b0646a3 Updated the code to support additional session id prefixes 2022-02-08 16:37:01 +11:00
Morgan Pretty
cd61fb8df0 Merge branch 'dev' into feature/message-requests
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	SignalUtilitiesKit/Utilities/UIColor+Extensions.swift
2022-02-04 11:49:54 +11:00
Morgan Pretty
9db5083cc5 Built out the Message Request functionality
Added the MessageRequestsViewController
Added a 'Message Requests' button to the settings screen
Added accept/reject buttons for message requests to the ConversationVC
Added the ability to hide the message request item on the HomeVC (re-appears if you get a new message request)
Added code to handle an edge-case where the message request approval state wouldn't be returned to the sender due to the recipient running an old version of the app
Prevented contacts which aren't associated with an approved thread from appearing when creating a closed group
Disabled notifications for threads which aren't approved
Updated the app notification count to exclude unapproved messages
Updated the app to ignore closed group creation messages if the group has no admins which are approved contacts
Fixed up the keyboard avoidance behaviour in the ConversationVC
Fixed a couple of minor interaction issues which affected some devices
Fixed an issue where the database migrations would run on the 2nd launch when creating a new account (causing odd behaviours)
2022-02-02 16:59:56 +11:00
Morgan Pretty
dd9eeb5d61 Added initial support for sharing URLs and text
Updated the share extension to load URL previews.
Updated the ThreadPickerVC to send plain text & URLs in the same way they are sent for normal messages.
2022-01-12 09:40:53 +11:00
Morgan Pretty
4f3faa28bc Refactored SessionShareExtension code to Swift 2022-01-11 12:38:19 +11:00
ryanzhao
ccbc819cc4 include more info in logs 2021-10-05 15:45:54 +11:00
ryanzhao
fde5083de8 improve link preview images 2021-09-15 14:02:52 +10:00
Niels Andriesse
5202bde4a4 Supply fake User-Agent & Accept-Language headers 2021-07-09 15:07:39 +10:00
nielsandriesse
c98cfe420d Fix spacing 2021-05-28 09:58:33 +10:00
nielsandriesse
bf9d860214 Batch thread updates 2021-05-28 09:47:05 +10:00
Niels Andriesse
601062c9ef Fix timeSinceLastOpen usage 2021-05-24 16:39:18 +10:00
Brice-W
51ba97827d open group polling limit implementation 2021-05-24 16:00:42 +10:00
nielsandriesse
e1ad33e832 Clean 2021-05-05 14:22:29 +10:00
Niels Andriesse
d742fc1548 Delete V1 OGS & file server 2021-05-04 15:46:48 +10:00
Niels Andriesse
f552d51423 Remove unused code 2021-05-04 15:06:41 +10:00
Niels Andriesse
e9df213bfe Put feature flags in one place 2021-04-27 08:53:18 +10:00
nielsandriesse
f7a75a1b80 Debug 2021-04-07 11:34:28 +10:00
nielsandriesse
75f5591fe0 Store certificates in DER format 2021-04-07 09:26:27 +10:00
Niels Andriesse
2687d9c968 Use proper API 2021-04-07 09:26:00 +10:00
Niels Andriesse
8d2e81ddde Trust only self-signed seed node certificates 2021-04-01 15:51:14 +11:00
Niels Andriesse
edc4a7a71b Move files 2021-04-01 15:28:52 +11:00
Niels Andriesse
58748471a4 Set up skeleton code 2021-04-01 15:27:44 +11:00
Niels Andriesse
d4b745a322 Cache open group preview images 2021-03-30 09:54:40 +11:00
Niels Andriesse
7558e0b32a Re-enable joining V1 open groups 2021-03-29 11:33:52 +11:00
Niels Andriesse
34bbff1ab4 Implement OpenGroupAPIV2 2021-03-24 10:54:38 +11:00
Niels Andriesse
1a09ee3619 Scroll to last unread message upon opening a conversation 2021-03-01 14:23:55 +11:00
Niels Andriesse
10e6d114a0 Sync profile updates 2021-02-23 16:01:06 +11:00
Niels Andriesse
e4aca65af0 Clean 2021-02-23 14:20:21 +11:00
nielsandriesse
810aa42f03 Finish link preview UI 2021-02-15 13:51:26 +11:00
nielsandriesse
1924e01edc Merge branch 'multi-device' into ui 2021-02-10 11:27:39 +11:00
nielsandriesse
4803b96eb1 Only handle the first config sync message after restoration 2021-02-10 10:19:46 +11:00
Niels Andriesse
90e53e5cef Redesign conversation screen part 1 2021-02-09 15:14:18 +11:00
Niels Andriesse
7acb6c9ac3 Merge branch 'dev' into multi-device 2021-01-28 15:44:04 +11:00
Niels Andriesse
54e902c848 Fix various warnings 2021-01-28 15:40:45 +11:00
Niels Andriesse
be877bbeaf Improve onion request path loading efficiency 2021-01-27 16:14:35 +11:00
Niels Andriesse
e38aaa4e0e Merge branch 'closed-groups' into multi-device 2021-01-27 10:16:17 +11:00
Niels Andriesse
cf333d5e3d Merge branch 'closed-groups' into multi-device 2021-01-25 13:50:18 +11:00
Niels Andriesse
bbac6cc5ed Attempt to fix extensions 2021-01-25 10:28:33 +11:00
nielsandriesse
9eefc21eb9 Periodically send configuration messages 2021-01-13 14:08:41 +11:00
nielsandriesse
d6314c8d30 Handle configuration messages 2021-01-13 13:38:07 +11:00
nielsandriesse
28e3705f7e Implement multi device UI 2021-01-13 10:52:07 +11:00
Niels Andriesse
0d01480cd0 Debug 2021-01-07 16:40:01 +11:00