Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0910f65b87 | ||
|
|
343f8ee303 | ||
|
|
de479bb2da |
@@ -28,7 +28,6 @@ export const prepareRootMetadata = (recipe: RootMetadataRecipe): Metadata => ({
|
||||
{
|
||||
rel: "icon-mask",
|
||||
url: "/safari-pinned-tab.svg",
|
||||
// @ts-expect-error TODO available in the never Next.js version
|
||||
color: "#000000",
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@calcom/web",
|
||||
"version": "3.5.1",
|
||||
"version": "3.5.2",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"analyze": "ANALYZE=true next build",
|
||||
|
||||
@@ -351,7 +351,7 @@ test.describe("Teams - Org", () => {
|
||||
|
||||
await page.goto(`/team/${team.slug}/${teamEventSlug}`);
|
||||
|
||||
await expect(page.locator('[data-testid="404-page"]')).toBeVisible();
|
||||
await expect(page.locator("text=This page could not be found")).toBeVisible();
|
||||
await doOnOrgDomain(
|
||||
{
|
||||
orgSlug: org.slug,
|
||||
|
||||
@@ -40,6 +40,8 @@ export const withPaidAppRedirect = async ({
|
||||
? {
|
||||
subscription_data: {
|
||||
trial_period_days: trialDays,
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore - trial_settings isn't available cc @erik
|
||||
trial_settings: { end_behavior: { missing_payment_method: "cancel" } },
|
||||
},
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ test.describe("Routing Forms", () => {
|
||||
await page.goto(`apps/routing-forms/route-builder/${formId}`);
|
||||
await disableForm(page);
|
||||
await gotoRoutingLink({ page, formId });
|
||||
await expect(page.locator("text=ERROR 404")).toBeVisible();
|
||||
await expect(page.locator("text=This page could not be found")).toBeVisible();
|
||||
});
|
||||
|
||||
test("should be able to edit the form", async ({ page }) => {
|
||||
|
||||
@@ -8,7 +8,9 @@ export const useCompatSearchParams = () => {
|
||||
Object.getOwnPropertyNames(params).forEach((key) => {
|
||||
searchParams.delete(key);
|
||||
|
||||
const param = params[key];
|
||||
// Though useParams is supposed to return a string/string[] as the key's value but it is found to return undefined as well.
|
||||
// Maybe it happens for pages dir when using optional catch-all routes.
|
||||
const param = params[key] || "";
|
||||
const paramArr = typeof param === "string" ? param.split("/") : param;
|
||||
|
||||
paramArr.forEach((p) => {
|
||||
|
||||
@@ -61,6 +61,8 @@ export const updateProfileHandler = async ({ ctx, input }: UpdateProfileOptions)
|
||||
const userMetadata = handleUserMetadata({ ctx, input });
|
||||
const data: Prisma.UserUpdateInput = {
|
||||
...input,
|
||||
// DO NOT OVERWRITE AVATAR.
|
||||
avatar: undefined,
|
||||
metadata: userMetadata,
|
||||
};
|
||||
|
||||
@@ -138,14 +140,21 @@ export const updateProfileHandler = async ({ ctx, input }: UpdateProfileOptions)
|
||||
// when the email changes, the user needs to sign in again.
|
||||
signOutUser = true;
|
||||
}
|
||||
// don't do anything if avatar is undefined.
|
||||
if (typeof input.avatar !== "undefined") {
|
||||
data.avatarUrl = input.avatar
|
||||
? await uploadAvatar({
|
||||
avatar: await resizeBase64Image(input.avatar),
|
||||
userId: user.id,
|
||||
})
|
||||
: null;
|
||||
// if defined AND a base 64 string, upload and set the avatar URL
|
||||
if (input.avatar && input.avatar.startsWith("data:image/png;base64,")) {
|
||||
const avatar = await resizeBase64Image(input.avatar);
|
||||
data.avatarUrl = await uploadAvatar({
|
||||
avatar,
|
||||
userId: user.id,
|
||||
});
|
||||
// as this is still used in the backwards compatible endpoint, we also write it here
|
||||
// to ensure no data loss.
|
||||
data.avatar = avatar;
|
||||
}
|
||||
// Unset avatar url if avatar is empty string.
|
||||
if ("" === input.avatar) {
|
||||
data.avatarUrl = null;
|
||||
data.avatar = null;
|
||||
}
|
||||
|
||||
const updatedUser = await prisma.user.update({
|
||||
|
||||
Reference in New Issue
Block a user