Skip to content
Extraits de code Groupes Projets
Valider 74569f52 rédigé par oussama aftys's avatar oussama aftys
Parcourir les fichiers

updated live menu

parent 15c52d58
Branches
1 requête de fusion!143Update 2 files
......@@ -6,6 +6,11 @@ import Breadcrumbs from '@mui/material/Breadcrumbs';
import LinkItem from './link-item';
import { CustomBreadcrumbsProps } from './types';
import { IconButton } from '@mui/material';
import Iconify from '../iconify';
import { useRouter } from 'next/navigation';
import { string } from 'yup';
import { paths } from '@/routes/paths';
// ----------------------------------------------------------------------
......@@ -15,14 +20,22 @@ export default function CustomBreadcrumbs({
heading,
moreLink,
activeLast,
rollbackLink,
sx,
...other
}: CustomBreadcrumbsProps) {
}: CustomBreadcrumbsProps & { rollbackLink?: string }) {
const lastLink = links[links.length - 1].name;
const router = useRouter();
const navigateToLives = () => {
router.push(rollbackLink || paths.dashboard.root)
}
return (
<Box sx={{ ...sx }}>
<Stack direction="row" alignItems="center">
<IconButton sx={{ mr: 2 }} onClick={navigateToLives}>
<Iconify icon="eva:arrow-ios-back-fill" />
</IconButton>
<Box sx={{ flexGrow: 1 }}>
{/* HEADING */}
{heading && (
......
......@@ -26,6 +26,9 @@ export async function addLive(data: any) {
return newData;
}
export async function editLive(liveId: string, data: any) {
try {
const response = await axiosInstance.put(`${endpoints.live.stream}/${liveId}`, { ...data, status: LiveStatus.COMING });
......@@ -196,7 +199,7 @@ export async function stopLive(liveId: string) {
[`${endpoints.live.stream}/${liveId}`],
(live: ILive | null = null) => {
if (live) {
live.status = LiveStatus.REPLAY;
live.status = LiveStatus.REVIEW;
}
return live;
},
......@@ -208,7 +211,7 @@ export async function stopLive(liveId: string) {
(lives: ILiveItem[] = []) => {
const index = lives.findIndex((live) => live.id === liveId);
if (index > -1) {
lives[index].status = LiveStatus.REPLAY;
lives[index].status = LiveStatus.REVIEW;
}
return [...lives];
},
......@@ -244,3 +247,33 @@ export async function startLive(liveId: string) {
true
);
}
export async function publishLive(liveId: string) {
const URL = `${endpoints.live.stream}/${liveId}/publish`;
await axiosInstance.post(URL);
mutate(
[`${endpoints.live.stream}/${liveId}`],
(live: ILive | null = null) => {
if (live) {
live.status = LiveStatus.REPLAY;
}
return live;
},
true
);
mutate(
[endpoints.live.stream],
(lives: ILiveItem[] = []) => {
const index = lives.findIndex((live) => live.id === liveId);
if (index > -1) {
lives[index].status = LiveStatus.ONGOING;
}
return [...lives];
},
true
);
}
......@@ -46,60 +46,62 @@ export default function LiveTableRow({
<TableRow hover >
<TableCell sx={{cursor:'pointer'}} onClick={onDetails}>
<Avatar
alt={title}
src={image}
variant="rounded"
sx={{ width: 64, height: 64, mr: 2 }}
/>
</TableCell>
<TableCell sx={{cursor:'pointer'}} onClick={onDetails} >
{title}
</TableCell>
<TableCell sx={{cursor:'pointer'}} onClick={onDetails}>
<ListItemText
primary={fDate(startDate)}
primaryTypographyProps={{ typography: 'body2', noWrap: true }}
secondaryTypographyProps={{
mt: 0.5,
component: 'span',
typography: 'caption',
}}
/>
</TableCell>
<TableCell sx={{cursor:'pointer'}} onClick={onDetails}>
<ListItemText
primary={fTime(startDate)}
primaryTypographyProps={{ typography: 'body2', noWrap: true }}
secondaryTypographyProps={{
mt: 0.5,
component: 'span',
typography: 'caption',
}}
/>
</TableCell>
<TableCell sx={{cursor:'pointer'}} onClick={onDetails} >{description}</TableCell>
<TableCell sx={{cursor:'pointer'}} onClick={onDetails}>
<Label
variant="soft"
color={
(status == LiveStatus.REPLAY && 'success') ||
(status == LiveStatus.ONGOING && 'warning') ||
(status == LiveStatus.COMING && 'error') ||
'default'
}
>
{
(status == LiveStatus.REPLAY && 'replay') ||
(status == LiveStatus.ONGOING && 'en cours') ||
(status == LiveStatus.COMING && 'à venir')}
</Label>
</TableCell>
<TableCell sx={{ cursor: 'pointer' }} onClick={onDetails}>
<Avatar
alt={title}
src={image}
variant="rounded"
sx={{ width: 64, height: 64, mr: 2 }}
/>
</TableCell>
<TableCell sx={{ cursor: 'pointer' }} onClick={onDetails} >
{title}
</TableCell>
<TableCell sx={{ cursor: 'pointer' }} onClick={onDetails}>
<ListItemText
primary={fDate(startDate)}
primaryTypographyProps={{ typography: 'body2', noWrap: true }}
secondaryTypographyProps={{
mt: 0.5,
component: 'span',
typography: 'caption',
}}
/>
</TableCell>
<TableCell sx={{ cursor: 'pointer' }} onClick={onDetails}>
<ListItemText
primary={fTime(startDate)}
primaryTypographyProps={{ typography: 'body2', noWrap: true }}
secondaryTypographyProps={{
mt: 0.5,
component: 'span',
typography: 'caption',
}}
/>
</TableCell>
<TableCell sx={{ cursor: 'pointer' }} onClick={onDetails} >{description}</TableCell>
<TableCell sx={{ cursor: 'pointer' }} onClick={onDetails}>
<Label
variant="soft"
color={
(status == LiveStatus.REPLAY && 'success') ||
(status == LiveStatus.ONGOING && 'warning') ||
(status == LiveStatus.COMING && 'error') ||
(status == LiveStatus.REVIEW && 'info') || 'default'
}
>
{
(status == LiveStatus.REPLAY && 'replay') ||
(status == LiveStatus.ONGOING && 'en cours') ||
(status == LiveStatus.COMING && 'à venir') ||
(status == LiveStatus.REVIEW && 'en revue')
}
</Label>
</TableCell>
<TableCell align="right" sx={{ px: 1 }}>
<IconButton color={popover.open ? 'inherit' : 'default'} onClick={popover.onOpen}>
......@@ -126,7 +128,19 @@ export default function LiveTableRow({
>
<Iconify icon="solar:eye-bold" />
Details
voir
</MenuItem>
<MenuItem
onClick={() => {
onDetails();
openDetails.onTrue()
popover.onClose();
}}
>
<Iconify icon="gg:details-more"/>
details
</MenuItem>
<MenuItem
onClick={() => {
......@@ -139,7 +153,7 @@ export default function LiveTableRow({
<Iconify icon="solar:pen-bold" />
Modifier
</MenuItem>
<MenuItem
{row.status!= LiveStatus.COMING && <MenuItem
onClick={() => {
onViewStats();
popover.onClose();
......@@ -148,7 +162,18 @@ export default function LiveTableRow({
>
<Iconify icon="icomoon-free:stats-bars" />
Stats
</MenuItem>
</MenuItem>}
{row.status==LiveStatus.REVIEW && <MenuItem
onClick={() => {
onViewStats();
popover.onClose();
}}
style={{ outline: 'none' }}
>
<Iconify icon="icomoon-free:stats-bars" />
publier
</MenuItem>}
</CustomPopover>
</>
);
......
......@@ -96,14 +96,20 @@ export default function AllLivesView() {
label: "en cours",
color: 'warning',
count: getLiveLength(LiveStatus.ONGOING),
},
{
value: LiveStatus.REVIEW,
label: "review",
color: 'info',
count: getLiveLength(LiveStatus.REVIEW),
},
{
value: LiveStatus.REPLAY,
label: "replay",
color: 'success',
count: getLiveLength(LiveStatus.REPLAY),
},
] as const;
const handleFilters = useCallback(
......
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter