Commit Graph

480 Commits (a02bc55445ebeed6bd07de95839583a59ed269f7)

Author SHA1 Message Date
Morgan Pretty a02bc55445 Fixed an endless loading state when clearing data with no network 7 months ago
Morgan Pretty 7e771467d6 Fixed an issue with push notifications in legacy groups
• Reworked the NotificationServiceExtension to just always reset and reload it's state to avoid weird bugs
• Updated the legacy group messages to fallback to using a locally generated serverHash if one isn't provided (always happens for legacy PNs)
• Include error info when failing to process extension logs
• Made a bunch of the Storage functions instance functions instead of static functions
7 months ago
Morgan Pretty 1396652698 Refactored the DSL for interacting with C structs
There were a few logs related to bad memory access within libSession and the `toLibSession` convention which we'd originally setup made me nervous as C-friendly objects would be allocated in Swift and then assigned to C struct properties but I'm not sure how the memory would actually behave in this case.

This updated approach unfortunately involves a bunch of duplicate code within 'TypeConversion+Utilities' (and some horrible type aliases for tuples) but as a result we now have compile-time safe 'get' and 'set' functions for any C struct which conforms to `CAccessible` and `CMutable`. The other nice benefit about this change is that the new `set` functions copy memory across into the C structs so we can have more confidence that the memory ownership has shifted to the libSession side of things.
7 months ago
Morgan Pretty 3a1f086d0c Reworked deadlock handling, fixed a few other issues
• Fixed an issue where the background task to finish sending messages may not have sent the sync message or the main message after and upload
• Fixed an issue where the SessionBackgroundTask was incorrectly reporting a failure to be created
• Fixed an incorrect modal action colour
• Fixed a crash when creating legacy groups
• Updated the code so that we take charge of resolving the deadlock issue instead of relying on GRDB to do it
• Updated the logic to timeout the SessionBackgroundTask with 5 seconds of background time remaining (to ensure we have enough time to suspend the network & database)
7 months ago
Morgan Pretty 67830ed767 Fixed a legacy group message decryption issue
Fixed a bug where we were incorrectly generating and requiring 64 byte secrets for legacy groups (we only need 32 bytes), since we do length checks before calling the libSession C API (to prevent crashes) we would fail before attempting to decrypt because the key was too short
7 months ago
Morgan Pretty 027ce1604d Fixed a few issues found during QA
• Fixed an issue where incoming legacy group messages were failing to decrypt
• Fixed an issue where decoding push notifications could result in an infinite loop
• Fixed an issue where the extensions would incorrectly try to append extension logs (only want the main app to do this)
• Updated the accessibility ids for the switches and radios on the privacy and disappearing message settings screens
8 months ago
Morgan Pretty c5feb76759 Added back incorrectly removed accessibilityIds, bumped build number 8 months ago
Morgan Pretty 7d38c9066c Reworked unobserved change handling to try to resolve crash (regenerate changeset) 8 months ago
Morgan Pretty 69de29912c Clearing libSession logger when clearing data (seemed to cause crash) 8 months ago
Morgan Pretty 2032dafc74 Merge remote-tracking branch 'upstream/dev' into feature/swift-package-manager
# Conflicts:
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift
#	SessionMessagingKit/Sending & Receiving/MessageReceiver.swift
#	SessionSnodeKit/Networking/SnodeAPI.swift
#	SessionUtilitiesKit/Media/DataSource.h
#	SessionUtilitiesKit/Media/DataSource.m
8 months ago
Morgan Pretty 432238debe
Merge pull request #970 from RyanRory/disappearing-messages-v2-post-enabling
Cleaning up legacy disappearing messages
8 months ago
Morgan Pretty af463d874e Merge remote-tracking branch 'upstream/dev' into fix/minor-deadlock-improvements
# Conflicts:
#	SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPoller.swift
8 months ago
Morgan Pretty 2c61ed8c44
Merge pull request #997 from mpretty-cyro/fix/attachment-item-hash
Fixed a SignalAttachment hash uniqueness issue, fixed attachment UX issues
8 months ago
Morgan Pretty 31ae994941 Added Keychain migration code just in case (really shouldn't be needed) 8 months ago
Morgan Pretty b3d90df15e Fixed a camera bug and minor optimisation
• Fixed an issue with portrait photo orientation
• Fixed a project config which would prevent debugging the framework targets properly
• Tweaked an unneeded icon resize
8 months ago
Morgan Pretty 86ba37c2ec Updated the IP2Country to use explicit Int sizes, added logs, add size check 8 months ago
Morgan Pretty bef27ee0c7 Fixed build issues resulting from rebase after Onboarding 8 months ago
Morgan Pretty c69f3cd71a Resolved a TODO I had missed 8 months ago
Morgan Pretty ce01f128f3 Replaced Cocoapods with Swift Package Manager for dependency management 8 months ago
Ryan ZHAO 07389bf592 clean up stage 1 8 months ago
Morgan Pretty d5c756caa3 Fixed a SignalAttachment hash uniqueness issue, fixed attachment UX issues
• Fixed an issue where you could select 0 attachments and go to the "send attachment" screen
• Fixed an issue where returning from the "send attachment" screen wouldn't have the initially selected attachment selected
• Added a uniqueId to the DataSource so instances can be better distinguished from each other (not ideal as the same file would have separate identifiers)
8 months ago
Morgan Pretty 2098cb32dd Number of fixes and tweaks related to the deadlock issue
• Fixed some cases where errors weren't being displayed correctly
• Tweaked the "nodeNotFound" error to be a bit more human readable
• Tweaked the BackgroundPoller timeout to have a 5 second buffer instead of a 1 second buffer
• Moved the lastHash pruning into the GarbageCollectionJob instead of the pre-poll fetching to avoid needing to use a write query before polling
• Reworked the Pollers to make their database queries part of the polling stream (and as such, cancellable)
8 months ago
Morgan Pretty 6a838a486c Fixed an issue where the blocked contacts screen might not show values 8 months ago
Morgan Pretty d4e66dde14 Fixed a few more issues found during testing
• Fixed an issue where the conversation 'created' timestamp wasn't correctly getting set when creating a group
• Fixed an issue where sending a message to 'Note to Self' may not show the conversation in the conversation list
• Fixed an issue where sharing a message with an attachment might not include the attachment
• Fixed an issue where list paging wouldn't work in some cases after values were inserted into the database after the currently loaded pages
• Added some handling for invalid 'joinedAt' values for groups (seems like we can have an incorrect resolution)
8 months ago
Morgan Pretty 3676f63cb0 Fixed some bugs found during QA
• Fixed a bug where the onboarding wouldn't be considered complete after successfully retrieving a displayName when restoring an account
• Fixed a couple of libSession networking bugs
• Tweaked some logging
• Removed some legacy code
8 months ago
Morgan Pretty ed472f44c5 Merge remote-tracking branch 'upstream/dev' into release/2.6.3
# Conflicts:
#	Session/Meta/AppDelegate.swift
#	Session/Onboarding/LandingVC.swift
#	Session/Onboarding/LinkDeviceVC.swift
#	Session/Onboarding/RegisterVC.swift
#	Session/Onboarding/RestoreVC.swift
9 months ago
Morgan Pretty 65807ec6d3 Further fixes
• Updated the pollers to NOT take the duration of the previous poll into account when scheduling the next poll
• Updated to the latest `libSession` version (a few optimisations/fixes)
• Fixed a minor layout issue with the attribution label on the Path screen
9 months ago
Morgan Pretty f7dcd47c0c Fixed a few more minor bugs and updated GeoLite2 data
• Updated the GeoLite2 country database data, added some basic localisation to it
• Managed to optimise the size of the GeoLite2 data bundled with the app (10mb -> 8mb)
• Cleaned up the IP2Country logic a little
• Removed some pluralisation from logs (want the logs to be identical outside of numbers)
• Tweaked the PushRegistrationManager to actually timeout
9 months ago
Morgan Pretty a8d9200ef5 Fixed a few more bugs
• Fixed an issue where excessive job failures could result in jobs not running onLaunch or onActive as expected (extended network issues resulted in the default communities not getting fetched)
• Fixed an issue where the PathVC could end up in a weird state after the IP2Country cache gets updated
• Fixed an issue where LinkPreview caching was incorrectly case sensitive
• Fixed an issue where the IP2Country might load it's cache on the wrong thread
• Added the ability to copy the file path to the log file when exporting on the simulator
• Updated the Request type to correctly encode a body of 'Data' type when given (would previously incorrectly encode it as JSON)
9 months ago
Morgan Pretty 25150f931e Logging improvements, incorrect version number fix 9 months ago
Morgan Pretty 1fd65230b7 Fixed the broken unit tests
• Added a method to customise mock parameter summaries for unit tests
• Pulled across the updated libSession cache logic
9 months ago
Morgan Pretty e2fc0a5b51 Further fixes
• Fixed an issue where the default log level was set too low
• Fixed an issue where sending the app to the background without any pending jobs could result in the database and network not being suspended correctly
• Updated to latest libSession (don't try to recover paths, just rebuild)
9 months ago
Ryan ZHAO b9dde96673 minor fix on decoding recovery password 9 months ago
Ryan ZHAO 216a6666cc fix error logic for recovery password 10 months ago
Ryan ZHAO 2798e76f25 fix an logic issue when the recovery password is too long 10 months ago
Morgan Pretty 185e84dc95 Fixed a few PN behaviours
• Tweaked the message request notification behaviour
• Fixed an issue where duplicate message errors would result in the generic notification being shown
• Further notification logging improvements
10 months ago
Morgan Pretty db796896f4 Tweaks to notification extension
• Fixed an issue where the notification extension could end up in an invalid state if you delete and create a new account in rapid succession
• Fixed an issue where notification processing errors weren't getting handled correctly resulting in the notification extension timing out
• Stopped the notification extension from trying to download profile images
• Added commit hash to version info
• Tweaked the notification extension logic flow to be more straight forward
10 months ago
Ryan ZHAO 0b7ff7b623 Merge branch 'dev' into onboarding 10 months ago
Morgan Pretty cac5542868 Additional bug fixes, log tweaks and update checking
• Added a new CheckForAppUpdates job which runs at most once every 24 hours
• Updated the job failure logs to include the error that caused the failure
• Updated the network instance to use 'single_path_mode' when not executing within the main app
• Updated the logger to append extension logs when resuming instead of only during startup
• Updated the export logs behaviour to append the previously rotated log data if the latest log file is too short (to ensure we get more useful info when debugging)
• Updated to the latest libSession commit to resolve a couple of edge-cases
10 months ago
Morgan Pretty 6663bd64c4 Stopped the PN extension suspending the network and improved logging
• Removed the SOGS polling from the notification extension (rarely worked and caused network suspension bugs)
• Cleaned up some logging
10 months ago
Morgan Pretty 1726930e2e Merge remote-tracking branch 'upstream/dev' into onboarding 10 months ago
Morgan Pretty afa93d3320 Updated with latest libSession fixes, minor logging tweaks 10 months ago
Morgan Pretty 999ddfe50e Made a couple of tweaks to make the build process easier
• Added a script to extract the app group during the build and load it in at runtime (fallback to the current one)
• Updated the 'App Store Release' scheme to 'App_Store_Release' to fix build issues on some machines
• Fixed some broken unit tests
10 months ago
Morgan Pretty a91024f0bb Separate streams for attachment upload/download and bug fixes
• Updated the code to stop sending legacy PNs outside of legacy group conversations
• Updated the logger logic to clean things up and use the local date/time (with time zone info) to ease debugging user reports
• Fixed an issue where messages in a community could incorrectly accept disappearing message settings
• Fixed an issue where duplicate messages could be sent in some cases
• Fixed an issue where the conversation might not scroll to the bottom after sending an attachment
• Fixed an issue where attachment encryption was happening in a db write thread
10 months ago
Morgan Pretty 6751a9c5ff PR Comments & more tweaks for background behaviours 10 months ago
Morgan Pretty 6cb9294143 Changed the networking logic to suspend/resume rather than just cancel connections 10 months ago
Morgan Pretty b0eec5a4c2 Updated to the latest libSession and updated it's error handling 10 months ago
Morgan Pretty b58a3f23cd Fixed a couple of bugs in the ConversationVC
• Fixed a bug where a disappearing voice message wouldn't stop playing
• Fixed a bug where the conversation screen was never freed from memory
• Fixed an issue with an earlier change where the openGroupManager cache would access itself while modifying itself causing a crash
10 months ago
Morgan Pretty f9d9954cf5 Attempts to fix more crashes and fix unit tests
• Fixed an index out of bounds issue with the mnemonic
• Attempt to fix a crash due to failing to hash SignalAttachment
• Attempt to fix a crash due to list data change inconsistencies
• Ensuring we are shutting down the network when resetting app data
• Updated the broken unit tests
11 months ago
Morgan Pretty 3b5eaa6bbb Fixed a few minor issues noticed in the logs
• Fixed an issue where SOGS pollers could be started multiple times
• Avoid checking if blinded conversations exist in the config (will always return false)
• Updated some logs to provide more timing information
11 months ago