feat(model, viewmodel): 增加model,增加InstanceApp 相关逻辑
1. 增加 InstanceApp model 2. 增加 AddAccountView 中创建 InstanceApp 的逻辑 Signed-off-by: Ching <loooching@gmail.com>
This commit is contained in:
parent
715d76bd7e
commit
bea4505eaa
@ -17,6 +17,8 @@
|
|||||||
24D4D3CC29ABBA800064E566 /* MastodonSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 24D4D3CB29ABBA800064E566 /* MastodonSwift */; };
|
24D4D3CC29ABBA800064E566 /* MastodonSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 24D4D3CB29ABBA800064E566 /* MastodonSwift */; };
|
||||||
24D4D3CE29ABBC030064E566 /* InstanceApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D3CD29ABBC030064E566 /* InstanceApp.swift */; };
|
24D4D3CE29ABBC030064E566 /* InstanceApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D3CD29ABBC030064E566 /* InstanceApp.swift */; };
|
||||||
24D4D3D029ABC01E0064E566 /* AddAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D3CF29ABC01E0064E566 /* AddAccountView.swift */; };
|
24D4D3D029ABC01E0064E566 /* AddAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D3CF29ABC01E0064E566 /* AddAccountView.swift */; };
|
||||||
|
24D4D3D429AF97A40064E566 /* InstanceAppViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D3D329AF97A40064E566 /* InstanceAppViewModel.swift */; };
|
||||||
|
24D4D3D629AFA1970064E566 /* InstanceAppManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D4D3D529AFA1970064E566 /* InstanceAppManager.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
@ -31,6 +33,8 @@
|
|||||||
24D4D3C829ABB7590064E566 /* Const.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Const.swift; sourceTree = "<group>"; };
|
24D4D3C829ABB7590064E566 /* Const.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Const.swift; sourceTree = "<group>"; };
|
||||||
24D4D3CD29ABBC030064E566 /* InstanceApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstanceApp.swift; sourceTree = "<group>"; };
|
24D4D3CD29ABBC030064E566 /* InstanceApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstanceApp.swift; sourceTree = "<group>"; };
|
||||||
24D4D3CF29ABC01E0064E566 /* AddAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccountView.swift; sourceTree = "<group>"; };
|
24D4D3CF29ABC01E0064E566 /* AddAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccountView.swift; sourceTree = "<group>"; };
|
||||||
|
24D4D3D329AF97A40064E566 /* InstanceAppViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstanceAppViewModel.swift; sourceTree = "<group>"; };
|
||||||
|
24D4D3D529AFA1970064E566 /* InstanceAppManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = InstanceAppManager.swift; path = DUDUJI/Models/InstanceAppManager.swift; sourceTree = SOURCE_ROOT; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -64,6 +68,7 @@
|
|||||||
24D4D3B329AB83E80064E566 /* DUDUJI */ = {
|
24D4D3B329AB83E80064E566 /* DUDUJI */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
24D4D3D229AF8E9D0064E566 /* ViewModels */,
|
||||||
24D4D3D129ABC0280064E566 /* Views */,
|
24D4D3D129ABC0280064E566 /* Views */,
|
||||||
24D4D3C529ABB5830064E566 /* Models */,
|
24D4D3C529ABB5830064E566 /* Models */,
|
||||||
24D4D3C829ABB7590064E566 /* Const.swift */,
|
24D4D3C829ABB7590064E566 /* Const.swift */,
|
||||||
@ -87,6 +92,7 @@
|
|||||||
24D4D3C529ABB5830064E566 /* Models */ = {
|
24D4D3C529ABB5830064E566 /* Models */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
24D4D3D529AFA1970064E566 /* InstanceAppManager.swift */,
|
||||||
24D4D3C329ABAE5A0064E566 /* AccountInfo.swift */,
|
24D4D3C329ABAE5A0064E566 /* AccountInfo.swift */,
|
||||||
24D4D3C629ABB6500064E566 /* OauthToken.swift */,
|
24D4D3C629ABB6500064E566 /* OauthToken.swift */,
|
||||||
24D4D3CD29ABBC030064E566 /* InstanceApp.swift */,
|
24D4D3CD29ABBC030064E566 /* InstanceApp.swift */,
|
||||||
@ -102,6 +108,14 @@
|
|||||||
path = Views;
|
path = Views;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
24D4D3D229AF8E9D0064E566 /* ViewModels */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
24D4D3D329AF97A40064E566 /* InstanceAppViewModel.swift */,
|
||||||
|
);
|
||||||
|
path = ViewModels;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@ -185,6 +199,8 @@
|
|||||||
24D4D3B529AB83E80064E566 /* DUDUJIApp.swift in Sources */,
|
24D4D3B529AB83E80064E566 /* DUDUJIApp.swift in Sources */,
|
||||||
24D4D3C929ABB7590064E566 /* Const.swift in Sources */,
|
24D4D3C929ABB7590064E566 /* Const.swift in Sources */,
|
||||||
24D4D3D029ABC01E0064E566 /* AddAccountView.swift in Sources */,
|
24D4D3D029ABC01E0064E566 /* AddAccountView.swift in Sources */,
|
||||||
|
24D4D3D629AFA1970064E566 /* InstanceAppManager.swift in Sources */,
|
||||||
|
24D4D3D429AF97A40064E566 /* InstanceAppViewModel.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -10,11 +10,7 @@ import SwiftUI
|
|||||||
struct DUDUJIView: View {
|
struct DUDUJIView: View {
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
// TextField(Text("server address"))
|
|
||||||
AddAccountView()
|
AddAccountView()
|
||||||
Button("Login") {
|
|
||||||
print("123 \(Date().debugDescription)")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.padding()
|
.padding()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct AccoutInfo {
|
public struct AccountInfo {
|
||||||
public let id: String
|
|
||||||
public let username: String
|
public let username: String
|
||||||
public let serverAddress: URL
|
public let serverAddress: URL
|
||||||
public let oauthToken: OauthToken?
|
public let oauthToken: OauthToken?
|
||||||
|
|||||||
@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct InstanceApp {
|
struct InstanceApp {
|
||||||
public let id: String
|
|
||||||
public let name: String
|
public let name: String
|
||||||
public let website: URL?
|
public let website: URL?
|
||||||
public let redirectUri: String
|
public let redirectUri: String
|
||||||
|
|||||||
19
DUDUJI/Models/InstanceAppManager.swift
Normal file
19
DUDUJI/Models/InstanceAppManager.swift
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
//
|
||||||
|
// InstanceAppManager.swift
|
||||||
|
// DUDUJI
|
||||||
|
//
|
||||||
|
// Created by ching on 2023/3/1.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
class InstanceAppManager {
|
||||||
|
func createInstanceApp(at serverAddress: String) {
|
||||||
|
print("服务器地址是\(serverAddress)")
|
||||||
|
// save things to InstanceApp model
|
||||||
|
// let instanceApp = InstanceApp(id: xxx....)
|
||||||
|
let instanceApp = InstanceApp(name: "name", website: nil, redirectUri: serverAddress, clientId: "abc", clientSecret: "cba")
|
||||||
|
// save the instanceApp to database
|
||||||
|
print(instanceApp.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
18
DUDUJI/ViewModels/InstanceAppViewModel.swift
Normal file
18
DUDUJI/ViewModels/InstanceAppViewModel.swift
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// InstanceAppViewModel.swift
|
||||||
|
// DUDUJI
|
||||||
|
//
|
||||||
|
// Created by ching on 2023/3/1.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
class InstanceAppViewModel: ObservableObject {
|
||||||
|
private let instanceAppManager = InstanceAppManager()
|
||||||
|
|
||||||
|
// MARK: intents
|
||||||
|
|
||||||
|
func createInstanceApp(at url: String) {
|
||||||
|
instanceAppManager.createInstanceApp(at: url)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,17 +8,35 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct AddAccountView: View {
|
struct AddAccountView: View {
|
||||||
@State private var serverAddress: String = ""
|
@State var serverAddress: String = ""
|
||||||
|
@StateObject var instanceAccountViewModel = InstanceAppViewModel()
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Form {
|
Form {
|
||||||
TextField("server address", text: $serverAddress)
|
serverAddressSection
|
||||||
|
submitButtonSection
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var serverAddressSection: some View {
|
||||||
|
Section(header: Text("服务器地址")) {
|
||||||
|
TextField("nofan.xyz", text: $serverAddress)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var submitButtonSection: some View {
|
||||||
|
Section {
|
||||||
|
Button("提交") {
|
||||||
|
instanceAccountViewModel.createInstanceApp(at: serverAddress)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct AddAccountView_Previews: PreviewProvider {
|
struct AddAccountView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
// FIXME: priview
|
||||||
|
// Text("Fixme")
|
||||||
AddAccountView()
|
AddAccountView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user