暂无描述

GroupPageViewModel.swift 1.8KB

    // // GroupPageViewModel.swift // PaiAi // // Created by zhengjianfei on 2017/1/4. // Copyright © 2017年 FFIB. All rights reserved. // import Foundation import UIKit import ObjectMapper import RxSwift import RxCocoa public protocol GroupPageViewModelDelegate: class { func didSelect(_ item: PhotoItem) func navigateToGroupDetail() func navigateToGroupQR() } public typealias GroupPageSource = GroupPhotoRepositorable & Gettable & Submitable & Layoutable public class GroupPageViewModel<T: GroupPageSource> { fileprivate let respository: T public var isReload: Observable<Bool> weak var delegate: GroupPageViewModelDelegate? public init(respository: T) { self.respository = respository isReload = respository.loadingObserver } public var groupPhotoContents: Observable<[AnimatableSectionModel<Int, T.Content.Element>]> { return respository.content.map({ model in return [AnimatableSectionModel(model: 0, items: model)] }) } public func submit(image: UIImage) { let edge = image.size.width > image.size.height ? image.size.height : image.size.width // let newImage = image.scaledImage(1280 / edge), guard let data = image.jpegData(compressionQuality: 0.4) else { return } respository.submit(data: data) } public func reload() { respository.loadContent(isRefresh: true) } public func didSelect(_ item: PhotoItem) { delegate?.didSelect(item) } public func navigateToGroupDetail() { delegate?.navigateToGroupDetail() } public func navigateToGroupQR() { delegate?.navigateToGroupDetail() } public func layoutSizeForIndexPath(_ indexPath: IndexPath) -> CGSize { let i = indexPath.row return respository.layoutSizeForIndex(i) } }