Skip to content

Instantly share code, notes, and snippets.

text.reduce(Text(""), {
$0 + Text($1)
})
Text("Text 1")
+ Text("Text 2")
+ Text("Text 3")
.font(.system(size: 12))
class LoginDataStore: ObservableObject {
@Published var username: String = ""
@Published var storeCode: String = ""
@Published var storeBadge: String = ""
}
class LoginViewModel: ObservableObject {
@Published var model: Login.ViewModel = Login.ViewModel()
func login(request: LoginView.Request) {
// Worker being called here to return the response (we'll skip this part)
let response = Login.Response(username: "Test Username",
storeCode: "Test STC-CODE",
storeBadge: "Test Badge-1")
model = Login.ViewModel(username: response.username,
storeCode: response.storeCode,
class LoginView: View {
@ObservedObject var vm = LoginViewModel()
@State private var username = ""
@State private var password = ""
var body: some View {
VStack {
Button {
vm.login(request: Login.Request(username: username, password: password))
protocol LoginPresentationLogic {
func presentUserData(response: Login.Response)
}
class LoginPresenter {
var view: LoginDisplayLogic?
}
extension LoginPresenter: LoginPresentationLogic {
func presentUserData(response: Login.Response) {
protocol LoginDisplayLogic {
func displayUserDetail(viewModel: Login.ViewModel)
}
struct LoginViewController: View {
var interactor: LoginBusinessLogic?
@ObservedObject var loginData = LoginDataStore()
@State private var username = ""
enum Login {
struct Request {
var username: String
var password: String
}
struct Response {
var username: String
var storeCode: String
var storeBadge: String
protocol LoginBusinessLogic {
func login(request: NewLogin.Request)
}
class LoginInteractor {
var presenter: LoginPresentationLogic?
}
extension LoginInteractor: LoginBusinessLogic {
func login(request: Login.Request) {
extension LoginViewController {
func configureView() -> some View {
var view = self
let interactor = NewLoginInteractor()
let presenter = NewLoginPresenter()
view.interactor = interactor
interactor.presenter = presenter
presenter.view = view
return view