Skip to content

Instantly share code, notes, and snippets.

@unnnyong
Created May 28, 2020 11:38
Show Gist options
  • Save unnnyong/9cf91f1849b5ab9d7facd4757359ec4f to your computer and use it in GitHub Desktop.
Save unnnyong/9cf91f1849b5ab9d7facd4757359ec4f to your computer and use it in GitHub Desktop.
//
// ViewController.swift
// RxSwiftExample
//
// Created by Eunyeong Kim on 2020/05/27.
// Copyright © 2020 Eunyeong Kim. All rights reserved.
//
import UIKit
import RxSwift
import RxCocoa
struct PhotoWriter {
static func save(_ image: UIImage) -> Single<String> {
Single.create { observer in
return Disposables.create()
}
}
}
final class PhotosViewController: UIViewController {
private let subject = PublishSubject<UIImage>()
var selectedPhotos: Observable<UIImage> {
return subject.asObservable()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
subject.onCompleted()
}
private func selectImage(_ image: UIImage) {
subject.onNext(image)
}
}
final class ViewController: UIViewController {
private let disposeBag = DisposeBag()
private let images = BehaviorRelay<[UIImage]>(value: [])
private let previewImage = UIImage()
private let photosVC = PhotosViewController()
override func viewDidLoad() {
super.viewDidLoad()
photosVC.selectedPhotos
.subscribe(
onNext: { [weak self] image in
self?.images.accept(self?.images.value ?? [] + [image])
}
)
.disposed(by: disposeBag)
images.subscribe { images in
print(images.element?.count ?? "")
}.disposed(by: disposeBag)
}
}
private extension ViewController {
func addImage(newImage: UIImage) {
images.accept(images.value + [newImage])
}
func clearImages() {
images.accept([])
}
func showMessage() {
didTapCloseButton()
.subscribe(
onCompleted: { [weak self] in
self?.saveImage()
// self?.previewImage = nil
// closeVC()
},
onError: { error in
print(error)
}
)
.disposed(by: disposeBag)
}
func didTapCloseButton() -> Completable {
Completable.create { completable in
return Disposables.create()
}
}
func saveImage() {
PhotoWriter.save(previewImage)
.subscribe(
onSuccess: { id in
print("Saved Photo ID is \(id)")
}) { error in
print(error)
}
.disposed(by: disposeBag)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment