Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CS MainSimple & CS About modules #38

Merged
merged 4 commits into from
May 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions SB-MDEditor.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
25FC42FE29F1F255001895ED /* UICollectionView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25FC42FD29F1F255001895ED /* UICollectionView+Extensions.swift */; };
5A48061D29DBA73B0096B7D8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A48061C29DBA73B0096B7D8 /* AppDelegate.swift */; };
5A48061F29DBA73B0096B7D8 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A48061E29DBA73B0096B7D8 /* SceneDelegate.swift */; };
5A48062129DBA73B0096B7D8 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A48062029DBA73B0096B7D8 /* ViewController.swift */; };
5A48062629DBA73F0096B7D8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5A48062529DBA73F0096B7D8 /* Assets.xcassets */; };
5A48062929DBA73F0096B7D8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A48062729DBA73F0096B7D8 /* LaunchScreen.storyboard */; };
5A48063329DBABAA0096B7D8 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 5A48063229DBABAA0096B7D8 /* README.md */; };
Expand All @@ -31,6 +30,12 @@
5A48065129DBCBFB0096B7D8 /* Swift_BaseUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A48065029DBCBFB0096B7D8 /* Swift_BaseUITestsLaunchTests.swift */; };
5A61DD3D29E13FF9001E8665 /* UIView+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A61DD3C29E13FF9001E8665 /* UIView+Preview.swift */; };
5A8F68D929FB06FD00749CDF /* Theme+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F68D829FB06FD00749CDF /* Theme+Constants.swift */; };
5A8F69002A00496D00749CDF /* MainSimpleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F68FE2A00496D00749CDF /* MainSimpleViewController.swift */; };
5A8F69012A00496D00749CDF /* MainSimpleRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F68FF2A00496D00749CDF /* MainSimpleRouter.swift */; };
5A8F69032A00551D00749CDF /* AboutModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F69022A00551D00749CDF /* AboutModel.swift */; };
5A8F69052A0055C900749CDF /* AboutInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F69042A0055C900749CDF /* AboutInteractor.swift */; };
5A8F69072A005A2A00749CDF /* AboutPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F69062A005A2A00749CDF /* AboutPresenter.swift */; };
5A8F69092A00650D00749CDF /* AboutRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8F69082A00650D00749CDF /* AboutRouter.swift */; };
5A91DED829E0DF58001A23C3 /* UIView+Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A91DED729E0DF58001A23C3 /* UIView+Constraints.swift */; };
5A91DEDA29E12F82001A23C3 /* UIViewController+Preview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A91DED929E12F82001A23C3 /* UIViewController+Preview.swift */; };
5ACEB26A29EE0D00008E80A2 /* Theme+Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ACEB26929EE0D00008E80A2 /* Theme+Colors.swift */; };
Expand Down Expand Up @@ -104,7 +109,6 @@
5A48061929DBA73B0096B7D8 /* SB-MDEditor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SB-MDEditor.app"; sourceTree = BUILT_PRODUCTS_DIR; };
5A48061C29DBA73B0096B7D8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
5A48061E29DBA73B0096B7D8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
5A48062029DBA73B0096B7D8 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
5A48062529DBA73F0096B7D8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
5A48062829DBA73F0096B7D8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
5A48062A29DBA73F0096B7D8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
Expand All @@ -119,6 +123,12 @@
5A48065029DBCBFB0096B7D8 /* Swift_BaseUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Swift_BaseUITestsLaunchTests.swift; sourceTree = "<group>"; };
5A61DD3C29E13FF9001E8665 /* UIView+Preview.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Preview.swift"; sourceTree = "<group>"; };
5A8F68D829FB06FD00749CDF /* Theme+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Theme+Constants.swift"; sourceTree = "<group>"; };
5A8F68FE2A00496D00749CDF /* MainSimpleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainSimpleViewController.swift; sourceTree = "<group>"; };
5A8F68FF2A00496D00749CDF /* MainSimpleRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainSimpleRouter.swift; sourceTree = "<group>"; };
5A8F69022A00551D00749CDF /* AboutModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutModel.swift; sourceTree = "<group>"; };
5A8F69042A0055C900749CDF /* AboutInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutInteractor.swift; sourceTree = "<group>"; };
5A8F69062A005A2A00749CDF /* AboutPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutPresenter.swift; sourceTree = "<group>"; };
5A8F69082A00650D00749CDF /* AboutRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutRouter.swift; sourceTree = "<group>"; };
5A91DED729E0DF58001A23C3 /* UIView+Constraints.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Constraints.swift"; sourceTree = "<group>"; };
5A91DED929E12F82001A23C3 /* UIViewController+Preview.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Preview.swift"; sourceTree = "<group>"; };
5ACEB26929EE0D00008E80A2 /* Theme+Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Theme+Colors.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -276,7 +286,6 @@
2545565E29F0719200B9CFD0 /* Autogenerated */,
5A91DED529E0A88A001A23C3 /* Fonts */,
5ACEB27129EE0F3E008E80A2 /* Theme */,
5A48062029DBA73B0096B7D8 /* ViewController.swift */,
5A48062529DBA73F0096B7D8 /* Assets.xcassets */,
5A48062729DBA73F0096B7D8 /* LaunchScreen.storyboard */,
5A48062A29DBA73F0096B7D8 /* Info.plist */,
Expand Down Expand Up @@ -315,6 +324,7 @@
children = (
5ACEB29C29EECCA6008E80A2 /* About */,
5ACEB29029EE7B7D008E80A2 /* Main */,
5A8F68FD2A00496D00749CDF /* MainSimple */,
5ACEB29F29EED863008E80A2 /* OpenDoc */,
5ACEB2A229EED962008E80A2 /* CreateDoc */,
);
Expand All @@ -333,6 +343,15 @@
path = Library;
sourceTree = "<group>";
};
5A8F68FD2A00496D00749CDF /* MainSimple */ = {
isa = PBXGroup;
children = (
5A8F68FE2A00496D00749CDF /* MainSimpleViewController.swift */,
5A8F68FF2A00496D00749CDF /* MainSimpleRouter.swift */,
);
path = MainSimple;
sourceTree = "<group>";
};
5A91DED529E0A88A001A23C3 /* Fonts */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -415,7 +434,11 @@
5ACEB29C29EECCA6008E80A2 /* About */ = {
isa = PBXGroup;
children = (
5A8F69022A00551D00749CDF /* AboutModel.swift */,
5A8F69042A0055C900749CDF /* AboutInteractor.swift */,
5A8F69062A005A2A00749CDF /* AboutPresenter.swift */,
5ACEB29A29EECC91008E80A2 /* AboutViewController.swift */,
5A8F69082A00650D00749CDF /* AboutRouter.swift */,
);
path = About;
sourceTree = "<group>";
Expand Down Expand Up @@ -667,11 +690,11 @@
5ACEB27029EE0E96008E80A2 /* Theme+DateFormatter.swift in Sources */,
609CAFF929FD466100834937 /* OpenDocViewController.swift in Sources */,
5AFA77CE29F4B36A0010478E /* Di+ServiceFactory.swift in Sources */,
5A48062129DBA73B0096B7D8 /* ViewController.swift in Sources */,
2566241F29F8530700FF09EE /* File.swift in Sources */,
2545566929F0733200B9CFD0 /* Assets.swift in Sources */,
5A48063A29DBC5690096B7D8 /* Theme.swift in Sources */,
5A91DED829E0DF58001A23C3 /* UIView+Constraints.swift in Sources */,
5A8F69092A00650D00749CDF /* AboutRouter.swift in Sources */,
25FC42FE29F1F255001895ED /* UICollectionView+Extensions.swift in Sources */,
5ACEB2A929EEED86008E80A2 /* CellViewModel.swift in Sources */,
608C74C729FDC0C100E71D80 /* OpenDocCell.swift in Sources */,
Expand All @@ -680,9 +703,12 @@
609CAFF829FD466100834937 /* OpenDocPresenter.swift in Sources */,
25AEE10129F7075800E177AE /* LocalFilesProvider.swift in Sources */,
6004CE2B29F564520074D9E5 /* EmptyInputData.swift in Sources */,
5A8F69052A0055C900749CDF /* AboutInteractor.swift in Sources */,
2545566829F0733200B9CFD0 /* Strings.swift in Sources */,
5A8F69012A00496D00749CDF /* MainSimpleRouter.swift in Sources */,
6064CC0E29FD852D00B8B74D /* OpenDocRouter.swift in Sources */,
5ACEB28C29EE7AB5008E80A2 /* MainRouter.swift in Sources */,
5A8F69072A005A2A00749CDF /* AboutPresenter.swift in Sources */,
25FC42F529F1CD89001895ED /* RecentFileCell.swift in Sources */,
5ACEB28A29EE7AB5008E80A2 /* MainPresenter.swift in Sources */,
5A91DEDA29E12F82001A23C3 /* UIViewController+Preview.swift in Sources */,
Expand All @@ -700,12 +726,14 @@
5ACEB27F29EE65A8008E80A2 /* UIColor+Dynamic.swift in Sources */,
5ACEB27A29EE64D9008E80A2 /* Di+AppFactory.swift in Sources */,
5AFA77D129F4B3D10010478E /* FilesStorageProvider.swift in Sources */,
5A8F69002A00496D00749CDF /* MainSimpleViewController.swift in Sources */,
5ACEB28B29EE7AB5008E80A2 /* MainWorker.swift in Sources */,
5ACEB29429EEA690008E80A2 /* ErrorInputData.swift in Sources */,
609CAFFA29FD466100834937 /* OpenDocModels.swift in Sources */,
25FC42FC29F1D9E1001895ED /* MenuItemCell.swift in Sources */,
5ACEB28D29EE7AB5008E80A2 /* MainModels.swift in Sources */,
5ACEB29729EEA7AF008E80A2 /* Types.swift in Sources */,
5A8F69032A00551D00749CDF /* AboutModel.swift in Sources */,
5ACEB29B29EECC91008E80A2 /* AboutViewController.swift in Sources */,
609CAFF729FD466100834937 /* OpenDocInteractor.swift in Sources */,
5ACEB27829EE64D9008E80A2 /* Di+ModuleFactory.swift in Sources */,
Expand Down
24 changes: 23 additions & 1 deletion SB-MDEditor/App/Di/Di+ModuleFactory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,22 @@ protocol ModuleFactory: AnyObject {
func makeMainModule() -> Module
func makeOpenDocModule(file: File) -> Module
func makeCreateDocModule() -> Module
func makeMainSimpleModule() -> Module
}

extension Di {
func makeAboutModule(dep: AllDependencies) -> Module {
let viewController = AboutViewController()
let presenter = AboutPresenter()
let interactor = AboutInteractor(presenter: presenter, dep: dep)
let router = AboutRouter()
let viewController = AboutViewController(
interactor: interactor,
router: router
)

presenter.viewController = viewController
router.view = rootVC

let navigationVC = UINavigationController(rootViewController: viewController)
navigationVC.navigationBar.prefersLargeTitles = true
return .init(viewController: navigationVC, animatedType: .fade)
Expand Down Expand Up @@ -77,4 +88,15 @@ extension Di {
let viewController = CreateDocViewController()
return .init(viewController: viewController, animatedType: .fade)
}

func makeMainSimpleModule(dep: AllDependencies) -> Module {
let router = MainSimpleRouter()
let viewController = MainSimpleViewController(router: router)
router.view = rootVC

let navigationVC = UINavigationController(rootViewController: viewController)
navigationVC.navigationBar.prefersLargeTitles = true

return .init(viewController: navigationVC, animatedType: .fade)
}
}
10 changes: 8 additions & 2 deletions SB-MDEditor/App/Di/Di.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ protocol IOpenModuleDocDependency {
protocol ICreateModuleDocDependency {
var storage: IFilesStorageProvider { get }
}
protocol IAboutModuleDependency {}
protocol IAboutModuleDependency {
var localFiles: ILocalFilesProvider { get }
}

typealias AllDependencies = (
IMainModuleDependency &
Expand All @@ -52,7 +54,7 @@ typealias AllDependencies = (

extension Di: ModuleFactory {
func makeStartModule() -> Module {
makeOpenDocModule(file: File.makePrototypeDir())
makeMainSimpleModule()
}

func makeAboutModule() -> Module {
Expand All @@ -70,4 +72,8 @@ extension Di: ModuleFactory {
func makeCreateDocModule() -> Module {
makeCreateDocModule(dep: dependencies)
}

func makeMainSimpleModule() -> Module {
makeMainSimpleModule(dep: dependencies)
}
}
6 changes: 6 additions & 0 deletions SB-MDEditor/App/MainRouting.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ import UIKit
protocol MainRouting: AnyObject {
var view: IRootViewController? { get set }

/// Подготовить модуль к переходу.
func navigate(_ route: ModuleRoute)
/// Подготовить модуль к добавлению в стек навигации.
func push(_ route: ModuleRoute)
/// Подготовить модуль к представлению.
func present(_ route: ModuleRoute)
}

Expand Down Expand Up @@ -44,6 +47,7 @@ enum ModuleRoute {
case toStart
case toAbout
case toMainModule
case toSimpleMainModule
case toOpenDoc(File)
case toCreateDoc

Expand All @@ -59,6 +63,8 @@ enum ModuleRoute {
return factory.makeOpenDocModule(file: file)
case .toCreateDoc:
return factory.makeCreateDocModule()
case .toSimpleMainModule:
return factory.makeMainSimpleModule()
}
}
}
4 changes: 4 additions & 0 deletions SB-MDEditor/App/RootViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@ protocol IRootViewController: AnyObject {
typealias Factory = ModuleFactory
var factory: Factory? { get set }

/// Перейти к модулю.
func navigate(to module: Module)
/// Добавить модуль в стек навигации.
func push(to module: Module)
/// Представить модуль.
func present(to module: Module)
/// Запустить стартовый модуль.
func start()
}

Expand Down
4 changes: 4 additions & 0 deletions SB-MDEditor/Models/File.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ final class File {
self.modificationDate = modificationDate
}

/// Возвращает строку с атрибутами файла.
/// - Returns: отформатированная строка атрибутов файла
func getFormattedAttributes() -> String {
let formattedSize = getFormattedSize()
let dateFormatter = DateFormatter()
Expand All @@ -59,6 +61,8 @@ final class File {
}
}

/// Готовит пустое описание для файла-каталога.
/// - Returns: пустое описание файла-каталога
static func makePrototypeDir() -> File {
File(
name: "",
Expand Down
34 changes: 34 additions & 0 deletions SB-MDEditor/Modules/About/AboutInteractor.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// AboutInteractor.swift
// SB-MDEditor
//
// Created by SERGEY SHLYAKHIN on 01.05.2023.
//

import UIKit

protocol IAboutInteractor {
/// Возвращает строковые данные из файла, указанного в константах
func viewIsReady()
}

final class AboutInteractor: IAboutInteractor {

// MARK: Parameters
private let presenter: IAboutPresenter
private let localFiles: ILocalFilesProvider

init(
presenter: IAboutPresenter,
dep: IAboutModuleDependency
) {
self.presenter = presenter
self.localFiles = dep.localFiles
}

func viewIsReady() {
if let aboutFileText = localFiles.readFileAtPath(Theme.Constansts.aboutFilePath) {
presenter.present(text: aboutFileText)
}
}
}
14 changes: 14 additions & 0 deletions SB-MDEditor/Modules/About/AboutModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// AboutModels.swift
// SB-MDEditor
//
// Created by SERGEY SHLYAKHIN on 01.05.2023.
//

import Foundation

enum AboutModel {
struct ViewData {
let fileContents: String
}
}
24 changes: 24 additions & 0 deletions SB-MDEditor/Modules/About/AboutPresenter.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// AboutPresenter.swift
// SB-MDEditor
//
// Created by SERGEY SHLYAKHIN on 01.05.2023.
//

import UIKit

protocol IAboutPresenter {
/// Подготавливает данные на редринг вьюконтроллеру
func present(text: String)
}

final class AboutPresenter: IAboutPresenter {
// MARK: Parameters

weak var viewController: IAboutViewController?

func present(text: String) {
let viewData = AboutModel.ViewData(fileContents: text)
viewController?.render(viewModel: viewData)
}
}
14 changes: 14 additions & 0 deletions SB-MDEditor/Modules/About/AboutRouter.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//
// AboutRouter.swift
// SB-MDEditor
//
// Created by SERGEY SHLYAKHIN on 02.05.2023.
//

import UIKit

protocol IAboutRouter: MainRouting {}

final class AboutRouter: IAboutRouter {
weak var view: IRootViewController?
}
Loading