// // CustomWigetView.swift // Reflect (iOS) // // Created by Trey Tartt on 4/2/22. // import SwiftUI struct CustomWigetView: View { @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system @StateObject private var selectedWidget = CustomWidgetStateViewModel() private var textColor: Color { theme.currentTheme.labelColor } var body: some View { ZStack { theme.currentTheme.secondaryBGColor VStack { ScrollView(.horizontal) { HStack { ForEach(UserDefaultsStore.getCustomWidgets(), id: \.uuid) { widget in CustomWidgetView(customWidgetModel: widget) .frame(width: 50, height: 50) .cornerRadius(10) .accessibilityIdentifier(AccessibilityID.Customize.customWidget(UserDefaultsStore.getCustomWidgets().firstIndex(where: { $0.uuid == widget.uuid }) ?? 0)) .onTapGesture { AnalyticsManager.shared.track(.widgetViewed) selectedWidget.selectedItem = widget.copy() as? CustomWidgetModel selectedWidget.showSheet = true } } RoundedRectangle(cornerRadius: 10).fill().foregroundColor(theme.currentTheme.secondaryBGColor) .frame(width: 50, height: 50) .overlay( Image(systemName: "plus") ) .accessibilityIdentifier(AccessibilityID.Customize.customWidgetAdd) .onTapGesture { AnalyticsManager.shared.track(.widgetCreateTapped) selectedWidget.selectedItem = CustomWidgetModel.randomWidget selectedWidget.showSheet = true } } .padding() } .background(RoundedRectangle(cornerRadius: 10).fill().foregroundColor(theme.currentTheme.bgColor)) .padding() .cornerRadius(10) Text("[\(String(localized: "how_to_add_widget"))](https://support.apple.com/guide/iphone/add-widgets-iphb8f1bf206/ios)") .accessibilityIdentifier(AccessibilityID.Customize.widgetHowToLink) .accentColor(textColor) .padding(.bottom) } } .fixedSize(horizontal: false, vertical: true) .cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight]) .sheet(isPresented: $selectedWidget.showSheet) { if let selectedItem = selectedWidget.selectedItem { CreateWidgetView(customWidget: selectedItem) } } } } struct CustomWigetView_Previews: PreviewProvider { static var previews: some View { CustomWigetView() } }