Skip to content
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
6 changes: 0 additions & 6 deletions .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,6 @@ CONFIG_PATH=${PWD}/config.json # Path to the sourcebot config file (if one exist
# Redis
REDIS_URL="redis://localhost:6379"

# Stripe
# STRIPE_SECRET_KEY: z.string().optional(),
# STRIPE_PRODUCT_ID: z.string().optional(),
# STRIPE_WEBHOOK_SECRET: z.string().optional(),
# STRIPE_ENABLE_TEST_CLOCKS=false

# Agents

# GITHUB_APP_ID=
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
Warnings:

- You are about to drop the column `stripeCustomerId` on the `Org` table. All the data in the column will be lost.
- You are about to drop the column `stripeLastUpdatedAt` on the `Org` table. All the data in the column will be lost.
- You are about to drop the column `stripeSubscriptionStatus` on the `Org` table. All the data in the column will be lost.

*/
-- AlterTable
ALTER TABLE "Org" DROP COLUMN "stripeCustomerId",
DROP COLUMN "stripeLastUpdatedAt",
DROP COLUMN "stripeSubscriptionStatus";

-- DropEnum
DROP TYPE "StripeSubscriptionStatus";
9 changes: 0 additions & 9 deletions packages/db/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,6 @@ enum ConnectionSyncStatus {
FAILED
}

enum StripeSubscriptionStatus {
ACTIVE
INACTIVE
}

