Skip to content

Commit

Permalink
[Feat] 설정 화면 약관 이동 추가 (#190)
Browse files Browse the repository at this point in the history
  • Loading branch information
eung7 authored Jan 13, 2024
2 parents fcc418b + 2b4c03d commit 46d8027
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/kakao/kakao-ios-sdk.git",
"state" : {
"revision" : "d788f9a5a888f16253b9c3d9f3bd794835708c3f",
"version" : "2.15.0"
"revision" : "ae3c60cbd4e3b348775f8c766e5b908fa1e66c5a",
"version" : "2.20.0"
}
},
{
Expand All @@ -42,16 +42,16 @@
"location" : "https://github.com/kakao/kakao-ios-sdk-rx",
"state" : {
"branch" : "master",
"revision" : "ba12deed6bf97f6ac275cc1257fe7dd411e96afc"
"revision" : "4f3a1e5f17c1bb881ac00ab87c5579ed852f992b"
}
},
{
"identity" : "kingfisher",
"kind" : "remoteSourceControl",
"location" : "https://github.com/onevcat/Kingfisher",
"state" : {
"revision" : "c1f60c63f356d364f4284ba82961acbe7de79bcc",
"version" : "7.8.1"
"revision" : "add0a87ec4e31e2ca2a0b2085f0559201e4f5918",
"version" : "7.10.1"
}
},
{
Expand Down
5 changes: 2 additions & 3 deletions Favor/Favor/Sources/Flows/AppStep.swift
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,8 @@ enum AppStep: Step {
case appPrivacyIsRequired // 앱 잠금
case devTeamInfoIsRequired // 팀
case devTeamSupportIsRequired // 개발자 응원하기
case serviceUsageTermIsRequired // 서비스 이용약관
case privateInfoManagementTermIsRequired // 개인정보 처리방침
case openSourceUsageIsRequired // 오픈소스 라이선스
case serviceUsageTermIsRequired(String) // 서비스 이용약관
case privateInfoManagementTermIsRequired(String) // 개인정보 처리방침
case wayBackToRootIsRequired

// MARK: - BottomSheet
Expand Down
24 changes: 11 additions & 13 deletions Favor/Favor/Sources/Flows/SettingsFlow.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
// Created by 이창준 on 6/28/23.
//

import OSLog
import UIKit

import FavorKit
Expand Down Expand Up @@ -61,14 +62,11 @@ public final class SettingsFlow: Flow {
case .devTeamSupportIsRequired:
return self.navigateToDevTeamSupport()

case .serviceUsageTermIsRequired:
return self.navigateToServiceUsageTerm()
case .serviceUsageTermIsRequired(let urlString):
return self.navigateToServiceUsageTerm(urlString: urlString)

case .privateInfoManagementTermIsRequired:
return self.navigateToPrivateInfoManagementTerm()

case .openSourceUsageIsRequired:
return self.navigateToOpenSourceUsage()
case .privateInfoManagementTermIsRequired(let urlString):
return self.navigateToPrivateInfoManagementTerm(urlString: urlString)

case .wayBackToRootIsRequired:
self.rootViewController.popToRootViewController(animated: false)
Expand Down Expand Up @@ -209,15 +207,15 @@ private extension SettingsFlow {
return .none
}

func navigateToServiceUsageTerm() -> FlowContributors {
return .none
}

func navigateToPrivateInfoManagementTerm() -> FlowContributors {
func navigateToServiceUsageTerm(urlString: String) -> FlowContributors {
guard let url = URL(string: urlString) else { return .none }
UIApplication.shared.open(url)
return .none
}

func navigateToOpenSourceUsage() -> FlowContributors {
func navigateToPrivateInfoManagementTerm(urlString: String) -> FlowContributors {
guard let url = URL(string: urlString) else { return .none }
UIApplication.shared.open(url)
return .none
}
}
45 changes: 43 additions & 2 deletions Favor/Favor/Sources/Scenes/Settings/SettingsRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
//

import Foundation
import OSLog

import DeviceKit
import FavorKit
Expand Down Expand Up @@ -41,6 +42,9 @@ private extension SettingsRenderer {
} else {
version = appVersion
}

let terms = self.fetchTerms()

return [
Item(type: .navigatable, section: .userInfo, title: "로그인 정보", subtitle: FTUXStorage.authState.rawValue, step: .authInfoIsRequired),
Item(type: .navigatable, section: .userInfo, title: "비밀번호 변경", step: .newPasswordIsRequired),
Expand All @@ -55,8 +59,8 @@ private extension SettingsRenderer {
Item(type: .tappable, section: .appInfo, title: "버전", staticInfo: version),
Item(type: .navigatable, section: .appInfo, title: "", step: .devTeamInfoIsRequired),
Item(type: .navigatable, section: .appInfo, title: "개발자 응원하기", step: .devTeamSupportIsRequired),
Item(type: .navigatable, section: .appInfo, title: "서비스 이용약관", step: .serviceUsageTermIsRequired),
Item(type: .navigatable, section: .appInfo, title: "개인정보 처리방침", step: .privateInfoManagementTermIsRequired)
Item(type: .navigatable, section: .appInfo, title: "서비스 이용약관", step: .serviceUsageTermIsRequired(terms[0].url)),
Item(type: .navigatable, section: .appInfo, title: "개인정보 처리방침", step: .privateInfoManagementTermIsRequired(terms[1].url))
]
}

Expand Down Expand Up @@ -100,4 +104,41 @@ private extension SettingsRenderer {

return items
}

func fetchTerms() -> [Terms] {
typealias JSON = [String: Any]

guard let filePath = Bundle.main.path(forResource: "Term-Info", ofType: "plist") else {
fatalError("Couldn't find the 'Term-Info.plist' file.")
}

var terms: JSON = [:]
do {
var plistRAW: Data
if #available(iOS 16.0, *) {
plistRAW = try Data(contentsOf: URL(filePath: filePath))
} else {
plistRAW = try NSData(contentsOfFile: filePath) as Data
}
terms = try PropertyListSerialization.propertyList(from: plistRAW, format: nil) as! JSON
} catch {
os_log(.error, "\(error)")
}

var decodedTerms: [Terms] = []
terms.forEach { term in
guard
let value = term.value as? JSON,
let title = value["Title"] as? String,
let isRequired = value["Required"] as? Bool,
let url = value["URL"] as? String,
let index = value["Index"] as? Int
else { return }

let term = Terms(title: title, isRequired: isRequired, url: url, index: index)
decodedTerms.append(term)
}

return decodedTerms.sorted(by: { $0.index < $1.index })
}
}

0 comments on commit 46d8027

Please sign in to comment.