Proxy Saving and UX Fixes (#4467)
This commit is contained in:
@@ -124,7 +124,7 @@ export function GeoTargetSelector({
|
||||
<CommandGroup heading="Countries">
|
||||
{results.countries.map((item) => (
|
||||
<CommandItem
|
||||
key={`country-${item.value.country}`}
|
||||
key={`country-${item.value.country}${item.value.isISP ? "-isp" : ""}`}
|
||||
value={JSON.stringify(item.value)}
|
||||
onSelect={() => handleSelect(item)}
|
||||
>
|
||||
|
||||
@@ -116,7 +116,7 @@ function compareWorkflowBlocks(
|
||||
|
||||
function getWorkflowElements(version: WorkflowVersion) {
|
||||
const settings: WorkflowSettings = {
|
||||
proxyLocation: version.proxy_location || ProxyLocation.Residential,
|
||||
proxyLocation: version.proxy_location ?? ProxyLocation.Residential,
|
||||
webhookCallbackUrl: version.webhook_callback_url || "",
|
||||
persistBrowserSession: version.persist_browser_session,
|
||||
model: version.model,
|
||||
|
||||
@@ -956,7 +956,7 @@ function Workspace({
|
||||
// Load the selected version into the main editor
|
||||
const settings: WorkflowSettings = {
|
||||
proxyLocation:
|
||||
selectedVersion.proxy_location || ProxyLocation.Residential,
|
||||
selectedVersion.proxy_location ?? ProxyLocation.Residential,
|
||||
webhookCallbackUrl: selectedVersion.webhook_callback_url || "",
|
||||
persistBrowserSession: selectedVersion.persist_browser_session,
|
||||
model: selectedVersion.model,
|
||||
@@ -1660,7 +1660,7 @@ function Workspace({
|
||||
|
||||
const settings: WorkflowSettings = {
|
||||
proxyLocation:
|
||||
saveData?.settings.proxyLocation || ProxyLocation.Residential,
|
||||
saveData?.settings.proxyLocation ?? ProxyLocation.Residential,
|
||||
webhookCallbackUrl: saveData?.settings.webhookCallbackUrl || "",
|
||||
persistBrowserSession:
|
||||
saveData?.settings.persistBrowserSession ?? false,
|
||||
|
||||
@@ -141,7 +141,7 @@ function compareWorkflowBlocks(
|
||||
|
||||
function getWorkflowElements(version: WorkflowVersion) {
|
||||
const settings: WorkflowSettings = {
|
||||
proxyLocation: version.proxy_location || ProxyLocation.Residential,
|
||||
proxyLocation: version.proxy_location ?? ProxyLocation.Residential,
|
||||
webhookCallbackUrl: version.webhook_callback_url || "",
|
||||
persistBrowserSession: version.persist_browser_session,
|
||||
model: version.model,
|
||||
|
||||
@@ -149,6 +149,15 @@ export function geoTargetToProxyLocationInput(
|
||||
return ProxyLocation.ResidentialISP;
|
||||
}
|
||||
|
||||
// Guard against malformed subdivision (e.g., boolean instead of string)
|
||||
if (target.subdivision != null && typeof target.subdivision !== "string") {
|
||||
console.error(
|
||||
"[geoTargetToProxyLocationInput] Invalid subdivision:",
|
||||
target.subdivision,
|
||||
);
|
||||
target = { ...target, subdivision: undefined };
|
||||
}
|
||||
|
||||
// Try to map back to legacy enum if it's just a country
|
||||
if (target.country && !target.subdivision && !target.city) {
|
||||
const legacyLocation = COUNTRY_TO_PROXY_LOCATION[target.country];
|
||||
|
||||
@@ -109,6 +109,11 @@ def _deserialize_proxy_location(value: str | None) -> ProxyLocationInput:
|
||||
if value.startswith("{"):
|
||||
try:
|
||||
data = json.loads(value)
|
||||
# Handle malformed subdivision (e.g., boolean instead of string)
|
||||
subdivision = data.get("subdivision")
|
||||
if subdivision is not None and not isinstance(subdivision, str):
|
||||
LOG.warning("Malformed subdivision in proxy_location", db_value=value, subdivision=subdivision)
|
||||
data["subdivision"] = None
|
||||
result = GeoTarget.model_validate(data)
|
||||
LOG.info(
|
||||
"Deserialized proxy_location as GeoTarget",
|
||||
@@ -116,8 +121,8 @@ def _deserialize_proxy_location(value: str | None) -> ProxyLocationInput:
|
||||
result=str(result),
|
||||
)
|
||||
return result
|
||||
except (json.JSONDecodeError, ValueError):
|
||||
pass
|
||||
except (json.JSONDecodeError, ValueError) as e:
|
||||
LOG.warning("Failed to parse proxy_location as GeoTarget", db_value=value, error=str(e))
|
||||
|
||||
# Try as ProxyLocation enum
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user