enum ChatVisibility {
PRIVATE
PUBLIC
Expand Down Expand Up @@ -283,10 +278,6 @@ model Org {

memberApprovalRequired Boolean @default(true)

stripeCustomerId String?
stripeSubscriptionStatus StripeSubscriptionStatus?
stripeLastUpdatedAt DateTime?

/// List of pending invites to this organization
invites Invite[]

Expand Down
1 change: 0 additions & 1 deletion packages/shared/src/entitlements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ export type Plan = keyof typeof planLabels;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const entitlements = [
"search-contexts",
"billing",
"anonymous-access",
"multi-tenancy",
"sso",
Expand Down
6 changes: 0 additions & 6 deletions packages/shared/src/env.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,12 +163,6 @@ const options = {
SMTP_PASSWORD: z.string().optional(),
EMAIL_FROM_ADDRESS: z.string().email().optional(),

// Stripe
STRIPE_SECRET_KEY: z.string().optional(),
STRIPE_PRODUCT_ID: z.string().optional(),
STRIPE_WEBHOOK_SECRET: z.string().optional(),
STRIPE_ENABLE_TEST_CLOCKS: booleanSchema.default('false'),

LOGTAIL_TOKEN: z.string().optional(),
LOGTAIL_HOST: z.string().url().optional(),

Expand Down
4 changes: 0 additions & 4 deletions packages/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"openapi:generate": "tsx tools/generateOpenApi.ts",
"generate:protos": "proto-loader-gen-types --includeComments --longs=Number --enums=String --defaults --oneofs --grpcLib=@grpc/grpc-js --keepCase --includeDirs=../../vendor/zoekt/grpc/protos --outDir=src/proto zoekt/webserver/v1/webserver.proto zoekt/webserver/v1/query.proto",
"dev:emails": "email dev --dir ./src/emails",
"stripe:listen": "stripe listen --forward-to http://localhost:3000/api/stripe",
"tool:decrypt-jwe": "tsx tools/decryptJWE.ts"
},
"dependencies": {
Expand Down Expand Up @@ -102,8 +101,6 @@
"@sourcebot/schemas": "workspace:*",
"@sourcebot/shared": "workspace:*",
"@ssddanbrown/codemirror-lang-twig": "^1.0.0",
"@stripe/react-stripe-js": "^3.1.1",
"@stripe/stripe-js": "^5.6.0",
"@tailwindcss/typography": "^0.5.16",
"@tanstack/react-query": "^5.53.3",
"@tanstack/react-table": "^8.20.5",
Expand Down Expand Up @@ -187,7 +184,6 @@
"slate-history": "^0.113.1",
"slate-react": "^0.117.1",
"strip-json-comments": "^5.0.1",
"stripe": "^17.6.0",
"tailwind-merge": "^2.5.2",
"tailwindcss-animate": "^1.0.7",
"use-stick-to-bottom": "^1.1.3",
Expand Down
3 changes: 0 additions & 3 deletions packages/web/src/__mocks__/prisma.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ export const MOCK_ORG: Org = {
imageUrl: null,
metadata: null,
memberApprovalRequired: false,
stripeCustomerId: null,
stripeSubscriptionStatus: null,
stripeLastUpdatedAt: null,
inviteLinkEnabled: false,
inviteLinkId: null
}
Expand Down
33 changes: 6 additions & 27 deletions packages/web/src/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { prisma } from "@/prisma";
import { render } from "@react-email/components";
import * as Sentry from '@sentry/nextjs';
import { generateApiKey, getTokenFromConfig, hashSecret } from "@sourcebot/shared";
import { ApiKey, ConnectionSyncJobStatus, Org, OrgRole, Prisma, RepoIndexingJobStatus, RepoIndexingJobType, StripeSubscriptionStatus } from "@sourcebot/db";
import { ApiKey, ConnectionSyncJobStatus, Org, OrgRole, Prisma, RepoIndexingJobStatus, RepoIndexingJobType } from "@sourcebot/db";
import { createLogger } from "@sourcebot/shared";
import { GiteaConnectionConfig } from "@sourcebot/schemas/v3/gitea.type";
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type";
Expand All @@ -22,8 +22,6 @@ import { createTransport } from "nodemailer";
import { Octokit } from "octokit";
import { auth } from "./auth";
import { getOrgFromDomain } from "./data/org";
import { getSubscriptionForOrg } from "./ee/features/billing/serverUtils";
import { IS_BILLING_ENABLED } from "./ee/features/billing/stripe";
import InviteUserEmail from "./emails/inviteUserEmail";
import JoinRequestApprovedEmail from "./emails/joinRequestApprovedEmail";
import JoinRequestSubmittedEmail from "./emails/joinRequestSubmittedEmail";
Expand Down Expand Up @@ -188,31 +186,12 @@ export const withTenancyModeEnforcement = async<T>(mode: TenancyMode, fn: () =>
export const completeOnboarding = async (domain: string): Promise<{ success: boolean } | ServiceError> => sew(() =>
withAuth((userId) =>
withOrgMembership(userId, domain, async ({ org }) => {
// If billing is not enabled, we can just mark the org as onboarded.
if (!IS_BILLING_ENABLED) {
await prisma.org.update({
where: { id: org.id },
data: {
isOnboarded: true,
}
});

// Else, validate that the org has an active subscription.
} else {
const subscriptionOrError = await getSubscriptionForOrg(org.id, prisma);
if (isServiceError(subscriptionOrError)) {
return subscriptionOrError;
await prisma.org.update({
where: { id: org.id },
data: {
isOnboarded: true,
}

await prisma.org.update({
where: { id: org.id },
data: {
isOnboarded: true,
stripeSubscriptionStatus: StripeSubscriptionStatus.ACTIVE,
stripeLastUpdatedAt: new Date(),
}
});
}
});

return {
success: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import { auth } from "@/auth";
import { Button } from "@/components/ui/button";
import { NavigationMenu as NavigationMenuBase } from "@/components/ui/navigation-menu";
import { Separator } from "@/components/ui/separator";
import { getSubscriptionInfo } from "@/ee/features/billing/actions";
import { IS_BILLING_ENABLED } from "@/ee/features/billing/stripe";
import { env } from "@sourcebot/shared";
import { ServiceErrorException } from "@/lib/serviceError";
import { isServiceError } from "@/lib/utils";
Expand All @@ -16,7 +14,6 @@ import { MeControlDropdownMenu } from "../meControlDropdownMenu";
import WhatsNewIndicator from "../whatsNewIndicator";
import { NavigationItems } from "./navigationItems";
import { ProgressIndicator } from "./progressIndicator";
import { TrialIndicator } from "./trialIndicator";
import { redirect } from "next/navigation";
import { AppearanceDropdownMenu } from "../appearanceDropdownMenu";

Expand All @@ -28,7 +25,6 @@ interface NavigationMenuProps {
export const NavigationMenu = async ({
domain,
}: NavigationMenuProps) => {
const subscription = IS_BILLING_ENABLED ? await getSubscriptionInfo(domain) : null;
const session = await auth();
const isAuthenticated = session?.user !== undefined;

Expand Down Expand Up @@ -134,7 +130,6 @@ export const NavigationMenu = async ({
numberOfReposWithFirstTimeIndexingJobsInProgress={numberOfReposWithFirstTimeIndexingJobsInProgress}
sampleRepos={sampleRepos}
/>
<TrialIndicator subscription={subscription} />
<WhatsNewIndicator />
{session ? (
<MeControlDropdownMenu
Expand Down

This file was deleted.

31 changes: 0 additions & 31 deletions packages/web/src/app/[domain]/components/upgradeGuard.tsx

This file was deleted.

20 changes: 0 additions & 20 deletions packages/web/src/app/[domain]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@ import { auth } from "@/auth";
import { getOrgFromDomain } from "@/data/org";
import { isServiceError } from "@/lib/utils";
import { OnboardGuard } from "./components/onboardGuard";
import { UpgradeGuard } from "./components/upgradeGuard";
import { cookies, headers } from "next/headers";
import { getSelectorsByUserAgent } from "react-device-detect";
import { MobileUnsupportedSplashScreen } from "./components/mobileUnsupportedSplashScreen";
import { MOBILE_UNSUPPORTED_SPLASH_SCREEN_DISMISSED_COOKIE_NAME, OPTIONAL_PROVIDERS_LINK_SKIPPED_COOKIE_NAME } from "@/lib/constants";
import { SyntaxReferenceGuide } from "./components/syntaxReferenceGuide";
import { SyntaxGuideProvider } from "./components/syntaxGuideProvider";
import { IS_BILLING_ENABLED } from "@/ee/features/billing/stripe";
import { notFound, redirect } from "next/navigation";
import { getSubscriptionInfo } from "@/ee/features/billing/actions";
import { PendingApprovalCard } from "./components/pendingApproval";
import { SubmitJoinRequest } from "./components/submitJoinRequest";
import { hasEntitlement } from "@sourcebot/shared";
Expand Down Expand Up @@ -152,23 +149,6 @@ export default async function Layout(props: LayoutProps) {
}
}

if (IS_BILLING_ENABLED) {
const subscription = await getSubscriptionInfo(domain);
if (
subscription &&
(
isServiceError(subscription) ||
(subscription.status !== "active" && subscription.status !== "trialing")
)
) {
return (
<UpgradeGuard>
{children}
</UpgradeGuard>
)
}
}

const headersList = await headers();
const cookieStore = await cookies()
const userAgent = headersList.get('user-agent');
Expand Down
Loading
Loading