|
//
// 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)
}
}
|