Remove all obj-c classes from fileproviderxpc.h

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2024-01-02 16:28:26 +08:00
parent fca6b37804
commit 784cd129fb
4 changed files with 37 additions and 43 deletions

View File

@ -13,10 +13,9 @@
*/
#include <QObject>
#include <QHash>
#import <Foundation/Foundation.h>
#import "ClientCommunicationProtocol.h"
#include "accountstate.h"
#pragma once
@ -39,10 +38,7 @@ private slots:
void slotAccountStateChanged(AccountState::State state) const;
private:
void setupConnections();
void processConnections(NSArray *const services);
NSDictionary<NSString *, NSObject<ClientCommunicationProtocol> *_clientCommServices;
QHash<QString, void*> _clientCommServices;
};
} // namespace OCC::Mac

View File

@ -35,44 +35,14 @@ void FileProviderXPC::connectToExtensions()
const auto domainUrls = FileProviderXPCUtils::getDomainUrlsForManagers(managers);
const auto fpServices = FileProviderXPCUtils::getFileProviderServicesAtUrls(domainUrls);
const auto connections = FileProviderXPCUtils::connectToFileProviderServices(fpServices);
processConnections(connections);
}
void FileProviderXPC::processConnections(NSArray *const connections)
{
NSMutableDictionary<NSString *, NSObject<ClientCommunicationProtocol>*> *const clientCommServices = NSMutableDictionary.dictionary;
for (NSXPCConnection * const connection in connections) {
const auto remoteObjectInterfaceProtocol = @protocol(ClientCommunicationProtocol);
connection.remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:remoteObjectInterfaceProtocol];
FileProviderXPCUtils::configureFileProviderConnection(connection);
const auto clientCommService = (NSObject<ClientCommunicationProtocol> *)FileProviderXPCUtils::getRemoteServiceObject(connection, remoteObjectInterfaceProtocol);
if (clientCommService == nil) {
qCWarning(lcFileProviderXPC) << "Client communication service is nil";
continue;
}
[clientCommService retain];
const auto extensionNcAccount = FileProviderXPCUtils::getExtensionAccountId(clientCommService);
if (extensionNcAccount == nil) {
qCWarning(lcFileProviderXPC) << "Extension account id is nil";
continue;
}
qCInfo(lcFileProviderXPC) << "Got extension account id" << extensionNcAccount.UTF8String;
[clientCommServices setObject:clientCommService forKey:extensionNcAccount];
}
_clientCommServices = clientCommServices.copy;
_clientCommServices = FileProviderXPCUtils::processClientCommunicationConnections(connections);
}
void FileProviderXPC::configureExtensions()
{
for (NSString *const extensionNcAccount in _clientCommServices) {
for (const auto &extensionNcAccount : _clientCommServices.keys()) {
qCInfo(lcFileProviderXPC) << "Sending message to client communication service";
const auto qExtensionNcAccount = QString::fromNSString(extensionNcAccount);
authenticateExtension(qExtensionNcAccount);
authenticateExtension(extensionNcAccount);
}
}
@ -95,8 +65,7 @@ void FileProviderXPC::authenticateExtension(const QString &extensionAccountId) c
NSString *const serverUrl = account->url().toString().toNSString();
NSString *const password = credentials->password().toNSString();
const auto nsExtensionNcAccount = extensionAccountId.toNSString();
NSObject<ClientCommunicationProtocol> *const clientCommService = [_clientCommServices objectForKey:nsExtensionNcAccount];
const auto clientCommService = (NSObject<ClientCommunicationProtocol> *)_clientCommServices.value(extensionAccountId);
[clientCommService configureAccountWithUser:user
serverUrl:serverUrl
password:password];
@ -106,7 +75,7 @@ void FileProviderXPC::unauthenticateExtension(const QString &extensionAccountId)
{
qCInfo(lcFileProviderXPC) << "Unauthenticating extension" << extensionAccountId;
NSString *const nsExtensionAccountId = extensionAccountId.toNSString();
NSObject<ClientCommunicationProtocol> *const clientCommService = [_clientCommServices objectForKey:nsExtensionAccountId];
const auto clientCommService = (NSObject<ClientCommunicationProtocol> *)_clientCommServices.value(extensionAccountId);
[clientCommService removeAccountConfig];
}

View File

@ -28,5 +28,6 @@ NSArray<NSXPCConnection *> *connectToFileProviderServices(NSArray<NSDictionary<N
void configureFileProviderConnection(NSXPCConnection *connection);
NSObject *getRemoteServiceObject(NSXPCConnection *connection, Protocol *protocol);
NSString *getExtensionAccountId(NSObject<ClientCommunicationProtocol> *clientCommService);
QHash<QString, void*> processClientCommunicationConnections(NSArray *connections);
}

View File

@ -219,4 +219,32 @@ NSString *getExtensionAccountId(NSObject<ClientCommunicationProtocol> *const cli
return extensionNcAccount;
}
QHash<QString, void*> processClientCommunicationConnections(NSArray *const connections)
{
QHash<QString, void*> clientCommServices;
for (NSXPCConnection * const connection in connections) {
const auto remoteObjectInterfaceProtocol = @protocol(ClientCommunicationProtocol);
connection.remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:remoteObjectInterfaceProtocol];
configureFileProviderConnection(connection);
const auto clientCommService = (NSObject<ClientCommunicationProtocol> *)getRemoteServiceObject(connection, remoteObjectInterfaceProtocol);
if (clientCommService == nil) {
qCWarning(lcFileProviderXPCUtils) << "Client communication service is nil";
continue;
}
[clientCommService retain];
const auto extensionNcAccount = getExtensionAccountId(clientCommService);
if (extensionNcAccount == nil) {
qCWarning(lcFileProviderXPCUtils) << "Extension account id is nil";
continue;
}
qCInfo(lcFileProviderXPCUtils) << "Got extension account id" << extensionNcAccount.UTF8String;
clientCommServices.insert(QString::fromNSString(extensionNcAccount), clientCommService);
}
return clientCommServices;
}
} // namespace OCC::Mac::FileProviderXPCUtils