1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import {
- useCallback,
- useEffect,
- useState,
- } from 'react'
- import { useDebounceFn } from 'ahooks'
- import { useSearchParams } from 'next/navigation'
- import type { SearchParams } from './types'
- import {
- EDUCATION_VERIFYING_LOCALSTORAGE_ITEM,
- EDUCATION_VERIFY_URL_SEARCHPARAMS_ACTION,
- } from './constants'
- import { useEducationAutocomplete } from '@/service/use-education'
- import { useModalContextSelector } from '@/context/modal-context'
- export const useEducation = () => {
- const {
- mutateAsync,
- isPending,
- data,
- } = useEducationAutocomplete()
- const [prevSchools, setPrevSchools] = useState<string[]>([])
- const handleUpdateSchools = useCallback((searchParams: SearchParams) => {
- if (searchParams.keywords) {
- mutateAsync(searchParams).then((res) => {
- const currentPage = searchParams.page || 0
- const resSchools = res.data
- if (currentPage > 0)
- setPrevSchools(prevSchools => [...(prevSchools || []), ...resSchools])
- else
- setPrevSchools(resSchools)
- })
- }
- }, [mutateAsync])
- const { run: querySchoolsWithDebounced } = useDebounceFn((searchParams: SearchParams) => {
- handleUpdateSchools(searchParams)
- }, {
- wait: 300,
- })
- return {
- schools: prevSchools,
- setSchools: setPrevSchools,
- querySchoolsWithDebounced,
- handleUpdateSchools,
- isLoading: isPending,
- hasNext: data?.has_next,
- }
- }
- export const useEducationInit = () => {
- const setShowAccountSettingModal = useModalContextSelector(s => s.setShowAccountSettingModal)
- const educationVerifying = localStorage.getItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM)
- const searchParams = useSearchParams()
- const educationVerifyAction = searchParams.get('action')
- useEffect(() => {
- if (educationVerifying === 'yes' || educationVerifyAction === EDUCATION_VERIFY_URL_SEARCHPARAMS_ACTION) {
- setShowAccountSettingModal({ payload: 'billing' })
- if (educationVerifyAction === EDUCATION_VERIFY_URL_SEARCHPARAMS_ACTION)
- localStorage.setItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM, 'yes')
- }
- }, [setShowAccountSettingModal, educationVerifying, educationVerifyAction])
- }
|