Skip to content

Commit

Permalink
FEAT: Implement sockets on printer detail screen
Browse files Browse the repository at this point in the history
  • Loading branch information
josefdolezal committed May 13, 2017
1 parent 15b1a17 commit 0f593af
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions OctoPhone/View Related/Detail/DetailViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ final class DetailViewModel: DetailViewModelType, DetailViewModelInputs, DetailV
/// Current state value
private let stateProperty = MutableProperty<PrinterState?>(nil)

/// Holds last value of tool property
private let toolProperty = MutableProperty<Tool?>(nil)

/// Last error occured
Expand All @@ -173,6 +174,9 @@ final class DetailViewModel: DetailViewModelType, DetailViewModelInputs, DetailV
/// Printer requests provider
private let provider: OctoPrintProvider

/// Push events from OctoPrint
private var sockets: Disposable?

/// User content requests provider
private let staticProvider = StaticContentProvider()

Expand Down Expand Up @@ -258,6 +262,7 @@ final class DetailViewModel: DetailViewModelType, DetailViewModelInputs, DetailV

loadPrinter(with: printerID)
requestData()
watchData()
}

// MARK: Input methods
Expand Down Expand Up @@ -351,7 +356,18 @@ final class DetailViewModel: DetailViewModelType, DetailViewModelInputs, DetailV
return job.fileName != nil && job.fileSize.value != nil && job.printTimeLeft.value != nil
}

/// Setup temperatures watch
private func watchData() {
sockets = OctoPrintPushEvents(url: provider.baseURL)
.temperatures()
.startWithValues({ [weak self] bed, tool in
self?.bedProperty.value = bed
self?.toolProperty.value = tool
})
}

deinit {
streamTimerDisposable?.dispose()
sockets?.dispose()
}
}

0 comments on commit 0f593af

Please sign in to comment.