import SwiftUI

// MARK: - On load
extension View {
    func onLoad(_ action: @escaping () -> Void) -> some View {
        modifier(ViewDidLoadModifier(action))
    }
}

private struct ViewDidLoadModifier: ViewModifier {
    private let action: () -> Void

    @State private var didLoad = false

    init(_ action: @escaping () -> Void) {
        self.action = action
    }

    func body(content: Content) -> some View {
        content.onAppear {
            if !didLoad {
                didLoad.toggle()
                action()
            }
        }
    }
}
