Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f60c89d
[fix] #196 전체공개, 포킷 키워드 미선택 시 버튼 비활성화 처리
ShapeKim98 Jul 1, 2025
85d6aa3
[feat] #196 unpokited 이미지 추가
ShapeKim98 Jul 1, 2025
1e801b8
[fix] #196 미분류 링크 기본 사진 적용
ShapeKim98 Jul 1, 2025
e508418
[fix] #196 키보드가 올라왔을 때 빈곳이나 다른 컴포넌트 눌렀을 때 키보드 내려가게 수정
ShapeKim98 Jul 1, 2025
ef12f58
[fix] #196 검색어 활성화 Active 상태 적용
ShapeKim98 Jul 1, 2025
6a5b40e
[fix] #196 프로필 수정 시 닉네임 텍스트필드 눌렀을 때 '중복된 닉네임' 에러 수정
ShapeKim98 Jul 1, 2025
e91c56c
[fix] #196 플레이스홀더 수정: 내용을 입력해주세요 -> 닉네임을 입력해주세요
ShapeKim98 Jul 1, 2025
4afd74a
[fix] #196 미분류 > 편집하기 시트 disable 수정
ShapeKim98 Jul 1, 2025
71abba6
[fix] #196 포킷 저장 버튼 활성화 수정
ShapeKim98 Jul 1, 2025
e65f18c
[hotfix] 서버 도메인 변경
ShapeKim98 Jul 11, 2025
c918e56
[fix] #196 즐겨찾기, 안읽음 중 둘 중 하나만 선택 가능, x 버튼 노출
ShapeKim98 Jul 14, 2025
3234b40
[feat] #196 PokitBottomButton 모디파이어 추가
ShapeKim98 Jul 14, 2025
5303656
[feat] #196 PokitBottomButton 그라디언트 효과 반영
ShapeKim98 Jul 14, 2025
120e41b
[fix] #196 검색 ui 변경사항 반영
ShapeKim98 Jul 14, 2025
8c932ea
[fix] #196 링크 추천 키워드 선택 플로우 수정
ShapeKim98 Jul 14, 2025
2235e08
[fix] #196 PokitCaution 변경사항 반영
ShapeKim98 Jul 14, 2025
7de091b
[fix] #196 PokitCaution 위치 수정
ShapeKim98 Jul 14, 2025
4aa7953
[feat] #196 PokitBottomButton 변경사항 적용
ShapeKim98 Jul 14, 2025
ebabff5
Merge branch 'develop' into fix/#196-qa2-shapekim98
ShapeKim98 Jul 16, 2025
4ba2f2c
Merge branch 'main' into fix/#196-qa2-shapekim98
ShapeKim98 Jul 16, 2025
1121f50
Merge branch 'fix/#196-qa2-shapekim98' of https://github.com/YAPP-Git…
ShapeKim98 Jul 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Projects/App/ShareExtension/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<key>CFBundleName</key>
<string>Pokit</string>
<key>CFBundleShortVersionString</key>
<string>1.0.4</string>
<string>1.0.9</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
Expand Down
2 changes: 1 addition & 1 deletion Projects/App/Sources/MainTab/MainTabFeature.swift
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ private extension MainTabFeature {
state.linkPopup = type
return .none
case let .카테고리상세_이동(category):
if category.categoryName == "미분류" {
if category.categoryName == Constants.미분류 {
state.selectedTab = .pokit
state.path.removeAll()
return .send(.pokit(.delegate(.미분류_카테고리_활성화)))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
{
"images" : [
{
"filename" : "character_empty.png",
"filename" : "empty_graphic 1.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "empty_graphic 1@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "empty_graphic 1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
Expand Down
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "unpokited.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "unpokited@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "unpokited@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 66 additions & 3 deletions Projects/DSKit/Sources/Components/PokitBottomButton.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,36 @@ public struct PokitBottomButton: View {
private let labelText: String
private let state: PokitButtonStyle.State
private let size: PokitButtonStyle.Size = .large
private let isGradient: Bool
private let isKeyboardVisible: Bool
private let action: () -> Void

public init(
private init(
_ labelText: String,
state: PokitButtonStyle.State,
isLoading: Binding<Bool> = .constant(false),
isLoading: Binding<Bool>,
isGradient: Bool,
isKeyboardVisible: Bool,
action: @escaping () -> Void
) {
self.labelText = labelText
self.state = state
self._isLoading = isLoading
self.isGradient = isGradient
self.isKeyboardVisible = isKeyboardVisible
self.action = action
}

public init(
_ labelText: String,
state: PokitButtonStyle.State,
action: @escaping () -> Void
) {
self.labelText = labelText
self.state = state
self._isLoading = .constant(false)
self.isGradient = false
self.isKeyboardVisible = false
self.action = action
}

Expand All @@ -37,7 +56,17 @@ public struct PokitBottomButton: View {
}
.disabled(state == .disable)
.padding(.top, 16)
// .padding(.bottom, 36)
.padding(.bottom, isKeyboardVisible ? 10 : 36)
.background(if: isGradient) {
LinearGradient(
stops: [
Gradient.Stop(color: .pokit(.bg(.base)).opacity(0), location: 0.00),
Gradient.Stop(color: .pokit(.bg(.base)), location: 0.20),
],
startPoint: UnitPoint(x: 0.5, y: 0),
endPoint: UnitPoint(x: 0.5, y: 1)
)
}
}

private var label: some View {
Expand Down Expand Up @@ -71,7 +100,41 @@ public struct PokitBottomButton: View {
.stroke(self.state.backgroundStrokeColor, lineWidth: 1)
}
}
.padding(.horizontal, isGradient ? 20 : 0)
.animation(.pokitDissolve, value: self.state)
}

public func keyboardAnchor(_ isKeyboardVisible: Bool) -> Self {
PokitBottomButton(
self.labelText,
state: self.state,
isLoading: self.$isLoading,
isGradient: self.isGradient,
isKeyboardVisible: isKeyboardVisible,
action: self.action
)
}

public func gradientBackground() -> Self {
PokitBottomButton(
self.labelText,
state: self.state,
isLoading: self.$isLoading,
isGradient: true,
isKeyboardVisible: self.isKeyboardVisible,
action: self.action
)
}

public func loading(_ isLoading: Binding<Bool>) -> Self {
PokitBottomButton(
self.labelText,
state: self.state,
isLoading: isLoading,
isGradient: self.isGradient,
isKeyboardVisible: self.isKeyboardVisible,
action: self.action
)
}
}

4 changes: 3 additions & 1 deletion Projects/DSKit/Sources/Components/PokitCalendar.swift
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ public struct PokitCalendar: View {
let isSelected = isStartDate || isEndDate
let backgoundColor: Color = .pokit(.bg(.brand)).opacity(isSelected ? 1 : isContains ? 0.2 : 0)
let day = calendar.component(.day, from: date)
let isFuture = date > .now

Button {
dayButtonTapped(
Expand All @@ -192,13 +193,14 @@ public struct PokitCalendar: View {
} label: {
Text("\(day)")
.pokitFont(.b1(.m))
.foregroundStyle(isCurrentMonth ? textColor : .pokit(.text(.tertiary)))
.foregroundStyle(isCurrentMonth && !isFuture ? textColor : .pokit(.text(.tertiary)))
.frame(width: width, height: width)
.background {
RoundedRectangle(cornerRadius: 8, style: .continuous)
.fill(backgoundColor)
}
}
.disabled(isFuture)
}

private func dates(_ date: Date) -> [Date] {
Expand Down
10 changes: 7 additions & 3 deletions Projects/DSKit/Sources/Components/PokitCaution.swift
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public enum CautionType {
case .알림없음:
return "리마인드 알림을 설정하세요"
case .추천_링크없음:
return ""
return "다른 사용자들이 링크를 저장하면\n추천해드릴게요"
}
}

Expand Down Expand Up @@ -101,17 +101,18 @@ public struct PokitCaution: View {
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 180, height: 180)
.padding(.bottom, 16)
.padding(.bottom, 8)

Text(type.title)
.pokitFont(.title2)
.foregroundStyle(.pokit(.text(.secondary)))
.padding(.bottom, 8)

Text(type.message)
.multilineTextAlignment(.center)
.pokitFont(.b2(.m))
.foregroundStyle(.pokit(.text(.secondary)))
.padding(.bottom, 16)
.padding(.bottom, 20)

if let action,
let actionTitle = type.actionTitle {
Expand All @@ -127,6 +128,9 @@ public struct PokitCaution: View {

Spacer()
}
.padding(.bottom, 80)
.frame(maxHeight: .infinity)
.padding(.bottom, 92)
}
}

Expand Down
2 changes: 1 addition & 1 deletion Projects/DSKit/Sources/Components/PokitLinkCard.swift
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public struct PokitLinkCard<Item: PokitLinkCardItem>: View {

@ViewBuilder
private func badges() -> some View {
let isUnCategorized = link.categoryName == "미분류"
let isUnCategorized = link.categoryName == Constants.미분류

HStack(spacing: 6) {
PokitBadge(
Expand Down
15 changes: 9 additions & 6 deletions Projects/DSKit/Sources/Components/PokitList.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,7 @@ public struct PokitList<Item: PokitSelectItem>: View {

public var body: some View {
if list.isEmpty {
VStack {
PokitCaution(type: .카테고리없음)

Spacer()
}
PokitCaution(type: .카테고리없음)
} else {
ScrollView {
VStack(spacing: 0) {
Expand All @@ -59,7 +55,14 @@ public struct PokitList<Item: PokitSelectItem>: View {
action(item)
} label: {
HStack(spacing: 12) {
thumbNail(url: item.categoryImage.imageURL)
if item.categoryName == Constants.미분류 {
Image(.image(.unpokited))
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 60, height: 60)
} else {
thumbNail(url: item.categoryImage.imageURL)
}

VStack(alignment: .leading, spacing: 4) {
Text(item.categoryName)
Expand Down
3 changes: 3 additions & 0 deletions Projects/DSKit/Sources/Foundation/PokitImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ public enum PokitImage {
return DSKitAsset.imageFirecracker.swiftUIImage
case .profile:
return DSKitAsset.imageProfile.swiftUIImage
case .unpokited:
return DSKitAsset.unpokited.swiftUIImage
}
}
}
Expand Down Expand Up @@ -195,5 +197,6 @@ public extension PokitImage {
case confetti
case firecracker
case profile
case unpokited
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,10 @@ private extension CategoryDetailFeature {
case let .분류_버튼_눌렀을때(type):
if type == .즐겨찾기 {
state.domain.condition.isFavoriteFlitered.toggle()
state.domain.condition.isUnreadFlitered = !state.domain.condition.isFavoriteFlitered
} else {
state.domain.condition.isUnreadFlitered.toggle()
state.domain.condition.isFavoriteFlitered = !state.domain.condition.isUnreadFlitered
}
return .concatenate(
.send(.inner(.pagenation_초기화), animation: .pokitDissolve),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,24 +226,9 @@ private extension CategoryDetailView {
.foregroundStyle(.pokit(.text(.tertiary)))
.pokitFont(.b2(.m))
} else {
PokitTextButton(
"즐겨찾기",
state: store.isFavoriteFiltered
? .filled(.primary)
: .default(.secondary),
size: .small,
shape: .round,
action: { send(.분류_버튼_눌렀을때(.즐겨찾기)) }
)
PokitTextButton(
"안읽음",
state: store.isUnreadFiltered
? .filled(.primary)
: .default(.secondary),
size: .small,
shape: .round,
action: { send(.분류_버튼_눌렀을때(.안읽음)) }
)
favoriteButton

unreadButton
}

Spacer()
Expand All @@ -257,18 +242,58 @@ private extension CategoryDetailView {
}
}

@ViewBuilder
var favoriteButton: some View {
if store.isFavoriteFiltered {
PokitIconRButton(
"즐겨찾기",
.icon(.x),
state: .filled(.primary),
size: .small,
shape: .round,
action: { send(.분류_버튼_눌렀을때(.즐겨찾기)) }
)
} else {
PokitTextButton(
"즐겨찾기",
state: .default(.secondary),
size: .small,
shape: .round,
action: { send(.분류_버튼_눌렀을때(.즐겨찾기)) }
)
}
}

@ViewBuilder
var unreadButton: some View {
if store.isUnreadFiltered {
PokitIconRButton(
"안읽음",
.icon(.x),
state: .filled(.primary),
size: .small,
shape: .round,
action: { send(.분류_버튼_눌렀을때(.안읽음)) }
)
} else {
PokitTextButton(
"안읽음",
state: .default(.secondary),
size: .small,
shape: .round,
action: { send(.분류_버튼_눌렀을때(.안읽음)) }
)
}
}

var contentScrollView: some View {
Group {
if !store.isLoading {
if !store.isContentsNotEmpty {
VStack {
PokitCaution(
type: .포킷상세_링크없음,
action: { send(.링크_추가_버튼_눌렀을때) }
)

Spacer()
}
if store.contents.isEmpty {
PokitCaution(
type: .포킷상세_링크없음,
action: { send(.링크_추가_버튼_눌렀을때) }
)
} else {
LazyVStack(spacing: 0) {
ForEach(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ private extension CategoryFilterSheet {
)
}
)
.padding(.bottom, 36)
}
.padding(.horizontal, 20)
}
Expand Down
Loading
Loading