Skip to content

Commit

Permalink
Merge pull request #25 from ispiryan/MVP-Creating-a-Reusable-and-Cros…
Browse files Browse the repository at this point in the history
…s-Platform-Presentation-Layer

Mvp creating a reusable and cross platform presentation layer
  • Loading branch information
ispiryan authored May 21, 2024
2 parents 6f5cfec + 5b22ebc commit df01727
Show file tree
Hide file tree
Showing 13 changed files with 300 additions and 149 deletions.
2 changes: 1 addition & 1 deletion .$FeedAppDiagram.drawio.bkp
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="Electron" modified="2024-05-16T15:57:32.978Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="ykx7t73SjCRA5LTBK0ns" version="20.8.16" type="device"><diagram name="Page-1" id="JbQTSFzjVuFo6YbTb3hy">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</diagram></mxfile>
<mxfile host="Electron" modified="2024-05-21T13:31:37.419Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="tuwQqDAKNa3M9JgrUJx6" version="20.8.16" type="device"><diagram name="Page-1" id="JbQTSFzjVuFo6YbTb3hy">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</diagram></mxfile>
26 changes: 19 additions & 7 deletions FeedApp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,16 @@
974D6F5D2BF4E3D000F7211C /* FeedRefreshViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974D6F5C2BF4E3D000F7211C /* FeedRefreshViewController.swift */; };
974D6F602BF4EC9700F7211C /* FeedImageCellController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974D6F5F2BF4EC9700F7211C /* FeedImageCellController.swift */; };
974D6F622BF4EF5C00F7211C /* FeedUIComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974D6F612BF4EF5C00F7211C /* FeedUIComposer.swift */; };
974D6F662BF646BF00F7211C /* FeedViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974D6F652BF646BF00F7211C /* FeedViewModel.swift */; };
974D6F682BF6575400F7211C /* FeedImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974D6F672BF6575400F7211C /* FeedImageViewModel.swift */; };
974D6F6B2BF78D2800F7211C /* FeedPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974D6F6A2BF78D2800F7211C /* FeedPresenter.swift */; };
975945E22BCA777C005F6F16 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975945E12BCA777C005F6F16 /* HTTPClient.swift */; };
975945E42BCA77E6005F6F16 /* FeedItemsMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975945E32BCA77E6005F6F16 /* FeedItemsMapper.swift */; };
975F8C8C2BE060CC008489E7 /* XCTestCase+FailableInsertFeedStoreSpecs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975F8C8B2BE060CC008489E7 /* XCTestCase+FailableInsertFeedStoreSpecs.swift */; };
975F8C8E2BE0614E008489E7 /* XCTestCase+FailableDeleteFeedStoreSpecs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975F8C8D2BE0614E008489E7 /* XCTestCase+FailableDeleteFeedStoreSpecs.swift */; };
975F8C902BE061E7008489E7 /* XCTestCase+FailableRetrieveFeedStoreSpecs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975F8C8F2BE061E7008489E7 /* XCTestCase+FailableRetrieveFeedStoreSpecs.swift */; };
9762D4932BF8A4B200FCCC7E /* FeedImagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9762D4922BF8A4B200FCCC7E /* FeedImagePresenter.swift */; };
9762D4952BF8A5D900FCCC7E /* FeedLoadingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9762D4942BF8A5D900FCCC7E /* FeedLoadingViewModel.swift */; };
9762D4972BF8A60D00FCCC7E /* FeedViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9762D4962BF8A60D00FCCC7E /* FeedViewModel.swift */; };
97993B642BEE50D500C453F7 /* FeedAppiOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97993B5C2BEE50D400C453F7 /* FeedAppiOS.framework */; };
97AAE3A02BE504EC0073BD75 /* CoreDataFeedStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AAE39F2BE504EC0073BD75 /* CoreDataFeedStoreTests.swift */; };
97AAE3A22BE5057F0073BD75 /* CoreDataFeedStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AAE3A12BE5057F0073BD75 /* CoreDataFeedStore.swift */; };
Expand Down Expand Up @@ -145,13 +148,16 @@
974D6F5C2BF4E3D000F7211C /* FeedRefreshViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedRefreshViewController.swift; sourceTree = "<group>"; };
974D6F5F2BF4EC9700F7211C /* FeedImageCellController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedImageCellController.swift; sourceTree = "<group>"; };
974D6F612BF4EF5C00F7211C /* FeedUIComposer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedUIComposer.swift; sourceTree = "<group>"; };
974D6F652BF646BF00F7211C /* FeedViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedViewModel.swift; sourceTree = "<group>"; };
974D6F672BF6575400F7211C /* FeedImageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedImageViewModel.swift; sourceTree = "<group>"; };
974D6F6A2BF78D2800F7211C /* FeedPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedPresenter.swift; sourceTree = "<group>"; };
975945E12BCA777C005F6F16 /* HTTPClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = "<group>"; };
975945E32BCA77E6005F6F16 /* FeedItemsMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedItemsMapper.swift; sourceTree = "<group>"; };
975F8C8B2BE060CC008489E7 /* XCTestCase+FailableInsertFeedStoreSpecs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+FailableInsertFeedStoreSpecs.swift"; sourceTree = "<group>"; };
975F8C8D2BE0614E008489E7 /* XCTestCase+FailableDeleteFeedStoreSpecs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+FailableDeleteFeedStoreSpecs.swift"; sourceTree = "<group>"; };
975F8C8F2BE061E7008489E7 /* XCTestCase+FailableRetrieveFeedStoreSpecs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+FailableRetrieveFeedStoreSpecs.swift"; sourceTree = "<group>"; };
9762D4922BF8A4B200FCCC7E /* FeedImagePresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedImagePresenter.swift; sourceTree = "<group>"; };
9762D4942BF8A5D900FCCC7E /* FeedLoadingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedLoadingViewModel.swift; sourceTree = "<group>"; };
9762D4962BF8A60D00FCCC7E /* FeedViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedViewModel.swift; sourceTree = "<group>"; };
97993B5C2BEE50D400C453F7 /* FeedAppiOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FeedAppiOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
97993B632BEE50D500C453F7 /* FeedAppiOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FeedAppiOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
97993B732BEE565B00C453F7 /* CI_iOS.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = CI_iOS.xctestplan; sourceTree = "<group>"; };
Expand Down Expand Up @@ -347,7 +353,6 @@
974D6F422BF4DB1300F7211C /* Feed UI */ = {
isa = PBXGroup;
children = (
974D6F642BF646AE00F7211C /* Models */,
974D6F442BF4DB3100F7211C /* Views */,
974D6F432BF4DB1E00F7211C /* Controllers */,
974D6F632BF4EF6100F7211C /* Composers */,
Expand Down Expand Up @@ -429,13 +434,16 @@
path = Composers;
sourceTree = "<group>";
};
974D6F642BF646AE00F7211C /* Models */ = {
974D6F642BF646AE00F7211C /* Feed Presentation */ = {
isa = PBXGroup;
children = (
974D6F652BF646BF00F7211C /* FeedViewModel.swift */,
974D6F672BF6575400F7211C /* FeedImageViewModel.swift */,
974D6F6A2BF78D2800F7211C /* FeedPresenter.swift */,
9762D4922BF8A4B200FCCC7E /* FeedImagePresenter.swift */,
9762D4942BF8A5D900FCCC7E /* FeedLoadingViewModel.swift */,
9762D4962BF8A60D00FCCC7E /* FeedViewModel.swift */,
);
path = Models;
path = "Feed Presentation";
sourceTree = "<group>";
};
975F8C912BE06295008489E7 /* FeedStoreSpecs */ = {
Expand Down Expand Up @@ -498,6 +506,7 @@
isa = PBXGroup;
children = (
974D6F452BF4DB4200F7211C /* Feed Image Loader */,
974D6F642BF646AE00F7211C /* Feed Presentation */,
974D6F422BF4DB1300F7211C /* Feed UI */,
);
path = FeedAppiOS;
Expand Down Expand Up @@ -801,14 +810,17 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
974D6F6B2BF78D2800F7211C /* FeedPresenter.swift in Sources */,
974D6F5D2BF4E3D000F7211C /* FeedRefreshViewController.swift in Sources */,
9762D4972BF8A60D00FCCC7E /* FeedViewModel.swift in Sources */,
974D6F472BF4DB9900F7211C /* FeedImageDataLoader.swift in Sources */,
9762D4952BF8A5D900FCCC7E /* FeedLoadingViewModel.swift in Sources */,
974D6F412BF3A07B00F7211C /* UIView+Shimmering.swift in Sources */,
9762D4932BF8A4B200FCCC7E /* FeedImagePresenter.swift in Sources */,
9708B1C82BF28E9800D170EA /* FeedViewController.swift in Sources */,
974D6F3F2BF366A700F7211C /* FeedImageCell.swift in Sources */,
974D6F682BF6575400F7211C /* FeedImageViewModel.swift in Sources */,
974D6F602BF4EC9700F7211C /* FeedImageCellController.swift in Sources */,
974D6F662BF646BF00F7211C /* FeedViewModel.swift in Sources */,
974D6F622BF4EF5C00F7211C /* FeedUIComposer.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
Loading

0 comments on commit df01727

Please sign in to comment.