Skip to content

Commit 5d62ff9

Browse files
authored
Merge pull request #4 from engingulek/feature/create-viper-protocols-and-confirm
Feature/create viper protocols and confirm
2 parents faa2414 + e65f911 commit 5d62ff9

7 files changed

Lines changed: 412 additions & 0 deletions

File tree

ICTMDBDetailModule.xcodeproj/project.pbxproj

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
7D9D91B12EC5000F0067193D /* GenericCollectionViewKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7D9D91B02EC5000F0067193D /* GenericCollectionViewKit */; };
11+
7D9D91B42EC500210067193D /* DependencyKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7D9D91B32EC500210067193D /* DependencyKit */; };
12+
7D9D91B72EC500350067193D /* ICTMDBModularProtocols in Frameworks */ = {isa = PBXBuildFile; productRef = 7D9D91B62EC500350067193D /* ICTMDBModularProtocols */; };
13+
7D9D91BA2EC500480067193D /* ICTMDBNetworkManagerKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7D9D91B92EC500480067193D /* ICTMDBNetworkManagerKit */; };
14+
7D9D91BD2EC5005D0067193D /* ICTMDBViewKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7D9D91BC2EC5005D0067193D /* ICTMDBViewKit */; };
15+
7D9D91C02EC500720067193D /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7D9D91BF2EC500720067193D /* SnapKit */; };
1016
7DB55E462EC4FF1500A0EA27 /* ICTMDBDetailModule.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB55E3C2EC4FF1500A0EA27 /* ICTMDBDetailModule.framework */; };
1117
/* End PBXBuildFile section */
1218

