Skip to content

Commit

Permalink
add hook
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeKarow committed Jul 15, 2024
1 parent 1ee4bbf commit 8378684
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions packages/ui/hooks/useFormattedAddress.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import compact from 'just-compact'
import { formatAddress } from 'localized-address-format'
import { type TFunction, useTranslation } from 'next-i18next'
import { useCallback } from 'react'
import { z } from 'zod'

import { type ApiOutput } from '@weareinreach/api'
Expand Down Expand Up @@ -58,6 +59,33 @@ export const useFormattedAddress = (location?: UseFormattedAddressProps | null)
return address
}

export const useAddressFormatter = () => {
const { t } = useTranslation('gov-dist')
const formatDbItem = useCallback(
(location?: UseFormattedAddressProps | null) => {
const addressParts = AddressSchema.safeParse(location)
if (!addressParts.success) {
return null
}

const parsedLocation = addressParts.data
const adminArea = getAdminArea(parsedLocation, t)
const formattedAddress = formatAddress({
addressLines: compact([parsedLocation.street1?.trim(), parsedLocation.street2?.trim()]),
locality: parsedLocation.city.trim(),
postalCode: parsedLocation.postCode?.trim() ?? undefined,
postalCountry: parsedLocation.country.cca2,
administrativeArea: adminArea,
})

return formattedAddress
},
[t]
)

return { formatDbItem, format: formatAddress }
}

export type UseFormattedAddressProps = Partial<
| NonNullable<ApiOutput['organization']['forOrgPage']>['locations'][number]
| NonNullable<ApiOutput['location']['forVisitCard']>
Expand Down

0 comments on commit 8378684

Please sign in to comment.