//
//  LoadingView.swift
//  SodaLive
//
//  Created by klaus on 2023/08/09.
//

import SwiftUI

struct LoadingView: View {
    @State var index = 0
    
    @State var timer = Timer.publish(every: 0.35, on: .current, in: .common).autoconnect()
    
    var body: some View {
        ZStack {
            Color.primary.opacity(0.2)
                .ignoresSafeArea()
            
            ZStack {
                Image("loading_1")
                    .resizable()
                    .frame(width: 100, height: 100)
                    .opacity(index == 0 ? 1.0 : 0.0)
                
                Image("loading_2")
                    .resizable()
                    .frame(width: 100, height: 100)
                    .opacity(index == 1 ? 1.0 : 0.0)
                
                Image("loading_3")
                    .resizable()
                    .frame(width: 100, height: 100)
                    .opacity(index == 2 ? 1.0 : 0.0)
                
                Image("loading_4")
                    .resizable()
                    .frame(width: 100, height: 100)
                    .opacity(index == 3 ? 1.0 : 0.0)
                
                Image("loading_5")
                    .resizable()
                    .frame(width: 100, height: 100)
                    .opacity(index == 4 ? 1.0 : 0.0)
            }
            .frame(width: 150, height: 150)
            .background(Color.white)
            .cornerRadius(14)
            .shadow(color: Color.primary.opacity(0.07), radius: 5, x: 5, y: 5)
            .shadow(color: Color.primary.opacity(0.07), radius: 5, x: -5, y: -5)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .onReceive(timer) { _ in
            DispatchQueue.main.async {
                if index == 4 {
                    index = 0
                } else {
                    index += 1
                }
            }
        }
    }
}

struct LoadingView_Previews: PreviewProvider {
    static var previews: some View {
        LoadingView()
    }
}