From cf97b1cd43a91725e0419a953815287fde0bf70f Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 17 Sep 2020 00:46:27 +0300 Subject: SwiftUI WIP --- Juick/MessageFetcher.swift | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Juick/MessageFetcher.swift (limited to 'Juick/MessageFetcher.swift') diff --git a/Juick/MessageFetcher.swift b/Juick/MessageFetcher.swift new file mode 100644 index 0000000..b478e9e --- /dev/null +++ b/Juick/MessageFetcher.swift @@ -0,0 +1,46 @@ +// +// MessageFetcher.swift +// tst +// +// Created by Vitaly Takmazov on 10.12.2019. +// Copyright © 2019 com.juick. All rights reserved. +// + +import Foundation +import Combine + +class MessageFetcher: ObservableObject { + + typealias Feed = [MessageData] + + struct MessageData : Identifiable { + var id : String { + get { + return "\(message.mid.stringValue)-\(message.rid?.intValue ?? 0)" + } + } + var message : Message + } + + @Published var state: LoadableState = .loading + + init(url: String) { + guard let apiUrl = URL(string: url) else { + state = .fetched(.failure(.error("Malformed API URL."))) + return + } + + AppDelegate.shared.api.pullNext(fromPath: url, params: nil) { (messages, error) in + if let error = error { + self.state = .fetched(.failure(.error(error.localizedDescription))) + return + } + + guard let messages = messages else { + self.state = .fetched(.failure(.error("Malformed response data"))) + return + } + self.state = .fetched(.success(messages.map { return MessageData(message: $0) } )) + } + } +} -- cgit v1.2.3