Compare commits

..

2 Commits

Author SHA1 Message Date
Misha Bragin
14d2d68819 Update links to networks doc (#435)
Some checks failed
build and push / build_n_push (push) Has been cancelled
2024-12-27 21:48:36 +01:00
Pascal Fischer
40902b3629 add resources to groups update operation (#434)
Some checks failed
build and push / build_n_push (push) Has been cancelled
2024-12-27 14:20:11 +01:00
11 changed files with 34 additions and 11 deletions

View File

@@ -36,7 +36,7 @@ export default function Networks() {
</Paragraph>
<Paragraph>
Learn more about
<InlineLink href={"https://docs.netbird.io/how-to/networks-concept"} target={"_blank"}>
<InlineLink href={"https://docs.netbird.io/how-to/networks"} target={"_blank"}>
Networks
<ExternalLinkIcon size={12} />
</InlineLink>

View File

@@ -30,7 +30,7 @@ import * as React from "react";
import { Fragment, useEffect, useMemo, useState } from "react";
import { useGroups } from "@/contexts/GroupsProvider";
import { useElementSize } from "@/hooks/useElementSize";
import type { Group, GroupPeer } from "@/interfaces/Group";
import type {Group, GroupPeer, GroupResource} from "@/interfaces/Group";
import { NetworkResource } from "@/interfaces/Network";
import type { Peer } from "@/interfaces/Peer";
@@ -104,19 +104,21 @@ export function PeerGroupSelector({
const option = dropdownOptions.find((option) => option.name == name);
const groupPeers: GroupPeer[] | undefined =
(group?.peers as GroupPeer[]) || [];
const groupResources: GroupResource[] | undefined =
(group?.resources as GroupResource[]) || [];
if (peer) groupPeers?.push({ id: peer?.id as string, name: peer?.name });
if (!group && !option) {
addDropdownOptions([{ name: name, peers: groupPeers }]);
addDropdownOptions([{ name: name, peers: groupPeers, resources: groupResources }]);
}
if (max == 1 && values.length == 1) {
onChange([{ name: name, id: group?.id, peers: groupPeers }]);
onChange([{ name: name, id: group?.id, peers: groupPeers, resources: groupResources }]);
} else {
onChange((previous) => [
...previous,
{ name: name, id: group?.id, peers: groupPeers },
{ name: name, id: group?.id, peers: groupPeers, resources: groupResources },
]);
}

View File

@@ -2,7 +2,7 @@ import useFetchApi, { useApiCall } from "@utils/api";
import { merge, sortBy, unionBy } from "lodash";
import React, { useEffect, useState } from "react";
import { useLoggedInUser } from "@/contexts/UsersProvider";
import { Group } from "@/interfaces/Group";
import {Group, GroupResource} from "@/interfaces/Group";
import { Peer } from "@/interfaces/Peer";
type Props = {
@@ -102,6 +102,13 @@ export function GroupsProviderContent({
return peer.id;
}) as string[];
let resources = group?.resources?.map((r) => {
let isString = typeof r === "string";
if (isString) return r;
let resource = r as GroupResource;
return resource.id;
}) as string[];
if (group.name === "All") return Promise.resolve(group);
const groupID =
@@ -112,6 +119,7 @@ export function GroupsProviderContent({
{
name: group.name,
peers: peers,
resources: resources,
},
`/${group.id}`,
);
@@ -119,6 +127,7 @@ export function GroupsProviderContent({
return groupRequest.post({
name: group.name,
peers: peers,
resources: resources,
});
}
};

View File

@@ -3,7 +3,7 @@ export interface Group {
name: string;
peers?: GroupPeer[] | string[];
peers_count?: number;
resources?: string[];
resources?: GroupResource[] | string[];
resources_count?: number;
// Frontend only
@@ -14,3 +14,8 @@ export interface GroupPeer {
id: string;
name: string;
}
export interface GroupResource {
id: string;
type: string;
}

View File

@@ -124,6 +124,7 @@ export const AssignGroupToPeerModalContent = ({
} as GroupPeer;
}),
peers_count: selectedPeers.length,
resources: group.resources,
keepClientState: true,
});
return;
@@ -138,6 +139,7 @@ export const AssignGroupToPeerModalContent = ({
{
name: group.name,
peers: selectedPeers.map((peer) => peer.id),
resources: group.resources,
},
"/" + group?.id,
);
@@ -146,6 +148,7 @@ export const AssignGroupToPeerModalContent = ({
groupRequest.post({
name: group.name,
peers: selectedPeers.map((peer) => peer.id),
resources: group.resources,
});
}
notify({

View File

@@ -80,6 +80,7 @@ export default function useGroupHelper({ initial = [], peer }: Props) {
return groupRequest.put(
{
name: g.name,
resources: g.resources,
peers: newPeerGroups
? newPeerGroups.map((p) => {
const groupPeer = p as GroupPeer;
@@ -112,6 +113,7 @@ export default function useGroupHelper({ initial = [], peer }: Props) {
{
name: selectedGroup.name,
peers: peers,
resources: selectedGroup.resources,
},
`/${selectedGroup.id}`,
);
@@ -122,6 +124,7 @@ export default function useGroupHelper({ initial = [], peer }: Props) {
.post({
name: selectedGroup.name,
peers: groupPeers || [],
resources: selectedGroup.resources,
})
.then((group) => {
setSelectedGroups((prev) => {

View File

@@ -131,7 +131,7 @@ const Content = ({ network, onCreated, onUpdated }: ContentProps) => {
<div className={"w-full"}>
<Paragraph className={"text-sm mt-auto"}>
Learn more about
<InlineLink href={"https://docs.netbird.io/how-to/networks-concept"} target={"_blank"}>
<InlineLink href={"https://docs.netbird.io/how-to/networks"} target={"_blank"}>
Networks
<ExternalLinkIcon size={12} />
</InlineLink>

View File

@@ -161,7 +161,7 @@ export function ResourceModalContent({
<div className={"w-full"}>
<Paragraph className={"text-sm mt-auto"}>
Learn more about
<InlineLink href={"https://docs.netbird.io/how-to/networks-concept#resources"} target={"_blank"}>
<InlineLink href={"https://docs.netbird.io/how-to/networks#resources"} target={"_blank"}>
Resources
<ExternalLinkIcon size={12} />
</InlineLink>

View File

@@ -294,7 +294,7 @@ function RoutingPeerModalContent({
Learn more about
<InlineLink
href={
"https://docs.netbird.io/how-to/networks-concept#routing-peers"
"https://docs.netbird.io/how-to/networks#routing-peers"
}
target={"_blank"}
>

View File

@@ -147,7 +147,7 @@ export default function NetworksTable({
Learn more about
<InlineLink
href={
"https://docs.netbird.io/how-to/networks-concept"
"https://docs.netbird.io/how-to/networks"
}
target={"_blank"}
>

View File

@@ -182,6 +182,7 @@ const PeerGroupMassAssignmentContent = ({
{
name: group.name,
peers: group.peers,
resources: group.resources,
},
"/" + group.id,
);