summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Juick.xcodeproj/project.pbxproj14
-rw-r--r--JuickNext/Helpers/Errors.swift (renamed from JuickNext/LoadableState.swift)9
-rw-r--r--JuickNext/MessageFetcher.swift12
-rw-r--r--JuickNext/View/FeedView.swift (renamed from JuickNext/FeedView.swift)25
-rw-r--r--JuickNext/View/LoadableImageView.swift (renamed from JuickNext/LoadableImageView.swift)0
-rw-r--r--JuickNext/View/MessageView.swift (renamed from JuickNext/MessageView.swift)0
6 files changed, 26 insertions, 34 deletions
diff --git a/Juick.xcodeproj/project.pbxproj b/Juick.xcodeproj/project.pbxproj
index 68ca4a4..2c548fc 100644
--- a/Juick.xcodeproj/project.pbxproj
+++ b/Juick.xcodeproj/project.pbxproj
@@ -61,7 +61,7 @@
77AA76482BF48818007A0FA8 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA76402BF48818007A0FA8 /* Models.swift */; };
77AA764A2BF48818007A0FA8 /* FeedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA76422BF48818007A0FA8 /* FeedView.swift */; };
77AA764B2BF48818007A0FA8 /* MessageFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA76432BF48818007A0FA8 /* MessageFetcher.swift */; };
- 77AA764C2BF48818007A0FA8 /* LoadableState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA76442BF48818007A0FA8 /* LoadableState.swift */; };
+ 77AA764C2BF48818007A0FA8 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA76442BF48818007A0FA8 /* Errors.swift */; };
77AA764D2BF48818007A0FA8 /* ImageFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA76452BF48818007A0FA8 /* ImageFetcher.swift */; };
77AA76502BF488A9007A0FA8 /* Image+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA764F2BF488A9007A0FA8 /* Image+Data.swift */; };
77B09994189D0B9900A84F59 /* UIImage+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 77B09993189D0B9900A84F59 /* UIImage+Utils.m */; };
@@ -195,7 +195,7 @@
77AA76402BF48818007A0FA8 /* Models.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; };
77AA76422BF48818007A0FA8 /* FeedView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedView.swift; sourceTree = "<group>"; };
77AA76432BF48818007A0FA8 /* MessageFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageFetcher.swift; sourceTree = "<group>"; };
- 77AA76442BF48818007A0FA8 /* LoadableState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadableState.swift; sourceTree = "<group>"; };
+ 77AA76442BF48818007A0FA8 /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = "<group>"; };
77AA76452BF48818007A0FA8 /* ImageFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageFetcher.swift; sourceTree = "<group>"; };
77AA764F2BF488A9007A0FA8 /* Image+Data.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Image+Data.swift"; sourceTree = "<group>"; };
77B09992189D0B9900A84F59 /* UIImage+Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Utils.h"; sourceTree = "<group>"; };
@@ -279,6 +279,9 @@
77163AC82A1051DE009BEE0E /* View */ = {
isa = PBXGroup;
children = (
+ 77AA763E2BF48818007A0FA8 /* LoadableImageView.swift */,
+ 77AA763F2BF48818007A0FA8 /* MessageView.swift */,
+ 77AA76422BF48818007A0FA8 /* FeedView.swift */,
77163AB52A104786009BEE0E /* ContentView.swift */,
);
path = View;
@@ -455,12 +458,8 @@
isa = PBXGroup;
children = (
77AA764E2BF48890007A0FA8 /* Helpers */,
- 77AA76422BF48818007A0FA8 /* FeedView.swift */,
77AA76452BF48818007A0FA8 /* ImageFetcher.swift */,
- 77AA763E2BF48818007A0FA8 /* LoadableImageView.swift */,
- 77AA76442BF48818007A0FA8 /* LoadableState.swift */,
77AA76432BF48818007A0FA8 /* MessageFetcher.swift */,
- 77AA763F2BF48818007A0FA8 /* MessageView.swift */,
77AA76402BF48818007A0FA8 /* Models.swift */,
77163AC82A1051DE009BEE0E /* View */,
77163AB32A104786009BEE0E /* JuickApp.swift */,
@@ -473,6 +472,7 @@
77AA764E2BF48890007A0FA8 /* Helpers */ = {
isa = PBXGroup;
children = (
+ 77AA76442BF48818007A0FA8 /* Errors.swift */,
77AA764F2BF488A9007A0FA8 /* Image+Data.swift */,
);
path = Helpers;
@@ -702,7 +702,7 @@
files = (
77AA76472BF48818007A0FA8 /* MessageView.swift in Sources */,
77AA764B2BF48818007A0FA8 /* MessageFetcher.swift in Sources */,
- 77AA764C2BF48818007A0FA8 /* LoadableState.swift in Sources */,
+ 77AA764C2BF48818007A0FA8 /* Errors.swift in Sources */,
77AA76502BF488A9007A0FA8 /* Image+Data.swift in Sources */,
77AA764A2BF48818007A0FA8 /* FeedView.swift in Sources */,
77163AB62A104786009BEE0E /* ContentView.swift in Sources */,
diff --git a/JuickNext/LoadableState.swift b/JuickNext/Helpers/Errors.swift
index a45edb2..5c47a70 100644
--- a/JuickNext/LoadableState.swift
+++ b/JuickNext/Helpers/Errors.swift
@@ -1,6 +1,6 @@
//
-// LoadableState.swift
-// tst
+// Errors.swift
+// JuickNext
//
// Created by Vitaly Takmazov on 10.12.2019.
// Copyright © 2019 com.juick. All rights reserved.
@@ -8,11 +8,6 @@
import Foundation
-enum LoadableState<T> {
- case loading
- case fetched(Result<T, FetchError>)
-}
-
enum FetchError: Error {
case error(String)
diff --git a/JuickNext/MessageFetcher.swift b/JuickNext/MessageFetcher.swift
index 565cca0..8a150b8 100644
--- a/JuickNext/MessageFetcher.swift
+++ b/JuickNext/MessageFetcher.swift
@@ -1,6 +1,6 @@
//
// MessageFetcher.swift
-// tst
+// JuickNext
//
// Created by Vitaly Takmazov on 10.12.2019.
// Copyright © 2019 com.juick. All rights reserved.
@@ -11,28 +11,28 @@ import Combine
class MessageFetcher: ObservableObject {
- @Published var state: LoadableState<Root> = .loading
+ @Published var state: Result<Root, FetchError>? = nil
init(url: String) {
guard let apiUrl = URL(string: url) else {
- state = .fetched(.failure(.error("Malformed API URL.")))
+ state = .failure(.error("Malformed API URL."))
return
}
URLSession.shared.dataTask(with: apiUrl) { [weak self] (data, _, error) in
if let error = error {
- self?.state = .fetched(.failure(.error(error.localizedDescription)))
+ self?.state = .failure(.error(error.localizedDescription))
return
}
guard let data = data else {
- self?.state = .fetched(.failure(.error("Malformed response data")))
+ self?.state = .failure(.error("Malformed response data"))
return
}
let root = try! JSONDecoder().decode(Root.self, from: data)
DispatchQueue.main.async { [weak self] in
- self?.state = .fetched(.success(root))
+ self?.state = .success(root)
}
}.resume()
}
diff --git a/JuickNext/FeedView.swift b/JuickNext/View/FeedView.swift
index 7e293bd..3a612e8 100644
--- a/JuickNext/FeedView.swift
+++ b/JuickNext/View/FeedView.swift
@@ -20,23 +20,20 @@ struct FeedView: View {
private var stateContent: AnyView {
switch messageFetcher.state {
- case .loading:
+ case nil:
return AnyView(
ProgressView()
)
- case .fetched(let result):
- switch result {
- case .failure(let error):
- return AnyView(
- Text(error.localizedDescription)
- )
- case .success(let root):
- return AnyView(
- List(root) { (message: Message) in
- MessageView(message: message)
- }
- )
- }
+ case .failure(let error):
+ return AnyView(
+ Text(error.localizedDescription)
+ )
+ case .success(let root):
+ return AnyView(
+ List(root) { (message: Message) in
+ MessageView(message: message)
+ }
+ )
}
}
diff --git a/JuickNext/LoadableImageView.swift b/JuickNext/View/LoadableImageView.swift
index 6a41dc2..6a41dc2 100644
--- a/JuickNext/LoadableImageView.swift
+++ b/JuickNext/View/LoadableImageView.swift
diff --git a/JuickNext/MessageView.swift b/JuickNext/View/MessageView.swift
index 398978b..398978b 100644
--- a/JuickNext/MessageView.swift
+++ b/JuickNext/View/MessageView.swift