(
key: SelectorKey,
args: SelectorHookArgs & { detailId?: string }
)
| 147 | } |
| 148 | |
| 149 | export function useSelectorOptionDetail( |
| 150 | key: SelectorKey, |
| 151 | args: SelectorHookArgs & { detailId?: string } |
| 152 | ) { |
| 153 | const { data: envVariables = {} } = usePersonalEnvironment() |
| 154 | const definition = getSelectorDefinition(key) |
| 155 | |
| 156 | const resolvedDetailId = useMemo(() => { |
| 157 | if (!args.detailId) return undefined |
| 158 | if (isReference(args.detailId)) return undefined |
| 159 | if (isEnvVarReference(args.detailId)) { |
| 160 | const varName = extractEnvVarName(args.detailId) |
| 161 | return envVariables[varName]?.value || undefined |
| 162 | } |
| 163 | return args.detailId |
| 164 | }, [args.detailId, envVariables]) |
| 165 | |
| 166 | const queryArgs: SelectorQueryArgs = { |
| 167 | key, |
| 168 | context: args.context, |
| 169 | detailId: resolvedDetailId, |
| 170 | } |
| 171 | const hasRealDetailId = Boolean(resolvedDetailId) |
| 172 | const baseEnabled = |
| 173 | hasRealDetailId && definition.fetchById !== undefined |
| 174 | ? definition.enabled |
| 175 | ? definition.enabled(queryArgs) |
| 176 | : true |
| 177 | : false |
| 178 | const enabled = args.enabled ?? baseEnabled |
| 179 | |
| 180 | const query = useQuery<SelectorOption | null>({ |
| 181 | queryKey: [...definition.getQueryKey(queryArgs), 'detail', resolvedDetailId ?? 'none'], |
| 182 | queryFn: ({ signal }) => definition.fetchById!({ ...queryArgs, signal }), |
| 183 | enabled, |
| 184 | staleTime: definition.staleTime ?? 300_000, |
| 185 | }) |
| 186 | |
| 187 | return query |
| 188 | } |
| 189 | |
| 190 | export function useSelectorOptionMap(options: SelectorOption[], extra?: SelectorOption | null) { |
| 191 | return useMemo(() => { |
no test coverage detected