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

feat: projects integration #2113

Open
wants to merge 66 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
f9447c9
api: add create, get and get all endpoints
suhailkakar Mar 25, 2024
9548024
feat: add create project option
suhailkakar Mar 25, 2024
5c9e90d
feat: add project toggle
suhailkakar Mar 29, 2024
f5dea08
ui: add active project to breadcrumb
suhailkakar Mar 29, 2024
7c514f3
add projectsId to assets API
suhailkakar Mar 29, 2024
7e5bdeb
Update index.tsx
suhailkakar Mar 29, 2024
3050c86
add projectId to api tokens
suhailkakar Apr 2, 2024
897a352
add projectId to stream and wehooks
suhailkakar Apr 2, 2024
eba1def
refactor: sidebar
suhailkakar Apr 5, 2024
3858478
ui: complete settings page
suhailkakar Apr 5, 2024
5230c01
ui: fix nav active state
suhailkakar Apr 8, 2024
e970864
ui: add project selection logic
suhailkakar Apr 8, 2024
5bdecd1
minimial changes..
suhailkakar Apr 8, 2024
12803a8
ui: fix ui issues
suhailkakar Apr 8, 2024
7d16a5d
ui: update sidebar
suhailkakar Apr 14, 2024
988519f
refactor: moved settings pages to account
suhailkakar Apr 15, 2024
5fdb064
ui: made project til responsive
suhailkakar Apr 15, 2024
be166b0
refactor: change folder structure
suhailkakar Apr 15, 2024
0a6aa15
ui: update project settings
suhailkakar Apr 15, 2024
c1ad0d1
ui: add new project button
suhailkakar Apr 15, 2024
f5513f2
updating all links to new folder structure
suhailkakar Apr 15, 2024
93e5f39
merged with main
suhailkakar May 3, 2024
7860ea1
updated folder structure and page linking
suhailkakar May 3, 2024
24bf2ff
fixed merge conflicts
suhailkakar May 3, 2024
ca22fdc
add placeholders
suhailkakar May 3, 2024
cc4514b
misc fixes
adamsoffer May 15, 2024
c7888de
fix build
adamsoffer May 15, 2024
b06ee78
fix project dropdown
adamsoffer May 15, 2024
febfcce
fix: update redirect logic
suhailkakar May 28, 2024
8a64527
update typo import
suhailkakar May 28, 2024
d7fdf83
clean up imports
suhailkakar May 29, 2024
8f753ec
fix redirect link logic
suhailkakar May 29, 2024
a01c5f3
api: update use query logic
suhailkakar May 29, 2024
3b95660
api: add projectId to api keys, asset, session, stream and webhook
suhailkakar May 31, 2024
49a3179
feat: add project context
suhailkakar May 31, 2024
b5408a3
ui: update project context
suhailkakar May 31, 2024
d88434a
add refetch on change in projectId
suhailkakar May 31, 2024
2a5129a
update react-tooltip import
suhailkakar May 31, 2024
a2b1dd0
remove PROJECT_ID_KEY localstorage key
suhailkakar May 31, 2024
4fb3a0d
revert: react tooltip
suhailkakar May 31, 2024
28b6101
Merge branch 'master' into sk/projects-ui
suhailkakar May 31, 2024
cb5c6ab
fix build error
suhailkakar May 31, 2024
6a5214e
Merge branch 'sk/projects-ui' of https://github.com/livepeer/studio i…
suhailkakar May 31, 2024
08017f7
fix build error
suhailkakar May 31, 2024
5d13e4d
Update yarn.lock
suhailkakar Jun 3, 2024
53b1613
upgraded react-tooltip to v5
suhailkakar Jun 3, 2024
1e74457
remove
suhailkakar Jun 3, 2024
99faa12
ui: add patch api
suhailkakar Jun 4, 2024
165d0ea
update redirect on dashboard page
suhailkakar Jun 4, 2024
9e153ad
Update index.tsx
suhailkakar Jun 4, 2024
bb4d43d
revert: dev api link
suhailkakar Jun 6, 2024
da08a69
Update index.tsx
suhailkakar Jun 7, 2024
d4a03c5
ui: add features model
suhailkakar Jun 10, 2024
312cc1f
add custom delete model and minor fixes
suhailkakar Jun 13, 2024
aa4f9fa
fixed onClick event for projectTile
suhailkakar Jun 14, 2024
0cd8a93
renamed My default project to default project
suhailkakar Jun 14, 2024
f1f9877
update project fetching in sidebar
suhailkakar Jun 14, 2024
64d0fa7
fix sidebar nav link (collapse issue)
suhailkakar Jun 14, 2024
bfc12fe
commented out the delete feature
suhailkakar Jun 17, 2024
01fc504
more ui/ux update
suhailkakar Jun 19, 2024
6cb63ea
fix build error
suhailkakar Jun 19, 2024
a91bfb0
refactor sidebar
suhailkakar Jun 19, 2024
e5837d6
refactor: update settings pages
suhailkakar Jun 23, 2024
d103fb2
refactor: update the home page
suhailkakar Jun 23, 2024
39f4967
more refactoring
suhailkakar Jun 23, 2024
cd7f61f
remove firstName prop in GettingStarted component
suhailkakar Jun 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
63 changes: 19 additions & 44 deletions packages/www/components/Admin/CommonAdminTable/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
useRowSelect,
} from "react-table";
import Help from "../../../public/img/help.svg";
import ReactTooltip from "react-tooltip";
import { Tooltip } from "react-tooltip";
import { User, Stream } from "@livepeer.studio/api";
import "regenerator-runtime/runtime";

