├── .swiftlint.yml ├── DeezerProject.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── swiftpm │ │ │ └── Package.resolved │ └── xcuserdata │ │ └── stevencurtis.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── stevencurtis.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── DeezerProject ├── AppDelegate.swift ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── ohdear.imageset │ │ ├── Contents.json │ │ ├── ohdear-1.png │ │ └── ohdear.png │ └── placeholder.imageset │ │ ├── Contents.json │ │ ├── placeholder-1x.png │ │ ├── placeholder-2x.png │ │ └── placeholder-3x.png ├── Base.lproj │ └── LaunchScreen.storyboard ├── Constants.swift ├── CoreData │ ├── DataManager.swift │ ├── ErrorModel.swift │ └── Extensions │ │ └── CodingUserInfoKey.swift ├── Data │ ├── API │ │ ├── APIResponse.swift │ │ ├── BrowseApiService.swift │ │ ├── SearchApiService.swift │ │ └── WrappedData.swift │ ├── Interactors │ │ ├── BrowseInteractor.swift │ │ └── SearchInteractor.swift │ ├── Repository │ │ ├── BrowseRepository.swift │ │ └── SearchRepository.swift │ └── Storage │ │ └── FavouritesStorageService.swift ├── FlowRouting │ └── FlowRoutingService.swift ├── Info.plist ├── Interface │ ├── Factories │ │ └── Screens │ │ │ ├── ArtistFlowScreenFactoryProtocol.swift │ │ │ ├── BrowseFlowScreenFactoryProtocol.swift │ │ │ ├── ScreenFactory.swift │ │ │ ├── SearchFlowScreenFactoryProtocol.swift │ │ │ └── TrackFlowScreenFactoryProtocol.swift │ ├── Flows │ │ ├── ArtistFlow.swift │ │ ├── BrowseFlow.swift │ │ ├── Runner │ │ │ └── FlowRunner.swift │ │ ├── SearchFlow.swift │ │ └── TrackFlow.swift │ └── Screens │ │ ├── Album │ │ ├── AlbumViewController.swift │ │ └── AlbumViewModel.swift │ │ ├── Artist │ │ ├── ArtistViewController.swift │ │ └── ArtistViewModel.swift │ │ ├── Genre │ │ ├── GenreViewController.swift │ │ └── GenreViewModel.swift │ │ ├── GenreList │ │ ├── GenreListViewController.swift │ │ └── GenreListViewModel.swift │ │ ├── Menu │ │ ├── BrowseViewController.swift │ │ └── BrowseViewModel.swift │ │ ├── Search │ │ ├── SearchViewController.swift │ │ └── SearchViewModel.swift │ │ └── Track │ │ ├── TrackViewController.swift │ │ └── TrackViewModel.swift ├── LayoutSection.swift ├── Models │ ├── AlbumSearch │ │ └── AlbumSearch.swift │ ├── ArtistSearch │ │ └── ArtistSearch.swift │ ├── Bridging │ │ ├── DependenciesContainerProtocol.swift │ │ └── ErrorHandlerProtocol.swift │ ├── Chart │ │ ├── Chart.swift │ │ └── DBTrackStorage.swift │ ├── Genre │ │ └── Genre.swift │ └── TrackStoreDto.swift ├── MusicPlayer │ ├── MiniPlayer.swift │ ├── MusicTabBar │ │ └── MusicTabBar.swift │ └── TrackPlayer.swift ├── Resources │ └── DeezerProject.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── DeezerProject.xcdatamodel │ │ └── contents ├── SceneDelegate.swift ├── Sections │ ├── BrowseSection.swift │ ├── GridSection.swift │ ├── LayoutSectionProtocol.swift │ └── SearchSection.swift └── Views │ ├── ButtonModel.swift │ ├── HeaderContent.swift │ ├── SongCollectionViewCell.swift │ └── TitleSupplementaryView.swift ├── DeezerProjectTests ├── DeezerProjectTests.swift └── Info.plist ├── DeezerProjectUITests ├── DeezerProjectUITests.swift └── Info.plist ├── Images ├── architecture.png └── vid.gif └── README.md /.swiftlint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/.swiftlint.yml -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/project.xcworkspace/xcuserdata/stevencurtis.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/project.xcworkspace/xcuserdata/stevencurtis.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/xcuserdata/stevencurtis.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/xcuserdata/stevencurtis.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist -------------------------------------------------------------------------------- /DeezerProject.xcodeproj/xcuserdata/stevencurtis.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject.xcodeproj/xcuserdata/stevencurtis.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /DeezerProject/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/AppDelegate.swift -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/ohdear.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/ohdear.imageset/Contents.json -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/ohdear.imageset/ohdear-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/ohdear.imageset/ohdear-1.png -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/ohdear.imageset/ohdear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/ohdear.imageset/ohdear.png -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/placeholder.imageset/Contents.json -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/placeholder.imageset/placeholder-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/placeholder.imageset/placeholder-1x.png -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/placeholder.imageset/placeholder-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/placeholder.imageset/placeholder-2x.png -------------------------------------------------------------------------------- /DeezerProject/Assets.xcassets/placeholder.imageset/placeholder-3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Assets.xcassets/placeholder.imageset/placeholder-3x.png -------------------------------------------------------------------------------- /DeezerProject/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /DeezerProject/Constants.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Constants.swift -------------------------------------------------------------------------------- /DeezerProject/CoreData/DataManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/CoreData/DataManager.swift -------------------------------------------------------------------------------- /DeezerProject/CoreData/ErrorModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/CoreData/ErrorModel.swift -------------------------------------------------------------------------------- /DeezerProject/CoreData/Extensions/CodingUserInfoKey.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/CoreData/Extensions/CodingUserInfoKey.swift -------------------------------------------------------------------------------- /DeezerProject/Data/API/APIResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/API/APIResponse.swift -------------------------------------------------------------------------------- /DeezerProject/Data/API/BrowseApiService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/API/BrowseApiService.swift -------------------------------------------------------------------------------- /DeezerProject/Data/API/SearchApiService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/API/SearchApiService.swift -------------------------------------------------------------------------------- /DeezerProject/Data/API/WrappedData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/API/WrappedData.swift -------------------------------------------------------------------------------- /DeezerProject/Data/Interactors/BrowseInteractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/Interactors/BrowseInteractor.swift -------------------------------------------------------------------------------- /DeezerProject/Data/Interactors/SearchInteractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/Interactors/SearchInteractor.swift -------------------------------------------------------------------------------- /DeezerProject/Data/Repository/BrowseRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/Repository/BrowseRepository.swift -------------------------------------------------------------------------------- /DeezerProject/Data/Repository/SearchRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/Repository/SearchRepository.swift -------------------------------------------------------------------------------- /DeezerProject/Data/Storage/FavouritesStorageService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Data/Storage/FavouritesStorageService.swift -------------------------------------------------------------------------------- /DeezerProject/FlowRouting/FlowRoutingService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/FlowRouting/FlowRoutingService.swift -------------------------------------------------------------------------------- /DeezerProject/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Info.plist -------------------------------------------------------------------------------- /DeezerProject/Interface/Factories/Screens/ArtistFlowScreenFactoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Factories/Screens/ArtistFlowScreenFactoryProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Factories/Screens/BrowseFlowScreenFactoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Factories/Screens/BrowseFlowScreenFactoryProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Factories/Screens/ScreenFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Factories/Screens/ScreenFactory.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Factories/Screens/SearchFlowScreenFactoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Factories/Screens/SearchFlowScreenFactoryProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Factories/Screens/TrackFlowScreenFactoryProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Factories/Screens/TrackFlowScreenFactoryProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Flows/ArtistFlow.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Flows/ArtistFlow.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Flows/BrowseFlow.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Flows/BrowseFlow.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Flows/Runner/FlowRunner.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Flows/Runner/FlowRunner.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Flows/SearchFlow.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Flows/SearchFlow.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Flows/TrackFlow.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Flows/TrackFlow.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Album/AlbumViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Album/AlbumViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Album/AlbumViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Album/AlbumViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Artist/ArtistViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Artist/ArtistViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Artist/ArtistViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Artist/ArtistViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Genre/GenreViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Genre/GenreViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Genre/GenreViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Genre/GenreViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/GenreList/GenreListViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/GenreList/GenreListViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/GenreList/GenreListViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/GenreList/GenreListViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Menu/BrowseViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Menu/BrowseViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Menu/BrowseViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Menu/BrowseViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Search/SearchViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Search/SearchViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Search/SearchViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Search/SearchViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Track/TrackViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Track/TrackViewController.swift -------------------------------------------------------------------------------- /DeezerProject/Interface/Screens/Track/TrackViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Interface/Screens/Track/TrackViewModel.swift -------------------------------------------------------------------------------- /DeezerProject/LayoutSection.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/LayoutSection.swift -------------------------------------------------------------------------------- /DeezerProject/Models/AlbumSearch/AlbumSearch.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/AlbumSearch/AlbumSearch.swift -------------------------------------------------------------------------------- /DeezerProject/Models/ArtistSearch/ArtistSearch.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/ArtistSearch/ArtistSearch.swift -------------------------------------------------------------------------------- /DeezerProject/Models/Bridging/DependenciesContainerProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/Bridging/DependenciesContainerProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Models/Bridging/ErrorHandlerProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/Bridging/ErrorHandlerProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Models/Chart/Chart.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/Chart/Chart.swift -------------------------------------------------------------------------------- /DeezerProject/Models/Chart/DBTrackStorage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/Chart/DBTrackStorage.swift -------------------------------------------------------------------------------- /DeezerProject/Models/Genre/Genre.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/Genre/Genre.swift -------------------------------------------------------------------------------- /DeezerProject/Models/TrackStoreDto.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Models/TrackStoreDto.swift -------------------------------------------------------------------------------- /DeezerProject/MusicPlayer/MiniPlayer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/MusicPlayer/MiniPlayer.swift -------------------------------------------------------------------------------- /DeezerProject/MusicPlayer/MusicTabBar/MusicTabBar.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/MusicPlayer/MusicTabBar/MusicTabBar.swift -------------------------------------------------------------------------------- /DeezerProject/MusicPlayer/TrackPlayer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/MusicPlayer/TrackPlayer.swift -------------------------------------------------------------------------------- /DeezerProject/Resources/DeezerProject.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Resources/DeezerProject.xcdatamodeld/.xccurrentversion -------------------------------------------------------------------------------- /DeezerProject/Resources/DeezerProject.xcdatamodeld/DeezerProject.xcdatamodel/contents: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Resources/DeezerProject.xcdatamodeld/DeezerProject.xcdatamodel/contents -------------------------------------------------------------------------------- /DeezerProject/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/SceneDelegate.swift -------------------------------------------------------------------------------- /DeezerProject/Sections/BrowseSection.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Sections/BrowseSection.swift -------------------------------------------------------------------------------- /DeezerProject/Sections/GridSection.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Sections/GridSection.swift -------------------------------------------------------------------------------- /DeezerProject/Sections/LayoutSectionProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Sections/LayoutSectionProtocol.swift -------------------------------------------------------------------------------- /DeezerProject/Sections/SearchSection.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Sections/SearchSection.swift -------------------------------------------------------------------------------- /DeezerProject/Views/ButtonModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Views/ButtonModel.swift -------------------------------------------------------------------------------- /DeezerProject/Views/HeaderContent.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Views/HeaderContent.swift -------------------------------------------------------------------------------- /DeezerProject/Views/SongCollectionViewCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Views/SongCollectionViewCell.swift -------------------------------------------------------------------------------- /DeezerProject/Views/TitleSupplementaryView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProject/Views/TitleSupplementaryView.swift -------------------------------------------------------------------------------- /DeezerProjectTests/DeezerProjectTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProjectTests/DeezerProjectTests.swift -------------------------------------------------------------------------------- /DeezerProjectTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProjectTests/Info.plist -------------------------------------------------------------------------------- /DeezerProjectUITests/DeezerProjectUITests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProjectUITests/DeezerProjectUITests.swift -------------------------------------------------------------------------------- /DeezerProjectUITests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/DeezerProjectUITests/Info.plist -------------------------------------------------------------------------------- /Images/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/Images/architecture.png -------------------------------------------------------------------------------- /Images/vid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/Images/vid.gif -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stevencurtis/DeezerMVVMArchitectureExample/HEAD/README.md --------------------------------------------------------------------------------