import type { RelayClientEnvironmentRecord } from "@t3tools/contracts/relay"; import type { ConnectedEnvironmentSummary } from "../../state/remote-runtime-types"; export interface EnvironmentSectionsInput { readonly connectedEnvironments: ReadonlyArray; readonly cloudEnvironments: ReadonlyArray | null; } export interface EnvironmentSections { readonly localEnvironments: ReadonlyArray; readonly connectedCloudEnvironments: ReadonlyArray; readonly availableCloudEnvironments: ReadonlyArray; } export function splitEnvironmentSections(input: EnvironmentSectionsInput): EnvironmentSections { const savedEnvironmentIds = new Set( input.connectedEnvironments.map((environment) => environment.environmentId), ); return { localEnvironments: input.connectedEnvironments.filter( (environment) => !environment.isRelayManaged, ), connectedCloudEnvironments: input.connectedEnvironments.filter( (environment) => environment.isRelayManaged, ), availableCloudEnvironments: (input.cloudEnvironments ?? []).filter( (environment) => !savedEnvironmentIds.has(environment.environmentId), ), }; }