fix: show proper validation error message when user inputs old path in redirect section (#5082)

## Description

fixes: #5050 

fixes the validation error message when user enters old path in
redirects section.


![image](https://github.com/user-attachments/assets/e4f2793d-5179-467d-9655-95247b9e8439)


## Steps for reproduction

1. go to project settings.
2. redirects tab
3. enter a url like https://website.org in old path input field.
4. the validation error will we shown in the tooltip.

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [x] made a self-review
- [x] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [x] tested locally and on preview environment (preview dev login:
0000)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env` file
This commit is contained in:
victor immanuel authored and GitHub committed 2025-04-03 09:40:55 +07:00
1 parent 4b65a09375
commit 3944cbb9cd
2 files changed
+14 -7

No files matched your search

@@ -16,7 +16,7 @@ import {
} from "@webstudio-is/design-system";
import { ArrowRightIcon, TrashIcon } from "@webstudio-is/icons";
import {
PagePath,
OldPagePath,
PageRedirect,
ProjectNewRedirectPath,
} from "@webstudio-is/sdk";
@@ -58,7 +58,7 @@ export const SectionRedirects = () => {
};
const validateOldPath = (oldPath: string): string[] => {
const oldPathValidationResult = PagePath.safeParse(oldPath);
const oldPathValidationResult = OldPagePath.safeParse(oldPath);
if (oldPathValidationResult.success === true) {
if (oldPath.startsWith("/") === true) {
+12 -5
View File
@@ -88,14 +88,10 @@ const HomePage = z.object({
path: HomePagePath,
});
export const PagePath = z
const DefaultPagePage = z
.string()
.refine((path) => path !== "", "Can't be empty")
.refine((path) => path !== "/", "Can't be just a /")
.refine(
(path) => path === "" || path.startsWith("/"),
"Must start with a / or a full URL e.g. https://website.org"
)
.refine((path) => path.endsWith("/") === false, "Can't end with a /")
.refine((path) => path.includes("//") === false, "Can't contain repeating /")
.refine(
@@ -114,6 +110,17 @@ export const PagePath = z
"/build prefix is reserved for the system"
);
export const PagePath = DefaultPagePage.refine(
(path) => path === "" || path.startsWith("/"),
"Must start with a / or a full URL e.g. https://website.org"
);
// added this for old path input under redirect section of page settings
export const OldPagePath = DefaultPagePage.refine(
(path) => path === "" || path.startsWith("/"),
"Must start with a / and it must be full path e.g. /project/id"
);
const Page = z.object({
...commonPageFields,
path: PagePath,