설정에서 시스템/한국어/영어/일본어 선택을 지원한다. 선택 시 Accept-Language 헤더와 UI locale을 즉시 반영한다. 언어 변경 후 스플래시를 거쳐 메인으로 소프트 재시작한다.
42 lines
992 B
Swift
42 lines
992 B
Swift
//
|
|
// MoyaProviderExtension.swift
|
|
// SodaLive
|
|
//
|
|
// Created by klaus on 2023/11/17.
|
|
//
|
|
|
|
import Moya
|
|
import Foundation
|
|
|
|
extension MoyaProvider {
|
|
convenience init() {
|
|
var plugins: [PluginType] = [
|
|
AuthPlugin(),
|
|
AcceptLanguagePlugin()
|
|
]
|
|
#if DEBUG
|
|
plugins.append(NetworkLoggerPlugin(configuration: .init(logOptions: [.requestHeaders])))
|
|
plugins.append(AcceptLanguageDebugLogger())
|
|
#endif
|
|
self.init(plugins: plugins)
|
|
}
|
|
}
|
|
|
|
final class AuthPlugin: PluginType {
|
|
func didReceive(_ result: Result<Response, MoyaError>, target: TargetType) {
|
|
switch result {
|
|
case .success(let response):
|
|
DEBUG_LOG("\(response.statusCode) \(response)")
|
|
if response.statusCode == 401 {
|
|
AppState.shared.setAppStep(step: .main)
|
|
UserDefaults.reset()
|
|
}
|
|
break
|
|
|
|
case .failure(_):
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|