Skip to content

[REF] localstorage모듈의 비대화된 책임을 개선합니다. #687

@angryPodo

Description

@angryPodo

What is this issue? 🛠

현재 core:localstorage 모듈은 인프라와 도메인의 책임이 뒤섞여 있는 비대한 매니저 구조입니다. 이를 해결하기 위해 core는 오직 인프라 툴킷으로 남기고 실제 데이터 관리 책임은 각 data 모듈의 LocalDataSource로 이관하는 대대적인 아키텍처 리팩토링을 진행합니다.

1. core:localstorage 모듈의 인프라화

  • UserPreferences와 같은 특정 도메인 모델에 대한 의존성을 제거합니다.
  • core:crypto를 활용하여 어떤 데이터 타입(T)이든 안전하게 직렬화할 수 있는 EncryptedSerializer<T>를 구현합니다.
  • data 모듈에서 쉽게 DataStore 인스턴스를 생성할 수 있는 공통 설정 및 빌더 로직을 제공합니다.

2. 도메인 데이터 소스 이관

  • core에 있던 Manager 구현체들을 각 도메인 data 모듈(예: data:user, data:diary)로 이동시키고 LocalDataSourceImpl로 명칭을 변경합니다.
  • 각 도메인의 PreferencesKey 정의 및 CRUD 로직은 해당 data 모듈 내부에서만 관리하도록 은닉합니다.

3. 의존성 주입 구조 고도화

  • Hilt 그래프에서 여러 DataStore<Preferences> 인스턴스를 명확히 구분하기 위해 @AuthDataStore, @DiaryDataStore 등의 Qualifier를 정의합니다.
  • LocalDataSourceContext에 의존하지 않고, 주입받은 DataStore 인터페이스에만 의존하도록 개선하여 유닛 테스트 환경을 최적화합니다.
  • 프로젝트 컨벤션에 맞춰 구현체는 @Inject constructor를 사용하고, 모듈에서는 @Binds를 통해 인터페이스를 노출합니다.

Progress 🏃‍♀️

  • [ ]

Metadata

Metadata

Assignees

Labels

REFACTOR🧽기능 동작은 유지하되, 앱 로직(프로덕션 코드)의 구조와 품질을 개선🍀민재민재 담당

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions