//
//  RefreshProgressView.swift
//  NetNewsWire
//
//  Created by Phil Viso on 7/2/20.
//  Copyright © 2020 Ranchero Software. All rights reserved.
//

import SwiftUI

struct RefreshProgressView: View {
	
	@EnvironmentObject var sceneModel: SceneModel
	
	@ViewBuilder var body: some View {
		switch sceneModel.refreshProgressState {
		case .refreshProgress(let progress):
			ProgressView(value: progress)
				.frame(width: progressViewWidth())
		case .lastRefreshDateText(let text):
			Text(text)
				.lineLimit(1)
				.font(.caption)
				.foregroundColor(.secondary)
		case .none:
			EmptyView()
		}
	}
	
	// MARK -
	
	private func progressViewWidth() -> CGFloat {
		#if os(iOS)
		return 100.0
		#endif
		
		#if os(macOS)
		return 40.0
		#endif
	}
	
}

struct RefreshProgressView_Previews: PreviewProvider {
	static var previews: some View {
		Group {
			RefreshProgressView()
				.environmentObject(refreshProgressModel(lastRefreshDate: nil, tasksCompleted: 1, totalTasks: 2))
				.previewDisplayName("Refresh in progress")
						
			RefreshProgressView()
				.environmentObject(refreshProgressModel(lastRefreshDate: Date(timeIntervalSinceNow: -120.0), tasksCompleted: 0, totalTasks: 0))
				.previewDisplayName("Last refreshed with date")
		}
		.previewLayout(.sizeThatFits)
    }
}