Ship my-products / customer-products UI with gallery uploads, status controls, module gating, and related shared UI polish. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import { apiRequest } from '../lib/api'
|
|
import type { CityOption } from '@meshkee/dashboard-ui'
|
|
|
|
export type { CityOption }
|
|
|
|
export async function listIranProvinces(signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>(
|
|
'/cities?level=province&parentSlug=iran',
|
|
{ signal },
|
|
)
|
|
return data.items
|
|
}
|
|
|
|
export async function listCitiesByProvinceSlug(parentSlug: string, signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>(
|
|
`/cities?level=city&parentSlug=${encodeURIComponent(parentSlug)}`,
|
|
{ signal },
|
|
)
|
|
return data.items
|
|
}
|
|
|
|
|
|
export async function listCountries(signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>('/cities?level=country', { signal })
|
|
return data.items
|
|
}
|
|
|
|
export async function listCitiesByCountrySlug(parentSlug: string, signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>(
|
|
`/cities?level=city&parentSlug=${encodeURIComponent(parentSlug)}`,
|
|
{ signal },
|
|
)
|
|
return data.items
|
|
}
|