/**
 * 삭제된 트랜잭션 ID를 추적하는 유틸리티
 * 로컬에서 삭제된 트랜잭션이 서버 동기화 후 다시 나타나는 문제를 해결합니다.
 */

// 삭제된 트랜잭션 ID를 저장하는 로컬 스토리지 키
const DELETED_TRANSACTIONS_KEY = 'deletedTransactions';

/**
 * 삭제된 트랜잭션 ID를 저장
 * @param id 삭제된 트랜잭션 ID
 */
export const addToDeletedTransactions = (id: string): void => {
  try {
    const deletedIds = getDeletedTransactions();
    if (!deletedIds.includes(id)) {
      deletedIds.push(id);
      localStorage.setItem(DELETED_TRANSACTIONS_KEY, JSON.stringify(deletedIds));
      console.log(`[삭제 추적] ID 추가됨: ${id}`);
    }
  } catch (error) {
    console.error('[삭제 추적] ID 추가 실패:', error);
  }
};

/**
 * 삭제된 트랜잭션 ID 목록 가져오기
 * @returns 삭제된 트랜잭션 ID 배열
 */
export const getDeletedTransactions = (): string[] => {
  try {
    const deletedStr = localStorage.getItem(DELETED_TRANSACTIONS_KEY);
    const deletedIds = deletedStr ? JSON.parse(deletedStr) : [];
    return Array.isArray(deletedIds) ? deletedIds : [];
  } catch (error) {
    console.error('[삭제 추적] 목록 조회 실패:', error);
    return [];
  }
};

/**
 * 삭제된 트랜잭션 ID 제거 (서버에서 성공적으로 삭제된 경우)
 * @param id 제거할 트랜잭션 ID
 */
export const removeFromDeletedTransactions = (id: string): void => {
  try {
    const deletedIds = getDeletedTransactions();
    const updatedIds = deletedIds.filter(deletedId => deletedId !== id);
    
    if (deletedIds.length !== updatedIds.length) {
      localStorage.setItem(DELETED_TRANSACTIONS_KEY, JSON.stringify(updatedIds));
      console.log(`[삭제 추적] ID 제거됨: ${id}`);
    }
  } catch (error) {
    console.error('[삭제 추적] ID 제거 실패:', error);
  }
};

/**
 * 삭제된 트랜잭션 ID 목록 초기화
 */
export const clearDeletedTransactions = (): void => {
  try {
    localStorage.removeItem(DELETED_TRANSACTIONS_KEY);
    console.log('[삭제 추적] 목록 초기화됨');
  } catch (error) {
    console.error('[삭제 추적] 목록 초기화 실패:', error);
  }
};
