summaryrefslogtreecommitdiff
path: root/Sora/Views/SearchSuggestionsView.swift
blob: 2a1a8d6ed0220ebc752b00b36841af2fdaf14bdb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import SwiftUI

struct SearchSuggestionsView: View {
  var tags: [BooruTag]
  @Binding var searchText: String
  private var lastSearchTag: String {
    String(searchText.split(separator: " ").last ?? "").lowercased()
  }
  private var filteredTags: [BooruTag] {
    guard !lastSearchTag.isEmpty else { return [] }

    return tags.filter { $0.name.lowercased().contains(lastSearchTag) }
  }

  var body: some View {
    ForEach(
      tags.filter { tag in
        tag.name.lowercased().contains(lastSearchTag)
      }
    ) { suggestion in
      Button {
        if let range = searchText.range(of: lastSearchTag, options: .backwards) {
          searchText.replaceSubrange(range, with: suggestion.name)
        }
      } label: {
        Text(suggestion.name)
      }
    }
  }
}