mirror of
https://git.meshkee.com/Meshkee/dashboards.git
synced 2026-08-11 22:30:58 +04:30
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>
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { apiRequest } from '../lib/api'
|
|
import type { CityOption } from '@meshkee/dashboard-ui'
|
|
|
|
export type { CityOption }
|
|
|
|
export async function listCountries(signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>('/cities?level=country', { signal })
|
|
return data.items
|
|
}
|
|
|
|
/** Cities under a country (direct + via provinces). Province is optional in the tree. */
|
|
export async function listCitiesByCountrySlug(parentSlug: string, signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>(
|
|
`/cities?level=city&parentSlug=${encodeURIComponent(parentSlug)}`,
|
|
{ signal },
|
|
)
|
|
return data.items
|
|
}
|
|
|
|
export async function listProvincesByCountrySlug(parentSlug: string, signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>(
|
|
`/cities?level=province&parentSlug=${encodeURIComponent(parentSlug)}`,
|
|
{ signal },
|
|
)
|
|
return data.items
|
|
}
|
|
|
|
/** @deprecated Prefer listProvincesByCountrySlug('iran') */
|
|
export async function listIranProvinces(signal?: AbortSignal) {
|
|
return listProvincesByCountrySlug('iran', signal)
|
|
}
|
|
|
|
export async function listCitiesByProvinceSlug(parentSlug: string, signal?: AbortSignal) {
|
|
const data = await apiRequest<{ items: CityOption[] }>(
|
|
`/cities?level=city&parentSlug=${encodeURIComponent(parentSlug)}`,
|
|
{ signal },
|
|
)
|
|
return data.items
|
|
}
|