Skip to content

Commit

Permalink
Merge pull request #2 from iqbalnurhaq/main
Browse files Browse the repository at this point in the history
Add Prefs, Mapper, and Presentation
  • Loading branch information
iqbalnurhaq authored Mar 21, 2023
2 parents 8cf8eec + 989dcdd commit 1783f38
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 1 deletion.
23 changes: 23 additions & 0 deletions Package.resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"pins" : [
{
"identity" : "realm-cocoa",
"kind" : "remoteSourceControl",
"location" : "https://github.com/realm/realm-cocoa.git",
"state" : {
"revision" : "b1072f3ef733108dfcc62c2001781e5d65605fbf",
"version" : "10.34.1"
}
},
{
"identity" : "realm-core",
"kind" : "remoteSourceControl",
"location" : "https://github.com/realm/realm-core.git",
"state" : {
"revision" : "b77443ca7fa25407869ca537bf3ae912b1427bff",
"version" : "12.13.0"
}
}
],
"version" : 2
}
2 changes: 2 additions & 0 deletions Sources/Core/Extension/CustomError+Ext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@ public enum URLError: LocalizedError {
case invalidResponse
case addressUnreachable(URL)
case custom(String)
case serverError

public var errorDescription: String? {
switch self {
case .invalidRequest: return "Request is null."
case .invalidResponse: return "The server responded with garbage."
case .addressUnreachable(let url): return "\(url.absoluteString) is unreachable."
case .custom(let message): return "\(message)"
case .serverError: return "Internal Server Error"
}
}
}
Expand Down
1 change: 1 addition & 0 deletions Sources/Core/Mapper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ public protocol Mapper {

func transformResponseToEntity(request: Request?, response: Response) -> Entity
func transformEntityToDomain(entity: Entity) -> Domain
func transformResponseToDomain(request: Request?, response: Response) -> Domain
}
46 changes: 46 additions & 0 deletions Sources/Core/Presentation/GetListPresenter.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//
// File.swift
//
//
// Created by Iqbal Nur Haq on 17/01/23.
//

import Foundation
import SwiftUI
import Combine

public class GetListPresenter<Request, Response, Interactor: UseCase>: ObservableObject where Interactor.Request == Request, Interactor.Response == [Response] {

private var cancellables: Set<AnyCancellable> = []

private let _useCase: Interactor

@Published public var list: [Response] = []
@Published public var errorMessage: String = ""
@Published public var isLoading: Bool = false
@Published public var isError: Bool = false

public init(useCase: Interactor) {
_useCase = useCase
}

public func getList(request: Request?) {
isLoading = true
_useCase.execute(request: request)
.receive(on: RunLoop.main)
.sink(receiveCompletion: { completion in
switch completion {
case .failure(let error):
self.errorMessage = error.localizedDescription
self.isError = true
self.isLoading = false
case .finished:
self.isLoading = false
}
}, receiveValue: { list in
self.list = list

})
.store(in: &cancellables)
}
}
2 changes: 2 additions & 0 deletions Sources/Core/Presentation/Presenter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Interactor.Response == Response {
@Published public var item: Response?
@Published public var errorMessage: String = ""
@Published public var isLoading: Bool = false
@Published public var isSuccess: Bool = false
@Published public var isError: Bool = false

public init(useCase: Interactor){
Expand All @@ -38,6 +39,7 @@ Interactor.Response == Response {
self.isLoading = false
case .finished:
self.isLoading = false
self.isSuccess = true
}
}, receiveValue: { item in
self.item = item
Expand Down
53 changes: 52 additions & 1 deletion Sources/Core/Utils/Prefs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,14 @@ import Foundation
public class Prefs
{
private let defaults = UserDefaults.standard

private let keyAccessTokenPrefs = "tokenPrefs"
private let keyDoctorIdPrefs = "doctorIdPrefs"
private let keyUserCodePrefs = "userCodePrefs"
private let keyDoctorHospitalIdPrefs = "doctorHospitalIdPrefs"
private let keyOnboardingPatient = "onBoardingPatientPrefs"
private let keyNotifToken = "notifTokenPrefs"


public var accessTokenPrefs: String {
set {
Expand All @@ -21,6 +27,51 @@ public class Prefs
return defaults.string(forKey: keyAccessTokenPrefs) ?? ""
}
}

public var doctorIdPrefs: String {
set {
defaults.setValue(newValue, forKey: keyDoctorIdPrefs)
}
get {
return defaults.string(forKey: keyDoctorIdPrefs) ?? ""
}
}

public var userCodePrefs: String {
set {
defaults.setValue(newValue, forKey: keyUserCodePrefs)
}
get {
return defaults.string(forKey: keyUserCodePrefs) ?? ""
}
}

public var doctorHospitalIdPrefs: Int {
set {
defaults.setValue(newValue, forKey: keyDoctorHospitalIdPrefs)
}
get {
return defaults.integer(forKey: keyDoctorHospitalIdPrefs)
}
}

public var onBoardingPatientPrefs: Bool {
set {
defaults.setValue(newValue, forKey: keyOnboardingPatient)
}
get {
return defaults.bool(forKey: keyOnboardingPatient)
}
}

public var notifTokenPrefs: String {
set {
defaults.setValue(newValue, forKey: keyNotifToken)
}
get {
return defaults.string(forKey: keyNotifToken) ?? ""
}
}

public class var shared: Prefs {
struct Static {
Expand Down

0 comments on commit 1783f38

Please sign in to comment.