1. 개요
내가 했던 고민을 말하기 전에 개발 중인 앱의 컨셉을 먼저 설명하겠다.
이 앱에는 휴지통 개념이 존재하고 이 휴지통에는 [폴더] 와 [파일] 이 존재할 수 있다.
우리 앱 화면을 캡쳐할 수는 없어서 비슷한 구조인 구글 드라이브 캡쳐를 참고용으로 가져와봤다.

휴지통에 있는 파일이든 폴더든 더블 클릭하는 순간 "복원 하시겠습니까?" 알럿이 뜬다.

현재 우리 앱의 휴지통이 동작하는 방식도 구글 드라이브와 비슷하게 아래와 같다.
1. 폴더 구조
- a > b > c 형태의 중첩된(Nested) 폴더 구조를 가짐.
2. 폴더 삭제
- 상위 폴더 a가 삭제되면 b와 c를 포함한 모든 하위 폴더가 함께 휴지통으로 이동.
3. 복원 동작
- a 폴더를 복원하면, 포함된 모든 하위 폴더(b, c)가 함께 복원됨.
- 개별 폴더(b 또는 c)를 직접 복원할 수는 없음.
- 휴지통에서 특정 폴더를 클릭 시, 복원 알림(Alert)이 뜨므로 휴지통 내에서 자식 폴더로의 진입이 불가함.
2. 고민 사항
이때, 아래 검색 시나리오에서는 어떻게 동작하는게 적합할 지 의문이 들었다.
1. 사용자가 휴지통 검색창에 c를 입력하면, c 폴더가 검색 결과에 표시될 것임.
2. 사용자가 검색 결과에서 c 폴더를 클릭했을 때, 아래와 같은 동작 중 어떤 것이 적합할지 고민
옵션 1) 검색 결과에 c가 표시되더라도, 복원은 a 폴더 단위로만 허용.
즉, c를 클릭했을 때, a 폴더 복원 알럿이 뜨고 상위 폴더(a > b > c)가 함께 복원되게 한다.
(= 휴지통의 현재 컨셉을 유지하는 방향)
옵션 2) c 폴더만 개별 복원 가능하도록 동작 변경.
검색을 통해 특정 폴더를 바로 복원하려는 사용자 경험을 살리는 것이다..
단, 상위 폴더가 휴지통에 있는 상태라면 루트로 복원시켜줘야 하므로 관련 연관 관계를 다 끊어줘야겠지...
3. 타 서비스 사례 비교
휴지통 내에서 검색 결과로 자식 폴더가 나왔을 때의 복원 동작은 서비스마다 다르게 구현되어 있음.
1. Google Drive
- 자식 폴더만 복원하는 것이 불가능
- 검색 결과로 나온 자식 폴더를 클릭하면 상위 폴더를 먼저 복원해야 한다는 알럿이 표시됨

2. Mac (Finder)
- 휴지통 내에서 자식 폴더로 직접 진입이 가능하며, 자식 폴더만 복원하는 것도 허용함

- 검색 결과로 나온 자식 폴더도 동일하게 복원 가능
4. 결론
Mac Finder 와 Google Drive 의 복원 동작은 다르지만 공통점이 하나 있다.
복원 동작이 일관되게 설계되어 있어 어디에서 복원 요청을 하더라도 동일한 결과를 보장한다는 것이다.
이렇게 해야 사용자에게도 혼란을 주지 않을 것이다. 이 원칙을 바탕으로 우리 앱의 복원 동작도 일관되게 구현하였다.