Commit Graph

856 Commits (07d1d8acee1978f6d4d0c4718e90f73a9781504a)

Author SHA1 Message Date
RyanZhao 74f1d9a6d4
Merge pull request #596 from mpretty-cyro/feature/improve-open-group-deletion-processing
Performance: Improve open group deletion processing
3 years ago
Ryan Zhao 34355c74ee add some comments 3 years ago
Ryan Zhao 9df52a0a89 implement new approach for call reconnection 3 years ago
Morgan Pretty 7165b9e4f6 Merge branch 'dev' into feature/remove-OWSBlockingManager
# Conflicts:
#	Session/Conversations/ConversationVC+Interaction.swift
#	Session/Meta/AppDelegate.swift
#	SessionMessagingKit/Messages/Control Messages/ConfigurationMessage+Convenience.swift
#	SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift
3 years ago
Ryan Zhao fdde7e4fe0 Merge branch 'fix/tweaks-to-config-message-generation' of https://github.com/mpretty-cyro/session-ios into bug-fix-for-call 3 years ago
Morgan Pretty 3663e63bc7 Swapped the Config message 'filter' to a 'compactMap' because apparently that doesn't crash 3 years ago
Morgan Pretty 212c5e87aa Re-added the transaction requirement when generating the current config message 3 years ago
Morgan Pretty 29c53223e0 More tweaks to fix crash
Wrapped the force sync calls within their own Storage.write blocks to ensure they have the latest data and aren't accessing a transaction completed in a different thread
Reverted a number of the unneeded changes
3 years ago
Morgan Pretty 1214005c59 Updated the cachedEncodedPublicKey to be Atomic
Added the Atomic wrapper for thread safe variables
3 years ago
Ryan Zhao cef9a2a076 Merge branch 'fix/tweaks-to-config-message-generation' of https://github.com/mpretty-cyro/session-ios into bug-fix-for-call 3 years ago
Morgan Pretty f8dfbd4244 Reverting change and fixing a force-cast crash 3 years ago
Morgan Pretty 6205e72eab Change to make the 'getUser(using:)' method more consistent 3 years ago
Morgan Pretty 7aa1221987 Tweaks to the ConfigurationMessage generation logic
Removed force unwraps
Updated the closed group storage methods to take a transaction parameter
3 years ago
Morgan Pretty 5bb3bd7bc1 Cleaned up some config sync logic and allowed migrations to trigger them
Updated the migrations so they can specify whether a configuration sync is required
Moved the config sync logic into a MessageSender extension (makes far more sense than AppDelegate)
Fixed a bug where the ShareVC was triggering the 'versionMigrationsDidComplete' twice
Removed a couple of imports for files that had been deleted
3 years ago
Morgan Pretty 78c0d000be Removed the OWSBlockingManager replacing it with the config sync
Fixed an issue where the "block" button would appear in the NoteToSelf swipe menu
Removed the OWSBlockingManager and supporting files
Removed a number of unused classes and methods
Refactored the BlockListUIUtils to Swift
3 years ago
Morgan Pretty b90904ebbd Updated the code to only update the last message hash once the MessageReceiveJobs have been created 3 years ago
Morgan Pretty 4e26ece92a Merge branch 'dev' into feature/improve-open-group-deletion-processing 3 years ago
Morgan Pretty 1492232224 Made some optimisations to open group deletion handling
Added a new OpenGroupServerIdLookup to make it easier to get a database id via an open group server id
Added a migration to generate the above data
Updated the handleCompactBody method to stop early if there are no messages to delete (would previously enumerate all interactions regardless)
Updated the handleCompactBody to fetch the mapping for the deleted message so we can avoid enumerating all interactions
3 years ago
Ryan Zhao 2a6d453809 Merge branch 'dev' into voice-calls-2 3 years ago
Morgan Pretty ea7603bf3b Renamed some variables to make it a bit clearer and made sure it supported a port in the url 3 years ago
Morgan Pretty c9edac4ea8 Updated the code to add the port if present... 3 years ago
Morgan Pretty 7ae1342341 Fixed an issue where open groups with no scheme in the url might not match correctly 3 years ago
Morgan Pretty dad264c239 Included a fix for duplicate open groups and added unit tests for it 3 years ago
Ryan Zhao 37614fe3d8 Merge branch 'dev' into voice-calls-2 3 years ago
RyanZhao c7bf20dd85
Merge pull request #593 from mpretty-cyro/fix/duplicate-open-groups-from-url-differences
Fix duplicate open groups from url differences
3 years ago
RyanZhao 9e020948d6
Merge pull request #594 from RyanRory/bug-fixes-1.11.23
Bug fixes for 1.11.22
3 years ago
RyanZhao 34bc0e54d6
Merge pull request #590 from mpretty-cyro/fix/open-group-url-parsing
Fix for parsing open group urls with no scheme
3 years ago
RyanZhao c1632bee36
Merge pull request #589 from mpretty-cyro/fix/ensure-contacts-blocked-state-syncs-correctly
Fix to ensure contacts blocked state syncs correctly
3 years ago
Morgan Pretty 83fa679574 Fixed some incorrect logic (previously prevented joining other rooms in a server) 3 years ago
Ryan Zhao 8652268557 add logs & fix PN 3 years ago
Morgan Pretty d3b54b84d0 Prevent the user from joining duplicate open groups due to url differences
Updated the OpenGroupManagerV2 to handle HTTP scheme variants and official host variants when checking if the user is already in an open group
3 years ago
Morgan Pretty 8b6b4be8e3 Added back a missing type check 3 years ago
Morgan Pretty 5710fe18fb Reverted a change to the type for the serverId of a TSAttachment (change didn't match the protobuf) 3 years ago
Morgan Pretty c44256b1d6 Added more unit tests
Fixed a possible divide by zero error
Cleaned up some of the id blinding methods (ie. removing handling for impossible error states)
Added unit tests for the new Sodium methods (used for id blinding)
Added unit tests for some of the shared code
Added unit tests for the MessageSender+Encryption extension functions
Added unit tests for the MessageReceiver+Decryption extension functions
Updated the unit test key constants to be consistent with the SOGS auth-example keys for consistency
3 years ago
Morgan Pretty 452614d190 Fixed a bug where the OpenGroup url parsing wasn't working for a certain URL structure 3 years ago
Morgan Pretty 2851d5e8c7 Minor tweak to the updated URL parsing logic to be extra safe 3 years ago
Morgan Pretty 046269f1df Finished the OpenGroupManager unit tests
Fixed a bug with how the open group URL processing was working (one of the example URLs wasn't getting processed correctly)
3 years ago
Morgan Pretty 93dbc2f63c Added more OpenGroupManager unit tests 3 years ago
Morgan Pretty d4c0acb2a7 Updated the configuration message to sync the blocked state correctly 3 years ago
Morgan Pretty ff480a37d5 Added more unit tests for the OpenGroupManager
Added the ability to mock the identity manager (ie. return a mock key for the users key)
Swapped the Test Nonce16 & Nonce24 classes for Mock ones
Fixed an issue where the ContactUtilities call from the OpenGroupManager wasn't injecting the dependencies
Added unit tests for the handleDirectMessages and isUserModetatorOrAdmin methods
3 years ago
Morgan Pretty 37f4d2ecca Further work on OpenGroupManager tests
Added tests for the OpenGroupManager handleMessages logic
Updated some logic to do an optional unwrap instead of a forced one to prevent the code from crashing when running unit tests
Fixed some tests which were flaky (could fail if other tests ran at the same time on other threads)
Fixed a minor potential bug where a message with no sender data wouldn't get deleted (shouldn't be dependant on the sender value being populated)
3 years ago
Morgan Pretty b1684f6b23 More unit tests, fixed a few issues uncovered by testing
Updated the OpenGroupManager to support injecting the cache for better unit testing
Updated the MessageReceiver to support Dependencies being passed as a parameter for visible message and storage purposes
Added a debugDescription to the OpenGroup for more accurate unit testing
Fixed an issue where the poll function would include the inbox and outbox endpoints even when the server was not blinded
Fixed some test compilation time issues
Fixed a bug where the OpenGroupAPI Room was using 'description' as a parameter name (used by Swift for other purposes)
Fixed a bug where then OpenGroup was incorrectly using the system 'description'  property in one place
Renamed the parseV2OpenGroup to parseOpenGroup for consistency
3 years ago
Morgan Pretty 2e10ccf99d Updated the code to cache the retrieval of the user public key 3 years ago
Morgan Pretty 63469acd3b Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	SessionMessagingKit/Database/Storage+Messaging.swift
#	SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift
3 years ago
Morgan Pretty f9c2655df4 Finalised the OpenGroupAPI and more tests
Fixed an issue where messages where signed incorrectly when blinding wasn't enabled on a SOGS
Fixed an issue where a single invalid message would result in all messages in that request being dropped
Updated the final legacy endpoint (ban and delete all messages)
Moved the OpenGroupManager poller values into the 'Cache' (so they are thread safe)
Started adding unit tests for the OpenGroupManager
Removed some redundant parameters from the 'Request' type
3 years ago
Ryan Zhao 343a3afc0a Merge branch 'message-replication-fix' into voice-calls-2 3 years ago
Ryan Zhao 6f927a5003 minor refactor 3 years ago
Ryan Zhao a1e47419c8 minor refactor 3 years ago
Ryan Zhao b920dbcc10 check if the incoming message is already in database before persisting 3 years ago
Morgan Pretty c415fc9e06 Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session/Open Groups/OpenGroupSuggestionGrid.swift
#	SessionMessagingKit/Open Groups/OpenGroupAPIV2+ObjC.swift
#	SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift
#	SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift
3 years ago
Morgan Pretty 31ecd78737 Refactored the mocking code to use a better convention which also allows for call validation
Added a Nimble predicate for checking a function on a mock was called
Added the various remove methods to the Storage protocol
Updated the Ed25519Type to be an instance-based protocol (needed for mocking)
3 years ago
Ryan Zhao 5f9bc4c55f Merge branch 'unread-metion-fix' into voice-calls-2 3 years ago
Ryan Zhao 48c74d9476 refactor to apply this logic to unread message count 3 years ago
Ryan Zhao 06958babcb fix unread mention indicator showing after the message is deleted 3 years ago
Ryan Zhao a31fb7f957 Merge branch 'dev' into voice-calls-2 3 years ago
Ryan Zhao 30e1f34782 fix configuration message may include contacts that shouldn't be visible 3 years ago
Morgan Pretty 0e15c63e6b Fixed a case where a the share extension wasn't using a transaction version of a method 3 years ago
Morgan Pretty c2e13f02bc Fixed a crash which could occur while processing message request notifications due to not using a DB transaction 3 years ago
Ryan Zhao f489e78deb Merge branch 'dev' into voice-calls-2 3 years ago
RyanZhao 20f99df0be
Merge pull request #577 from RyanRory/bug-fix-1-11-22
Bug fix 1.11.22
3 years ago
Ryan Zhao e72f0f528d fix notification body for attachments 3 years ago
Morgan Pretty 3e380ede4e A couple of message request fixes
Added an error state to the OpenGroupSuggestionGrid
Fixed a bug where the settings button wouldn't appear for the sender of a message request once approved
3 years ago
Ryan Zhao 5c7176982c Merge branch 'dev' into voice-calls-2 3 years ago
Morgan Pretty c0e90152ce Fixes for config message handling
Updated the config message handling to try fetch the existing contact first before creating a new one
Updated the OpenGroupManagerV2 to avoid joining an open group if the user already has a thread for it and is polling it
3 years ago
Ryan Zhao 2a0f70b3a8 Merge branch 'dev' into voice-calls-2 3 years ago
RyanZhao d80042cf7f
Merge pull request #573 from mpretty-cyro/fix/only-sync-closed-groups-once
Fix to Only Sync Closed Groups Once
3 years ago
Morgan Pretty 0f78e1af61 Updated the code to only add closed groups for the first config message received 3 years ago
Ryan Zhao b632f6a925 avoid conflicts with call beta in TSInfoMessageType 3 years ago
Ryan Zhao a68ed28a7a Merge branch 'dev' into voice-calls-2 3 years ago
Morgan Pretty 3e0ccaea4c Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Utilities/MentionUtilities.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/Poller.swift
#	SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Convenience.swift
3 years ago
Morgan Pretty 96338eacda Removed an incorrect dependency and fixed a bug from the last commit 3 years ago
Ryan Zhao 5762445128 Merge branch 'ipad-support-1' into voice-calls-2 3 years ago
Morgan Pretty 65f14cf0a1 Added more unit tests
Removed an unused endpoint
Moved 'Dependencies' into the Utilities folder (also out from being nested within 'OpenGroupAPI' since it can be broader than that)
Finished adding unit tests for the OpenGroupAPI
3 years ago
Ryan Zhao 60e8da3bff Merge branch 'dev' into preformance-improvement 3 years ago
Morgan Pretty d298bcdb4e Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Utilities/ContactUtilities.swift
#	SessionUtilitiesKit/General/Array+Utilities.swift
3 years ago
Morgan Pretty 17a9e510c5 Further work on unit tests (and a couple of bug fixes found when testing)
Removed a couple remaining TODOs
Added 'standardUserDefaults' to the 'Dependencies' type
Tweaked the OpenGroupAPI to only update the 'lastOpen' timestamp if it successfully polls
Refactored a couple of methods in the ConversationViewItem into swift so we can clean up the OpenGroupAPI more
Updated the OpenGroupAPI so it no longer has static variables for state (shifted to the OpenGroupManager and made them instance variables)
Fixed an encoding issue with the Capabilities.Capability
3 years ago
Morgan Pretty af543b980b Made a couple of changes to how the ConfigurationMessage is generated and handled
Stopped configuration messages from automatically creating threads for sync'ed contacts (now they will only be created if there are messages)
Updated the ConfigurationMessage to stop truncating the list of contacts but filter the full set (also update the logic to include previously approved contacts)
3 years ago
Morgan Pretty f9468219d9 Code cleanup and database transaction tweaks
Updated the OpenGroupManager to be a bit more thread safe
Updated the OpenGroupManager "isModOrAdmin" check to better support the various keys of the current user
Fixed some blinding code to use an existing transaction rather than create it's own ones
Removed the Legacy API calls, handling and types
3 years ago
Morgan Pretty decb946bf3 Fixed an unrecognised selector crash hidden by the conversion of Objective-C to Swift 3 years ago
Morgan Pretty 81f563229f Renamed FileServerAPIV2 to FileServerAPI
Updated the direct file upload/download to use the non-base64 approaches as well
Updated the attachment 'serverId' value to be a string instead of a UInt64 (future-proofing)
Updated the OnionRequest V4 response handling to avoid converting the "response body" part to a string and processing that, instead just slice the byte array (ie. stopped it from being broken from multiple conversions)
Removed the base64-based file upload/download endpoints (no use including them when they are inefficient and we don't want to use them)
3 years ago
Morgan Pretty 1c474955de File upload working, further code cleanup
Got the updated file upload working
Removed the legacy 'room' header
Consolidated a number of types between SOGS, FileServer and general requests
Updated the OnionRequestAPI to deal with a Data payload (rather than encoding it to a string and then back to data)
3 years ago
Morgan Pretty 8ca00ca578 Fixed a number of bugs, resolved some TODOs and tested the outbox APIs
Updated the join open group method to retrieve the capabilities as part of the initial request
Updated the OpenGroupManager to require a transaction to be passed to the various 'handler' methods (allowing for everything to be processed within a single transaction)
Fixed a few issues where we weren't storing the timestamp for open group messages and DMs which could result in duplicate messages
Fixed an issue where we were setting the timestamp value for messages sent to an open group without converting it to be milliseconds to be consistent with other messages
Fixed an issue where the BatchRequestInfo could incorrectly flag it's response as failing to parse even though the type was optional
Fixed a bug where the open group would re-fetch all messages every other time
Fixed a bug where the long press context menu wouldn't appear after failing to delete a message
Fixed a bug where joining an open group would trigger the join behaviour and APIs twice
3 years ago
Morgan Pretty c04d4544f2 Added more unit tests
Refactored the existing unit tests to use Quick
Started adding unit tests for a number of the OpenGroupAPI network models
Added unit tests for the SessionId type
3 years ago
Morgan Pretty 8a7db1d48f Started adding logic for the outbox endpoint
Moved the BlindedIdMapping retrieval logic to ContactUtilities so it's reusable
Added the 'outbox' endpoints (need testing as they aren't deployed to test yet)
3 years ago
Ryan Zhao 52407aec03 Merge branch 'ipad-support-1' into voice-calls-2 3 years ago
Morgan Pretty 6936f35f2a Fixed a few issues uncovered while testing and some cleanup
Fixed an incorrect optional in RoomPollInfo
Fixed an incorrect parameter name in the ClosedGroupRequestBody
Fixed a crash due to a change in the ContactUtilities
Cleaned up the duplicate code in the OnionRequestAPI, HTTP and SnodeAPI to all use 'Data' response types
Updated the SnodeAPI to casting types to Any (made it hard to catch breaking changes with HTTP and OnionRequestAPI)
3 years ago
Morgan Pretty cb288ca09c Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session/Conversations/ConversationVC+Interaction.swift
#	SessionMessagingKit/Open Groups/OpenGroupManagerV2.swift
3 years ago
Morgan Pretty bdf5b3bc1b Started resolving more TODOs and fixing up unit tests
Updated the Dependencies to lazily create their fallback instances (optimisation to avoid unnecessary initialisations)
Reworked the Atomic type again to have a more consistent behaviour across types
Fixed the build issues with the unit tests (haven't fixed broken tests yet)
3 years ago
Ryan Zhao daf0705d42 Merge branch 'dev' into preformance-improvement 3 years ago
Ryan Zhao f632763eee revert debug code 3 years ago
Morgan Pretty 3a75639285 Fixed a few of issues in the last commit
Fixed a couple of build issues where I missed a couple of calls to removed functions
Fixed a EXC_BAD_ACCESS issue where the 'poll' function could be called from multiple threads (which accesses and mutates variables)
Cleaned up the MessageRequestResponse handling a little
3 years ago
Morgan Pretty 1b3f6c0ca6 Minor tweaks to the message request banner on the HomeVC
Fixed the unread message counting for message requests
Updated the message request banner to indicate the number of message requests with an unread message
Updated the message request banner to automatically disappear if the user has no unread message requests
Renamed a variable for ReadReceipt management to make it a bit more self-documenting (it looked like it would trigger a read receipt to be sent regardless of the setting)
3 years ago
Ryan Zhao 1609812e5b remove useless expiration flag in data message 3 years ago
Morgan Pretty a26ee12f8d Further work on Id Blinding
Renamed the setter for the SOGS 'Server' object for consistency
Updated the Curve25519Kit repo to use an Oxen fork
Updated the MockDataGenerator to accomodate the latest changes
Updated the ConversationVC to better support getting replaced when the conversion from blinded to unblinded happens while on that screen
Added a cache for the mapping between blinded ids and standard ids (gets cached whenever a valid match is found)
Added a migration to remove the old 'authToken, 'lastMessageServerId' and 'lastDeletionServerId' collections (redundant in SOGS V4)
3 years ago
Ryan Zhao 6b231316ee fix & improve voice message preview in home screen 3 years ago
Ryan Zhao 7e92391740 Merge branch 'dev' of https://github.com/oxen-io/session-ios into preformance-improvement 3 years ago
Morgan Pretty b077061714 Updated the code to parse an open group URL to handle a '/r/' before the room name 3 years ago
Morgan Pretty 3e97782d18 Merge branch 'dev' into feature/session-id-blinding-part-2
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Conversations/ConversationVC.swift
#	Session/Meta/Translations/de.lproj/Localizable.strings
#	Session/Meta/Translations/en.lproj/Localizable.strings
#	Session/Meta/Translations/es.lproj/Localizable.strings
#	Session/Meta/Translations/fa.lproj/Localizable.strings
#	Session/Meta/Translations/fi.lproj/Localizable.strings
#	Session/Meta/Translations/fr.lproj/Localizable.strings
#	Session/Meta/Translations/hi.lproj/Localizable.strings
#	Session/Meta/Translations/hr.lproj/Localizable.strings
#	Session/Meta/Translations/id-ID.lproj/Localizable.strings
#	Session/Meta/Translations/it.lproj/Localizable.strings
#	Session/Meta/Translations/ja.lproj/Localizable.strings
#	Session/Meta/Translations/nl.lproj/Localizable.strings
#	Session/Meta/Translations/pl.lproj/Localizable.strings
#	Session/Meta/Translations/pt_BR.lproj/Localizable.strings
#	Session/Meta/Translations/ru.lproj/Localizable.strings
#	Session/Meta/Translations/si.lproj/Localizable.strings
#	Session/Meta/Translations/sk.lproj/Localizable.strings
#	Session/Meta/Translations/sv.lproj/Localizable.strings
#	Session/Meta/Translations/th.lproj/Localizable.strings
#	Session/Meta/Translations/vi-VN.lproj/Localizable.strings
#	Session/Meta/Translations/zh-Hant.lproj/Localizable.strings
#	Session/Meta/Translations/zh_CN.lproj/Localizable.strings
3 years ago
Morgan Pretty cc2a077a6c Started working on `MessageRequestResponse` handling for SOGS message requests
Pointing Curve25519 to use a fork that exposes an XEd25519 conversion method
Fixed an issue where I had broken all message sending due to the SnodeAPI casting Onion responses to `Any`
3 years ago
Ryan Zhao f22672ccd7 Merge branch 'dev' of https://github.com/oxen-io/session-ios into preformance-improvement 3 years ago