Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature/#78] 동시에 공유컨테이너로 진입하는 기능 구현 #79

Merged
merged 9 commits into from
Dec 2, 2024

Conversation

051198Hz
Copy link
Collaborator

@051198Hz 051198Hz commented Dec 2, 2024

관련 이슈

✅ 완료 및 수정 내역

  • 이벤트를 발행하고 전달받는 레포지토리 구현
  • 공유컨테이너 화면으로 진입하는 이벤트를 전달하고 받는 유즈케이스 구현
  • �편집하기 버튼을 누르면 나머지 피어들에게 공유컨테이너 화면으로 이동하는 메세지 전달 기능 구현
  • 메세지를 전달받으면 공유컨테이너 화면으로 이동하는 기능 구현

🛠️ 테스트 방법

  • 통합돼있는 상태이니 앱을 실행해 테스트할 수 있습니다.

📝 리뷰 노트

-이벤트를 발행하고 전달받는 레포지토리 구현했습니다.

  • 추후 모든 피어들에게 어떤 이벤트를 전달할 일이 있으면 해당 레포를 이용하면 좋을 것 같습니다.
  • 이벤트 중 공유컨테이너를 여는 이벤트를 정의하고, 이를 인코딩/디코딩해 다른 피어들에게 전달합니다.
  • 이벤트를 전달받으면 해당 이벤트를 퍼블리셔를 통해 방출하고, 공유 컨테이너 화면으로 이동합니다.

📱 스크린샷(선택)

동시 진입 이미 진입한 화면에서는 진입 X
lll mkjn

Copy link
Collaborator

@jungseokyoung-cloud jungseokyoung-cloud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 앱내에서 한번밖에 안쓰이는 OpehSharedContainer를 위해서 별도의 UseCase까지 만들어야 하나는 의문점입니다.
기획상에서 SharedContainer로 넘어가는 경우는 Connection화면에서 밖에 없습니다.
하지만, 이를 Connection의 유즈 케이스가 아닌 별도의 유즈케이스로 분리한 이유가 궁금합니다.

EventRepository는 개인적으로 좋은것 같습니다!

private extension OpenSharedContainerUseCase {
func bind() {
repository.receivedEvent
.sink { [weak self] event in
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: 지혜님이랑 마찬가지로 Core의 'sink(with:onReceive)'사용하시면 편하게 사용하실 수 있습니다!

// Created by Yune gim on 12/2/24.
//

import Foundation
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: 불필요한 파일이 잘못올라 간것 같습니다!

@051198Hz
Copy link
Collaborator Author

051198Hz commented Dec 2, 2024

@jungseokyoung-cloud
저도 기능을 전부 완성해놓고 쪼갤 때 이 고민을 정말 많이 했습니다.
Browsing유즈케이스에 붙여보려고 했는데, 응집을 많이 해하는 것 같아 파일로 분리했습니다.
즉 이 경우에 파일로 분리할 것 외에 마땅한 방법이 없었슴니당. 좋은 의견 있으시면 말씀 부탁드립니다..!

@jungseokyoung-cloud
Copy link
Collaborator

@jungseokyoung-cloud 저도 기능을 전부 완성해놓고 쪼갤 때 이 고민을 정말 많이 했습니다. Browsing유즈케이스에 붙여보려고 했는데, 응집을 많이 해하는 것 같아 파일로 분리했습니다. 즉 이 경우에 파일로 분리할 것 외에 마땅한 방법이 없었슴니당. 좋은 의견 있으시면 말씀 부탁드립니다..!

이따 한번 논의해보시죠

Copy link
Collaborator

@around-forest around-forest left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!
개인적으로 생각하기에는 OpenSharedContainer로 나눌거면 invitation 관련 로직도 나누는게 맞지 않나 생각합니다.
하지만 현재 저희는 한 뷰당 하나로 가져가고 있기 때문에, OpenShared 정도는 현재 기준에 따라 합쳐도 문제없지 않을까 생각합니다.

Copy link
Collaborator

@LURKS02 LURKS02 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

Comment on lines 25 to 39
public func notice(event: Event) {
guard let eventData = try? JSONEncoder().encode(event) else { return }
socketProvider.sendAll(data: eventData)
}
}

private extension NoticedEventRepository {
func bind() {
socketProvider.dataShared.sink { [weak self] (data, _) in
guard let event = try? JSONDecoder().decode(Event.self, from: data) else { return }
self?.receivedEvent.send(event)
}
.store(in: &cancellables)
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: 만약 이렇게 NoticedEventRepository를 따로 사용하게 된다면 JSONEncoder / JSONDecoder는 따로 빼서 재사용 가능하게 하면 어떨까요?

Copy link
Collaborator Author

@051198Hz 051198Hz Dec 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋습니다!
그리고 이렇지 않아도 Core에서 JSONEncoder/Decoder를 두고 다른데서 재사용해야 할 필요가 생긴것 같아요.
Data에서 인코딩/디코딩이 많이 일어나기 시작해 보여요

@051198Hz 051198Hz merged commit 1def2a4 into develop Dec 2, 2024
3 checks passed
@jungseokyoung-cloud jungseokyoung-cloud deleted the feature/#78 branch December 5, 2024 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

편집하기 버튼을 누르면 연결된 모든 피어가 공유컨테이너 화면으로 이동한다.
4 participants