@@ -43,6 +49,12 @@
4349
isa = PBXFrameworksBuildPhase;
4450
buildActionMask = 2147483647;
4551
files = (
52+
7D9D91B42EC500210067193D /* DependencyKit in Frameworks */,
53+
7D9D91B12EC5000F0067193D /* GenericCollectionViewKit in Frameworks */,
54+
7D9D91B72EC500350067193D /* ICTMDBModularProtocols in Frameworks */,
55+
7D9D91C02EC500720067193D /* SnapKit in Frameworks */,
56+
7D9D91BA2EC500480067193D /* ICTMDBNetworkManagerKit in Frameworks */,
57+
7D9D91BD2EC5005D0067193D /* ICTMDBViewKit in Frameworks */,
4658
);
4759
runOnlyForDeploymentPostprocessing = 0;
4860
};
@@ -106,6 +118,12 @@
106118
);
107119
name = ICTMDBDetailModule;
108120
packageProductDependencies = (
121+
7D9D91B02EC5000F0067193D /* GenericCollectionViewKit */,
122+
7D9D91B32EC500210067193D /* DependencyKit */,
123+
7D9D91B62EC500350067193D /* ICTMDBModularProtocols */,
124+
7D9D91B92EC500480067193D /* ICTMDBNetworkManagerKit */,
125+
7D9D91BC2EC5005D0067193D /* ICTMDBViewKit */,
126+
7D9D91BF2EC500720067193D /* SnapKit */,
109127
);
110128
productName = ICTMDBDetailModule;
111129
productReference = 7DB55E3C2EC4FF1500A0EA27 /* ICTMDBDetailModule.framework */;
@@ -161,6 +179,14 @@
161179
);
162180
mainGroup = 7DB55E322EC4FF1500A0EA27;
163181
minimizedProjectReferenceProxies = 1;
182+
packageReferences = (
183+
7D9D91AF2EC5000F0067193D /* XCRemoteSwiftPackageReference "GenericCollectionViewKit" */,
184+
7D9D91B22EC500210067193D /* XCRemoteSwiftPackageReference "HPDependencyKit" */,
185+
7D9D91B52EC500350067193D /* XCRemoteSwiftPackageReference "ICTMDBModularProtocols" */,
186+
7D9D91B82EC500480067193D /* XCRemoteSwiftPackageReference "ICTMDBNetworkManagerKit" */,
187+
7D9D91BB2EC5005D0067193D /* XCRemoteSwiftPackageReference "ICTMDBViewKit" */,
188+
7D9D91BE2EC500720067193D /* XCRemoteSwiftPackageReference "SnapKit" */,
189+
);
164190
preferredProjectObjectVersion = 77;
165191
productRefGroup = 7DB55E3D2EC4FF1500A0EA27 /* Products */;
166192
projectDirPath = "";
@@ -483,6 +509,90 @@
483509
defaultConfigurationName = Release;
484510
};
485511
/* End XCConfigurationList section */
512+
513+
/* Begin XCRemoteSwiftPackageReference section */
514+
7D9D91AF2EC5000F0067193D /* XCRemoteSwiftPackageReference "GenericCollectionViewKit" */ = {
515+
isa = XCRemoteSwiftPackageReference;
516+
repositoryURL = "https://github.com/engingulek/GenericCollectionViewKit";
517+
requirement = {
518+
kind = upToNextMajorVersion;
519+
minimumVersion = 0.0.2;
520+
};
521+
};
522+
7D9D91B22EC500210067193D /* XCRemoteSwiftPackageReference "HPDependencyKit" */ = {
523+
isa = XCRemoteSwiftPackageReference;
524+
repositoryURL = "https://github.com/engingulek/HPDependencyKit";
525+
requirement = {
526+
kind = upToNextMajorVersion;
527+
minimumVersion = 1.0.0;
528+
};
529+
};
530+
7D9D91B52EC500350067193D /* XCRemoteSwiftPackageReference "ICTMDBModularProtocols" */ = {
531+
isa = XCRemoteSwiftPackageReference;
532+
repositoryURL = "https://github.com/engingulek/ICTMDBModularProtocols";
533+
requirement = {
534+
kind = upToNextMajorVersion;
535+
minimumVersion = 0.0.1;
536+
};
537+
};
538+
7D9D91B82EC500480067193D /* XCRemoteSwiftPackageReference "ICTMDBNetworkManagerKit" */ = {
539+
isa = XCRemoteSwiftPackageReference;
540+
repositoryURL = "https://github.com/engingulek/ICTMDBNetworkManagerKit";
541+
requirement = {
542+
kind = upToNextMajorVersion;
543+
minimumVersion = 0.0.2;
544+
};
545+
};
546+
7D9D91BB2EC5005D0067193D /* XCRemoteSwiftPackageReference "ICTMDBViewKit" */ = {
547+
isa = XCRemoteSwiftPackageReference;
548+
repositoryURL = "https://github.com/engingulek/ICTMDBViewKit";
549+
requirement = {
550+
kind = upToNextMajorVersion;
551+
minimumVersion = 0.0.2;
552+
};
553+
};
554+
7D9D91BE2EC500720067193D /* XCRemoteSwiftPackageReference "SnapKit" */ = {
555+
isa = XCRemoteSwiftPackageReference;
556+
repositoryURL = "https://github.com/SnapKit/SnapKit.git";
557+
requirement = {
558+
kind = upToNextMajorVersion;
559+
minimumVersion = 5.7.1;
560+
};
561+
};
562+
/* End XCRemoteSwiftPackageReference section */
563+
564+
/* Begin XCSwiftPackageProductDependency section */
565+
7D9D91B02EC5000F0067193D /* GenericCollectionViewKit */ = {
566+
isa = XCSwiftPackageProductDependency;
567+
package = 7D9D91AF2EC5000F0067193D /* XCRemoteSwiftPackageReference "GenericCollectionViewKit" */;
568+
productName = GenericCollectionViewKit;
569+
};
570+
7D9D91B32EC500210067193D /* DependencyKit */ = {
571+
isa = XCSwiftPackageProductDependency;
572+
package = 7D9D91B22EC500210067193D /* XCRemoteSwiftPackageReference "HPDependencyKit" */;
573+
productName = DependencyKit;
574+
};
575+
7D9D91B62EC500350067193D /* ICTMDBModularProtocols */ = {
576+
isa = XCSwiftPackageProductDependency;
577+
package = 7D9D91B52EC500350067193D /* XCRemoteSwiftPackageReference "ICTMDBModularProtocols" */;
578+
productName = ICTMDBModularProtocols;
579+
};
580+
7D9D91B92EC500480067193D /* ICTMDBNetworkManagerKit */ = {
581+
isa = XCSwiftPackageProductDependency;
582+
package = 7D9D91B82EC500480067193D /* XCRemoteSwiftPackageReference "ICTMDBNetworkManagerKit" */;
583+
productName = ICTMDBNetworkManagerKit;
584+
};
585+
7D9D91BC2EC5005D0067193D /* ICTMDBViewKit */ = {
586+
isa = XCSwiftPackageProductDependency;
587+
package = 7D9D91BB2EC5005D0067193D /* XCRemoteSwiftPackageReference "ICTMDBViewKit" */;
588+
productName = ICTMDBViewKit;
589+
};
590+
7D9D91BF2EC500720067193D /* SnapKit */ = {
591+
isa = XCSwiftPackageProductDependency;
592+
package = 7D9D91BE2EC500720067193D /* XCRemoteSwiftPackageReference "SnapKit" */;
593+
productName = SnapKit;
594+
};
595+
/* End XCSwiftPackageProductDependency section */
486596
};
487597
rootObject = 7DB55E332EC4FF1500A0EA27 /* Project object */;
488598
}

