mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
parent
52539e3997
commit
efae83804a
@ -19,7 +19,7 @@
|
|||||||
"zh-Hans" : {
|
"zh-Hans" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "修改成功!"
|
"value" : "修改成功!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -908,7 +908,7 @@
|
|||||||
"zh-Hans" : {
|
"zh-Hans" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "删除成功"
|
"value" : "删除成功!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2350,6 +2350,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"setAsDefaultServer" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Set As Default Server"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "设为预览服务器"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"setSounds" : {
|
"setSounds" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -2373,6 +2390,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"setSuccessfully" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Successfully set"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "设置成功!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"settings" : {
|
"settings" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import RxSwift
|
|||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
enum ServerActionType {
|
enum ServerActionType {
|
||||||
|
case select
|
||||||
case copy
|
case copy
|
||||||
case reset(key: String?)
|
case reset(key: String?)
|
||||||
case delete
|
case delete
|
||||||
@ -21,9 +22,10 @@ enum ServerActionType {
|
|||||||
func == (lhs: ServerActionType, rhs: ServerActionType) -> Bool {
|
func == (lhs: ServerActionType, rhs: ServerActionType) -> Bool {
|
||||||
switch (lhs, rhs) {
|
switch (lhs, rhs) {
|
||||||
case (.copy, .copy),
|
case (.copy, .copy),
|
||||||
(.delete, .delete):
|
(.delete, .delete),
|
||||||
|
(.select, .select):
|
||||||
return true
|
return true
|
||||||
case let (.reset(a), .reset(b)):
|
case (.reset(let a), .reset(let b)):
|
||||||
return a == b
|
return a == b
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
@ -59,7 +61,7 @@ class ServerListViewController: BaseViewController<ServerListViewModel> {
|
|||||||
make.edges.equalToSuperview()
|
make.edges.equalToSuperview()
|
||||||
}
|
}
|
||||||
|
|
||||||
closeButton.rx.tap.subscribe {[weak self] in
|
closeButton.rx.tap.subscribe { [weak self] in
|
||||||
self?.dismiss(animated: true, completion: nil)
|
self?.dismiss(animated: true, completion: nil)
|
||||||
} onError: { _ in
|
} onError: { _ in
|
||||||
|
|
||||||
@ -67,9 +69,12 @@ class ServerListViewController: BaseViewController<ServerListViewModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func bindViewModel() {
|
override func bindViewModel() {
|
||||||
|
|
||||||
let action = getServerAction()
|
let action = getServerAction()
|
||||||
|
|
||||||
|
// 选择 server
|
||||||
|
let selectServer = action.filter { $0.1 == ServerActionType.select }
|
||||||
|
.map { $0.0 }.asDriver(onErrorDriveWith: .empty())
|
||||||
|
|
||||||
// 复制 server
|
// 复制 server
|
||||||
let copyServer = action.filter { $0.1 == ServerActionType.copy }
|
let copyServer = action.filter { $0.1 == ServerActionType.copy }
|
||||||
.map { $0.0 }.asDriver(onErrorDriveWith: .empty())
|
.map { $0.0 }.asDriver(onErrorDriveWith: .empty())
|
||||||
@ -80,13 +85,14 @@ class ServerListViewController: BaseViewController<ServerListViewModel> {
|
|||||||
|
|
||||||
// 重置 server key
|
// 重置 server key
|
||||||
let resetServer = action.compactMap { r -> (Server, String?)? in
|
let resetServer = action.compactMap { r -> (Server, String?)? in
|
||||||
if case let ServerActionType.reset(key) = r.1 {
|
if case ServerActionType.reset(let key) = r.1 {
|
||||||
return (r.0, key)
|
return (r.0, key)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}.asDriver(onErrorDriveWith: .empty())
|
}.asDriver(onErrorDriveWith: .empty())
|
||||||
|
|
||||||
let output = viewModel.transform(input: ServerListViewModel.Input(
|
let output = viewModel.transform(input: ServerListViewModel.Input(
|
||||||
|
selectServer: selectServer,
|
||||||
copyServer: copyServer,
|
copyServer: copyServer,
|
||||||
deleteServer: deleteServer,
|
deleteServer: deleteServer,
|
||||||
resetServer: resetServer
|
resetServer: resetServer
|
||||||
@ -122,13 +128,12 @@ class ServerListViewController: BaseViewController<ServerListViewModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getServerAction() -> Driver<(Server, ServerActionType)> {
|
func getServerAction() -> Driver<(Server, ServerActionType)> {
|
||||||
|
|
||||||
return tableView.rx
|
return tableView.rx
|
||||||
.itemSelected
|
.itemSelected
|
||||||
.flatMapLatest { indexPath in
|
.flatMapLatest { indexPath in
|
||||||
let relay = PublishRelay<(Server, ServerActionType)>()
|
let relay = PublishRelay<(Server, ServerActionType)>()
|
||||||
guard let viewModel: ServerListTableViewCellViewModel = try? self.tableView.rx.model(at: indexPath) else {
|
guard let viewModel: ServerListTableViewCellViewModel = try? self.tableView.rx.model(at: indexPath) else {
|
||||||
return relay;
|
return relay
|
||||||
}
|
}
|
||||||
|
|
||||||
let alertController = UIAlertController(title: nil, message: "\(viewModel.address.value)", preferredStyle: .actionSheet)
|
let alertController = UIAlertController(title: nil, message: "\(viewModel.address.value)", preferredStyle: .actionSheet)
|
||||||
@ -148,6 +153,10 @@ class ServerListViewController: BaseViewController<ServerListViewModel> {
|
|||||||
self.navigationController?.present(alertController, animated: true, completion: nil)
|
self.navigationController?.present(alertController, animated: true, completion: nil)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
alertController.addAction(UIAlertAction(title: NSLocalizedString("setAsDefaultServer"), style: .default, handler: { _ in
|
||||||
|
relay.accept((viewModel.server, .select))
|
||||||
|
}))
|
||||||
|
|
||||||
alertController.addAction(UIAlertAction(title: NSLocalizedString("deleteServer"), style: .destructive, handler: { _ in
|
alertController.addAction(UIAlertAction(title: NSLocalizedString("deleteServer"), style: .destructive, handler: { _ in
|
||||||
|
|
||||||
let alertController = UIAlertController(title: nil, message: NSLocalizedString("confirmDeleteServer"), preferredStyle: .alert)
|
let alertController = UIAlertController(title: nil, message: NSLocalizedString("confirmDeleteServer"), preferredStyle: .alert)
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import SwiftyJSON
|
|||||||
|
|
||||||
class ServerListViewModel: ViewModel, ViewModelType {
|
class ServerListViewModel: ViewModel, ViewModelType {
|
||||||
struct Input {
|
struct Input {
|
||||||
|
let selectServer: Driver<Server>
|
||||||
let copyServer: Driver<Server>
|
let copyServer: Driver<Server>
|
||||||
let deleteServer: Driver<Server>
|
let deleteServer: Driver<Server>
|
||||||
let resetServer: Driver<(Server, String?)>
|
let resetServer: Driver<(Server, String?)>
|
||||||
@ -142,8 +143,15 @@ class ServerListViewModel: ViewModel, ViewModelType {
|
|||||||
)]
|
)]
|
||||||
}.asDriver(onErrorDriveWith: .empty())
|
}.asDriver(onErrorDriveWith: .empty())
|
||||||
|
|
||||||
|
// 选择首页预览服务器
|
||||||
|
let serverSelected = input.selectServer.asObservable().map { server in
|
||||||
|
ServerManager.shared.setCurrentServer(serverId: server.id)
|
||||||
|
showSnackbar.accept(NSLocalizedString("setSuccessfully"))
|
||||||
|
return ()
|
||||||
|
}
|
||||||
|
|
||||||
// 当前服务器有改动
|
// 当前服务器有改动
|
||||||
let serverChanged = Observable.merge(serverDeleted, serverResetSuccess)
|
let serverChanged = Observable.merge(serverSelected, serverDeleted, serverResetSuccess)
|
||||||
.share()
|
.share()
|
||||||
|
|
||||||
serverChanged.map {
|
serverChanged.map {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user