Skip to content

Commit

Permalink
refactor: #18 사용자 알림 설정 여부를 활동 & 리마인드로 나눠서 조회할 수 있도록 개선
Browse files Browse the repository at this point in the history
  • Loading branch information
kelly6bf committed Feb 11, 2024
1 parent ca0f0a5 commit 20d2be5
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import site.packit.packit.domain.member.constant.AccountStatus;
import site.packit.packit.domain.member.constant.LoginProvider;
import site.packit.packit.domain.member.entity.Member;
import site.packit.packit.domain.notification.dto.NotificationConfigStatus;

public record MemberDto(
Long id,
Expand All @@ -13,9 +14,9 @@ public record MemberDto(
AccountStatus accountStatus,
AccountRole accountRole,
LoginProvider loginProvider,
boolean enableNotification
NotificationConfigStatus notificationConfigStatus
) {
public static MemberDto of(Member member, boolean enableNotification) {
public static MemberDto of(Member member, NotificationConfigStatus notificationConfig) {
return new MemberDto(
member.getId(),
member.getPersonalId(),
Expand All @@ -24,7 +25,7 @@ public static MemberDto of(Member member, boolean enableNotification) {
member.getAccountStatus(),
member.getAccountRole(),
member.getLoginProvider(),
enableNotification
notificationConfig
);
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package site.packit.packit.domain.member.dto.response;

import site.packit.packit.domain.member.dto.MemberDto;
import site.packit.packit.domain.notification.dto.NotificationConfigStatus;

public record GetMemberProfileResponse(
Long id,
String nickname,
String profileImageUrl,
boolean enableNotification
NotificationConfigStatus notificationConfigStatus
) {
public static GetMemberProfileResponse of(MemberDto memberDto) {
return new GetMemberProfileResponse(memberDto.id(), memberDto.nickName(), memberDto.profileImageUrl(), memberDto.enableNotification());
return new GetMemberProfileResponse(memberDto.id(), memberDto.nickName(), memberDto.profileImageUrl(), memberDto.notificationConfigStatus());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import site.packit.packit.domain.member.entity.Member;
import site.packit.packit.domain.member.exception.MemberException;
import site.packit.packit.domain.member.repository.MemberRepository;
import site.packit.packit.domain.notification.dto.NotificationConfigStatus;
import site.packit.packit.domain.notification.service.PushNotificationService;

import static site.packit.packit.domain.member.constant.AccountStatus.WAITING_TO_JOIN;
Expand Down Expand Up @@ -58,9 +59,9 @@ public Member getMember(String personalId) {
public MemberDto getMember(Long memberId) {
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new MemberException(MEMBER_NOT_FOUND));
boolean isPushNotificationSubscriber = pushNotificationService.isPushNotificationSubscriber(member);
NotificationConfigStatus notificationConfigStatus = pushNotificationService.getAllNotificationConfigStatus(member);

return MemberDto.of(member, isPushNotificationSubscriber);
return MemberDto.of(member, notificationConfigStatus);
}

public void updateMemberProfile(Long memberId, UpdateMemberProfileRequest request) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package site.packit.packit.domain.notification.dto;

import site.packit.packit.domain.notification.constant.NotificationType;
import site.packit.packit.domain.notification.entity.PushNotificationSubscriber;

import java.util.List;

import static site.packit.packit.domain.notification.constant.NotificationType.ACTIVE;
import static site.packit.packit.domain.notification.constant.NotificationType.TRAVEL_REMIND;

public record NotificationConfigStatus(
boolean enableActiveNotification,
boolean enableTravelRemindNotification
) {
public NotificationConfigStatus(boolean enableActiveNotification, boolean enableTravelRemindNotification) {
this.enableActiveNotification = enableActiveNotification;
this.enableTravelRemindNotification = enableTravelRemindNotification;
}

public static NotificationConfigStatus notNotificationConfig() {
return new NotificationConfigStatus(false, false);
}

public static NotificationConfigStatus of(List<PushNotificationSubscriber> notificationSubscribers) {
List<NotificationType> notificationTypes = notificationSubscribers.stream()
.map(PushNotificationSubscriber::getNotificationType)
.toList();

return new NotificationConfigStatus(
notificationTypes.contains(ACTIVE),
notificationTypes.contains(TRAVEL_REMIND)
);
}
}

0 comments on commit 20d2be5

Please sign in to comment.