From 2b61ab7d2e0088a97f5bdfb41b70eda701ec1411 Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Tue, 24 Mar 2026 10:04:44 +0000 Subject: [PATCH] fallback mechanism --- .../GraphQL/Resources/ActiveUserResource.cs | 46 +++++++++++++++++-- .../GraphQL/Resources/SubscriptionResource.cs | 1 + 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs index 732b3fa5..4e828918 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ActiveUserResource.cs @@ -313,6 +313,37 @@ public sealed class ActiveUserResource /// note this returns a , because it may be a workspace the user is not a member of /// /// The ActiveUser could not be found (e.g. the client is not authenticated) + private async Task GetActiveWorkspace_Legacy(CancellationToken cancellationToken = default) + { + //language=graphql + const string QUERY = """ + query ActiveUser { + data:activeUser { + data:activeWorkspace { + id + name + role + slug + description + } + } + } + """; + + var request = new GraphQLRequest { Query = QUERY }; + + var response = await _client + .ExecuteGraphQLRequest?>>(request, cancellationToken) + .ConfigureAwait(false); + + if (response.data is null) + { + throw new SpeckleException("GraphQL response indicated that the ActiveUser could not be found"); + } + + return response.data.data; + } + public async Task GetActiveWorkspace(CancellationToken cancellationToken = default) { //language=graphql @@ -333,9 +364,18 @@ public sealed class ActiveUserResource var request = new GraphQLRequest { Query = QUERY }; - var response = await _client - .ExecuteGraphQLRequest?>>(request, cancellationToken) - .ConfigureAwait(false); + NullableResponse?> response; + try + { + response = await _client + .ExecuteGraphQLRequest?>>(request, cancellationToken) + .ConfigureAwait(false); + } + catch (SpeckleGraphQLInvalidQueryException) + { + //v2.x.x servers do not have a logoUrl property + return await GetActiveWorkspace_Legacy(cancellationToken).ConfigureAwait(false); + } if (response.data is null) { diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs index 8ba201d1..39140230 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs @@ -76,6 +76,7 @@ public sealed class SubscriptionResource : IDisposable /// Subscribe to updates to resource comments/threads. Optionally specify resource ID string to only receive updates regarding comments for those resources /// /// + [Obsolete("Comments are now issues, and we've not update SDKs with the new subs")] public Subscription CreateProjectCommentsUpdatedSubscription( ViewerUpdateTrackingTarget target )