Files
upstream-yaak/apps/yaak-client/hooks/useEnvironmentsBreakdown.ts
upstream-mirror 906fb231cc
Some checks failed
Lint and Test / Lint/Test (push) Has been cancelled
Generate Sponsors README / deploy (push) Has been skipped
snapshot of https://github.com/mountain-loop/yaak.git (main, 2026-09-23; blobs > 131072B omitted)
2026-09-23 17:39:41 +05:00

36 lines
1.1 KiB
TypeScript

import { environmentsAtom } from "@yaakapp-internal/models";
import { atom, useAtomValue } from "jotai";
export const environmentsBreakdownAtom = atom((get) => {
const allEnvironments = get(environmentsAtom);
const baseEnvironments = allEnvironments.filter((e) => e.parentModel === "workspace") ?? [];
const subEnvironments =
allEnvironments
.filter((e) => e.parentModel === "environment")
?.sort((a, b) => {
if (a.sortPriority === b.sortPriority) {
return a.updatedAt > b.updatedAt ? 1 : -1;
}
return a.sortPriority - b.sortPriority;
}) ?? [];
const folderEnvironments =
allEnvironments.filter((e) => e.parentModel === "folder" && e.parentId != null) ?? [];
const baseEnvironment = baseEnvironments[0] ?? null;
const otherBaseEnvironments = baseEnvironments.filter((e) => e.id !== baseEnvironment?.id) ?? [];
return {
allEnvironments,
baseEnvironment,
subEnvironments,
folderEnvironments,
otherBaseEnvironments,
baseEnvironments,
};
});
export function useEnvironmentsBreakdown() {
return useAtomValue(environmentsBreakdownAtom);
}