diff --git a/packages/app/app/studio/[organization]/(root)/page.tsx b/packages/app/app/studio/[organization]/(root)/page.tsx
index 1ed387168..569fc9ee2 100644
--- a/packages/app/app/studio/[organization]/(root)/page.tsx
+++ b/packages/app/app/studio/[organization]/(root)/page.tsx
@@ -1,7 +1,5 @@
-'use server';
-
import TableSkeleton from '@/components/misc/Table/TableSkeleton';
-import { LivestreamPageParams, eSort } from '@/lib/types';
+import { LivestreamPageParams } from '@/lib/types';
import CreateLivestreamModal from './livestreams/components/CreateLivestreamModal';
import { Suspense } from 'react';
import { fetchOrganization } from '@/lib/services/organizationService';
@@ -26,8 +24,6 @@ export default async function OrganizationPage({
if (!organization) return notFound();
- const hasFeatures = isFeatureAvailable(organization.expirationDate);
-
// Calculate the start of the current day
const startOfDay = new Date();
startOfDay.setHours(0, 0, 0, 0);
@@ -37,7 +33,7 @@ export default async function OrganizationPage({
Create
- {hasFeatures ? (
+ {isFeatureAvailable(organization.expirationDate) ? (
)}
- {hasFeatures ? (
+ {isFeatureAvailable(organization.expirationDate) ? (
) : (
)}
- {hasFeatures ? (
+ {isFeatureAvailable(organization.expirationDate) ? (
diff --git a/packages/app/components/Layout/NavbarStudio.tsx b/packages/app/components/Layout/NavbarStudio.tsx
index 39e8f24d7..abdb1b282 100644
--- a/packages/app/components/Layout/NavbarStudio.tsx
+++ b/packages/app/components/Layout/NavbarStudio.tsx
@@ -1,16 +1,15 @@
import React from 'react';
import Image from 'next/image';
import SearchBar from '@/components/misc/SearchBar';
-import Link from 'next/link';
import { NavigationMenu } from '@/components/ui/navigation-menu';
import { IExtendedOrganization } from '@/lib/types';
import UserProfile from '@/components/misc/UserProfile';
import CreateLivestreamModal from '@/app/studio/[organization]/(root)/livestreams/components/CreateLivestreamModal';
import UploadVideoDialog from '@/app/studio/[organization]/(root)/library/components/UploadVideoDialog';
-import LogoDark from '@/public/logo_dark.png';
import FeatureButton from '../ui/feature-button';
import { Radio, FileUp } from 'lucide-react';
import { isFeatureAvailable } from '@/lib/utils/utils';
+import { notFound } from 'next/navigation';
const NavbarStudio = ({
showSearchBar = true,
@@ -28,7 +27,7 @@ const NavbarStudio = ({
);
if (!organization) {
- return null;
+ return notFound();
}
return (
diff --git a/packages/server/src/services/organization.service.ts b/packages/server/src/services/organization.service.ts
index e1e1933f4..7de7c8866 100644
--- a/packages/server/src/services/organization.service.ts
+++ b/packages/server/src/services/organization.service.ts
@@ -54,6 +54,11 @@ export default class OrganizationService {
throw new HttpException(404, 'Organization not found');
}
+ // Prevent currentStages from going below zero
+ if (typeof organizationUpdate.currentStages === 'number') {
+ organizationUpdate.currentStages = Math.max(0, organizationUpdate.currentStages);
+ }
+
// Merge current org with updates
const updatedOrg: IOrganization = {
...currentOrg,
diff --git a/packages/server/src/services/stage.service.ts b/packages/server/src/services/stage.service.ts
index 834c300e7..fc919c52b 100644
--- a/packages/server/src/services/stage.service.ts
+++ b/packages/server/src/services/stage.service.ts
@@ -124,11 +124,14 @@ export default class StageService {
const stage = await this.get(stageId);
await deleteStream(stage.streamSettings.streamId);
- // Decrement currentStages for the organization
- await Organization.findByIdAndUpdate(
- stage.organizationId,
- { $inc: { currentStages: -1 } }
- );
+ // Get organization and only decrement if currentStages > 0
+ const organization = await Organization.findById(stage.organizationId);
+ if (organization && organization.currentStages > 0) {
+ await Organization.findByIdAndUpdate(
+ stage.organizationId,
+ { $inc: { currentStages: -1 } }
+ );
+ }
return await this.controller.store.delete(stageId);
}