Skip to main content

Blink/Views/Thumbnails/FavoriteOverlay.swift

1import SwiftUI
2import Photos
4/// Renders a small heart to indicate a photo is a "Favorite".
5///
6/// This is meant to match the way favorite items are marked in Photos.
7struct FavoriteHeartIcon: ViewModifier {
8 let isFavorite: Bool
9 let isFocused: Bool
11 init(_ isFavorite: Bool, _ isFocused: Bool) {
12 self.isFavorite = isFavorite
13 self.isFocused = isFocused
14 }
16 func body(content: Content) -> some View {
17 if isFavorite {
18 content.overlay(alignment: Alignment(horizontal: .leading, vertical: .bottom)) {
19 Image(systemName: "heart.fill")
20 .foregroundColor(.white)
21 .padding(3)
22 .font(isFocused ? .title3 : .body)
23 .shadow(radius: 2.0)
24 }
25 } else {
26 content
27 }
28 }
31extension View {
32 func favoriteHeartIcon(_ isFavorite: Bool, _ isFocused: Bool) -> some View {
33 modifier(FavoriteHeartIcon(isFavorite, isFocused))
34 }