From 9d42b36f74274cad72490da5152fdb98fdc5b89b Mon Sep 17 00:00:00 2001 From: Pujit Mehrotra Date: Thu, 28 Aug 2025 16:31:47 -0400 Subject: [PATCH] fix: confusing server -> status query (#1635) represent the target server's status instead of whether it's connected to Mothership. Resolves #1627 ## Summary by CodeRabbit - Bug Fixes - Ensures the local server is handled consistently as a single server across views; list views show it as a single-item list when applicable. - Server status now reliably displays as Online for the local server. - Documentation - Added a clearer description for the server status field in the API schema to improve tooltips and autogenerated docs. --- .../graph/resolvers/servers/server.model.ts | 4 ++- .../resolvers/servers/server.resolver.ts | 35 ++++++++----------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/api/src/unraid-api/graph/resolvers/servers/server.model.ts b/api/src/unraid-api/graph/resolvers/servers/server.model.ts index d17ec47ba..dc7b94c95 100644 --- a/api/src/unraid-api/graph/resolvers/servers/server.model.ts +++ b/api/src/unraid-api/graph/resolvers/servers/server.model.ts @@ -38,7 +38,9 @@ export class Server extends Node { @Field() name!: string; - @Field(() => ServerStatus) + @Field(() => ServerStatus, { + description: 'Whether this server is online or offline', + }) status!: ServerStatus; @Field() diff --git a/api/src/unraid-api/graph/resolvers/servers/server.resolver.ts b/api/src/unraid-api/graph/resolvers/servers/server.resolver.ts index f5e3e8779..8bcc2e9e3 100644 --- a/api/src/unraid-api/graph/resolvers/servers/server.resolver.ts +++ b/api/src/unraid-api/graph/resolvers/servers/server.resolver.ts @@ -24,7 +24,7 @@ export class ServerResolver { resource: Resource.SERVERS, }) public async server(): Promise { - return this.getLocalServer()[0] || null; + return this.getLocalServer() || null; } @Query(() => [ServerModel]) @@ -33,7 +33,7 @@ export class ServerResolver { resource: Resource.SERVERS, }) public async servers(): Promise { - return this.getLocalServer(); + return [this.getLocalServer()]; } @Subscription(() => ServerModel) @@ -45,7 +45,7 @@ export class ServerResolver { return createSubscription(PUBSUB_CHANNEL.SERVERS); } - private getLocalServer(): ServerModel[] { + private getLocalServer(): ServerModel { const emhttp = getters.emhttp(); const connectConfig = this.configService.get('connect'); @@ -64,22 +64,17 @@ export class ServerResolver { avatar: '', }; - return [ - { - id: 'local', - owner, - guid: guid || '', - apikey: connectConfig?.config?.apikey ?? '', - name: name ?? 'Local Server', - status: - connectConfig?.mothership?.status === MinigraphStatus.CONNECTED - ? ServerStatus.ONLINE - : ServerStatus.OFFLINE, - wanip, - lanip, - localurl, - remoteurl, - }, - ]; + return { + id: 'local', + owner, + guid: guid || '', + apikey: connectConfig?.config?.apikey ?? '', + name: name ?? 'Local Server', + status: ServerStatus.ONLINE, + wanip, + lanip, + localurl, + remoteurl, + }; } }