Skip to content

Commit c6062e3

Browse files
committed
fix(file-provider): Rediscover XPC service for restored (previously missing) domain
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
1 parent 522fece commit c6062e3

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

‎src/gui/macOS/fileprovidersettingscontroller_mac.mm‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@
3030
// NSUserDefaults entries
3131
constexpr auto enabledAccountsSettingsKey = "enabledAccounts";
3232

33+
bool domainRestorationRequiresXpcReconfiguration(const QString &storedIdentifier, const QString &restoredIdentifier)
34+
{
35+
return !storedIdentifier.isEmpty() && !restoredIdentifier.isEmpty() && storedIdentifier != restoredIdentifier;
36+
}
37+
3338
} // namespace
3439

3540
namespace OCC {
@@ -265,6 +270,7 @@ void ensureDomainConfigurationMatchesMode()
265270
if (modeEnabled) {
266271
const auto domains = Mac::FileProvider::instance()->domainManager()->getDomains();
267272
QSet<QString> existingDomainIdentifiers;
273+
auto restoredDomain = false;
268274

269275
for (NSFileProviderDomain * const domain : domains) {
270276
existingDomainIdentifiers.insert(QString::fromNSString(domain.identifier));
@@ -293,9 +299,15 @@ void ensureDomainConfigurationMatchesMode()
293299

294300
if (newIdentifier.isEmpty() == false) {
295301
AccountManager::instance()->setFileProviderDomainIdentifier(userIdAtHost, newIdentifier);
302+
restoredDomain |= domainRestorationRequiresXpcReconfiguration(identifier, newIdentifier);
296303
}
297304
}
298305
}
306+
307+
if (restoredDomain) {
308+
// A changed identifier means addDomainForAccount() registered a new domain; rediscover its XPC service.
309+
Mac::FileProvider::instance()->configureXPC();
310+
}
299311
} else {
300312
for (const auto &accountState : accountStates) {
301313
const auto account = accountState->account();

0 commit comments

Comments
 (0)