Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1447-hide-catalog-link-delete-button-non-manual-links #1473

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 1 addition & 28 deletions src/api/query-hooks/useComponentConfigRelationshipQuery.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { useQuery } from "@tanstack/react-query";
import { getConfigsBy } from "../services/configs";
import { ConfigItem } from "../types/configs";

export const componentConfigRelationshipQueryKey = ({
topologyId,
Expand Down Expand Up @@ -28,33 +27,7 @@ export function useComponentConfigRelationshipQuery({
}) {
return useQuery(
componentConfigRelationshipQueryKey({ topologyId, configId, hideDeleted }),
() => {
if (topologyId) {
return getConfigsBy({ topologyId, hideDeleted })?.then((res) => {
return res?.data?.map((item) => {
return item.configs as ConfigItem;
});
});
}
if (configId) {
return getConfigsBy({ configId, hideDeleted })?.then((res) => {
let items: ConfigItem[] = [];
res?.data?.forEach((item) => {
const configs = item.configs as ConfigItem;
const related = item.related as ConfigItem;
if (configs && configs.id !== configId) {
items.push(configs);
}
if (related && related.id !== configId) {
items.push(related);
}
});
items = items.sort((ent) => (ent.deleted_at ? 1 : -1));
return items;
});
}
return Promise.resolve([]);
},
() => getConfigsBy({ topologyId, configId, hideDeleted }),
{
enabled: !!topologyId || !!configId
}
Expand Down
13 changes: 4 additions & 9 deletions src/api/services/configs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,21 +144,16 @@ export const getConfigsBy = ({
const configFields = `id, type, name, config_class, deleted_at`;
const deletedAt = hideDeleted ? `&deleted_at=is.null` : "";
if (topologyId) {
return resolve<
{
configs?: ConfigItem[];
related?: ConfigItem[];
}[]
>(
return resolve<ConfigTypeRelationships[]>(
ConfigDB.get(
`/config_component_relationships?component_id=eq.${topologyId}&configs.order=name&select=configs!config_component_relationships_config_id_fkey(${configFields})${deletedAt}`
`/config_component_relationships?component_id=eq.${topologyId}&configs.order=name&select=*,configs!config_component_relationships_config_id_fkey(${configFields})${deletedAt}`
)
);
}
if (configId) {
return resolve(
ConfigDB.get<Pick<ConfigTypeRelationships, "configs" | "related">[]>(
`/config_relationships?or=(related_id.eq.${configId},config_id.eq.${configId})&configs.order=name&select=configs:configs!config_relationships_config_id_fkey(${configFields}),related:configs!config_relationships_related_id_fkey(${configFields})${deletedAt}`
ConfigDB.get<ConfigTypeRelationships[]>(
`/config_relationships?or=(related_id.eq.${configId},config_id.eq.${configId})&configs.order=name&select=*,configs:configs!config_relationships_config_id_fkey(${configFields}),related:configs!config_relationships_related_id_fkey(${configFields})${deletedAt}`
)
);
}
Expand Down
17 changes: 11 additions & 6 deletions src/components/Sidebars/configs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@ export function ConfigsList({
>();

const {
data: configs = [],
data: res,
isLoading,
isRefetching,
refetch
} = useComponentConfigRelationshipQuery({ topologyId, configId });

const configs = res?.data ?? [];

const deleteLink = async (configId: string) => {
if (!topologyId) {
return;
Expand Down Expand Up @@ -79,13 +81,13 @@ export function ConfigsList({
<ol className="flex flex-col w-full overflow-x-hidden">
{configs.map((config) => (
<li
key={config.id}
key={config.config_id}
className={clsx("p-1 relative flex flex-row flex-1", {
hidden: hideDeletedConfigs && config.deleted_at
})}
>
<ConfigLink
config={config}
config={config.configs}
className="overflow-hidden text-ellipsis flex-1 whitespace-nowrap"
/>
{config.deleted_at && (
Expand All @@ -95,9 +97,10 @@ export function ConfigsList({
className="ml-2"
/>
)}
{topologyId && (
{/* only show delete button on manually linked configs */}
{topologyId && config.selector_id === "manual" && (
<TopologyConfigsActionsDropdown
onUnlinkUser={() => setDeletedConfigLinkId(config.id)}
onUnlinkUser={() => setDeletedConfigLinkId(config.config_id)}
/>
)}
</li>
Expand Down Expand Up @@ -129,11 +132,13 @@ export default function Configs({
() => props.hideDeletedConfigs ?? true
);

const { data: configs = [] } = useComponentConfigRelationshipQuery({
const { data: res } = useComponentConfigRelationshipQuery({
...props,
hideDeleted: hideDeletedConfigs
});

const configs = res?.data ?? [];

const TrashIconType = hideDeletedConfigs ? TbTrashOff : TbTrash;
const handleTrashIconClick = (e: { stopPropagation: () => void }) => {
e.stopPropagation();
Expand Down
Loading