Commit Graph

120 Commits (db633e69dec777ccd3e245a92b30bb2f09f496d9)

Author SHA1 Message Date
Morgan Pretty 42f4925c36 Added more unit tests and resolve a minor edge case
Added some more unit tests
Added logic to insert a fallback "invite" control message if a group is created via the USER_GROUPS config message instead of an invite
1 year ago
Morgan Pretty 9b21a0d251 More unit tests, attempting to parallelize CI test running 1 year ago
Morgan Pretty 4dd1199da1 More unit tests and reenable XCBeautify 1 year ago
Morgan Pretty f5f112a593 More unit tests & disable XCBeautify for CI testing 1 year ago
Morgan Pretty 08337fe0fa More unit tests and trying to extend the CI test timeout 1 year ago
Morgan Pretty 37d3d5b829 Plugged in some more libSession functions and added more unit tests
Updated the code to use the libSession encrypt/decrypt functions for the 'groupKicked' message
Updated the code to use the libSession function to load the admin key when receiving a promotion instead of reloading the config state
Changed the NotificationsManager and NotificationActionHandler to be injected via dependencies instead of the Environment
Mocked out the NotificationsManager for unit testing
1 year ago
Morgan Pretty 3d60757c40 Reworked test DSL to speed up build time and added more tests
Fixed a bug where the group invite message could be incorrectly added in some cases
1 year ago
Morgan Pretty d3e3ad70b9 Added some more tests and fixed up some others 1 year ago
Morgan Pretty 875bf88be4 Added more unit tests, fixed a couple of minor bugs
Added a dev setting to disable the group auto-approve for admins which are contacts (for testing purposes)
Added logic to unsubscribe and resubscribe for PNs when swapping environments
1 year ago
Morgan Pretty fadde4d1f2 Fixed the broken unit tests 1 year ago
Morgan Pretty 59fc7a53ef New DeveloperSettingsViewModel, bulk PN endpoints and updated group messages
Added the DeveloperSettingsViewModel and dependency-controlled feature flags
Added the generic 'SessionListViewModel' to reduce duplicate code when we want to just display a selectable list of items
Added an indicator on the home screen to show when using testnet
Added group promotions behind a feature flag
Updated the PushNotificationAPI to use bulk subscribe/unsubscribe requests
Updated the 'GroupUpdateDeleteMessage' and 'GroupUpdateDeleteMemberContentMessage' to support additional behaviours
Updated the SessionCell to have better RTL support (swapped some left/right things to leading/trailing)
Updated the revoke/unrevoke endpoints to take arrays of subaccount tokens
Refactored the Bencode logic to properly support Codable types
1 year ago
Morgan Pretty 0c1ea23b08 Started adding tests for the DisplayPictureDownloadJob and clean up
Started adding tests for the DisplayPictureDownloadJob
Cleaned up the Crypto singleton a bit
Moved the DisplayPictureManager encryption/decryption into Crypto methods
1 year ago
Morgan Pretty 4f2b629239 Added bolding to the control messages and unit testing work
Added bolding to the control messages
Reworked the MockFunctionHandler to have different calls with inferred return types to reduce boilerplate
Fixed broken unit tests
Fixed an issue which could occur in the ObservableTableSource where it could miss the first output if it returned too quickly
Started adding DownloadDisplayPictureJob unit tests
Minor copy tweak
1 year ago
Morgan Pretty dffe321bc4 Added the updated revoke & unrevoke endpoints
Added the updated revoke & unrevoke endpoints when removing and adding group members
Updated the group creation to upload the provided image and set it to the group correctly
1 year ago
Morgan Pretty b90ee74c91 Added promotion handling, message deletion & deprecation banner
Added logic to handle promotion messages
Added a debounced toast for promotion failures
Added support for the 'delete_before' and 'attach_delete_before' functionality
Added in the deprecated legacy groups banner.
Cleaned up the UserListViewModel a little
Updated the 'User count' header subtitle to take the user to the 'Group Members' or 'Edit Group' screens based on admin status
Updated the sorting of the group member lists to match the requirements
Fixed the debounced group invite failure toast
Fixed an issue where some libSession errors wouldn't get propagated back into the Swift code resulting in invalid database changes
Fixed an issue where admins couldn't properly leave groups
1 year ago
Morgan Pretty 00f246a21e Added group message requests, admin message deletion, fixed a few bugs
Added logic for Group Message Requests
Added a 'ManualResultJob' which allows for a way to add a dependency to a job which can be resolved separately from the job system (it's not persistent though)
Added the ability for admins to delete select messages from updated groups
Swapped 'save'/'saved' calls to be 'upsert'/'upserted' as that's the actual behaviour we expect (unique key based rather than primary key based)
Fixed a bug where the 'limitedReuse' 'drainBehaviour' could get stuck in an invalid state
Fixed a bug where job dependencies could swap queues which could theoretically result in deadlocks in some cases
1 year ago
Morgan Pretty 0df6501265 Pushing up my WIP changes from the last few days
Got a number of the GroupUpdate messages working properly
Updated the DisplayPictureDownloadJob to support OpenGroup room images
Updated the Poller to process messages by namespace (sorted) and added support for synchronous handling of messages
Reworked the ProfileManager to be a more reusable DisplayPictureManager
Cleaned up the conversion from milliseconds to TimeInterval (which is documented as seconds) for clarity
Fixed a read/write crash due to the SnodeAPI cache setup
Fixed an issue where dependencies could incorrectly overwrite each other when based on protocols
2 years ago
Morgan Pretty 4127d45122 Added more unit tests
Added the SnodeAPICache and a mock for it
Moved the current user poller into Dependencies
2 years ago
Morgan Pretty 56a282846d Updated to the latest libSession 2 years ago
Morgan Pretty 32495f0a8a Did some refactoring to better distinguish between publicKeys and sessionIds in the codebase 2 years ago
Morgan Pretty abda057702 Merge remote-tracking branch 'origin/feature/drop-yap-database-support' into feature/groups-rebuild
# Conflicts:
#	Scripts/LintLocalizableStrings.swift
#	Session.xcodeproj/project.pbxproj
#	Session/Calls/Views & Modals/IncomingCallBanner.swift
#	Session/Meta/AppDelegate.swift
#	Session/Onboarding/Onboarding.swift
#	Session/Onboarding/SeedVC.swift
#	SessionMessagingKit/Database/Migrations/_017_DisappearingMessagesConfiguration.swift
#	SessionMessagingKit/Messages/Control Messages/LegacyConfigurationMessage.swift
#	SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Shared.swift
#	SessionMessagingKit/SessionUtil/SessionUtil.swift
#	SessionUtilitiesKit/Database/Migrations/_003_YDBToGRDBMigration.swift
#	SessionUtilitiesKit/Database/Storage.swift
#	SessionUtilitiesKit/Database/Types/Migration.swift
#	SessionUtilitiesKit/Database/Types/PagedDatabaseObserver.swift
#	_SharedTestUtilities/SynchronousStorage.swift
2 years ago
Morgan Pretty 90cd3fb5e0 Merge remote-tracking branch 'upstream/dev' into disappearing-message-redesign
# Conflicts:
#	_SharedTestUtilities/MockJobRunner.swift
2 years ago
Morgan Pretty 42b49e0227 Added unit tests to verify migrations between all versions work
Fixed a busted test import
2 years ago
Morgan Pretty 67311f6d25 Added some more tests and cleaned up some warnings
Fixed the broken LibSessionSpec tests
Added the libSessionSpec tests for GROUP_INFO and GROUP_MEMBERS
2 years ago
Morgan Pretty a48327f6f6 [WIP] Updated to the latest libSession and started plugging in
Updated the updated group messages encryption/decryption logic to work with the latest libSession
Disabled manual PN triggering for updated group messages
2 years ago
Morgan Pretty 4f10277a48 Clean up and fixed some broken tests 2 years ago
Morgan Pretty 96b5403726 Merge remote-tracking branch 'upstream/dev' into feature/groups-rebuild
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Conversations/Settings/ThreadSettingsViewModel.swift
#	Session/Meta/Translations/de.lproj/Localizable.strings
#	Session/Meta/Translations/en.lproj/Localizable.strings
#	Session/Meta/Translations/es-ES.lproj/Localizable.strings
#	Session/Meta/Translations/fa.lproj/Localizable.strings
#	Session/Meta/Translations/fi.lproj/Localizable.strings
#	Session/Meta/Translations/fil.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/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/sk.lproj/Localizable.strings
#	Session/Meta/Translations/sl.lproj/Localizable.strings
#	Session/Meta/Translations/sv-SE.lproj/Localizable.strings
#	Session/Meta/Translations/th.lproj/Localizable.strings
#	Session/Meta/Translations/vi.lproj/Localizable.strings
#	Session/Meta/Translations/zh-CN.lproj/Localizable.strings
#	Session/Meta/Translations/zh-TW.lproj/Localizable.strings
#	SessionMessagingKit/Calls/WebRTCSession.swift
#	SessionMessagingKit/Configuration.swift
#	SessionMessagingKit/Database/Migrations/_003_YDBToGRDBMigration.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+VisibleMessages.swift
#	SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift
#	SessionMessagingKit/Utilities/ProfileManager.swift
#	SessionMessagingKitTests/Jobs/Types/MessageSendJobSpec.swift
#	SessionMessagingKitTests/LibSessionUtil/LibSessionSpec.swift
#	SessionMessagingKitTests/LibSessionUtil/SessionUtilSpec.swift
#	SessionMessagingKitTests/Open Groups/Models/BatchRequestInfoSpec.swift
#	SessionMessagingKitTests/Open Groups/Models/SOGSMessageSpec.swift
#	SessionMessagingKitTests/Open Groups/OpenGroupAPISpec.swift
#	SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift
#	SessionMessagingKitTests/Open Groups/Types/SOGSEndpointSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageReceiverDecryptionSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageSenderEncryptionSpec.swift
#	SessionMessagingKitTests/Shared Models/SessionThreadViewModelSpec.swift
#	SessionMessagingKitTests/Utilities/CryptoSMKSpec.swift
#	SessionTests/Conversations/Settings/ThreadDisappearingMessagesViewModelSpec.swift
#	SessionTests/Conversations/Settings/ThreadSettingsViewModelSpec.swift
#	SessionTests/Settings/NotificationContentViewModelSpec.swift
#	SessionUtilitiesKitTests/Database/Models/IdentitySpec.swift
#	SessionUtilitiesKitTests/Database/Utilities/PersistableRecordUtilitiesSpec.swift
#	SessionUtilitiesKitTests/General/DependenciesSpec.swift
#	SessionUtilitiesKitTests/JobRunner/JobRunnerSpec.swift
#	_SharedTestUtilities/MockCaches.swift
2 years ago
Morgan Pretty 5b7c9d866c Updated the 'MessageReceiverDisappearingMessagesSpec' to the updated pattern 2 years ago
Morgan Pretty c4aadaff1c Fixed the broken tests and updated test dependencies
Properly fixed the busted migration issue
Updated to the latest version of Quick and Nimble (unit testing libraries)
Updated the tests based on the above
2 years ago
Morgan Pretty 3abeeffd3d Fixed build errors and cleaned up Dependencies interface further
Fixed a build error
Cleaned up the Dependencies interface for UserDefaults and Storage settings
Refactored the AppVersion class to be in Swift
2 years ago
Morgan Pretty 0982526057 Adding support for a few more properties group members
Added 'name' value to updated groups USER_GROUP entry
Added ConvoInfoVolatile for updated groups
Cleaned up a bunch of direct sodium usages
Updated the code to create GroupMember entries based on the GROUP_MEMBERS config
Updated to the latest libSession
Fixed a bunch of group authentication issues
Fixed a minor threading issue
Fixed an issue with the PreparedRequest type conversion
2 years ago
Morgan Pretty b31afa89e1 Reworked SnodeAPI auth and prepared requests
Started refactored some logic to make it easier for unit testing
Started updating SnodeAPI calls with prepared requests
Fixed some issues with the PreparedRequest 'map' and 'handleEvents' functions
Genericised common pre-request behaviours for SnodeAPI calls
2 years ago
Morgan Pretty c77d7ecda1 [WIP] Refactored dependency access to be more generic 2 years ago
Morgan Pretty f1075e9123 Started adding logic and unit tests for group creation
Reworked the config store to better support different types of config objects
Added the logic to create a group (not final just yet)
2 years ago
Morgan Pretty f44b545265 [WIP] Initial start on updated groups via configs
Started writing up wrappers and unit tests for group config types
Refactored some duplicate batch & prepared request code to be more generic and reusable
Renamed a number of legacy closed group functions to have the term 'legacy' in them for ease of coding
2 years ago
Morgan Pretty 812a951aba Added the group namespaces and added better build script error handling 2 years ago
Ryan Zhao 9e1f68380a Merge branch 'dev' into disappearing-message-redesign 2 years ago
Morgan Pretty 9c9fb09254 Merge remote-tracking branch 'upstream/dev' into feature/blinded-message-request-setting
# Conflicts:
#	SessionMessagingKit/Configuration.swift
2 years ago
Morgan Pretty d863004e6d Added a setting to control community message request polling
Added logic to broadcast the community message request acceptance to SOGS so we can communicate it to message request senders
Fixed an issue where database setting changes wouldn't trigger a live update on a settings screen
Fixed an issue where some setting toggles wouldn't animate the state change
Fixed a rarw force-unwrap crash
2 years ago
Morgan Pretty 63be502434 Merge remote-tracking branch 'upstream/dev' into disappearing-message-redesign
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift
#	SessionMessagingKit/Configuration.swift
#	SessionMessagingKit/Sending & Receiving/MessageSender.swift
#	SessionSnodeKit/Networking/SnodeAPI.swift
#	SessionTests/Conversations/Settings/ThreadDisappearingMessagesViewModelSpec.swift
#	SessionUtilitiesKit/General/Dictionary+Utilities.swift
#	SessionUtilitiesKit/JobRunner/JobRunner.swift
2 years ago
Morgan Pretty a41f1c1366 Fixed the broken tests
Cleaned up the Dependencies so that tests can run synchronously without having to custom set queues as much
Sorted out the crypto and network dependencies to avoid needing weird dependency inheritance
Fixed the flaky tests so they are no longer flaky
Fixed some unexpected JobRunner behaviours
Updated the CI config to use a local build directory for derivedData (now works with build tweaks)
2 years ago
Morgan Pretty e768bebe6d Merge remote-tracking branch 'upstream/dev' into feature/job-runner-unit-tests
# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Meta/Session-Prefix.pch
#	Session/Notifications/SyncPushTokensJob.swift
#	Session/Utilities/BackgroundPoller.swift
#	SessionMessagingKit/Configuration.swift
#	SessionMessagingKit/Database/Models/Profile.swift
#	SessionMessagingKit/Jobs/Types/AttachmentDownloadJob.swift
#	SessionMessagingKit/Jobs/Types/AttachmentUploadJob.swift
#	SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift
#	SessionMessagingKit/Jobs/Types/FailedAttachmentDownloadsJob.swift
#	SessionMessagingKit/Jobs/Types/FailedMessageSendsJob.swift
#	SessionMessagingKit/Jobs/Types/GroupLeavingJob.swift
#	SessionMessagingKit/Jobs/Types/MessageReceiveJob.swift
#	SessionMessagingKit/Jobs/Types/MessageSendJob.swift
#	SessionMessagingKit/Jobs/Types/NotifyPushServerJob.swift
#	SessionMessagingKit/Jobs/Types/RetrieveDefaultOpenGroupRoomsJob.swift
#	SessionMessagingKit/Jobs/Types/SendReadReceiptsJob.swift
#	SessionMessagingKit/Jobs/Types/UpdateProfilePictureJob.swift
#	SessionMessagingKit/Sending & Receiving/MessageSender.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift
#	SessionMessagingKit/Utilities/AppReadiness.m
#	SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift
#	SessionMessagingKitTests/_TestUtilities/TestOnionRequestAPI.swift
#	SessionShareExtension/ShareNavController.swift
#	SessionSnodeKit/Jobs/GetSnodePoolJob.swift
#	SessionUtilitiesKit/Configuration.swift
#	SessionUtilitiesKit/Database/Utilities/Database+Utilities.swift
#	SessionUtilitiesKit/JobRunner/JobRunner.swift
#	SignalUtilitiesKit/Meta/SignalUtilitiesKit.h
#	SignalUtilitiesKit/Utilities/SSKAsserts.h
2 years ago
Morgan Pretty 703b1d9788 CI tweaks and tweak for initial UX issue with 'blinded25' id
Added parallelisation for the unit tests
Added the SSH_KEY env variable for the 'Upload artifacts' step
Disabled xcbeautify for the prod build (as I expect it's suppressing the build error)
Disabled support for starting a conversation with a 'blinded25' id (would be invalid at this stage)
Fixed a broken unit test
2 years ago
Morgan Pretty c86cc0ed9c CI tweaks and incremented build number
Added the XCBeautify pod (so the CI doesn't need to separately install something)
Updated the CI build script to use XCBeautify
Fixed some broken unit tests
2 years ago
Morgan Pretty 43b2aaf8bb Trying to progress on the CI builds
Reworked the way libSession-util builds to use a static library and be less hacky
Updated to the latest version of WebRTC-lib (no longer includes bitcode)
Removed the 'skip_web_rtc_re_rsync' patch as it's no longer an issue since the bitcode was removed so the framework is much smaller
2 years ago
Morgan Pretty 6f4bdcdccb Moved some logic outside of DBWrite closures to prevent hangs
Updated the SessionApp.presentConversation function from using the DBWrite thread if it didn't need to
Updated the PagedDatabaseObserver to process database commits async on a serial queue to avoid holding up the DBWrite thread
Moved another Atomic mutation outside of a DBWrite closure
Refactored the PagedDatabaseObserver 'databaseDidCommit' logic to be much more straightforward
Tweaked a couple of flaky unit tests
2 years ago
Morgan Pretty 0225f436bd Podfile tweaks to speed up sim builds, unit tests & minor bug fix
Added a patch to the Podfile to avoid rsync'ing and signing WebRTC-lib for simulator builds shaving off 10+ seconds of build time per target due to the sheer size of the WebRTC debug framework
Added some basic unit tests to validate the current search behaviour
Fixed some buggy search behaviours
2 years ago
Morgan Pretty 5e2e103ee1 Resolved the remaining known internal testing issues
Removed the 'immediatelyOnMain' extensions as they would break in some cases (eg. upstream errors with multiple 'receive(on:)' calls) resulting in logic running on unexpected threads
Updated the ReplaySubject to add subscribers in an Atomic just to be safe
Updated the code to remove the invalid open group when the user receives an error after joining
Fixed a bug with editing closed group members
Fixed broken unit tests
2 years ago
Morgan Pretty 6cf7cc42ab Fixed up the remaining reported internal testing issues
Removed the 'readPublisherFlatMap/writePublisherFlatMap' functions as they easily resulted in behaviours which held up database threads
Tweaked the logic around starting the open group pollers to avoid an unlikely atomic lock blocks
Updated some logic to avoid accessing database read threads for longer than needed
Updated the OpenGroupManager to only update the 'seqNo' value for valid messages
Cleaned up some double Atomic wrapped instances which had some weird access behaviours
Fixed an issue where a database read thread could have been started within a database write thread
Fixed an issue where the ReplaySubject might not emit values in some cases
2 years ago
Morgan Pretty d8ae9669c8 Fixed a breaking issue and a few other minor bugs
Fixed a busted version comparison
Fixed an issue where the config dump population wasn't setting the 'created' timestamp for contacts
Fixed an issue where the 'SyncPushTokensJob' could run logic on the wrong thread
Fixed a bug where the 'scroll to bottom' button wouldn't initial be visible in some cases
Fixed a bug where the 'scroll to bottom' button would fade out when there were subsequent pages
Fixed a bug where an open group image might not get downloaded in some cases
Fixed an issue where we would incorrectly append a wildcard character to the end of a search term that ended in a quotation mark
Finished refactoring the OpenGroupAPI to use PreparedSendData
2 years ago