Polish: remove unused proxy field, fix API naming inconsistency
- Remove proxy_url from store create/edit forms (field exists in DB but neither scraper implements proxy support — misleading UX) - Rename updateGroupApi → updateGroup, setGroupMembersApi → setGroupMembers for consistent naming with all other API functions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -74,11 +74,11 @@ export function createGroup(name: string, description?: string) {
|
|||||||
return api<any>('/api/groups', { method: 'POST', body: JSON.stringify({ name, description }) });
|
return api<any>('/api/groups', { method: 'POST', body: JSON.stringify({ name, description }) });
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateGroupApi(id: number, data: any) {
|
export function updateGroup(id: number, data: any) {
|
||||||
return api<any>(`/api/groups/${id}`, { method: 'PUT', body: JSON.stringify(data) });
|
return api<any>(`/api/groups/${id}`, { method: 'PUT', body: JSON.stringify(data) });
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setGroupMembersApi(id: number, storeIds: number[]) {
|
export function setGroupMembers(id: number, storeIds: number[]) {
|
||||||
return api<any>(`/api/groups/${id}/members`, { method: 'PUT', body: JSON.stringify({ store_ids: storeIds }) });
|
return api<any>(`/api/groups/${id}/members`, { method: 'PUT', body: JSON.stringify({ store_ids: storeIds }) });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
getCategories, createCategory, updateCategory, deleteCategory,
|
getCategories, createCategory, updateCategory, deleteCategory,
|
||||||
getGroups, createGroup, updateGroupApi, deleteGroup, setGroupMembersApi, getStores,
|
getGroups, createGroup, updateGroup, deleteGroup, setGroupMembers, getStores,
|
||||||
} from '$lib/api';
|
} from '$lib/api';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
const ids = group.store_ids.includes(storeId)
|
const ids = group.store_ids.includes(storeId)
|
||||||
? group.store_ids.filter((id) => id !== storeId)
|
? group.store_ids.filter((id) => id !== storeId)
|
||||||
: [...group.store_ids, storeId];
|
: [...group.store_ids, storeId];
|
||||||
await setGroupMembersApi(groupId, ids);
|
await setGroupMembers(groupId, ids);
|
||||||
groups = groups.map((g) => (g.id === groupId ? { ...g, store_ids: ids } : g));
|
groups = groups.map((g) => (g.id === groupId ? { ...g, store_ids: ids } : g));
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
name: '', base_url: '', search_url: '',
|
name: '', base_url: '', search_url: '',
|
||||||
sel_container: '', sel_name: '', sel_price: '', sel_link: '', sel_image: '',
|
sel_container: '', sel_name: '', sel_price: '', sel_link: '', sel_image: '',
|
||||||
category_id: '', currency: 'EUR', rate_limit: 2, render_js: false, test_query: '',
|
category_id: '', currency: 'EUR', rate_limit: 2, render_js: false, test_query: '',
|
||||||
user_agent: '', proxy_url: '', headers_json: '',
|
user_agent: '', headers_json: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
@@ -134,7 +134,6 @@
|
|||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
<div><label class="label">Rate Limit</label><input type="number" bind:value={form.rate_limit} min="1" max="10" class="input-field" /></div>
|
<div><label class="label">Rate Limit</label><input type="number" bind:value={form.rate_limit} min="1" max="10" class="input-field" /></div>
|
||||||
<div><label class="label">User Agent</label><input type="text" bind:value={form.user_agent} class="input-field" /></div>
|
<div><label class="label">User Agent</label><input type="text" bind:value={form.user_agent} class="input-field" /></div>
|
||||||
<div><label class="label">Proxy URL</label><input type="text" bind:value={form.proxy_url} class="input-field" /></div>
|
|
||||||
<div><label class="label">Extra Headers (JSON)</label><input type="text" bind:value={form.headers_json} class="input-field-mono" /></div>
|
<div><label class="label">Extra Headers (JSON)</label><input type="text" bind:value={form.headers_json} class="input-field-mono" /></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
name: '', base_url: '', search_url: '',
|
name: '', base_url: '', search_url: '',
|
||||||
sel_container: '', sel_name: '', sel_price: '', sel_link: '', sel_image: '',
|
sel_container: '', sel_name: '', sel_price: '', sel_link: '', sel_image: '',
|
||||||
category_id: '', currency: 'EUR', rate_limit: 2, render_js: false, test_query: '',
|
category_id: '', currency: 'EUR', rate_limit: 2, render_js: false, test_query: '',
|
||||||
user_agent: '', proxy_url: '', headers_json: '',
|
user_agent: '', headers_json: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
onMount(async () => { categories = await getCategories(); });
|
onMount(async () => { categories = await getCategories(); });
|
||||||
@@ -25,7 +25,6 @@
|
|||||||
if (data.category_id) data.category_id = Number(data.category_id); else delete data.category_id;
|
if (data.category_id) data.category_id = Number(data.category_id); else delete data.category_id;
|
||||||
if (!data.sel_image) delete data.sel_image;
|
if (!data.sel_image) delete data.sel_image;
|
||||||
if (!data.user_agent) delete data.user_agent;
|
if (!data.user_agent) delete data.user_agent;
|
||||||
if (!data.proxy_url) delete data.proxy_url;
|
|
||||||
if (!data.headers_json) delete data.headers_json;
|
if (!data.headers_json) delete data.headers_json;
|
||||||
else { try { JSON.parse(data.headers_json); } catch { error = 'Extra Headers must be valid JSON'; saving = false; return; } }
|
else { try { JSON.parse(data.headers_json); } catch { error = 'Extra Headers must be valid JSON'; saving = false; return; } }
|
||||||
if (!data.test_query) delete data.test_query;
|
if (!data.test_query) delete data.test_query;
|
||||||
@@ -138,10 +137,6 @@
|
|||||||
<label class="label">User Agent</label>
|
<label class="label">User Agent</label>
|
||||||
<input type="text" bind:value={form.user_agent} placeholder="Default browser UA" class="input-field" />
|
<input type="text" bind:value={form.user_agent} placeholder="Default browser UA" class="input-field" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
<label class="label">Proxy URL</label>
|
|
||||||
<input type="text" bind:value={form.proxy_url} placeholder="http://user:pass@host:port" class="input-field" />
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<label class="label">Extra Headers (JSON)</label>
|
<label class="label">Extra Headers (JSON)</label>
|
||||||
<input type="text" bind:value={form.headers_json} placeholder={'{"X-Custom": "value"}'} class="input-field-mono" />
|
<input type="text" bind:value={form.headers_json} placeholder={'{"X-Custom": "value"}'} class="input-field-mono" />
|
||||||
|
|||||||
Reference in New Issue
Block a user