Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
c90d8bb
feat/#159: fastlane match 구현
0Hooni Jul 15, 2025
dc0e3f6
feat/#159: 번들 ID 와일드카드 추가
0Hooni Jul 15, 2025
cd7903f
chore/#159: Signing 세팅 추가
0Hooni Jul 15, 2025
9825231
feat/#159: 테스트플라이트 업로드 구현
0Hooni Jul 15, 2025
05608fd
chore/#159: 환경변수 파일 ingnore
0Hooni Jul 15, 2025
35fb97b
chore/#160: 앱 배포용 프로비저닝 설정 변경
0Hooni Jul 16, 2025
925d2e4
chore/#160: gitignore 설정 수정
0Hooni Jul 16, 2025
2c79e23
feat/#160: LoginFeature 모듈 추가 및 기본 세팅
0Hooni Jul 16, 2025
1f016b5
feat/#160: 기존의 LoginScene 복사
0Hooni Jul 16, 2025
381cadf
refactor/#160: 기존의 로그인 화면에 컨벤션 적용
0Hooni Jul 16, 2025
0087729
refactor/#160: 기존의 로그인 리액터 이동 및 컨벤션 적용
0Hooni Jul 16, 2025
da92826
refactor/#160: SignUp 화면 이동 팩터리 메서드 패턴으로 수정
0Hooni Jul 16, 2025
b6a185c
refactor/#160: FAQ 화면 이동 팩토리 메서드 패턴으로 수정
0Hooni Jul 16, 2025
1f8983d
style/#160: 사용하지 않는 프레임워크 import 제거
0Hooni Jul 16, 2025
939bbbf
refactor/#160: 탭바 화면 전환을 팩토리 메서드 패턴으로 수정
0Hooni Jul 16, 2025
02807fe
chore/#160: 데모에 필요한 에셋 추가
0Hooni Jul 16, 2025
84c407a
feat/#160: 데모에 필요한 의존성 추가
0Hooni Jul 16, 2025
cd392b9
fix/#160: 메인 화면 기존 코드 이사
0Hooni Jul 16, 2025
74f0afb
refactor/#160: LoginFeature 교체 준비
0Hooni Jul 16, 2025
6ba01fc
refactor/#160: 서브 로그인 교체
0Hooni Jul 16, 2025
03d30b4
refactor/#160: Presentation 모듈에서 로그인 Controller 제거
0Hooni Jul 16, 2025
9395200
fix/#160: 최근 로그인 툴팁 중복 해결
0Hooni Jul 17, 2025
a14f353
feat/#160: 키체인 서비스 결과 미사용을 위한 discardableResult 추가
0Hooni Jul 17, 2025
d60bd2d
test/#160: 로그인 데모를 위한 PresentationTesting 구성
0Hooni Jul 17, 2025
60fda63
refactor/#159: 로그인 feature용 사이닝 추가
0Hooni Jul 17, 2025
952fdb6
style/#160: 불필요한 output 할당 코드 제거
0Hooni Jul 18, 2025
8da795b
Merge pull request #162 from PopPool/feat/#159-setup--fastlane
0Hooni Jul 19, 2025
1445932
refactor/#160: Reactor에서 Controller 결합 제거
0Hooni Jul 19, 2025
29150dd
refactor/#160: Mutation none 케이스 제거
0Hooni Jul 19, 2025
0531b59
refactor/#160: UserDefault 사용을 keyType 형태로 사용하도록 수정
0Hooni Jul 19, 2025
fd17ac3
style/#160: switch case 사이 공백 추가
0Hooni Jul 19, 2025
0020298
refactor/#160: flatMap 내부에서 동작이 많던걸 오퍼레이터로 분리
0Hooni Jul 19, 2025
81e0df6
refactor/#160: 불필요한 프레임워크 채택 제거
0Hooni Jul 19, 2025
e4d9de7
fix/#160: 카카오 회원가입시 애플 인가 코드가 들어가는 상황 방지
0Hooni Jul 19, 2025
3865709
refactor/#160: 애플 인가코드 전달 방식 수정 및 화면 전환 State 통일
0Hooni Jul 19, 2025
0c57da3
refactor/#160: 변경된 present state를 이용하여 화면 이동 로직 수정
0Hooni Jul 19, 2025
bd71214
fix/#160: 회원가입 성공시에만 최근 로그인 표출되도록 수정
0Hooni Jul 19, 2025
b281cfd
style/#160: import sort 적용
0Hooni Jul 19, 2025
f2ef29e
refactor/#160: PPLabel 기본값 지정
0Hooni Jul 19, 2025
dd76f6e
refactor/#160: 로그인 화면 중복 코드로 인한 높은 유지비용 문제 개선
0Hooni Jul 19, 2025
08da954
refactor/#160: 로그인 코멘트를 외부에서 주입받도록 수정
0Hooni Jul 21, 2025
2776719
Merge branch 'develop' of https://github.com/PopPool/iOS into fix/#16…
0Hooni Jul 21, 2025
fed1825
refactor/#160: 불필요한 사이닝 아이덴티파이어 제거
0Hooni Jul 21, 2025
b05ef85
style/#160: Apply SwiftLint autocorrect
github-actions[bot] Jul 21, 2025
66b086d
fix/#160: 로그인 데모 수정
0Hooni Jul 21, 2025
46c2c68
fix/#160: UserDefaultService 의존성 주입
0Hooni Jul 21, 2025
a916d96
fix/#160: userDefault 정보 제거 추가
0Hooni Jul 21, 2025
1561ad5
refactor/#160: 툴팁 업데이트 방식 수정
0Hooni Jul 21, 2025
58db220
fix/#160: self → owner를 통해 약한 참조로 수정
0Hooni Jul 21, 2025
dc13c38
style/#160: factory를 이용하여 화면 전환을 설계하도록 일치
0Hooni Jul 21, 2025
24a8aa2
style/#160: 오타 수정
0Hooni Jul 21, 2025
b953652
style/#160: Apply SwiftLint autocorrect
github-actions[bot] Jul 21, 2025
a3ff197
fix/#160: deployment target 버전 수정
0Hooni Jul 21, 2025
11175ab
Merge branch 'fix/#160-recent-login-duplication' of https://github.co…
0Hooni Jul 21, 2025
5b2fd4e
style/#160: 오타 수정
0Hooni Jul 21, 2025
ea16fa8
Merge pull request #164 from PopPool/fix/#160-recent-login-duplication
0Hooni Jul 25, 2025
ac526ae
chore: package.resolve 매치
0Hooni Jul 25, 2025
af36634
Merge branch 'develop' of https://github.com/PopPool/iOS into release…
0Hooni Jul 25, 2025
d6d8043
fix: http 통신 임시 허용
0Hooni Jul 25, 2025
f3b05b1
fix: 프레임워크 중첩 제거
0Hooni Jul 25, 2025
6de17e6
chore: 빌드 버전 수정
0Hooni Jul 25, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ fastlane/test_output
# Cursor
**/buildServer.json
.vscode/*
*.env
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import Foundation
import Security

import RxSwift

public final class KeyChainService {

// KeyChain에서 발생할 수 있는 오류를 정의
Expand Down Expand Up @@ -60,6 +58,7 @@ public final class KeyChainService {
/// - Parameter type: 저장하려는 토큰의 타입 (`accessToken` 또는 `refreshToken`)
/// - Parameter value: 저장할 토큰의 값
/// - Returns: 완료 시 `Completable`
@discardableResult
public func saveToken(type: TokenType, value: String) -> Result<Void, Error> {
// allowLossyConversion은 인코딩 과정에서 손실이 되는 것을 허용할 것인지 설정
guard let convertValue = value.data(using: .utf8, allowLossyConversion: false) else {
Expand Down Expand Up @@ -95,6 +94,7 @@ public final class KeyChainService {
/// KeyChain에서 특정 타입의 토큰을 삭제하는 메서드
/// - Parameter type: 삭제하려는 토큰의 타입 (`accessToken` 또는 `refreshToken`)
/// - Returns: 완료 시 `Completable`
@discardableResult
public func deleteToken(type: TokenType) -> Result<Void, Error> {
// 1. query 작성
let keyChainQuery: NSDictionary = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,11 @@ public final class UserDefaultService {

// MARK: - Key base
extension UserDefaultService {
public enum Key: String {
public enum Key: String, CaseIterable {
case searchKeyword = "searchList"
case userID = "userID"
case socialType = "socialType"
case lastLogin = "lastLogin"
}

/// Userdefault 데이터 저장 메서드
Expand Down
3 changes: 3 additions & 0 deletions Poppool/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source "https://rubygems.org"

gem "fastlane"
32 changes: 22 additions & 10 deletions Poppool/Poppool.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
05734C6B2DCE05550093825D /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 05734C6A2DCE05550093825D /* ReactorKit */; };
05734C6E2DCE05680093825D /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = 05734C6D2DCE05680093825D /* Tabman */; };
05734C712DCE059D0093825D /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 05734C702DCE059D0093825D /* Then */; };
05A7CBEB2E27D5FB0010F1CD /* LoginFeature.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05A7CBE92E27D5FB0010F1CD /* LoginFeature.framework */; };
05A7CBEC2E27D5FB0010F1CD /* LoginFeature.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 05A7CBE92E27D5FB0010F1CD /* LoginFeature.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
05A7CBED2E27D5FB0010F1CD /* LoginFeatureInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05A7CBEA2E27D5FB0010F1CD /* LoginFeatureInterface.framework */; };
05A7CBEE2E27D5FB0010F1CD /* LoginFeatureInterface.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 05A7CBEA2E27D5FB0010F1CD /* LoginFeatureInterface.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
05BBA73E2DB75DA60047A061 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 05BBA73D2DB75DA60047A061 /* KakaoSDKUser */; };
4E15142A2D99480200DFD08F /* NMapsMap in Frameworks */ = {isa = PBXBuildFile; productRef = 4E1514292D99480200DFD08F /* NMapsMap */; };
4E15142E2D994A3A00DFD08F /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 4E15142D2D994A3A00DFD08F /* KakaoSDKAuth */; };
Expand All @@ -52,9 +56,11 @@
0543C5DF2DF86C830070BB93 /* SearchFeatureInterface.framework in Embed Frameworks */,
0543C5D92DF86C7F0070BB93 /* Presentation.framework in Embed Frameworks */,
0543C5D72DF86C7E0070BB93 /* Infrastructure.framework in Embed Frameworks */,
05A7CBEE2E27D5FB0010F1CD /* LoginFeatureInterface.framework in Embed Frameworks */,
0543C5DD2DF86C810070BB93 /* SearchFeature.framework in Embed Frameworks */,
0543C5D52DF86C7C0070BB93 /* DomainInterface.framework in Embed Frameworks */,
0543C5D12DF86C790070BB93 /* DesignSystem.framework in Embed Frameworks */,
05A7CBEC2E27D5FB0010F1CD /* LoginFeature.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -66,6 +72,8 @@
05734C582DCDFAC20093825D /* SearchFeature.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SearchFeature.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05734C592DCDFAC20093825D /* SearchFeatureInterface.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SearchFeatureInterface.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05734C5E2DCE04CE0093825D /* PresentationInterface.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PresentationInterface.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05A7CBE92E27D5FB0010F1CD /* LoginFeature.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoginFeature.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05A7CBEA2E27D5FB0010F1CD /* LoginFeatureInterface.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoginFeatureInterface.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05BDD3D52DB66E1700C1E192 /* DomainInterface.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DomainInterface.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05C1D6072DB53A4900508FFD /* Data.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Data.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05C1D6082DB53A4900508FFD /* Domain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Domain.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -107,6 +115,7 @@
buildActionMask = 2147483647;
files = (
0543C5D02DF86C790070BB93 /* DesignSystem.framework in Frameworks */,
05A7CBEB2E27D5FB0010F1CD /* LoginFeature.framework in Frameworks */,
05734C662DCE05070093825D /* PanModal in Frameworks */,
0543C5D42DF86C7C0070BB93 /* DomainInterface.framework in Frameworks */,
0543C5D62DF86C7E0070BB93 /* Infrastructure.framework in Frameworks */,
Expand All @@ -124,6 +133,7 @@
4EE360FD2D91876300D2441D /* NMapsMap in Frameworks */,
0543C5DA2DF86C800070BB93 /* PresentationInterface.framework in Frameworks */,
05734C682DCE05240093825D /* SnapKit in Frameworks */,
05A7CBED2E27D5FB0010F1CD /* LoginFeatureInterface.framework in Frameworks */,
0543C5CD2DF86C740070BB93 /* Data.framework in Frameworks */,
05734C632DCE04FA0093825D /* Pageboy in Frameworks */,
4E15142A2D99480200DFD08F /* NMapsMap in Frameworks */,
Expand All @@ -136,6 +146,8 @@
05C1D6062DB53A4900508FFD /* Frameworks */ = {
isa = PBXGroup;
children = (
05A7CBE92E27D5FB0010F1CD /* LoginFeature.framework */,
05A7CBEA2E27D5FB0010F1CD /* LoginFeatureInterface.framework */,
05734C5E2DCE04CE0093825D /* PresentationInterface.framework */,
05734C582DCDFAC20093825D /* SearchFeature.framework */,
05734C592DCDFAC20093825D /* SearchFeatureInterface.framework */,
Expand Down Expand Up @@ -212,7 +224,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1540;
LastSwiftUpdateCheck = 1640;
LastUpgradeCheck = 1640;
TargetAttributes = {
BDCA41BC2CF35AC0005EECF6 = {
Expand Down Expand Up @@ -424,11 +436,11 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Poppool/Resource/Poppool.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 250725.1554;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5QTRMS954;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 9JZYRP3D46;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Poppool/Resource/Info.plist;
Expand All @@ -446,11 +458,11 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.0;
MARKETING_VERSION = 1.1.2;
PRODUCT_BUNDLE_IDENTIFIER = com.poppoolIOS.poppool;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = PoppoolGitHubAction;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.poppoolIOS.poppool";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
Expand All @@ -473,9 +485,9 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 250725.1554;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5QTRMS954;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 9JZYRP3D46;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Poppool/Resource/Info.plist;
Expand All @@ -493,11 +505,11 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.0;
MARKETING_VERSION = 1.1.2;
PRODUCT_BUNDLE_IDENTIFIER = com.poppoolIOS.poppool;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = PoppoolGitHubAction;
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.poppoolIOS.poppool";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
Expand Down
3 changes: 3 additions & 0 deletions Poppool/Poppool.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions Poppool/Poppool/Application/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import Data
import Domain
import DomainInterface
import Infrastructure
import LoginFeature
import LoginFeatureInterface
import Presentation
import PresentationInterface
import SearchFeature
Expand Down Expand Up @@ -100,5 +102,9 @@ extension AppDelegate {
DIContainer.register(DetailFactory.self) { return DetailFactoryImpl() }
DIContainer.register(CategorySelectorFactory.self) { return CategorySelectorFactoryImpl() }
DIContainer.register(FilterSelectorFactory.self) { return FilterSelectorFactoryImpl() }
DIContainer.register(LoginFactory.self) { return LoginFactoryImpl() }
DIContainer.register(SignUpFactory.self) { return SignUpFactoryImpl() }
DIContainer.register(WaveTabbarFactory.self) { return WaveTabbarFactoryImpl() }
DIContainer.register(FAQFactory.self) { return FAQFactoryImpl() }
}
}
7 changes: 6 additions & 1 deletion Poppool/Poppool/Resource/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CFBundleShortVersionString</key>
Expand All @@ -18,7 +23,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<string>250725.1554</string>
<key>KAKAO_AUTH_APP_KEY</key>
<string>${KAKAO_AUTH_APP_KEY}</string>
<key>LSApplicationQueriesSchemes</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import UIKit
public class PPLabel: UILabel {

public init(
style: UIFont.FontStyle,
fontSize: CGFloat,
style: UIFont.FontStyle = .regular,
fontSize: CGFloat = 12,
text: String = "",
lineHeight: CGFloat = 1.2
) {
Expand Down
Loading