Skip to content

Commit

Permalink
Convert Home screen to SwiftUI (#549)
Browse files Browse the repository at this point in the history
  • Loading branch information
mohamede1945 authored Jul 19, 2023
1 parent 2665713 commit 0be9820
Show file tree
Hide file tree
Showing 36 changed files with 476 additions and 1,493 deletions.
66 changes: 66 additions & 0 deletions .swiftpm/xcode/xcshareddata/xcschemes/HomeFeature.xcscheme
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "HomeFeature"
BuildableName = "HomeFeature"
BlueprintName = "HomeFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "HomeFeature"
BuildableName = "HomeFeature"
BlueprintName = "HomeFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
1 change: 1 addition & 0 deletions Features/AppStructureFeature/Tabs/HomeTab.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ struct HomeTabBuilder: TabBuildable {
homeBuilder: HomeBuilder(container: container)
)
let viewController = HomeTabViewController(interactor: interactor)
viewController.navigationBar.prefersLargeTitles = true
return viewController
}
}
Expand Down
86 changes: 0 additions & 86 deletions Features/HomeFeature/Common/BasePageSelectionViewController.swift

This file was deleted.

50 changes: 0 additions & 50 deletions Features/HomeFeature/Common/JuzsMultipleSectionDataSource.swift

This file was deleted.

88 changes: 0 additions & 88 deletions Features/HomeFeature/Common/LastPageBookmarkDataSource.swift

This file was deleted.

26 changes: 21 additions & 5 deletions Features/HomeFeature/HomeBuilder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@
// Copyright © 2020 Quran.com. All rights reserved.
//

import AnnotationsService
import AppDependencies
import FeaturesSupport
import QuranTextKit
import ReadingSelectorFeature
import UIKit

Expand All @@ -22,15 +24,29 @@ public struct HomeBuilder {
// MARK: Public

public func build(withListener listener: QuranNavigator) -> UIViewController {
let interactor = HomeInteractor(
surasBuilder: SurasBuilder(container: container),
juzsBuilder: JuzsBuilder(container: container)
let lastPageService = LastPageService(persistence: container.lastPagePersistence)
let textRetriever = QuranTextDataService(
databasesURL: container.databasesURL,
quranFileURL: container.quranUthmaniV2Database
)

let viewModel = HomeViewModel(
lastPageService: lastPageService,
textRetriever: textRetriever,
navigateToPage: { [weak listener] lastPage in
listener?.navigateTo(page: lastPage.page, lastPage: lastPage, highlightingSearchAyah: nil)
},
navigateToSura: { [weak listener] sura in
listener?.navigateTo(page: sura.page, lastPage: nil, highlightingSearchAyah: nil)
},
navigateToQuarter: { [weak listener] quarter in
listener?.navigateTo(page: quarter.page, lastPage: nil, highlightingSearchAyah: nil)
}
)
let viewController = HomeViewController(
interactor: interactor,
viewModel: viewModel,
readingSelectorBuilder: ReadingSelectorBuilder()
)
interactor.listener = listener
return viewController
}

Expand Down
Loading

0 comments on commit 0be9820

Please sign in to comment.