hunk.code_window:       return;
       }
       // Embed theme takes precedence over theme configured in app. If embedTheme isn't set that is it's in 'Auto' mode, then it would use the theme configured in appearance.
       const finalThemeToSet = embedTheme || themeToSet;
       if (!finalThemeToSet || finalThemeToSet === activeTheme) return;
  
hunk.labels: keep keep keep replace replace keep keep keep
hunk.after_edit:     // Embed theme takes precedence over theme configured in app.
       // If embedTheme isn't set i.e. it's not explicitly configured with a theme, then it would use the theme configured in appearance.
       // If embedTheme is set to "auto" then we consider it as null which then uses system theme.
       const finalThemeToSet = embedTheme ? (embedTheme === "auto" ? null : embedTheme) : themeToSet;
  
hunk.file_path: packages/lib/hooks/useTheme.tsx
hunk.type: replace
file: import type { NextApiRequest, NextApiResponse } from "next";
  
  import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode";
  import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
  import { hashPassword } from "@calcom/features/auth/lib/hashPassword";
  import { verifyPassword } from "@calcom/features/auth/lib/verifyPassword";
  import prisma from "@calcom/prisma";
  import { IdentityProvider } from "@calcom/prisma/enums";
  
  export default async function handler(req: NextApiRequest, res: NextApiResponse) {
    const session = await getServerSession({ req, res });
  
    if (!session || !session.user || !session.user.email) {
      res.status(401).json({ message: "Not authenticated" });
      return;
    }
  
    const user = await prisma.user.findFirst({
      where: {
        email: session.user.email,
      },
      select: {
        id: true,
        password: true,
        identityProvider: true,
      },
    });
  
    if (!user) {
      res.status(404).json({ message: "User not found" });
      return;
    }
  
    if (user.identityProvider !== IdentityProvider.CAL) {
      return res.status(400).json({ error: ErrorCode.ThirdPartyIdentityProviderEnabled });
    }
  
    const oldPassword = req.body.oldPassword;
    const newPassword = req.body.newPassword;
  
    const currentPassword = user.password;
    if (!currentPassword) {
      return res.status(400).json({ error: ErrorCode.UserMissingPassword });
    }
  
    const passwordsMatch = await verifyPassword(oldPassword, currentPassword);
    if (!passwordsMatch) {
      return res.status(403).json({ error: ErrorCode.IncorrectPassword });
    }
  
    if (oldPassword === newPassword) {
      return res.status(400).json({ error: ErrorCode.NewPasswordMatchesOld });
    }
  
    const hashedPassword = await hashPassword(newPassword);
    await prisma.user.update({
      where: {
        id: user.id,
      },
      data: {
        password: hashedPassword,
      },
    });
  
    res.status(200).json({ message: "Password updated successfully" });
  }
  