import { create } from 'zustand' import type { ChatInitData } from '@/features/chat/types' import { SessionStatus } from '@/apis/negotiation/negotiation.type' interface ChatInitStore extends ChatInitData { // 이번 방문(마운트) 동안 세션이 한 번이라도 '협상중'이었는지. // 진행 중 실시간으로 완료/거부로 전이돼도 인디케이터를 계속 보여주기 위한 sticky 플래그. // (완료/거부 세션에 '재진입'한 경우엔 처음부터 false → 숨김) wasInProgress: boolean setInitData: (data: Partial) => void reset: () => void } const initialState: ChatInitData = { session_id: '', session_status: 0, item_id: '', quotation_id: '', qt_number: '', item_name: '', item_code: '', item_image: '', item_price: 0, item_model_name: '', item_maker_name: '', item_vat_yn: '', item_delivery_fee_yn: '', item_min_order_quantity: '', item_lead_time: '', item_spec: '', quotation_memo: '', quotation_end_time: '', custom: {}, labels: {}, reject_reason: '', reject_price: null, } export const useChatInitStore = create((set) => ({ ...initialState, wasInProgress: false, setInitData: (data) => set((state) => ({ ...data, // 한 번 '협상중'을 관측하면 유지 — 진행 화면에서 완료/거부로 전이돼도 인디케이터를 계속 보여준다. wasInProgress: state.wasInProgress || data.session_status === SessionStatus.IN_PROGRESS, })), reset: () => set({ ...initialState, wasInProgress: false }), }))