From 6d7eadd322d3ac2f011c33d9dbee89b9e051e744 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sun, 26 Feb 2023 13:04:21 +0100 Subject: [PATCH] perf: Skip registering auth delegate if it's already registered (#1715) --- .../Controller/PFUserAuthenticationController.m | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m b/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m index 2ac630632..6e01cd939 100644 --- a/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m +++ b/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m @@ -56,12 +56,19 @@ - (void)registerAuthenticationDelegate:(id)delegat PFParameterAssert(delegate, @"Authentication delegate can't be `nil`."); PFParameterAssert(authType, @"`authType` can't be `nil`."); - // If auth delete is already registered then unregister it gracefully + // If auth delete is already registered for provider if ([self authenticationDelegateForAuthType:authType]) { + + // If same auth delete is already registered then don't register it again + if ([self authenticationDelegateForAuthType:authType] == delegate) { + NSLog(@"skipping registering as same delegate already registered for authType `%@`.", authType); + return; + } + NSLog(@"unregistering existing deletegate to gracefully register new delegate for authType `%@`.", authType); [self unregisterAuthenticationDelegateForAuthType:authType]; } - + dispatch_sync(_dataAccessQueue, ^{ self->_authenticationDelegates[authType] = delegate; });