Expand Down Expand Up @@ -44,20 +44,12 @@ export const StreamName = ({
admin?: boolean;
}) => {
const pid = `stream-name-${stream.id}-${name}`;
const tooltipContent = `Created by token ${stream?.createdByTokenName}`;
const query = admin ? { admin: true } : {};
return (
<Box>
{stream.createdByTokenName ? (
<ReactTooltip
id={pid}
className="tooltip"
place="top"
type="dark"
effect="solid">
Created by token <b>{stream.createdByTokenName}</b>
</ReactTooltip>
) : null}
<Box data-tip data-for={pid}>
{stream.createdByTokenName ? <Tooltip id={pid} /> : null}
<Box data-tooltip-id={pid} data-tooltip-content={tooltipContent}>
<Link
href={{ pathname: "/app/stream/[id]", query }}
as={`/app/stream/${stream.id}`}>
Expand Down Expand Up @@ -93,15 +85,10 @@ export const RelativeTime = ({
<Box id={idpref} key={idpref}>
{tm ? (
<>
<ReactTooltip
id={`tooltip-${idpref}`}
className="tooltip"
place="top"
type="dark"
effect="solid">
{toolTip}
</ReactTooltip>
<span data-tip data-for={`tooltip-${idpref}`}>
<Tooltip id={`tooltip-${idpref}`} />
<span
data-tooltip-id={`tooltip-${idpref}`}
data-tooltip-content={toolTip}>
{main}
</span>
</>
Expand All @@ -114,27 +101,23 @@ export const RelativeTime = ({

export const UserName = ({ user }: { user: User }) => {
const tid = `tooltip-name-${user.id}`;
const tcontent = `
${user.id}
${user.firstName}
${user.lastName}
`;
return (
<Box
sx={{
overflow: "hidden",
textOverflow: "ellipsis",
}}>
<ReactTooltip
id={tid}
className="tooltip"
place="top"
type="dark"
effect="solid">
<span>{user.id}</span>
<span>{user.firstName}</span>
<span>{user.lastName}</span>
</ReactTooltip>
<span data-tip data-for={tid}>
<span data-tooltip-id={tid} data-tooltip-content={tcontent}>
{user.email.includes("@")
? user.email.split("@").join("@\u{200B}")
: user.email}
</span>
<Tooltip id={tid} />
</Box>
);
};
Expand Down Expand Up @@ -311,7 +294,7 @@ const CommonAdminTable = ({
</Button>
<Button
variant="secondarySmall"
disabled={rows.length < rowsPerPage || nextCursor === ""}
disabled={rows.length < +rowsPerPage || nextCursor === ""}
sx={{ margin: 0, ml: 2, padding: "2px", px: "4px" }}
onClick={() => {
prevCursor.push(cursor);
Expand Down Expand Up @@ -458,18 +441,10 @@ const CommonAdminTable = ({
<Flex
sx={{ alignItems: "center", ml: "auto", mr: "1em" }}>
<Flex>
<ReactTooltip
id={`tooltip-multiorder`}
className="tooltip"
place="top"
type="dark"
effect="solid">
To multi-sort (sort by two column simultaneously)
hold shift while clicking on second column name.
</ReactTooltip>
<Tooltip id={`tooltip-multiorder`} />
<Help
data-tip
data-for={`tooltip-multiorder`}
data-tooltip-id={`tooltip-multiorder`}
data-tooltip-content="To multi-sort (sort by two column simultaneously) hold shift while clicking on second column name."
sx={{
cursor: "pointer",
ml: 1,
Expand Down
15 changes: 4 additions & 11 deletions packages/www/components/Admin/StreamsTable/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/** @jsxImportSource @emotion/react */
import { jsx } from "theme-ui";
import Link from "next/link";
import ReactTooltip from "react-tooltip";
import { Tooltip } from "react-tooltip";
import { useCallback, useEffect, useMemo, useState } from "react";
import { useApi, usePageVisibility } from "hooks";
import { Box, Button, Flex, Container, Link as A } from "@theme-ui/components";
Expand Down Expand Up @@ -95,17 +95,10 @@ export const RenditionsDetails = ({ stream }: { stream: Stream }) => {
{detailsTooltip ? (
<Flex sx={{ alignItems: "center" }}>
<Flex>
<ReactTooltip
id={`tooltip-details-${stream.id}`}
className="tooltip"
place="top"
type="dark"
effect="solid">
{detailsTooltip}
</ReactTooltip>
<Tooltip id={`tooltip-details-${stream.id}`} />
<Help
data-tip
data-for={`tooltip-details-${stream.id}`}
data-tooltip-id={`tooltip-details-${stream.id}`}
data-tooltip-content={`${detailsTooltip}`}
sx={{
color: "muted",
cursor: "pointer",
Expand Down
15 changes: 4 additions & 11 deletions packages/www/components/Admin/Table-v2/cells/streams-table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { jsx } from "theme-ui";
import { Stream } from "@livepeer.studio/api";
import { Box } from "@theme-ui/components";
import { Flex } from "@theme-ui/components";
import ReactTooltip from "react-tooltip";
import { Tooltip } from "react-tooltip";
import { CellComponentProps, TableData } from "../types";
import Help from "../../../../public/img/help.svg";

Expand Down Expand Up @@ -91,23 +91,16 @@ const RenditionsDetailsCell = <D extends TableData>({
{detailsTooltip ? (
<Flex sx={{ alignItems: "center" }}>
<Flex>
<ReactTooltip
id={`tooltip-details-${stream.id}`}
className="tooltip"
place="top"
type="dark"
effect="solid">
{detailsTooltip}
</ReactTooltip>
<Help
data-tip
data-for={`tooltip-details-${stream.id}`}
data-tooltip-id={`tooltip-details-${stream.id}`}
content={`${detailsTooltip}`}
sx={{
color: "muted",
cursor: "pointer",
ml: 1,
}}
/>
<Tooltip id={`tooltip-details-${stream.id}`} />
</Flex>
</Flex>
) : null}
Expand Down
15 changes: 3 additions & 12 deletions packages/www/components/Admin/Table-v2/cells/text.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/** @jsxImportSource @emotion/react */
import { jsx } from "theme-ui";
import Link from "next/link";
import ReactTooltip from "react-tooltip";
import { Tooltip } from "react-tooltip";
import { CellComponentProps, TableData } from "../types";

export type TextCellProps = {
Expand All @@ -17,17 +17,8 @@ const TextCell = <D extends TableData>({
const pid = "tooltip-" + cell.value.id;
return (
<div>
{cell.value.tooltipChildren ? (
<ReactTooltip
id={pid}
className="tooltip"
place="top"
type="dark"
effect="solid">
{cell.value.tooltipChildren}
</ReactTooltip>
) : null}
<div data-tip data-for={pid}>
{cell.value.tooltipChildren ? <Tooltip id={pid} /> : null}
<div data-tooltip-id={pid} content={`${cell?.value?.tooltipChildren}`}>
{cell.value.href ? (
<Link href={cell.value.href}>{cell.value.children}</Link>
) : (
Expand Down
16 changes: 4 additions & 12 deletions packages/www/components/Admin/Table-v2/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
} from "react-table";
import { useEffect, useMemo, useCallback } from "react";
import Paginator from "./paginator";
import ReactTooltip from "react-tooltip";
import { Tooltip } from "react-tooltip";
import Help from "../../../public/img/help.svg";
import Checkbox from "components/Admin/Checkbox";
import {
Expand Down Expand Up @@ -294,18 +294,10 @@ const Table = <T extends Record<string, unknown>>({
top: "50%",
transform: "translateY(-50%)",
}}>
<ReactTooltip
id={`tooltip-multiorder`}
className="tooltip"
place="top"
type="dark"
effect="solid">
To multi-sort (sort by two column simultaneously)
hold shift while clicking on second column name.
</ReactTooltip>
<Tooltip id={`tooltip-multiorder`} />
<Help
data-tip
data-for={`tooltip-multiorder`}
data-tooltip-id={`tooltip-multiorder`}
data-tooltip-content={`To multi-sort (sort by two column simultaneously) hold shift while clicking on second column name.`}
sx={{
cursor: "pointer",
ml: 1,
Expand Down
8 changes: 7 additions & 1 deletion packages/www/components/ApiKeys/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useCallback, useMemo, useState } from "react";
import { useCallback, useEffect, useMemo, useState } from "react";
import { useApi } from "../../hooks";
import Table, {
DefaultSortBy,
Expand All @@ -17,6 +17,7 @@ import {
import { makeCreateAction, makeSelectAction } from "../Table/helpers";
import TableStateDeleteDialog from "../Table/components/TableStateDeleteDialog";
import { useJune, events } from "hooks/use-june";
import { useProjectContext } from "context/ProjectContext";

const ApiKeysTable = ({
title = "API Keys",
Expand All @@ -32,6 +33,7 @@ const ApiKeysTable = ({
});
const deleteDialogState = useToggleState();
const createDialogState = useToggleState();
const { projectId } = useProjectContext();
const columns = useMemo(makeColumns, []);
const June = useJune();

Expand All @@ -44,6 +46,10 @@ const ApiKeysTable = ({
if (June) June.track(events.developer.apiKeyCreate);
}, [June]);

useEffect(() => {
stateSetter.setProjectId(projectId);
}, [projectId]);

return (
<>
<Table
Expand Down
13 changes: 7 additions & 6 deletions packages/www/components/AssetsTable/helpers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ export const rowsPageFromState = async (
userId: string,
getAssets: ApiClient["getAssets"],
getTasks: ApiClient["getTasks"],
onDeleteAsset: Function
onDeleteAsset: Function,
appendProjectId: Function
): Promise<RowsPageFromStateResult<AssetsTableData>> => {
const assetsPromise = getAssets(userId, {
filters: formatFiltersForApiRequest(state.filters),
Expand Down Expand Up @@ -137,7 +138,7 @@ export const rowsPageFromState = async (
id: asset.id,
name: {
id: asset.id,
href: `/assets/${asset.id}`,
href: appendProjectId(`/assets/${asset.id}`),
name: asset.name,
isStatusFailed,
errorMessage,
Expand All @@ -149,18 +150,18 @@ export const rowsPageFromState = async (
</Box>
),
fallback: <Box css={{ color: "$primary8" }}>—</Box>,
href: `/assets/${asset.id}`,
href: appendProjectId(`/assets/${asset.id}`),
},
sessionId: {
children: <Box>{sessionId}</Box>,
fallback: <Box css={{ color: "$primary8" }}>—</Box>,
href: `/sessions?sessionId=${sessionId}`,
href: appendProjectId(`/sessions?sessionId=${sessionId}`),
},
createdAt: {
id: asset.id,
date: new Date(asset.createdAt),
fallback: <Box css={{ color: "$primary8" }}>—</Box>,
href: `/assets/${asset.id}`,
href: appendProjectId(`/assets/${asset.id}`),
asset: asset as Asset, // CreatedAt cell expect SDK asset instead of API
},
updatedAt: {
Expand All @@ -169,7 +170,7 @@ export const rowsPageFromState = async (
? new Date(asset.status.updatedAt)
: null,
fallback: <Box css={{ color: "$primary8" }}>—</Box>,
href: `/assets/${asset.id}`,
href: appendProjectId(`/assets/${asset.id}`),
},
action: {
id: asset.id,
Expand Down
19 changes: 16 additions & 3 deletions packages/www/components/AssetsTable/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useCallback, useMemo } from "react";
import { useCallback, useEffect, useMemo } from "react";
import { useApi } from "hooks";
import Table, {
useTableState,
Expand All @@ -17,6 +17,7 @@ import {
rowsPageFromState,
} from "./helpers";
import { makeCreateAction } from "../Table/helpers";
import { useProjectContext } from "context/ProjectContext";

const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));

Expand All @@ -36,6 +37,7 @@ const AssetsTable = ({
const { getAssets, uploadAssets, deleteAsset, getTasks, getFileUploads } =
useApi();
const [openSnackbar] = useSnackbar();
const { appendProjectId, projectId } = useProjectContext();
const createDialogState = useToggleState();
const { state, stateSetter } = useTableState<AssetsTableData>({
pageSize,
Expand Down Expand Up @@ -71,10 +73,21 @@ const AssetsTable = ({

const fetcher: Fetcher<AssetsTableData> = useCallback(
async (state) =>
rowsPageFromState(state, userId, getAssets, getTasks, onDeleteAsset),
[userId]
rowsPageFromState(
state,
userId,
getAssets,
getTasks,
onDeleteAsset,
appendProjectId
),
[userId, appendProjectId]
);

useEffect(() => {
stateSetter.setProjectId(projectId);
}, [projectId]);

return (
<>
<Table
Expand Down