mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-20 16:44:06 +01:00
* Update environment model to get ready for request/folder environments * Folder environments in UI * Folder environments working * Tweaks and fixes * Tweak environment encryption UX * Tweak environment encryption UX * Address comments * Update fn name * Add tsc back to lint rules * Update src-web/components/EnvironmentEditor.tsx * Merge remote-tracking branch 'origin/folder-environments' into folder…
25 lines
829 B
TypeScript
25 lines
829 B
TypeScript
import type { Folder, GrpcRequest, HttpRequest, WebsocketRequest } from '@yaakapp-internal/models';
|
|
import { foldersAtom } from '@yaakapp-internal/models';
|
|
import { useAtomValue } from 'jotai';
|
|
import { useMemo } from 'react';
|
|
|
|
export function useParentFolders(m: Folder | HttpRequest | GrpcRequest | WebsocketRequest | null) {
|
|
const folders = useAtomValue(foldersAtom);
|
|
|
|
return useMemo(() => getParentFolders(folders, m), [folders, m]);
|
|
}
|
|
|
|
function getParentFolders(
|
|
folders: Folder[],
|
|
currentModel: Folder | HttpRequest | GrpcRequest | WebsocketRequest | null,
|
|
): Folder[] {
|
|
if (currentModel == null) return [];
|
|
|
|
const folder = currentModel.folderId ? folders.find((f) => f.id === currentModel.folderId) : null;
|
|
if (folder == null) {
|
|
return [];
|
|
}
|
|
|
|
return [folder, ...getParentFolders(folders, folder)];
|
|
}
|