mirror of
https://github.com/formbricks/formbricks.git
synced 2026-01-08 00:40:09 -06:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { TActionClassPageUrlRule } from "@formbricks/types/action-classes";
|
|
|
|
export const testURLmatch = (
|
|
testUrl: string,
|
|
pageUrlValue: string,
|
|
pageUrlRule: TActionClassPageUrlRule
|
|
): string => {
|
|
switch (pageUrlRule) {
|
|
case "exactMatch":
|
|
return testUrl === pageUrlValue ? "yes" : "no";
|
|
case "contains":
|
|
return testUrl.includes(pageUrlValue) ? "yes" : "no";
|
|
case "startsWith":
|
|
return testUrl.startsWith(pageUrlValue) ? "yes" : "no";
|
|
case "endsWith":
|
|
return testUrl.endsWith(pageUrlValue) ? "yes" : "no";
|
|
case "notMatch":
|
|
return testUrl !== pageUrlValue ? "yes" : "no";
|
|
case "notContains":
|
|
return !testUrl.includes(pageUrlValue) ? "yes" : "no";
|
|
default:
|
|
throw new Error("Invalid match type");
|
|
}
|
|
};
|
|
|
|
// Helper function to validate callback URLs
|
|
export const isValidCallbackUrl = (url: string, WEBAPP_URL: string): boolean => {
|
|
try {
|
|
const parsedUrl = new URL(url);
|
|
const allowedSchemes = ["https:", "http:"];
|
|
|
|
// Extract the domain from WEBAPP_URL
|
|
const parsedWebAppUrl = new URL(WEBAPP_URL);
|
|
const allowedDomains = [parsedWebAppUrl.hostname];
|
|
|
|
return allowedSchemes.includes(parsedUrl.protocol) && allowedDomains.includes(parsedUrl.hostname);
|
|
} catch (err) {
|
|
return false;
|
|
}
|
|
};
|