Skip to content

[WIP] Refactored networking#500

Draft
mpretty-cyro wants to merge 75 commits intosession-foundation:devfrom
mpretty-cyro:feature/refactored-networking
Draft

[WIP] Refactored networking#500
mpretty-cyro wants to merge 75 commits intosession-foundation:devfrom
mpretty-cyro:feature/refactored-networking

Conversation

@mpretty-cyro
Copy link
Collaborator

@mpretty-cyro mpretty-cyro commented Aug 8, 2025

  • Integrated refactored libSession networking
  • Fixed a couple of issues with the libSession build script
  • Fixed a crash which could occur when using the storage publisher functions

Note: This is based on #501

@mpretty-cyro mpretty-cyro self-assigned this Aug 8, 2025
@mpretty-cyro mpretty-cyro added bug Something isn't working enhancement New feature or request Jira This ticket is being tracked in Jira labels Aug 8, 2025
@mpretty-cyro mpretty-cyro force-pushed the feature/refactored-networking branch from 9f39a5c to f4f479b Compare August 8, 2025 03:22
• Started work on integrating refactored libSession networking
• Fixed a couple of issues with the libSession build script
• Fixed some duplicate content in Logging
• Fixed broken service node batch requests
• Fixed a crash which could occur when using the storage publisher functions
@mpretty-cyro mpretty-cyro force-pushed the feature/refactored-networking branch from 05ffd72 to cb6b5aa Compare August 20, 2025 00:24
• Added some convenience functions
• Removed the database requirement to get some AuthenticationMethods
• Cleaned up the AppDelegate setup process a bit
• Updated the LibSessionNetwork to be an actor (no more cache + singleton)
• Updated LibSessionNetwork to support async/await (also supports Combine, but that is now deprecated)
• Updated network observation to use async/await
• Refactored IP2Country to be an actor and use async/await
• Refactored the pollers to use async/await
• Refactored the getSessionId API call to use async/await
• Refactored the AppSetup and database migrations to be async/await
• Added a mechanism to ignore the type comparison when comparing against `any` values (for things like `MockEndpoint.any`)
• Fixed an issue where `any` values weren't being compared recursively (so it would fail to match if an argument of an argument was a wildcard)
• Updated MockNetwork to use Mockable
• Updated MockExtensionHelper to be Mockable
• Updated MockKeychain to be Mockable
• Updated MockImageDataManager to be Mockable
• Updated MockSnodeAPICache to be Mockable
• Updated feature storage in TestDependencies to be in memory instead of in user defaults (which may not be mocked)
• Simplified some request building logic
• Updated MockFileManager to use Mockable
• Updated MockOGMCache to use Mockable
• Updated MockJobRunner to use Mockable
• Updated MockLibSessionCache to use Mockable
• Removed old mocking system
• Fixed some tests that were broken but not caught by the old mocking system
• Fixed remaining failing tests
• Fixed a bug where requests without payloads were encode incorrectly
• Fixed a bug where the CurrentUserPoller wouldn't get released when destroyed
• Fixed an issue where pollers, the `RetrieveDefaultRoomsJob`, `SyncPushTokensJob, and the `ConfigurationSyncJob` would all continue their logic when the network instance was changed instead of waiting for it to have the "connected" status
…etworking

# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Closed Groups/EditGroupViewModel.swift
#	Session/Home/New Conversation/NewMessageScreen.swift
#	Session/Meta/AppDelegate.swift
#	Session/Meta/Session+SNUIKit.swift
#	Session/Notifications/SyncPushTokensJob.swift
#	Session/Settings/DeveloperSettings/DeveloperSettingsViewModel.swift
#	Session/Settings/NukeDataModal.swift
#	Session/Settings/SessionNetworkScreen/SessionNetworkScreen+ViewModel.swift
#	SessionMessagingKit/Database/Migrations/_036_GroupsRebuildChanges.swift
#	SessionMessagingKit/Database/Models/ClosedGroup.swift
#	SessionMessagingKit/Jobs/ConfigurationSyncJob.swift
#	SessionMessagingKit/Jobs/ExpirationUpdateJob.swift
#	SessionMessagingKit/Jobs/GetExpirationJob.swift
#	SessionMessagingKit/Jobs/RetrieveDefaultOpenGroupRoomsJob.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Groups.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+UnsendRequests.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageSender+Groups.swift
#	SessionMessagingKit/Sending & Receiving/Notifications/Models/LegacyUnsubscribeRequest.swift
#	SessionMessagingKit/Sending & Receiving/Notifications/PushNotificationAPI.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/CommunityPoller.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/CurrentUserPoller.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/GroupPoller.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/PollerType.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/SwarmPoller.swift
#	SessionMessagingKit/Utilities/Authentication+SessionMessagingKit.swift
#	SessionMessagingKitTests/Database/Models/MessageDeduplicationSpec.swift
#	SessionMessagingKitTests/Jobs/DisplayPictureDownloadJobSpec.swift
#	SessionMessagingKitTests/Jobs/MessageSendJobSpec.swift
#	SessionMessagingKitTests/Jobs/RetrieveDefaultOpenGroupRoomsJobSpec.swift
#	SessionMessagingKitTests/LibSession/LibSessionGroupInfoSpec.swift
#	SessionMessagingKitTests/LibSession/LibSessionGroupMembersSpec.swift
#	SessionMessagingKitTests/LibSession/LibSessionSpec.swift
#	SessionMessagingKitTests/Open Groups/Crypto/CryptoOpenGroupSpec.swift
#	SessionMessagingKitTests/Open Groups/OpenGroupManagerSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageReceiverGroupsSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageSenderGroupsSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageSenderSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/Pollers/CommunityPollerSpec.swift
#	SessionMessagingKitTests/Utilities/ExtensionHelperSpec.swift
#	SessionMessagingKitTests/_TestUtilities/MockOGMCache.swift
#	SessionMessagingKitTests/_TestUtilities/MockPoller.swift
#	SessionMessagingKitTests/_TestUtilities/MockSwarmPoller.swift
#	SessionNetworkingKit/Crypto/Crypto+SessionNetworkingKit.swift
#	SessionNetworkingKit/Database/Models/SnodeReceivedMessageInfo.swift
#	SessionNetworkingKit/FileServer/Crypto/Crypto+FileServer.swift
#	SessionNetworkingKit/LibSession/LibSession+Networking.swift
#	SessionNetworkingKit/Models/AppVersionResponse.swift
#	SessionNetworkingKit/Models/DeleteAllMessagesRequest.swift
#	SessionNetworkingKit/Models/DeleteAllMessagesResponse.swift
#	SessionNetworkingKit/Models/DeleteMessagesRequest.swift
#	SessionNetworkingKit/Models/DeleteMessagesResponse.swift
#	SessionNetworkingKit/Models/GetExpiriesRequest.swift
#	SessionNetworkingKit/Models/GetExpiriesResponse.swift
#	SessionNetworkingKit/Models/GetMessagesRequest.swift
#	SessionNetworkingKit/Models/GetMessagesResponse.swift
#	SessionNetworkingKit/Models/GetNetworkTimestampResponse.swift
#	SessionNetworkingKit/Models/LegacyGetMessagesRequest.swift
#	SessionNetworkingKit/Models/LegacySendMessageRequest.swift
#	SessionNetworkingKit/Models/ONSResolveRequest.swift
#	SessionNetworkingKit/Models/ONSResolveResponse.swift
#	SessionNetworkingKit/Models/OxenDaemonRPCRequest.swift
#	SessionNetworkingKit/Models/RevokeSubaccountRequest.swift
#	SessionNetworkingKit/Models/RevokeSubaccountResponse.swift
#	SessionNetworkingKit/Models/SendMessageRequest.swift
#	SessionNetworkingKit/Models/SendMessageResponse.swift
#	SessionNetworkingKit/Models/SnodeAuthenticatedRequestBody.swift
#	SessionNetworkingKit/Models/SnodeMessage.swift
#	SessionNetworkingKit/Models/SnodeReceivedMessage.swift
#	SessionNetworkingKit/Models/SnodeRecursiveResponse.swift
#	SessionNetworkingKit/Models/SnodeResponse.swift
#	SessionNetworkingKit/Models/SnodeSwarmItem.swift
#	SessionNetworkingKit/Models/UnrevokeSubaccountRequest.swift
#	SessionNetworkingKit/Models/UnrevokeSubaccountResponse.swift
#	SessionNetworkingKit/Models/UpdateExpiryAllRequest.swift
#	SessionNetworkingKit/Models/UpdateExpiryAllResponse.swift
#	SessionNetworkingKit/Models/UpdateExpiryRequest.swift
#	SessionNetworkingKit/Models/UpdateExpiryResponse.swift
#	SessionNetworkingKit/PushNotification/Models/NotificationMetadata.swift
#	SessionNetworkingKit/PushNotification/Models/SubscribeRequest.swift
#	SessionNetworkingKit/PushNotification/Models/UnsubscribeRequest.swift
#	SessionNetworkingKit/PushNotification/Types/Request+PushNotificationAPI.swift
#	SessionNetworkingKit/SOGS/Models/SOGSMessage.swift
#	SessionNetworkingKit/SOGS/SOGSAPI.swift
#	SessionNetworkingKit/SOGS/SOGSEndpoint.swift
#	SessionNetworkingKit/SOGS/Types/HTTPHeader+SOGS.swift
#	SessionNetworkingKit/SOGS/Types/HTTPQueryParam+SOGS.swift
#	SessionNetworkingKit/SOGS/Types/Request+SOGS.swift
#	SessionNetworkingKit/SnodeAPI/ResponseInfo+SnodeAPI.swift
#	SessionNetworkingKit/SnodeAPI/SnodeAPI.swift
#	SessionNetworkingKit/SnodeAPI/SnodeAPIEndpoint.swift
#	SessionNetworkingKit/SnodeAPI/SnodeAPIError.swift
#	SessionNetworkingKit/SnodeAPI/SnodeAPINamespace.swift
#	SessionNetworkingKit/StorageServer/Database/SnodeReceivedMessageInfo.swift
#	SessionNetworkingKit/StorageServer/Models/DeleteAllBeforeRequest.swift
#	SessionNetworkingKit/StorageServer/Models/DeleteAllBeforeResponse.swift
#	SessionNetworkingKit/StorageServer/Models/DeleteAllMessagesRequest.swift
#	SessionNetworkingKit/StorageServer/Models/DeleteAllMessagesResponse.swift
#	SessionNetworkingKit/StorageServer/Models/DeleteMessagesRequest.swift
#	SessionNetworkingKit/StorageServer/Models/DeleteMessagesResponse.swift
#	SessionNetworkingKit/StorageServer/Models/GetExpiriesRequest.swift
#	SessionNetworkingKit/StorageServer/Models/GetExpiriesResponse.swift
#	SessionNetworkingKit/StorageServer/Models/GetMessagesRequest.swift
#	SessionNetworkingKit/StorageServer/Models/GetMessagesResponse.swift
#	SessionNetworkingKit/StorageServer/Models/GetNetworkTimestampResponse.swift
#	SessionNetworkingKit/StorageServer/Models/LegacyGetMessagesRequest.swift
#	SessionNetworkingKit/StorageServer/Models/LegacySendMessageRequest.swift
#	SessionNetworkingKit/StorageServer/Models/ONSResolveRequest.swift
#	SessionNetworkingKit/StorageServer/Models/ONSResolveResponse.swift
#	SessionNetworkingKit/StorageServer/Models/RevokeSubaccountRequest.swift
#	SessionNetworkingKit/StorageServer/Models/RevokeSubaccountResponse.swift
#	SessionNetworkingKit/StorageServer/Models/SendMessageRequest.swift
#	SessionNetworkingKit/StorageServer/Models/SendMessageResponse.swift
#	SessionNetworkingKit/StorageServer/Models/SnodeAuthenticatedRequestBody.swift
#	SessionNetworkingKit/StorageServer/Models/SnodeBatchRequest.swift
#	SessionNetworkingKit/StorageServer/Models/SnodeRecursiveResponse.swift
#	SessionNetworkingKit/StorageServer/Models/SnodeRequest.swift
#	SessionNetworkingKit/StorageServer/Models/SnodeResponse.swift
#	SessionNetworkingKit/StorageServer/Models/SnodeSwarmItem.swift
#	SessionNetworkingKit/StorageServer/Models/UnrevokeSubaccountRequest.swift
#	SessionNetworkingKit/StorageServer/Models/UnrevokeSubaccountResponse.swift
#	SessionNetworkingKit/StorageServer/Models/UpdateExpiryAllRequest.swift
#	SessionNetworkingKit/StorageServer/Models/UpdateExpiryAllResponse.swift
#	SessionNetworkingKit/StorageServer/Models/UpdateExpiryRequest.swift
#	SessionNetworkingKit/StorageServer/Models/UpdateExpiryResponse.swift
#	SessionNetworkingKit/StorageServer/SnodeAPIEndpoint.swift
#	SessionNetworkingKit/StorageServer/SnodeAPIError.swift
#	SessionNetworkingKit/StorageServer/SnodeAPINamespace.swift
#	SessionNetworkingKit/StorageServer/Types/Request+SnodeAPI.swift
#	SessionNetworkingKit/StorageServer/Types/ResponseInfo+SnodeAPI.swift
#	SessionNetworkingKit/StorageServer/Types/SnodeMessage.swift
#	SessionNetworkingKit/StorageServer/Types/SnodeReceivedMessage.swift
#	SessionNetworkingKit/Types/Network.swift
#	SessionNetworkingKit/Types/PreparedRequest+Sending.swift
#	SessionNetworkingKit/Types/SwarmDrainBehaviour.swift
#	SessionNetworkingKit/Types/UpdatableTimestamp.swift
#	SessionNetworkingKitTests/Models/SnodeRequestSpec.swift
#	SessionNetworkingKitTests/SOGS/Models/SOGSMessageSpec.swift
#	SessionNetworkingKitTests/SOGS/SOGSAPISpec.swift
#	SessionNetworkingKitTests/SOGS/Types/SOGSEndpointSpec.swift
#	SessionNetworkingKitTests/_TestUtilities/MockNetwork.swift
#	SessionNetworkingKitTests/_TestUtilities/MockSnodeAPICache.swift
#	SessionShareExtension/ShareNavController.swift
#	SessionShareExtension/ThreadPickerVC.swift
#	SessionSnodeKit/Crypto/Crypto+SessionSnodeKit.swift
#	SessionSnodeKit/Database/Models/SnodeReceivedMessageInfo.swift
#	SessionSnodeKit/Models/DeleteAllMessagesRequest.swift
#	SessionSnodeKit/Models/DeleteAllMessagesResponse.swift
#	SessionSnodeKit/Models/DeleteMessagesRequest.swift
#	SessionSnodeKit/Models/DeleteMessagesResponse.swift
#	SessionSnodeKit/Models/GetExpiriesRequest.swift
#	SessionSnodeKit/Models/GetExpiriesResponse.swift
#	SessionSnodeKit/Models/GetMessagesRequest.swift
#	SessionSnodeKit/Models/GetMessagesResponse.swift
#	SessionSnodeKit/Models/GetNetworkTimestampResponse.swift
#	SessionSnodeKit/Models/LegacyGetMessagesRequest.swift
#	SessionSnodeKit/Models/LegacySendMessageRequest.swift
#	SessionSnodeKit/Models/ONSResolveRequest.swift
#	SessionSnodeKit/Models/ONSResolveResponse.swift
#	SessionSnodeKit/Models/RevokeSubaccountRequest.swift
#	SessionSnodeKit/Models/RevokeSubaccountResponse.swift
#	SessionSnodeKit/Models/SendMessageRequest.swift
#	SessionSnodeKit/Models/SendMessageResponse.swift
#	SessionSnodeKit/Models/SnodeAuthenticatedRequestBody.swift
#	SessionSnodeKit/Models/SnodeMessage.swift
#	SessionSnodeKit/Models/SnodeReceivedMessage.swift
#	SessionSnodeKit/Models/SnodeRecursiveResponse.swift
#	SessionSnodeKit/Models/SnodeResponse.swift
#	SessionSnodeKit/Models/SnodeSwarmItem.swift
#	SessionSnodeKit/Models/UnrevokeSubaccountRequest.swift
#	SessionSnodeKit/Models/UnrevokeSubaccountResponse.swift
#	SessionSnodeKit/Models/UpdateExpiryAllRequest.swift
#	SessionSnodeKit/Models/UpdateExpiryAllResponse.swift
#	SessionSnodeKit/Models/UpdateExpiryRequest.swift
#	SessionSnodeKit/Models/UpdateExpiryResponse.swift
#	SessionSnodeKit/SnodeAPI/ResponseInfo+SnodeAPI.swift
#	SessionSnodeKit/SnodeAPI/SnodeAPIEndpoint.swift
#	SessionSnodeKit/SnodeAPI/SnodeAPIError.swift
#	SessionSnodeKit/SnodeAPI/SnodeAPINamespace.swift
#	SessionTests/Conversations/Settings/ThreadDisappearingMessagesViewModelSpec.swift
#	SessionTests/Conversations/Settings/ThreadNotificationSettingsViewModelSpec.swift
#	SessionTests/Conversations/Settings/ThreadSettingsViewModelSpec.swift
#	SessionTests/Database/DatabaseSpec.swift
#	SessionTests/Onboarding/OnboardingSpec.swift
#	SessionTests/Settings/NotificationContentViewModelSpec.swift
#	SessionUtilitiesKit/Database/Storage.swift
#	SessionUtilitiesKit/General/Logging.swift
#	SessionUtilitiesKit/LibSession/LibSession.swift
#	SessionUtilitiesKitTests/Database/Models/IdentitySpec.swift
#	SessionUtilitiesKitTests/JobRunner/JobRunnerSpec.swift
#	SignalUtilitiesKit/Utilities/AppSetup.swift
#	_SharedTestUtilities/SynchronousStorage.swift
• Refactored the OGMCache to be part of the OpenGroupManager (which is also now an actor)
• Fixed a broken test
• Removed the StorageServerCache
• Cleaned up DSL for getting the network offset timestamp
• Updated the ExpirationUpdateJob to use async/await internally
• Enabled "Direct" mode for routing in dev settings
• Fixed a bug where the disappearing messages job would run in an excessive loop due to an incorrect value being used
…etworking

# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Settings/DeveloperSettings/DeveloperSettingsViewModel+Testing.swift
#	Session/Settings/DeveloperSettings/DeveloperSettingsViewModel.swift
#	SessionMessagingKit/Jobs/RetrieveDefaultOpenGroupRoomsJob.swift
#	SessionMessagingKit/Sending & Receiving/Errors/MessageReceiverError.swift
#	SessionMessagingKit/Utilities/ExtensionHelper.swift
#	SessionMessagingKitTests/Jobs/RetrieveDefaultOpenGroupRoomsJobSpec.swift
#	SessionMessagingKitTests/_TestUtilities/ArgumentDescribing+SMK.swift
#	SessionMessagingKitTests/_TestUtilities/CustomArgSummaryDescribable+SMK.swift
#	SessionMessagingKitTests/_TestUtilities/CustomArgSummaryDescribable+SessionMessagingKit.swift
#	SessionNetworkingKit/LibSession/LibSession+Networking.swift
#	SessionUtilitiesKit/Observations/ObservationManager.swift
• Added proper async dependency notification functions
• Added the `disableDeveloperMode` functionality to the `DeveloperSettingsNetworkViewModel`
• Refactored the RetrieveDefaultOpenGroupRoomsJob to use async/await internally
• Removed the auth that was incorrectly re-added to the default SOGS retrieval
• Fixed failing unit tests
• Tweaked the code to avoid applying the "router" change until applying other changes when modifying network config
• Tweaked the code to unsubscribe from current PNs when changing the environment (previously the requests were very likely to just immediately fail due to the network being swapped)
• Fixed some failing tests
• Fixed some cases where we might fail to unsubscribe from group PNs
• Fixed a multithreading crash when changing the network configuration (would affect other code)
…etworking

# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	SessionNetworkingKit/PushNotification/PushNotificationAPI.swift
• Disabled dependency observation in iOS 15 to avoid version-specific crashes
• Cleaned up some logic in the async/await tools
…etworking

# Conflicts:
#	Session.xcodeproj/project.pbxproj
#	Session/Meta/SessionApp.swift
…etworking

# Conflicts:
#	Scripts/build_libSession_util.sh
#	Session.xcodeproj/project.pbxproj
#	Session.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
#	Session/Calls/Call Management/SessionCall.swift
#	Session/Calls/Call Management/SessionCallManager.swift
#	Session/Calls/WebRTC/WebRTCSession.swift
#	Session/Conversations/ConversationVC+Interaction.swift
#	Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift
#	Session/Conversations/Settings/ThreadSettingsViewModel.swift
#	Session/Home/HomeVC.swift
#	Session/Home/New Conversation/NewMessageScreen.swift
#	Session/Media Viewing & Editing/MessageInfoScreen.swift
#	Session/Meta/AppDelegate.swift
#	Session/Meta/SessionApp.swift
#	Session/Meta/Settings.bundle/ThirdPartyLicenses.plist
#	Session/Notifications/PushRegistrationManager.swift
#	Session/Notifications/SyncPushTokensJob.swift
#	Session/Onboarding/DisplayNameScreen.swift
#	Session/Onboarding/LoadingScreen.swift
#	Session/Onboarding/Onboarding.swift
#	Session/Onboarding/PNModeScreen.swift
#	Session/Open Groups/OpenGroupSuggestionGrid.swift
#	Session/Settings/DeveloperSettings/DeveloperSettingsProViewModel.swift
#	Session/Settings/DeveloperSettings/DeveloperSettingsViewModel+Testing.swift
#	Session/Settings/DeveloperSettings/DeveloperSettingsViewModel.swift
#	Session/Settings/NukeDataModal.swift
#	Session/Settings/SettingsViewModel.swift
#	Session/Utilities/BackgroundPoller.swift
#	Session/Utilities/IP2Country.swift
#	SessionMessagingKit/Configuration.swift
#	SessionMessagingKit/Crypto/Crypto+SessionMessagingKit.swift
#	SessionMessagingKit/Database/Migrations/_027_SessionUtilChanges.swift
#	SessionMessagingKit/Database/Migrations/_036_GroupsRebuildChanges.swift
#	SessionMessagingKit/Database/Models/ClosedGroup.swift
#	SessionMessagingKit/Database/Models/Interaction.swift
#	SessionMessagingKit/Database/Models/LinkPreview.swift
#	SessionMessagingKit/Database/Models/SessionThread.swift
#	SessionMessagingKit/Jobs/AttachmentDownloadJob.swift
#	SessionMessagingKit/Jobs/CheckForAppUpdatesJob.swift
#	SessionMessagingKit/Jobs/ConfigMessageReceiveJob.swift
#	SessionMessagingKit/Jobs/ConfigurationSyncJob.swift
#	SessionMessagingKit/Jobs/DisappearingMessagesJob.swift
#	SessionMessagingKit/Jobs/DisplayPictureDownloadJob.swift
#	SessionMessagingKit/Jobs/ExpirationUpdateJob.swift
#	SessionMessagingKit/Jobs/GetExpirationJob.swift
#	SessionMessagingKit/Jobs/GroupInviteMemberJob.swift
#	SessionMessagingKit/Jobs/GroupLeavingJob.swift
#	SessionMessagingKit/Jobs/GroupPromoteMemberJob.swift
#	SessionMessagingKit/Jobs/MessageSendJob.swift
#	SessionMessagingKit/Jobs/ProcessPendingGroupMemberRemovalsJob.swift
#	SessionMessagingKit/Jobs/RetrieveDefaultOpenGroupRoomsJob.swift
#	SessionMessagingKit/Jobs/SendReadReceiptsJob.swift
#	SessionMessagingKit/LibSession/Config Handling/LibSession+UserGroups.swift
#	SessionMessagingKit/LibSession/LibSession+SessionMessagingKit.swift
#	SessionMessagingKit/Open Groups/OpenGroupManager.swift
#	SessionMessagingKit/Sending & Receiving/AttachmentUploader.swift
#	SessionMessagingKit/Sending & Receiving/Errors/MessageReceiverError.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Groups.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+UnsendRequests.swift
#	SessionMessagingKit/Sending & Receiving/Message Handling/MessageSender+Groups.swift
#	SessionMessagingKit/Sending & Receiving/MessageReceiver.swift
#	SessionMessagingKit/Sending & Receiving/MessageSender.swift
#	SessionMessagingKit/Sending & Receiving/Notifications/PushNotificationAPI+SessionMessagingKit.swift
#	SessionMessagingKit/Sending & Receiving/Notifications/Types/NotificationContent.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/CommunityPoller.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/CurrentUserPoller.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/GroupPoller.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/PollerType.swift
#	SessionMessagingKit/Sending & Receiving/Pollers/SwarmPoller.swift
#	SessionMessagingKit/Types/MessageViewModel+DeletionActions.swift
#	SessionMessagingKit/Utilities/AttachmentManager.swift
#	SessionMessagingKit/Utilities/Authentication+SessionMessagingKit.swift
#	SessionMessagingKit/Utilities/DisplayPictureManager.swift
#	SessionMessagingKit/Utilities/ExtensionHelper.swift
#	SessionMessagingKit/Utilities/ObservableKey+SessionMessagingKit.swift
#	SessionMessagingKit/Utilities/SNProtoEnvelope+Conversion.swift
#	SessionMessagingKit/Utilities/SessionProState.swift
#	SessionMessagingKitTests/Crypto/CryptoSMKSpec.swift
#	SessionMessagingKitTests/Database/Models/MessageDeduplicationSpec.swift
#	SessionMessagingKitTests/Jobs/DisplayPictureDownloadJobSpec.swift
#	SessionMessagingKitTests/Jobs/MessageSendJobSpec.swift
#	SessionMessagingKitTests/Jobs/RetrieveDefaultOpenGroupRoomsJobSpec.swift
#	SessionMessagingKitTests/LibSession/LibSessionGroupInfoSpec.swift
#	SessionMessagingKitTests/LibSession/LibSessionGroupMembersSpec.swift
#	SessionMessagingKitTests/LibSession/LibSessionSpec.swift
#	SessionMessagingKitTests/Open Groups/CommunityManagerSpec.swift
#	SessionMessagingKitTests/Open Groups/Crypto/CryptoOpenGroupSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageReceiverGroupsSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageSenderGroupsSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/MessageSenderSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/Notifications/NotificationsManagerSpec.swift
#	SessionMessagingKitTests/Sending & Receiving/Pollers/CommunityPollerManagerSpec.swift
#	SessionMessagingKitTests/Types/GlobalSearchSpec.swift
#	SessionMessagingKitTests/Utilities/ExtensionHelperSpec.swift
#	SessionMessagingKitTests/_TestUtilities/MockCommunityPollerCache.swift
#	SessionMessagingKitTests/_TestUtilities/MockExtensionHelper.swift
#	SessionMessagingKitTests/_TestUtilities/MockGroupPollerCache.swift
#	SessionMessagingKitTests/_TestUtilities/MockImageDataManager.swift
#	SessionMessagingKitTests/_TestUtilities/MockLibSessionCache.swift
#	SessionMessagingKitTests/_TestUtilities/MockNotificationsManager.swift
#	SessionMessagingKitTests/_TestUtilities/MockPoller.swift
#	SessionMessagingKitTests/_TestUtilities/MockSwarmPoller.swift
#	SessionMessagingKitTests/_TestUtilities/Mocked+SMK.swift
#	SessionNetworkingKit/FileServer/FileServer.swift
#	SessionNetworkingKit/FileServer/FileServerAPI.swift
#	SessionNetworkingKit/LibSession/LibSession+Networking.swift
#	SessionNetworkingKit/SOGS/SOGSAPI.swift
#	SessionNetworkingKit/SessionNetwork/SessionNetworkAPI.swift
#	SessionNetworkingKit/StorageServer/SnodeAPI.swift
#	SessionNetworkingKit/Types/Destination.swift
#	SessionNetworkingKit/Types/Network.swift
#	SessionNetworkingKit/Types/PreparedRequest+Sending.swift
#	SessionNetworkingKit/Types/PreparedRequest.swift
#	SessionNetworkingKit/Types/SwarmDrainer.swift
#	SessionNetworkingKitTests/SOGS/Crypto/CryptoSOGSAPISpec.swift
#	SessionNetworkingKitTests/SOGS/SOGSAPISpec.swift
#	SessionNetworkingKitTests/Types/DestinationSpec.swift
#	SessionNetworkingKitTests/Types/PreparedRequestSendingSpec.swift
#	SessionNetworkingKitTests/_TestUtilities/MockNetwork.swift
#	SessionNetworkingKitTests/_TestUtilities/MockSnodeAPICache.swift
#	SessionNetworkingKitTests/_TestUtilities/Mocked+SNK.swift
#	SessionNotificationServiceExtension/NotificationServiceExtension.swift
#	SessionShareExtension/ShareNavController.swift
#	SessionShareExtension/ThreadPickerVC.swift
#	SessionTests/Conversations/Settings/ThreadDisappearingMessagesViewModelSpec.swift
#	SessionTests/Conversations/Settings/ThreadNotificationSettingsViewModelSpec.swift
#	SessionTests/Conversations/Settings/ThreadSettingsViewModelSpec.swift
#	SessionTests/Database/DatabaseSpec.swift
#	SessionTests/Onboarding/OnboardingSpec.swift
#	SessionTests/Settings/NotificationContentViewModelSpec.swift
#	SessionUIKit/Components/Modals & Toast/ConfirmationModal.swift
#	SessionUIKit/Components/RadioButton.swift
#	SessionUIKit/Screens/Settings/SessionNetworkScreen/SessionNetworkScreen+Models.swift
#	SessionUtilitiesKit/Database/Models/Job.swift
#	SessionUtilitiesKit/Database/Models/JobDependencies.swift
#	SessionUtilitiesKit/Database/Storage.swift
#	SessionUtilitiesKit/Dependency Injection/Dependencies.swift
#	SessionUtilitiesKit/General/Feature.swift
#	SessionUtilitiesKit/JobRunner/JobRunner.swift
#	SessionUtilitiesKit/Media/DataSource.swift
#	SessionUtilitiesKit/Types/FileManager.swift
#	SessionUtilitiesKitTests/Database/Models/IdentitySpec.swift
#	SessionUtilitiesKitTests/General/GeneralCacheSpec.swift
#	SessionUtilitiesKitTests/JobRunner/JobRunnerSpec.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockAppContext.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockCrypto.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockFileManager.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockGeneralCache.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockJobRunner.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockKeychain.swift
#	SessionUtilitiesKitTests/_TestUtilities/MockUserDefaults.swift
#	SessionUtilitiesKitTests/_TestUtilities/Mocked+SUK.swift
#	SignalUtilitiesKit/Utilities/AppSetup.swift
#	TestUtilities/ArgumentDescribing.swift
#	TestUtilities/MockError.swift
#	TestUtilities/MockFallbackRegistry.swift
#	TestUtilities/MockFunction.swift
#	TestUtilities/MockFunctionBuilder.swift
#	TestUtilities/MockFunctionHandler.swift
#	TestUtilities/MockHandler.swift
#	TestUtilities/Mockable.swift
#	TestUtilities/Mocked.swift
#	TestUtilities/Nimble/NimbleFailureReporter.swift
#	TestUtilities/Nimble/NimbleVerification.swift
#	TestUtilities/RecordedCall.swift
#	TestUtilities/TestFailureReporter.swift
#	TestUtilities/Utilities/Async+Utilities.swift
#	TestUtilities/Utilities/Collection+Utilities.swift
#	_SharedTestUtilities/FixtureBase.swift
#	_SharedTestUtilities/SynchronousStorage.swift
#	_SharedTestUtilities/TestDependencies.swift
• Updated AppReadiness to be an actor
• Updated a bunch of network calls to be async/await
• Cleaned up some duplicate code in ProfilePictureView
• Fixed build issues
• Added in some network resilience tests
• Added in code to try to subscribe for PNs when auto-approving a group via PN
• Cleaned up some bridging logic for the libsession network
• Removed code related to an unused 'caption' value
• Removed some deprecated notification actions
• Refactor remaining Combine network calls to use async/await
• Refactored the BackgroundPoller logic to use a TaskGroup to manage it's logic and timeout (instead of a `DispatchSourceTimer`)
• Fixed an issue where onboarding could hang when there is no account
• Fixed an issue where the database wrapper wouldn't report that it was readyForUse if there were no migrations
• Fixed an issue where the local network permission would incorrectly try to be set when there was no account
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request Jira This ticket is being tracked in Jira

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant