Skip to content

Commit

Permalink
Move search logic to content view
Browse files Browse the repository at this point in the history
  • Loading branch information
milanvarady committed Jan 12, 2025
1 parent fe76557 commit 6ef8691
Show file tree
Hide file tree
Showing 21 changed files with 304 additions and 298 deletions.
48 changes: 28 additions & 20 deletions Applite.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
413F77A52972B2E70053349A /* DependencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F77A42972B2E70053349A /* DependencyManager.swift */; };
413F87242D32D2B100D4BE10 /* IfritStatic in Frameworks */ = {isa = PBXBuildFile; productRef = 413F87232D32D2B100D4BE10 /* IfritStatic */; };
413F87262D33048800D4BE10 /* InfoPopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F87252D33048800D4BE10 /* InfoPopup.swift */; };
413F87282D33DEAD00D4BE10 /* ContentView+SearchFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F87272D33DEAD00D4BE10 /* ContentView+SearchFunctions.swift */; };
413F872C2D33E19800D4BE10 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F872B2D33E19800D4BE10 /* HomeView.swift */; };
413F872E2D33E1CA00D4BE10 /* HomeView+NoSearchResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F872D2D33E1CA00D4BE10 /* HomeView+NoSearchResults.swift */; };
413F87302D33E29A00D4BE10 /* HomeView+SortingOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F872F2D33E29A00D4BE10 /* HomeView+SortingOptions.swift */; };
413F87322D33E30400D4BE10 /* SortingOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 413F87312D33E30400D4BE10 /* SortingOptions.swift */; };
414074F528DF53E80073EB22 /* AppliteApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 414074F428DF53E80073EB22 /* AppliteApp.swift */; };
414074F728DF53E80073EB22 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 414074F628DF53E80073EB22 /* ContentView.swift */; };
414074F928DF53EB0073EB22 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 414074F828DF53EB0073EB22 /* Assets.xcassets */; };
Expand Down Expand Up @@ -80,8 +85,6 @@
419256432D1E0A0200D9EF10 /* BrewPathSelectorView+PathOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419256422D1E0A0200D9EF10 /* BrewPathSelectorView+PathOption.swift */; };
419256452D1E0A7000D9EF10 /* BrewPathSelectorView+CustomPathOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419256442D1E0A7000D9EF10 /* BrewPathSelectorView+CustomPathOption.swift */; };
419256472D1E0B0900D9EF10 /* BrewPathSelectorView+GetPathDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419256462D1E0B0900D9EF10 /* BrewPathSelectorView+GetPathDescription.swift */; };
4192564B2D1E0B9B00D9EF10 /* DownloadView+NoSearchResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4192564A2D1E0B9B00D9EF10 /* DownloadView+NoSearchResults.swift */; };
4192564F2D1E0C1E00D9EF10 /* DownloadView+SortingOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4192564E2D1E0C1E00D9EF10 /* DownloadView+SortingOptions.swift */; };
419256522D1E0D0500D9EF10 /* DiscoverSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419256512D1E0D0500D9EF10 /* DiscoverSectionView.swift */; };
419256552D1E0E2500D9EF10 /* DiscoverSectionView+CategoryHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419256542D1E0E2500D9EF10 /* DiscoverSectionView+CategoryHeader.swift */; };
419256572D1E0E5F00D9EF10 /* DiscoverSectionView+AppRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419256562D1E0E5F00D9EF10 /* DiscoverSectionView+AppRow.swift */; };
Expand Down Expand Up @@ -119,7 +122,6 @@
419506A42964A27F00FE5802 /* SetupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419506A32964A27F00FE5802 /* SetupView.swift */; };
419506A62964A5EF00FE5802 /* BrewPathSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 419506A52964A5EF00FE5802 /* BrewPathSelectorView.swift */; };
4196C8F528F9CB2600EADDDA /* DiscoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4196C8F428F9CB2600EADDDA /* DiscoverView.swift */; };
4196C8F928F9CDF700EADDDA /* DownloadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4196C8F828F9CDF700EADDDA /* DownloadView.swift */; };
4196C8FE28F9E13600EADDDA /* UpdateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4196C8FD28F9E13600EADDDA /* UpdateView.swift */; };
4196C90028F9E1F400EADDDA /* InstalledView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4196C8FF28F9E1F400EADDDA /* InstalledView.swift */; };
41B731392A879353008BF6B9 /* ActiveTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41B731382A879353008BF6B9 /* ActiveTasksView.swift */; };
Expand Down Expand Up @@ -160,6 +162,11 @@
413E60C12BBFF98A00978F6A /* AppIconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconView.swift; sourceTree = "<group>"; };
413F77A42972B2E70053349A /* DependencyManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DependencyManager.swift; sourceTree = "<group>"; };
413F87252D33048800D4BE10 /* InfoPopup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoPopup.swift; sourceTree = "<group>"; };
413F87272D33DEAD00D4BE10 /* ContentView+SearchFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ContentView+SearchFunctions.swift"; sourceTree = "<group>"; };
413F872B2D33E19800D4BE10 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = "<group>"; };
413F872D2D33E1CA00D4BE10 /* HomeView+NoSearchResults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeView+NoSearchResults.swift"; sourceTree = "<group>"; };
413F872F2D33E29A00D4BE10 /* HomeView+SortingOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeView+SortingOptions.swift"; sourceTree = "<group>"; };
413F87312D33E30400D4BE10 /* SortingOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortingOptions.swift; sourceTree = "<group>"; };
414074F128DF53E80073EB22 /* Applite.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Applite.app; sourceTree = BUILT_PRODUCTS_DIR; };
414074F428DF53E80073EB22 /* AppliteApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppliteApp.swift; sourceTree = "<group>"; };
414074F628DF53E80073EB22 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -216,8 +223,6 @@
419256422D1E0A0200D9EF10 /* BrewPathSelectorView+PathOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BrewPathSelectorView+PathOption.swift"; sourceTree = "<group>"; };
419256442D1E0A7000D9EF10 /* BrewPathSelectorView+CustomPathOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BrewPathSelectorView+CustomPathOption.swift"; sourceTree = "<group>"; };
419256462D1E0B0900D9EF10 /* BrewPathSelectorView+GetPathDescription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BrewPathSelectorView+GetPathDescription.swift"; sourceTree = "<group>"; };
4192564A2D1E0B9B00D9EF10 /* DownloadView+NoSearchResults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DownloadView+NoSearchResults.swift"; sourceTree = "<group>"; };
4192564E2D1E0C1E00D9EF10 /* DownloadView+SortingOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DownloadView+SortingOptions.swift"; sourceTree = "<group>"; };
419256512D1E0D0500D9EF10 /* DiscoverSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscoverSectionView.swift; sourceTree = "<group>"; };
419256542D1E0E2500D9EF10 /* DiscoverSectionView+CategoryHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DiscoverSectionView+CategoryHeader.swift"; sourceTree = "<group>"; };
419256562D1E0E5F00D9EF10 /* DiscoverSectionView+AppRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DiscoverSectionView+AppRow.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -255,7 +260,6 @@
419506A52964A5EF00FE5802 /* BrewPathSelectorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrewPathSelectorView.swift; sourceTree = "<group>"; };
419506A729696A5300FE5802 /* Applite-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Applite-Info.plist"; sourceTree = SOURCE_ROOT; };
4196C8F428F9CB2600EADDDA /* DiscoverView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscoverView.swift; sourceTree = "<group>"; };
4196C8F828F9CDF700EADDDA /* DownloadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadView.swift; sourceTree = "<group>"; };
4196C8FD28F9E13600EADDDA /* UpdateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateView.swift; sourceTree = "<group>"; };
4196C8FF28F9E1F400EADDDA /* InstalledView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledView.swift; sourceTree = "<group>"; };
4196C90128FAF57A00EADDDA /* AppliteDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AppliteDebug.entitlements; sourceTree = "<group>"; };
Expand Down Expand Up @@ -352,6 +356,16 @@
path = "Network Proxy";
sourceTree = "<group>";
};
413F872A2D33E18800D4BE10 /* Home */ = {
isa = PBXGroup;
children = (
413F872B2D33E19800D4BE10 /* HomeView.swift */,
413F872D2D33E1CA00D4BE10 /* HomeView+NoSearchResults.swift */,
413F872F2D33E29A00D4BE10 /* HomeView+SortingOptions.swift */,
);
path = Home;
sourceTree = "<group>";
};
414074E828DF53E80073EB22 = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -454,6 +468,7 @@
41483CCB29101C7D00BB10C2 /* Categories */,
4104D7442A8FC53200F84F9B /* Preferences */,
419256892D22D67400D9EF10 /* SidebarItem.swift */,
413F87312D33E30400D4BE10 /* SortingOptions.swift */,
);
path = Model;
sourceTree = "<group>";
Expand Down Expand Up @@ -538,6 +553,7 @@
4192563B2D1DF3C900D9EF10 /* ContentView+SidebarViews.swift */,
4192563D2D1DF3E900D9EF10 /* ContentView+DetailView.swift */,
4192563F2D1DF41300D9EF10 /* ContentView+LoadCasks.swift */,
413F87272D33DEAD00D4BE10 /* ContentView+SearchFunctions.swift */,
);
path = "Content View";
sourceTree = "<group>";
Expand All @@ -553,16 +569,6 @@
path = "Brew Path Selector";
sourceTree = "<group>";
};
419256482D1E0B6A00D9EF10 /* Download */ = {
isa = PBXGroup;
children = (
4196C8F828F9CDF700EADDDA /* DownloadView.swift */,
4192564A2D1E0B9B00D9EF10 /* DownloadView+NoSearchResults.swift */,
4192564E2D1E0C1E00D9EF10 /* DownloadView+SortingOptions.swift */,
);
path = Download;
sourceTree = "<group>";
};
419256502D1E0CE000D9EF10 /* Discover */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -677,7 +683,7 @@
4196C8F728F9CB5200EADDDA /* Detail Views */ = {
isa = PBXGroup;
children = (
419256482D1E0B6A00D9EF10 /* Download */,
413F872A2D33E18800D4BE10 /* Home */,
419256502D1E0CE000D9EF10 /* Discover */,
4192565C2D1E153D00D9EF10 /* Update */,
4196C8FF28F9E1F400EADDDA /* InstalledView.swift */,
Expand Down Expand Up @@ -793,17 +799,16 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
413F87322D33E30400D4BE10 /* SortingOptions.swift in Sources */,
4196C90028F9E1F400EADDDA /* InstalledView.swift in Sources */,
415563A42A98C54300AE2F2E /* AppdirSelectorView.swift in Sources */,
4140750528DF5FA60073EB22 /* AppView.swift in Sources */,
415135642D32C4360025DB70 /* Cask+Identifiable.swift in Sources */,
413F87262D33048800D4BE10 /* InfoPopup.swift in Sources */,
418F332428EC8BA10023D76F /* Cask.swift in Sources */,
4126353E2A77C6EF00155034 /* ArrayExtension.swift in Sources */,
4192564B2D1E0B9B00D9EF10 /* DownloadView+NoSearchResults.swift in Sources */,
419256BE2D27253D00D9EF10 /* Cask+Searchable.swift in Sources */,
419256432D1E0A0200D9EF10 /* BrewPathSelectorView+PathOption.swift in Sources */,
4192564F2D1E0C1E00D9EF10 /* DownloadView+SortingOptions.swift in Sources */,
419256122D1DDBD400D9EF10 /* AlertManager.swift in Sources */,
4166EE7028F5D4C900CE305A /* Commands.swift in Sources */,
419256312D1DF2B600D9EF10 /* SettingsView+GeneralSettings.swift in Sources */,
Expand All @@ -812,15 +817,18 @@
4104D7432A8FC52C00F84F9B /* Preferences.swift in Sources */,
419256682D1E18D100D9EF10 /* AlertManagerViewModifier.swift in Sources */,
414074F728DF53E80073EB22 /* ContentView.swift in Sources */,
413F87302D33E29A00D4BE10 /* HomeView+SortingOptions.swift in Sources */,
419256392D1DF35C00D9EF10 /* SettingsView+Uninstaller.swift in Sources */,
419256AF2D25F68700D9EF10 /* AppDelegate.swift in Sources */,
419256472D1E0B0900D9EF10 /* BrewPathSelectorView+GetPathDescription.swift in Sources */,
413F87282D33DEAD00D4BE10 /* ContentView+SearchFunctions.swift in Sources */,
41DF006429EAA094004EB7AE /* SendNotification.swift in Sources */,
419256622D1E15EA00D9EF10 /* UpdateView+UpdateUnavailable.swift in Sources */,
41857B752912D94A004A1894 /* CategoryView.swift in Sources */,
4196C8F528F9CB2600EADDDA /* DiscoverView.swift in Sources */,
4192561C2D1DEB7E00D9EF10 /* AppView+DownloadButton.swift in Sources */,
419256B92D26C02E00D9EF10 /* CaskInfoWindowView.swift in Sources */,
413F872C2D33E19800D4BE10 /* HomeView.swift in Sources */,
419256232D1DF14C00D9EF10 /* SetupView+PageControllerButtons.swift in Sources */,
4125BB8A29539907000FBD25 /* PlaceholderAppView.swift in Sources */,
419256182D1DEA4400D9EF10 /* AppView+ActionsView.swift in Sources */,
Expand All @@ -838,6 +846,7 @@
4192568F2D22DC9E00D9EF10 /* FontExtension.swift in Sources */,
419506A42964A27F00FE5802 /* SetupView.swift in Sources */,
4192561E2D1DEBE700D9EF10 /* AppView+UninstallButton.swift in Sources */,
413F872E2D33E1CA00D4BE10 /* HomeView+NoSearchResults.swift in Sources */,
4192569B2D24335900D9EF10 /* CaskTaskError.swift in Sources */,
419256B42D26B8A200D9EF10 /* CaskAdditionalInfo.swift in Sources */,
41524B99295E352200D0046A /* SettingsView.swift in Sources */,
Expand Down Expand Up @@ -887,7 +896,6 @@
4192562E2D1DF22500D9EF10 /* SetupView+AllSet.swift in Sources */,
4192568C2D22D7FC00D9EF10 /* AppMigrationView.swift in Sources */,
413E60B72BBAE5E000978F6A /* NetworkProxyManager.swift in Sources */,
4196C8F928F9CDF700EADDDA /* DownloadView.swift in Sources */,
4120AB682A755B5A00F68EFE /* CheckForUpdatesView.swift in Sources */,
415135662D32C4570025DB70 /* Cask+Equtable.swift in Sources */,
415135682D32C4720025DB70 /* Cask+Hashable.swift in Sources */,
Expand Down
24 changes: 24 additions & 0 deletions Applite/Model/SortingOptions.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// SortingOptions.swift
// Applite
//
// Created by Milán Várady on 2025.01.12.
//

import SwiftUI

enum SortingOptions: String, CaseIterable, Identifiable {
case mostDownloaded
case bestMatch
case aToZ

var id: SortingOptions { self }

var description: LocalizedStringKey {
switch self {
case .mostDownloaded: return "Most downloaded (default)"
case .bestMatch: return "Best match"
case .aToZ: return "A to Z"
}
}
}
21 changes: 12 additions & 9 deletions Applite/Views/App Views/AppGridView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,20 @@ struct AppGridView: View {
]

var body: some View {
LazyVGrid(columns: columns, spacing: 20) {
if appRole == .installed {
AppliteAppView()
}

ForEach(casks) { cask in
// Filter out self
if cask.info.token != "applite" {
AppView(cask: cask, role: appRole)
ScrollView {
LazyVGrid(columns: columns, spacing: 20) {
if appRole == .installed {
AppliteAppView()
}

ForEach(casks) { cask in
// Filter out self
if cask.info.token != "applite" {
AppView(cask: cask, role: appRole)
}
}
}
.padding()
}
}
}
Expand Down
7 changes: 4 additions & 3 deletions Applite/Views/Content View/ContentView+DetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ extension ContentView {
switch selection {
case .home:
if !brokenInstall {
DownloadView(
HomeView(
navigationSelection: $selection,
searchText: $searchText,
searchText: $searchInput,
showSearchResults: $showSearchResults,
caskCollection: caskManager.allCasks
)
} else {
Expand Down Expand Up @@ -45,7 +46,7 @@ extension ContentView {
}
}

var brokenInstallView: some View {
private var brokenInstallView: some View {
VStack(alignment: .center) {
Text(DependencyManager.brokenPathOrIstallMessage)

Expand Down
39 changes: 39 additions & 0 deletions Applite/Views/Content View/ContentView+SearchFunctions.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//
// ContentView+SearchFunctions.swift
// Applite
//
// Created by Milán Várady on 2025.01.12.
//

import SwiftUI

extension ContentView {
func searchAndSort() async {
await caskManager.allCasks.search(query: searchInput, diffScroreThreshold: 0.3, limitResults: 25)
if hideUnpopularApps { await filterUnpopular() }
await sortCasks(ignoreBestMatch: true)
}

func filterUnpopular(threshold: Int = 500) async {
caskManager.allCasks.filterSearch { casks in
casks.filter { $0.downloadsIn365days > threshold }
}
}

func sortCasks(ignoreBestMatch: Bool) async {
switch sortBy {
case .bestMatch:
if !ignoreBestMatch {
await caskManager.allCasks.search(query: searchInput)
}
case .aToZ:
caskManager.allCasks.filterSearch { casks in
casks.sorted { $0.info.name < $1.info.name }
}
case .mostDownloaded:
caskManager.allCasks.filterSearch { casks in
casks.sorted { $0.downloadsIn365days > $1.downloadsIn365days }
}
}
}
}
Loading

0 comments on commit 6ef8691

Please sign in to comment.