├── .gitignore ├── LICENSE ├── README.md ├── README_Images ├── CatSaysHi.gif └── ViDRep.001.png ├── Shared ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Source │ ├── App │ │ └── AppResolver.swift │ ├── Controllers │ │ ├── Dispatchers │ │ │ ├── ImageSavingDispatcher.swift │ │ │ └── ImageSearchingDispatcher.swift │ │ └── Reducers │ │ │ └── CatImageSearchTextReducer.swift │ ├── Extensions │ │ ├── AnyCancellable+.swift │ │ ├── Publisher+.swift │ │ └── String+.swift │ ├── Infrastructures │ │ ├── CataasAPIClient.swift │ │ ├── CataasJSONResponse.swift │ │ └── UserDefaultsDatabase.swift │ ├── Models │ │ ├── Data │ │ │ ├── AsyncState.swift │ │ │ ├── CatImage.swift │ │ │ ├── SavedImageList.swift │ │ │ ├── SearchTextInvalidReason.swift │ │ │ └── UserInputData.swift │ │ ├── Error │ │ │ ├── DataSaveLoadError.swift │ │ │ └── GeneralError.swift │ │ ├── Repositories │ │ │ └── AppRepository.swift │ │ └── Typealiases │ │ │ ├── ImageData.swift │ │ │ └── SearchTextInput.swift │ └── Views │ │ ├── Components │ │ └── ImageFillGrid.swift │ │ ├── Routers │ │ ├── AppRouter.swift │ │ └── ViewID.swift │ │ ├── Scenes │ │ ├── ImagePreviewScene.swift │ │ ├── SavedImageListScene.swift │ │ └── SearchScene.swift │ │ └── ViewModifiers │ │ ├── LoadingProgressViewModifier.swift │ │ └── RoutingModifier.swift └── ViDRep_SampleApp.swift ├── Tests iOS ├── Info.plist └── Tests_iOS.swift ├── Tests macOS ├── Info.plist └── Tests_macOS.swift ├── UnitTests Shared ├── Controllers │ ├── Dispatchers │ │ └── ImageSearchingDispatcherTests.swift │ └── Reducers │ │ └── CatImageSearchTextReducerTests.swift ├── Extensions │ ├── AnyCancellableTests.swift │ ├── PublisherTests.swift │ └── StringTests.swift ├── Infrastructures │ └── CataasAPIClientTests.swift ├── Models │ └── Data │ │ └── AsyncStateTests.swift └── Private Extensions │ └── XCTExpect.swift ├── UnitTests iOS └── Info.plist ├── UnitTests macOS └── Info.plist ├── ViDRep-Sample.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ └── ViDRep-Sample (macOS).xcscheme ├── iOS └── Info.plist └── macOS ├── Info.plist └── macOS.entitlements /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/README.md -------------------------------------------------------------------------------- /README_Images/CatSaysHi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/README_Images/CatSaysHi.gif -------------------------------------------------------------------------------- /README_Images/ViDRep.001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/README_Images/ViDRep.001.png -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /Shared/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /Shared/Source/App/AppResolver.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/App/AppResolver.swift -------------------------------------------------------------------------------- /Shared/Source/Controllers/Dispatchers/ImageSavingDispatcher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Controllers/Dispatchers/ImageSavingDispatcher.swift -------------------------------------------------------------------------------- /Shared/Source/Controllers/Dispatchers/ImageSearchingDispatcher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Controllers/Dispatchers/ImageSearchingDispatcher.swift -------------------------------------------------------------------------------- /Shared/Source/Controllers/Reducers/CatImageSearchTextReducer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Controllers/Reducers/CatImageSearchTextReducer.swift -------------------------------------------------------------------------------- /Shared/Source/Extensions/AnyCancellable+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Extensions/AnyCancellable+.swift -------------------------------------------------------------------------------- /Shared/Source/Extensions/Publisher+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Extensions/Publisher+.swift -------------------------------------------------------------------------------- /Shared/Source/Extensions/String+.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Extensions/String+.swift -------------------------------------------------------------------------------- /Shared/Source/Infrastructures/CataasAPIClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Infrastructures/CataasAPIClient.swift -------------------------------------------------------------------------------- /Shared/Source/Infrastructures/CataasJSONResponse.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Infrastructures/CataasJSONResponse.swift -------------------------------------------------------------------------------- /Shared/Source/Infrastructures/UserDefaultsDatabase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Infrastructures/UserDefaultsDatabase.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Data/AsyncState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Data/AsyncState.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Data/CatImage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Data/CatImage.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Data/SavedImageList.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Data/SavedImageList.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Data/SearchTextInvalidReason.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Data/SearchTextInvalidReason.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Data/UserInputData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Data/UserInputData.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Error/DataSaveLoadError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Error/DataSaveLoadError.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Error/GeneralError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Error/GeneralError.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Repositories/AppRepository.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Repositories/AppRepository.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Typealiases/ImageData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Typealiases/ImageData.swift -------------------------------------------------------------------------------- /Shared/Source/Models/Typealiases/SearchTextInput.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Models/Typealiases/SearchTextInput.swift -------------------------------------------------------------------------------- /Shared/Source/Views/Components/ImageFillGrid.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/Components/ImageFillGrid.swift -------------------------------------------------------------------------------- /Shared/Source/Views/Routers/AppRouter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/Routers/AppRouter.swift -------------------------------------------------------------------------------- /Shared/Source/Views/Routers/ViewID.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/Routers/ViewID.swift -------------------------------------------------------------------------------- /Shared/Source/Views/Scenes/ImagePreviewScene.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/Scenes/ImagePreviewScene.swift -------------------------------------------------------------------------------- /Shared/Source/Views/Scenes/SavedImageListScene.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/Scenes/SavedImageListScene.swift -------------------------------------------------------------------------------- /Shared/Source/Views/Scenes/SearchScene.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/Scenes/SearchScene.swift -------------------------------------------------------------------------------- /Shared/Source/Views/ViewModifiers/LoadingProgressViewModifier.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/ViewModifiers/LoadingProgressViewModifier.swift -------------------------------------------------------------------------------- /Shared/Source/Views/ViewModifiers/RoutingModifier.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/Source/Views/ViewModifiers/RoutingModifier.swift -------------------------------------------------------------------------------- /Shared/ViDRep_SampleApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Shared/ViDRep_SampleApp.swift -------------------------------------------------------------------------------- /Tests iOS/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Tests iOS/Info.plist -------------------------------------------------------------------------------- /Tests iOS/Tests_iOS.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Tests iOS/Tests_iOS.swift -------------------------------------------------------------------------------- /Tests macOS/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Tests macOS/Info.plist -------------------------------------------------------------------------------- /Tests macOS/Tests_macOS.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/Tests macOS/Tests_macOS.swift -------------------------------------------------------------------------------- /UnitTests Shared/Controllers/Dispatchers/ImageSearchingDispatcherTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Controllers/Dispatchers/ImageSearchingDispatcherTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Controllers/Reducers/CatImageSearchTextReducerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Controllers/Reducers/CatImageSearchTextReducerTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Extensions/AnyCancellableTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Extensions/AnyCancellableTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Extensions/PublisherTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Extensions/PublisherTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Extensions/StringTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Extensions/StringTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Infrastructures/CataasAPIClientTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Infrastructures/CataasAPIClientTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Models/Data/AsyncStateTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Models/Data/AsyncStateTests.swift -------------------------------------------------------------------------------- /UnitTests Shared/Private Extensions/XCTExpect.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests Shared/Private Extensions/XCTExpect.swift -------------------------------------------------------------------------------- /UnitTests iOS/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests iOS/Info.plist -------------------------------------------------------------------------------- /UnitTests macOS/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/UnitTests macOS/Info.plist -------------------------------------------------------------------------------- /ViDRep-Sample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/ViDRep-Sample.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /ViDRep-Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/ViDRep-Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /ViDRep-Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/ViDRep-Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /ViDRep-Sample.xcodeproj/xcshareddata/xcschemes/ViDRep-Sample (macOS).xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/ViDRep-Sample.xcodeproj/xcshareddata/xcschemes/ViDRep-Sample (macOS).xcscheme -------------------------------------------------------------------------------- /iOS/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/iOS/Info.plist -------------------------------------------------------------------------------- /macOS/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/macOS/Info.plist -------------------------------------------------------------------------------- /macOS/macOS.entitlements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/el-hoshino/ViDRep-Sample/HEAD/macOS/macOS.entitlements --------------------------------------------------------------------------------