Skip to content

Commit

Permalink
Merge pull request #185 from tukcomCD2024/refactor/#184-demo
Browse files Browse the repository at this point in the history
Refactor/#184 demo
  • Loading branch information
realhsb authored Sep 18, 2024
2 parents 08388e3 + d3afa18 commit 66a6678
Show file tree
Hide file tree
Showing 47 changed files with 1,302 additions and 1,635 deletions.
190 changes: 81 additions & 109 deletions iOS/RollTheDice/RollTheDice.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Binary file not shown.
18 changes: 9 additions & 9 deletions iOS/RollTheDice/RollTheDice/RollTheDiceApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ struct RollTheDiceApp: App {

// 각 뷰마다 .navigationBarBackButtonHidden() 설정하기!
switch pathType {
case .chatView(isAiMode: true) :
GPTChatView(topic: "",roomId: 74)
case .chatView(let topic, let roomId) :
ChatView(topic: topic, roomId: roomId)
.navigationBarBackButtonHidden()

case .chatView(isAiMode: false):
Text("user")
.navigationBarBackButtonHidden()
// case .chatView(isAiMode: false):
// Text("user")
// .navigationBarBackButtonHidden()
case .detailNewsView(let newsId):
DetailCardNews(newsId: newsId)
case .typeReportView:
Expand All @@ -62,12 +62,12 @@ struct RollTheDiceApp: App {
BookmarkListView(bookmarkListViewModel: bookmarkListViewModel)
case .mypageView:
Text("mypageView")
case .debateSummaryView:
DebateSummaryView()
case .debateSummaryView(let roomId):
DebateSummaryView(roomId: roomId)
case .webView(let url):
WebView(urlToLoad: url)
case .createdebateroom:
GPTChatView(topic: "",roomId: 74)
// case .createdebateroom:
// GPTChatView(topic: "",roomId: 74)
}
})
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//
// ScoopAPIDebate.swift
// RollTheDice
//
// Created by Subeen on 9/19/24.
//

import Foundation

public enum ScoopAPIDebate {
case getDebates
case createDebates
case saveDebatesHuman(Int) // [인간] 토론 메세지 저장
case saveDebatesAI(Int) // [AI] 토론 메세지 저장
case getDebatesSum(Int)
case sumDebates(Int)
case getDebatesMsg(Int)
case deleteDebatesRoom(Int)
case endDebatesRoom(Int)

public var apiDesc: String {
switch self {
case .getDebates:
"/debates"
case .createDebates:
"/debates"
case .saveDebatesHuman(let roomId):
"/debates/\(roomId)/human"
case .saveDebatesAI(let roomId):
"/debates/\(roomId)/ai"
case .getDebatesSum(let roomId):
"/debates/summary/\(roomId)"
case .sumDebates(let roomId):
"/debates/summary/\(roomId)"
case .getDebatesMsg(let roomId):
"/debates/\(roomId)"
case .deleteDebatesRoom(let roomId):
"/debates/\(roomId)"
case .endDebatesRoom(let roomId):
"/debates/\(roomId)"
}
}
}
153 changes: 153 additions & 0 deletions iOS/RollTheDice/RollTheDice/Source/Domain/Service/DebateService.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
//
// DebateTarget.swift
// RollTheDice
//
// Created by Subeen on 9/19/24.
//

import Foundation
import Moya

enum DebateService {
case getDebates(page: Int, size: Int, accessToken: String) // 토론방 전체 조회
case createDebates(topic: String, accessToken: String)
case saveDebatesHuman(roomId: Int, message: String, accessToken: String) // [인간] 토론 메세지 저장
case saveDebatesAI(roomId: Int, message: String, accessToken: String) // [AI] 토론 메세지 저장
case getDebatesSum(roomId: Int, accessToken: String)
case sumDebates(roomId: Int, accessToken: String)
case getDebatesMsg(roomId: Int, accessToken: String)
case deleteDebatesRoom(roomId: Int, accessToken: String)
case endDebatesRoom(roomId: Int, accessToken: String)
}

