mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 04:15:30 +00:00
## Problem If a repository is added **after** a search context (e.g., a new repository is synced from the code host), then it will never be added to the context even if it should be included. The workaround is to restart the instance. ## Solution This PR adds a call to re-sync all search contexts whenever a connection is successfully synced. This PR adds the `@sourcebot/shared` package that contains `syncSearchContexts.ts` (previously in web) and it's dependencies (namely the entitlements system). ## Why another package? Because the `syncSearchContexts` call is now called from: 1. `initialize.ts` in **web** - handles syncing search contexts on startup and whenever the config is modified in watch mode. This is the same as before. 2. `connectionManager.ts` in **backend** - syncs the search contexts whenever a connection is successfully synced. ## Follow-up devex work Two things: 1. We have several very thin shared packages (i.e., `crypto`, `error`, and `logger`) that we can probably fold into this "general" shared package. `schemas` and `db` _feels_ like they should remain separate (mostly because they are "code-gen" packages). 2. When running `yarn dev`, any changes made to the shared package will only get picked if you `ctrl+c` and restart the instance. Would be nice if we have watch mode work across package dependencies in the monorepo.
53 lines
No EOL
1.9 KiB
TypeScript
53 lines
No EOL
1.9 KiB
TypeScript
import type { Metadata } from "next";
|
|
import "./globals.css";
|
|
import { ThemeProvider } from "next-themes";
|
|
import { QueryClientProvider } from "./queryClientProvider";
|
|
import { PostHogProvider } from "./posthogProvider";
|
|
import { Toaster } from "@/components/ui/toaster";
|
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
import { SessionProvider } from "next-auth/react";
|
|
import { env } from "@/env.mjs";
|
|
import { PlanProvider } from "@/features/entitlements/planProvider";
|
|
import { getEntitlements } from "@sourcebot/shared";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Sourcebot",
|
|
description: "Sourcebot",
|
|
manifest: "/manifest.json",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html
|
|
lang="en"
|
|
// @see : https://github.com/pacocoursey/next-themes?tab=readme-ov-file#with-app
|
|
suppressHydrationWarning
|
|
>
|
|
<body>
|
|
<Toaster />
|
|
<SessionProvider>
|
|
<PlanProvider entitlements={getEntitlements()}>
|
|
<PostHogProvider disabled={env.SOURCEBOT_TELEMETRY_DISABLED === "true"}>
|
|
<ThemeProvider
|
|
attribute="class"
|
|
defaultTheme="system"
|
|
enableSystem
|
|
disableTransitionOnChange
|
|
>
|
|
<QueryClientProvider>
|
|
<TooltipProvider>
|
|
{children}
|
|
</TooltipProvider>
|
|
</QueryClientProvider>
|
|
</ThemeProvider>
|
|
</PostHogProvider>
|
|
</PlanProvider>
|
|
</SessionProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
} |