├── Commons ├── .gitignore ├── Package.swift ├── Sources │ └── Commons │ │ ├── Constants.swift │ │ ├── DateFormat.swift │ │ ├── Extensions │ │ ├── Date+Extensions.swift │ │ ├── Print+Extensions.swift │ │ └── String+Extensions.swift │ │ ├── ModuleError.swift │ │ └── MoviesCoordinatorProtocol.swift └── Tests │ └── CommonsTests │ └── CommonsTests.swift ├── DatabaseKit ├── .gitignore ├── Package.swift ├── Sources │ └── DatabaseKit │ │ ├── DatabaseProtocol.swift │ │ └── Realm │ │ ├── MovieEntity.swift │ │ ├── RealmDatabaseManager.swift │ │ └── RealmObjectWrapper.swift └── Tests │ └── DatabaseKitTests │ └── DatabaseKitTests.swift ├── MANetwork ├── .gitignore ├── Package.swift ├── Sources │ └── MANetwork │ │ ├── APIRequestConfiguration.swift │ │ ├── Base │ │ ├── BaseAPIClient.swift │ │ └── BaseAPIRequest.swift │ │ ├── Extensions │ │ ├── Constants.swift │ │ ├── Data+Extensions.swift │ │ └── Dictionary+Extensions.swift │ │ └── Models │ │ ├── HTTPMethod.swift │ │ ├── RepositoryError.swift │ │ ├── SessionDataTaskError.swift │ │ ├── SessionDataTaskErrorResponse.swift │ │ └── UploadMediaFile.swift └── Tests │ └── MANetworkTests │ └── MANetworkTests.swift ├── MoviesList-MVVM-SwiftUI.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcuserdata │ └── ahmedmenaim.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── MoviesList-MVVM-SwiftUI ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Modules │ ├── Coordinator │ │ ├── MoviesCoordinator.swift │ │ └── MoviesCoordinatorView.swift │ ├── MovieDetailsModule │ │ ├── .gitignore │ │ ├── Package.swift │ │ ├── Sources │ │ │ └── MovieDetailsModule │ │ │ │ ├── Data │ │ │ │ ├── Models │ │ │ │ │ ├── MovieDetailsNetworkResponse.swift │ │ │ │ │ ├── MovieDetailsRepositoryModel.swift │ │ │ │ │ └── MovieDetailsViewState.swift │ │ │ │ ├── Network │ │ │ │ │ ├── MovieDetailsAPIClient.swift │ │ │ │ │ └── MovieDetailsAPIRequest.swift │ │ │ │ └── Repository │ │ │ │ │ ├── MovieDetailsRepository.swift │ │ │ │ │ └── MovieDetailsRepositoryProtocol.swift │ │ │ │ ├── Domain │ │ │ │ └── UseCase │ │ │ │ │ ├── MovieDetailsUseCase.swift │ │ │ │ │ └── MovieDetailsUseCaseProtocol.swift │ │ │ │ ├── MovieDetailsModuleFactory.swift │ │ │ │ └── Presentation │ │ │ │ ├── View │ │ │ │ └── MovieDetailsView.swift │ │ │ │ └── ViewModel │ │ │ │ └── MovieDetailsViewModel.swift │ │ └── Tests │ │ │ └── MovieDetailsModuleTests │ │ │ ├── Mocks │ │ │ ├── APIClient │ │ │ │ └── MockMovieDetailsAPIClient.swift │ │ │ ├── MockCoordinator.swift │ │ │ ├── Repository │ │ │ │ └── MockMovieDetailsRepository.swift │ │ │ └── UseCase │ │ │ │ └── MockMovieDetailsUseCase.swift │ │ │ ├── MovieDetailsRepositoryTests.swift │ │ │ ├── MovieDetailsUseCaseTests.swift │ │ │ ├── MovieDetailsViewModelTests.swift │ │ │ └── Resources │ │ │ └── MockMovieDetailsNetworkResponse.json │ └── MoviesModule │ │ ├── .gitignore │ │ ├── Package.swift │ │ ├── Sources │ │ └── MoviesModule │ │ │ ├── Data │ │ │ ├── Models │ │ │ │ ├── MovieRepositoryModel.swift │ │ │ │ ├── MovieViewState.swift │ │ │ │ └── MoviesNetworkResponse.swift │ │ │ ├── Network │ │ │ │ ├── MoviesAPIClient.swift │ │ │ │ └── MoviesAPIRequest.swift │ │ │ └── Repository │ │ │ │ ├── MoviesRepository.swift │ │ │ │ └── MoviesRepositoryProtocol.swift │ │ │ ├── Domain │ │ │ └── UseCase │ │ │ │ ├── MoviesUseCase.swift │ │ │ │ └── MoviesUseCaseProtocol.swift │ │ │ ├── MoviesModuleFactory.swift │ │ │ └── Presentation │ │ │ ├── ViewModel │ │ │ └── MoviesViewModel.swift │ │ │ └── Views │ │ │ ├── GenresFilter.swift │ │ │ ├── MoviesView.swift │ │ │ └── SearchBar.swift │ │ └── Tests │ │ └── MoviesModuleTests │ │ └── MoviesModuleTests.swift ├── MoviesList_MVVM_SwiftUIApp.swift └── Preview Content │ └── Preview Assets.xcassets │ └── Contents.json ├── MoviesLookups ├── .gitignore ├── Package.swift ├── Sources │ └── MoviesLookups │ │ └── Genres │ │ ├── Models │ │ ├── GenreNetworkResponse.swift │ │ └── GenreRepositoryModel.swift │ │ ├── Network │ │ ├── GenreLookupAPIClient.swift │ │ └── GenreLookupAPIRequest.swift │ │ └── Repository │ │ ├── GenreRepository.swift │ │ └── GenreRepositoryProtocol.swift └── Tests │ └── MoviesLookupsTests │ └── MoviesLookupsTests.swift └── README.md /Commons/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/.gitignore -------------------------------------------------------------------------------- /Commons/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Package.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/Constants.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/Constants.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/DateFormat.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/DateFormat.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/Extensions/Date+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/Extensions/Date+Extensions.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/Extensions/Print+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/Extensions/Print+Extensions.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/Extensions/String+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/Extensions/String+Extensions.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/ModuleError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/ModuleError.swift -------------------------------------------------------------------------------- /Commons/Sources/Commons/MoviesCoordinatorProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Sources/Commons/MoviesCoordinatorProtocol.swift -------------------------------------------------------------------------------- /Commons/Tests/CommonsTests/CommonsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/Commons/Tests/CommonsTests/CommonsTests.swift -------------------------------------------------------------------------------- /DatabaseKit/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/.gitignore -------------------------------------------------------------------------------- /DatabaseKit/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/Package.swift -------------------------------------------------------------------------------- /DatabaseKit/Sources/DatabaseKit/DatabaseProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/Sources/DatabaseKit/DatabaseProtocol.swift -------------------------------------------------------------------------------- /DatabaseKit/Sources/DatabaseKit/Realm/MovieEntity.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/Sources/DatabaseKit/Realm/MovieEntity.swift -------------------------------------------------------------------------------- /DatabaseKit/Sources/DatabaseKit/Realm/RealmDatabaseManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/Sources/DatabaseKit/Realm/RealmDatabaseManager.swift -------------------------------------------------------------------------------- /DatabaseKit/Sources/DatabaseKit/Realm/RealmObjectWrapper.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/Sources/DatabaseKit/Realm/RealmObjectWrapper.swift -------------------------------------------------------------------------------- /DatabaseKit/Tests/DatabaseKitTests/DatabaseKitTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/DatabaseKit/Tests/DatabaseKitTests/DatabaseKitTests.swift -------------------------------------------------------------------------------- /MANetwork/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/.gitignore -------------------------------------------------------------------------------- /MANetwork/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Package.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/APIRequestConfiguration.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/APIRequestConfiguration.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Base/BaseAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Base/BaseAPIClient.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Base/BaseAPIRequest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Base/BaseAPIRequest.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Extensions/Constants.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Extensions/Constants.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Extensions/Data+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Extensions/Data+Extensions.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Extensions/Dictionary+Extensions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Extensions/Dictionary+Extensions.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Models/HTTPMethod.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Models/HTTPMethod.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Models/RepositoryError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Models/RepositoryError.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Models/SessionDataTaskError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Models/SessionDataTaskError.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Models/SessionDataTaskErrorResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Models/SessionDataTaskErrorResponse.swift -------------------------------------------------------------------------------- /MANetwork/Sources/MANetwork/Models/UploadMediaFile.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Sources/MANetwork/Models/UploadMediaFile.swift -------------------------------------------------------------------------------- /MANetwork/Tests/MANetworkTests/MANetworkTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MANetwork/Tests/MANetworkTests/MANetworkTests.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI.xcodeproj/xcuserdata/ahmedmenaim.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI.xcodeproj/xcuserdata/ahmedmenaim.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/Coordinator/MoviesCoordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/Coordinator/MoviesCoordinator.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/Coordinator/MoviesCoordinatorView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/Coordinator/MoviesCoordinatorView.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/.gitignore -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Package.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Models/MovieDetailsNetworkResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Models/MovieDetailsNetworkResponse.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Models/MovieDetailsRepositoryModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Models/MovieDetailsRepositoryModel.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Models/MovieDetailsViewState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Models/MovieDetailsViewState.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Network/MovieDetailsAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Network/MovieDetailsAPIClient.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Network/MovieDetailsAPIRequest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Network/MovieDetailsAPIRequest.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Repository/MovieDetailsRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Repository/MovieDetailsRepository.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Repository/MovieDetailsRepositoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Data/Repository/MovieDetailsRepositoryProtocol.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Domain/UseCase/MovieDetailsUseCase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Domain/UseCase/MovieDetailsUseCase.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Domain/UseCase/MovieDetailsUseCaseProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Domain/UseCase/MovieDetailsUseCaseProtocol.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/MovieDetailsModuleFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/MovieDetailsModuleFactory.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Presentation/View/MovieDetailsView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Presentation/View/MovieDetailsView.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Presentation/ViewModel/MovieDetailsViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Sources/MovieDetailsModule/Presentation/ViewModel/MovieDetailsViewModel.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/APIClient/MockMovieDetailsAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/APIClient/MockMovieDetailsAPIClient.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/MockCoordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/MockCoordinator.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/Repository/MockMovieDetailsRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/Repository/MockMovieDetailsRepository.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/UseCase/MockMovieDetailsUseCase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Mocks/UseCase/MockMovieDetailsUseCase.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/MovieDetailsRepositoryTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/MovieDetailsRepositoryTests.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/MovieDetailsUseCaseTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/MovieDetailsUseCaseTests.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/MovieDetailsViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/MovieDetailsViewModelTests.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Resources/MockMovieDetailsNetworkResponse.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MovieDetailsModule/Tests/MovieDetailsModuleTests/Resources/MockMovieDetailsNetworkResponse.json -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/.gitignore -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Package.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Models/MovieRepositoryModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Models/MovieRepositoryModel.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Models/MovieViewState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Models/MovieViewState.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Models/MoviesNetworkResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Models/MoviesNetworkResponse.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Network/MoviesAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Network/MoviesAPIClient.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Network/MoviesAPIRequest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Network/MoviesAPIRequest.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Repository/MoviesRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Repository/MoviesRepository.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Repository/MoviesRepositoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Data/Repository/MoviesRepositoryProtocol.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Domain/UseCase/MoviesUseCase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Domain/UseCase/MoviesUseCase.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Domain/UseCase/MoviesUseCaseProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Domain/UseCase/MoviesUseCaseProtocol.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/MoviesModuleFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/MoviesModuleFactory.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/ViewModel/MoviesViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/ViewModel/MoviesViewModel.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/Views/GenresFilter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/Views/GenresFilter.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/Views/MoviesView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/Views/MoviesView.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/Views/SearchBar.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Sources/MoviesModule/Presentation/Views/SearchBar.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Tests/MoviesModuleTests/MoviesModuleTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Modules/MoviesModule/Tests/MoviesModuleTests/MoviesModuleTests.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/MoviesList_MVVM_SwiftUIApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/MoviesList_MVVM_SwiftUIApp.swift -------------------------------------------------------------------------------- /MoviesList-MVVM-SwiftUI/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesList-MVVM-SwiftUI/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /MoviesLookups/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/.gitignore -------------------------------------------------------------------------------- /MoviesLookups/Package.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Package.swift -------------------------------------------------------------------------------- /MoviesLookups/Sources/MoviesLookups/Genres/Models/GenreNetworkResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Sources/MoviesLookups/Genres/Models/GenreNetworkResponse.swift -------------------------------------------------------------------------------- /MoviesLookups/Sources/MoviesLookups/Genres/Models/GenreRepositoryModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Sources/MoviesLookups/Genres/Models/GenreRepositoryModel.swift -------------------------------------------------------------------------------- /MoviesLookups/Sources/MoviesLookups/Genres/Network/GenreLookupAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Sources/MoviesLookups/Genres/Network/GenreLookupAPIClient.swift -------------------------------------------------------------------------------- /MoviesLookups/Sources/MoviesLookups/Genres/Network/GenreLookupAPIRequest.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Sources/MoviesLookups/Genres/Network/GenreLookupAPIRequest.swift -------------------------------------------------------------------------------- /MoviesLookups/Sources/MoviesLookups/Genres/Repository/GenreRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Sources/MoviesLookups/Genres/Repository/GenreRepository.swift -------------------------------------------------------------------------------- /MoviesLookups/Sources/MoviesLookups/Genres/Repository/GenreRepositoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Sources/MoviesLookups/Genres/Repository/GenreRepositoryProtocol.swift -------------------------------------------------------------------------------- /MoviesLookups/Tests/MoviesLookupsTests/MoviesLookupsTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/MoviesLookups/Tests/MoviesLookupsTests/MoviesLookupsTests.swift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AhmedMenaim/Modular-MoviesList-SwiftUI-MVVM/HEAD/README.md --------------------------------------------------------------------------------