ICTMDBDetailModule.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 87 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//
2+
// DetailController.swift
3+
// ICTMDBDetailModule
4+
//
5+
// Created by Engin Gülek on 12.11.2025.
6+
//
7+
import UIKit
8+
import GenericCollectionViewKit
9+
import ICTMDBViewKit
10+
import SnapKit
11+
12+
final class TvShowDetailViewController: UIViewController {
13+
14+
// MARK: - Properties
15+
var presenter: (any ViewToPresenterTvShowDetailProtocol)?
16+
17+
18+
19+
// MARK: - Lifecycle
20+
override func viewDidLoad() {
21+
super.viewDidLoad()
22+
23+
24+
presenter?.viewDidLoad()
25+
}
26+
27+
28+
}
29+
30+
extension TvShowDetailViewController: @preconcurrency PresenterToViewTvShowDetailProtocol {
31+
func sendData() {
32+
33+
}
34+
35+
func prepareCollectionView() {
36+
37+
}
38+
39+
func relaodCollectionView() {
40+
41+
}
42+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// DetailInteractor.swift
3+
// ICTMDBDetailModule
4+
//
5+
// Created by Engin Gülek on 12.11.2025.
6+
//
7+
8+
9+
final class TvShowDetailInteractor : PresenterToInteractorTvShowDetailProtocol {
10+
11+
var presenter: (any InteractorToPresenterTvShowDetailProtocol)?
12+
13+
14+
15+
16+
func loadTvShowDetail(id: Int?) {
17+
18+
}
19+
20+
func loadTvShowCasts(id: Int?) {
21+
22+
}
23+
}
24+
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
//
2+
// DetailPresenter.swift
3+
// ICTMDBDetailModule
4+
//
5+
// Created by Engin Gülek on 12.11.2025.
6+
//
7+
import Foundation
8+
import ICTMDBViewKit
9+
import GenericCollectionViewKit
10+
11+
final class TvShowDetailPresenter {
12+
weak var view: PresenterToViewTvShowDetailProtocol?
13+
14+
private var interactor: PresenterToInteractorTvShowDetailProtocol
15+
16+
17+
init(view: PresenterToViewTvShowDetailProtocol?,
18+
interactor: PresenterToInteractorTvShowDetailProtocol) {
19+
self.view = view
20+
self.interactor = interactor
21+
}
22+
23+
func viewDidLoad() {
24+
view?.setBackColorAble(color: "backColor")
25+
26+
}
27+
}
28+
29+
extension TvShowDetailPresenter: ViewToPresenterTvShowDetailProtocol {
30+
func layout(for sectionIndex: Int) -> LayoutSource {
31+
32+
}
33+
34+
func getID(id: Int?) {
35+
guard let id = id else {return}
36+
37+
38+
}
39+
40+
func numberOfRowsInSection(in section: Int) -> Int {
41+
42+
}
43+
44+
func numberOfSections() -> Int {
45+
46+
}
47+
48+
func cellForItem(section: Int,item:Int) -> CellItemType {
49+
50+
}
51+
52+
53+
54+
func titleForSection(at section: Int) -> (
55+
title: String, sizeType:SectionSizeType,
56+
buttonType: [TitleForSectionButtonType]?) {
57+
58+
}
59+
60+
func sectionType(at section: Int) -> SectionType {
61+
62+
}
63+
64+
func cellIdentifier(at section: Int) -> String {
65+
66+
}
67+
}
68+
69+
extension TvShowDetailPresenter: InteractorToPresenterTvShowDetailProtocol {
70+
func onHandle(handle: TvShowInteractorResult) {
71+
72+
}
73+
}

0 commit comments

Comments
 (0)