extension DebateService: BaseTargetType {
var path: String {
switch self {
case .getDebates(_, _, _):
return ScoopAPIDebate.getDebates.apiDesc

case .createDebates(_, _):
return ScoopAPIDebate.createDebates.apiDesc

case .saveDebatesHuman(let roomId, _, _):
return ScoopAPIDebate.saveDebatesHuman(roomId).apiDesc

case .saveDebatesAI(let roomId, _, _):
return ScoopAPIDebate.saveDebatesAI(roomId).apiDesc

case .getDebatesSum(let roomId, _):
return ScoopAPIDebate.getDebatesSum(roomId).apiDesc

case .sumDebates(let roomId, _):
return ScoopAPIDebate.sumDebates(roomId).apiDesc

case .getDebatesMsg(let roomId, _):
return ScoopAPIDebate.getDebatesMsg(roomId).apiDesc

case .deleteDebatesRoom(let roomId, _):
return ScoopAPIDebate.deleteDebatesRoom(roomId).apiDesc

case .endDebatesRoom(let roomId, _):
return ScoopAPIDebate.endDebatesRoom(roomId).apiDesc
}
}

var method: Moya.Method {
switch self {
case .getDebates:
return .get

case .createDebates:
return .post

case .saveDebatesHuman:
return .post

case .saveDebatesAI:
return .post

case .getDebatesSum:
return .get

case .sumDebates:
return .post

case .getDebatesMsg:
return .get

case .deleteDebatesRoom:
return .delete

case .endDebatesRoom:
return .patch
}
}

var task: Moya.Task {
switch self {
case .getDebates(let page, let size, _):
let parameters : [String : Any] = [
"page" : page,
"size" : size
]
return .requestParameters(parameters: parameters, encoding: URLEncoding.queryString)

case .createDebates(let topic, _):
let parameters : [String : Any] = [
"topic" : topic
]
return .requestParameters(parameters: parameters, encoding: JSONEncoding.default)

case .saveDebatesHuman(_, let message, _):
let parameters : [String : Any] = [
"message" : message
]
return .requestParameters(parameters: parameters, encoding: JSONEncoding.default)

case .saveDebatesAI(_, let message, _):
let parameters : [String : Any] = [
"message" : message
]
return .requestParameters(parameters: parameters, encoding: JSONEncoding.default)

case .getDebatesSum:
return .requestPlain

case .sumDebates:
return .requestPlain

case .getDebatesMsg:
return .requestPlain

case .deleteDebatesRoom:
return .requestPlain

case .endDebatesRoom:
return .requestPlain
}
}

var headers: [String : String]? {

let token: String

switch self {

case .getDebates(_, _, let accessToken),
.createDebates(_, let accessToken),
.saveDebatesHuman(_, _, let accessToken),
.saveDebatesAI(_, _, let accessToken),
.getDebatesSum(_, let accessToken),
.sumDebates(_, let accessToken),
.getDebatesMsg(_, let accessToken),
.deleteDebatesRoom(_, let accessToken),
.endDebatesRoom(_, let accessToken):
token = accessToken
return [
"Authorization": "Bearer \(token)",
"X-Content-Type_Options" : "nosniff"
]
}
}
}

7 changes: 4 additions & 3 deletions iOS/RollTheDice/RollTheDice/Source/Model/Path/PathType.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,20 @@
import Foundation

enum PathType: Hashable {
case chatView(isAiMode: Bool)
// case chatView(selectedChat: Chat, roomId: Int)
case chatView(topic: String, roomId: Int)
case detailNewsView(newsId: Int) // 뉴스 자세히 보기

case typeReportView // 분야별 뉴스 통계
case dailyReportView // 요일별 뉴스 관람 개수 통계

case debateSummaryView // 토론 요약 페이지 뷰
case debateSummaryView(roomId: Int) // 토론 요약 페이지 뷰

case bookmarkView // 북마크뷰
case mypageView // 마이페이지뷰

case webView(url: String)

case createdebateroom //토론방 생성
// case createdebateroom //토론방 생성

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,28 @@

import Foundation

struct GPTChat: Hashable, Identifiable{
var title: String
var messages: [Message]
var id: UUID = .init() // id 속성 추가

init(
title: String = "",
messages: [Message] = []
) {
self.title = title
self.messages = messages
}
}
//struct GPTChat: Codable {
//// var id = UUID().uuidString
// var title: String?
// var messages: [Message]?
//// var id: UUID = .init() // id 속성 추가
//}
//
//struct Message: Codable, Identifiable {
// var id: UUID = .init()
// var content: String
// var isUser: Bool
//}

struct Message: Hashable, Identifiable {
var id: UUID = .init()
var content: String
var isUser: Bool

struct DebateChat: Codable {
let status: Int?
let message: String?
var data: [Message]?
}

struct Message: Codable, Identifiable {
let id = UUID().uuidString
let message: String?
let senderType: SenderType?
}
Loading

0 comments on commit 66a6678

Please sign in to comment.