Commit graph

249 commits

Author SHA1 Message Date
Claudio Cambra
45b123130f Separate XPC init from file provider constructor
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
423891230e Separate starting of domain manager tasks from constructor
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
58dc42a521 Get services using better non-url based method if available (macOS 13.0+)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
798f77fa2b Improve domain discovery logging
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
43b7ae55df Use accountStateFromFileProviderDomainIdentifier method in authenticateExtension
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
6d4e785ebb Remove unused extension ID NSString
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
be3bd7bb3b Do not shadow sender()
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
784cd129fb Remove all obj-c classes from fileproviderxpc.h
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
fca6b37804 Fix clang-tidy namespace concatenation warning
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
0856138b2e Implement recognition of account state changing in FileProviderXPC
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
c1fa6621ae Move extension authentication into separate method
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
94bfa035c3 Define NSDictionary types in _clientCommServices
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
f728ec1b75 Add method to unauthenticate file provider extension in FileProviderXPC
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
502d73814e Cast clientCommServices to NSObject with correct protocol
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
23a3a3e554 Extract account id acquisition from clientCommService into separate function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
8a8d3b3ef5 Remove redundant static in anonymous fileproviderxpc utils namespace
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
c9997ce5f9 Extract remote service object acquisistion from connection into separate function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
595c23cf76 Extract file provider connection configuration into separate util function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
6f5b07c1ae Fix clientcommservices datatype
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
95bebc5214 Clean up FileProviderXPC code, separate everything into single-responsibility methods
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
5ee2cfa749 Moved XPC Utils into separate file
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
a0376a2dab Move acquisition of file provider services to different function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
4a8d50144a Move domain url acquisition to separate function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
8eaf4e6324 Move domain manager acquisition into separate function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
59b8b8ef21 Upon acquisition of client communication services, send account configuration
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
7716860bc9 Retrieve extension account ids over XPC, store client comm service per account
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
eb774adc95 Check for protocol type in fileproviderxpc start
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
ee82968c69 Cache NSXPCConnections when starting FileProviderXPC
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
d4d0cf550e Fix retain issues with domains in FileProviderXPC
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
0b505a9c2c Flatten FileProviderXPC::start()
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
25201116a0 Implement connection begin in XPC
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
9dddaf4f9f Fix logging for fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
e8c1bbb953 Add relative symlink to ClientCommunicationProtocol in srd/gui/macOS
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
5cc8b6e7c2 Add starter FileProviderXPC class on client side
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-02-19 22:39:37 +08:00
Claudio Cambra
6ef73e24d7 [FileProvider] Add missing AccountState State case for notifying account state to extension
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-09-16 15:02:36 +02:00
Claudio Cambra
246347f88a
Do not initialise file provider module if not enabled in config
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 16:02:39 +08:00
Claudio Cambra
2c3fa71405
Rename FileProviderDomainManager::Private to FileProviderDomainManager::MacImplementation
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 16:02:38 +08:00
Claudio Cambra
f37e7cc3b6
Remove readdFileProviderDomain hack in FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 16:02:38 +08:00
Claudio Cambra
9fff10fd5d
Do not use QSharedPointer to store FileProviderSocketControllers, use QPointer
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:29:54 +08:00
Claudio Cambra
4327b152fb
Move accountStateFromFileProviderDomainIdentifier to FileProviderDomainManager where we have methods to guarantee conversion
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:28:47 +08:00
Claudio Cambra
95c6e7a3f4
Add informative messages after Q_ASSERTs for sockets in FileProviderSocketController for release mode
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:28:47 +08:00
Claudio Cambra
3254595fa4
Do not emit socketDestroyed twice in FileProviderSocketController
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:28:47 +08:00
Claudio Cambra
6e84aa67a4
Clean up header for FileProviderSocketController
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:28:47 +08:00
Claudio Cambra
578e8ea2d9
Clean up FileProviderSocketServer header, remove unnecessary ifdefs
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:28:46 +08:00
Claudio Cambra
22fc43e7b0
Improve initialisation of C++ FileProvider class
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:28:46 +08:00
Claudio Cambra
dbd4de08a7
Add availability guards around private implementation class of FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:36 +08:00
Claudio Cambra
d533d2a025
Do not try to compile code in FileProviderDomainManager requiring FileProvider components on macOS > 11.0
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:36 +08:00
Claudio Cambra
6e5c2ee04c
Do not initialise file provider components if system does not support file provider
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:36 +08:00
Claudio Cambra
19dfbd0539
Add method to detect if File Provider functionality is available or not
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:36 +08:00
Claudio Cambra
017de893f0
Run poll timer for enumerator signalling to notify accounts without push notifications in FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:33 +08:00
Claudio Cambra
bb2718824c
Use new convenience method to check if push notifications ready for account in FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
4901b0653f
Add convenience method to retrieve registered domain ids in private FileProviderDomainManager class
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
9dfa3d76a7
Add some additional converters for domain and account identifiers in FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
fd87bffeef
Signal enumerator after reconnecting file provider domain
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
89d48ec8cc
Submit tasks to do after readding file provider domain as completion blocks
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
002a75bca1
Add completion handler to readdFileProviderDomain method in fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
810fa8d1ce
Handle situations where we might not get a manager for our desired domain in fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
520e0cf2c6
Add readdFileProviderDomain convenience method to fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:32 +08:00
Claudio Cambra
29f346d494
Ensure that wipeAllFileProviderDomains doesn't break on macOS 11
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:31 +08:00
Claudio Cambra
d31a8be85c
Ensure registered domains are added and removed at appropriate times in fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:31 +08:00
Claudio Cambra
ed4b40b415
Disconnect and reconnect file provider domains depending on account state
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:29 +08:00
Claudio Cambra
178caaa7a8
Allow specifying disconnection of file provider domain message
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:29 +08:00
Claudio Cambra
287a4e4c0b
Unauthenticate the file provider extension when account is logged out
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:29 +08:00
Claudio Cambra
6d1fe0b4f7
Do not send account details to File Provider extension through socket controller if account not ready
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:29 +08:00
Claudio Cambra
d6126f477f
Make file provider domain disconnection reason string translatable
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
7a18d9df3a
Disconnect the file provider domains when Nextcloud client is closed
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
bc3fecfb08
Use asserts to check validity of pointers in private impl of fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
30b453f85e
Use specific functions for creating/converting domain identifiers and account Ids, prevent mismatches
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
712dde0a2f
Prevent removal of FileProvider domains on app shutdown
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
57f174d9e3
Ensure we wait for check for existing file provider domains to finish before rushing into creation of new domains in FileProviderDomainManager
This stops the needless deletion and the recreation of FP domains

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
ddd564bc5c
Ensure file provider domain pointers are correctly retained and released in fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:28 +08:00
Claudio Cambra
85b9e7df03
Modernise Obj-C property notation in fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:27 +08:00
Claudio Cambra
d528adf345
Sprinkle constness over C++ and Obj-C pointers
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:27 +08:00
Claudio Cambra
9b4ba22c46
Use const auto in FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:27 +08:00
Claudio Cambra
b2d76abf88
Use push notifications to notify file provider of changes
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:26 +08:00
Claudio Cambra
0a258f818b
Use consistent account ID type in fileproviderdomainmanager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:26 +08:00
Claudio Cambra
331ce22e62
Scan for existing file provider domains on FileProviderDomainManager init
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:26 +08:00
Claudio Cambra
4e9d51e487
Add method to private FileProviderDomainManager to signal enumerator
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:26 +08:00
Claudio Cambra
f7f6bffb0b
Stop wiping file provider domains on desktop client close/open
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:26 +08:00
Claudio Cambra
2ebd518b89
Use std::unique_ptr for private implementation class of FileProviderDomainManager
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:26 +08:00
Claudio Cambra
6bfdc10f7a
Use default constructor for private FileProviderDomainManager implementation class
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:25 +08:00
Claudio Cambra
2f12d9b2bd
Remove setting connection status from fileproviderdomainmanager, this will be handled by the domain
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:17 +08:00
Claudio Cambra
b154740575
Add ability for FileProviderDomainManager to wipe domains
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:17 +08:00
Claudio Cambra
a046eca3c3
Use safer separator for account details socket message
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:15 +08:00
Claudio Cambra
1cb7da9bac
Send account details over socket and simplify NextcloudAccount members, turn all to Strings
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:15 +08:00
Claudio Cambra
0b3f06a73f
Add ability for fileprovidersocketcontroller to send keychain account identifier over socket
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:09 +08:00
Claudio Cambra
969ee489e5
Initialise file provider socket controller by requesting file provder domain data over socket from FileProviderExtension
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:08 +08:00
Claudio Cambra
9f2fff3782
Add sendMessage to fileprovidersocketcontroller
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:08 +08:00
Claudio Cambra
28a79d4767
Handle readyRead signal from socket in FileProviderSocketController
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:08 +08:00
Claudio Cambra
ada4b98a93
Added working socket connection between desktop client local socket server and app extension socket client
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:08 +08:00
Claudio Cambra
c5560db690
Make the socket manager just manage the server, leave the socket controller in charge of controlling the socket
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
ffed4d7933
Make fileprovidersocketmanager keep track of connected sockets
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
7fc80bc4eb
Add basic FileProviderSocketController class to control the socket
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
92773e6b77
Rename FileProviderSocketController to FileProviderSocketManager, as it manages the sockets
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
de68b1bbb4
Implement basic local socket server to communicate with file provider extension
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
8ccd0368a1
Move file provider domain management to specific class
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
8ff2c24e8b
Ensure file provider class is correctly deallocated and cleanup routines are run
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
2d27d6d072
Fix build with BUILD_TESTING activated
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:07 +08:00
Claudio Cambra
7d119457db
Move file provider components to macOS folder
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2023-05-12 13:21:06 +08:00