diff --git a/Frameworks/Feed/Bundle/Sources/UI/Views/FeedUnavailableView.swift b/Frameworks/Feed/Bundle/Sources/UI/Views/FeedUnavailableView.swift new file mode 100644 index 0000000..0c7cf47 --- /dev/null +++ b/Frameworks/Feed/Bundle/Sources/UI/Views/FeedUnavailableView.swift @@ -0,0 +1,47 @@ +// +// FeedUnavailableView.swift +// Feed +// +// Created by Javier Cicchelli on 22/03/2024. +// Copyright © 2024 Röck+Cöde. All rights reserved. +// + +import ReviewsUIKit +import SwiftUI +import UIKit + + +final class FeedUnavailableView: UIHostingController { + + // MARK: Initialisers + convenience init( + systemImage: String, + title: String, + description: String, + button: String? = nil, + action: (() -> Void)? = nil + ) { + self.init(rootView: .init( + systemImage: systemImage, + title: title, + description: description, + button: button, + action: action + )) + } + + // MARK: Functions + override func viewSafeAreaInsetsDidChange() { + super.viewSafeAreaInsetsDidChange() + + if view.safeAreaInsets.bottom > 0 { + additionalSafeAreaInsets = .init( + top: 0, + left: 0, + bottom: -view.safeAreaInsets.bottom, + right: 0 + ) + } + } + +} diff --git a/Reviews.xcodeproj/project.pbxproj b/Reviews.xcodeproj/project.pbxproj index d05c3f5..19b080a 100644 --- a/Reviews.xcodeproj/project.pbxproj +++ b/Reviews.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 028134712BACC8CC0074AB4B /* FeedListConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134702BACC8CC0074AB4B /* FeedListConfiguration.swift */; }; 028134822BACCC780074AB4B /* FeedListCoordination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134812BACCC770074AB4B /* FeedListCoordination.swift */; }; 028134842BACD0B20074AB4B /* FeedItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134832BACD0B20074AB4B /* FeedItemCoordinator.swift */; }; + 0281348A2BAD08AB0074AB4B /* FeedUnavailableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 028134892BAD08AB0074AB4B /* FeedUnavailableView.swift */; }; 02909E792BAB6B0200710E14 /* FilterOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02909E782BAB6B0200710E14 /* FilterOption.swift */; }; 02909E7B2BAB6D2E00710E14 /* Bundle+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02909E7A2BAB6D2E00710E14 /* Bundle+Constants.swift */; }; 02909E7D2BAB7FFE00710E14 /* Review+DTOs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02909E7C2BAB7FFE00710E14 /* Review+DTOs.swift */; }; @@ -68,6 +69,7 @@ 028134702BACC8CC0074AB4B /* FeedListConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListConfiguration.swift; sourceTree = ""; }; 028134812BACCC770074AB4B /* FeedListCoordination.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListCoordination.swift; sourceTree = ""; }; 028134832BACD0B20074AB4B /* FeedItemCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedItemCoordinator.swift; sourceTree = ""; }; + 028134892BAD08AB0074AB4B /* FeedUnavailableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedUnavailableView.swift; sourceTree = ""; }; 02909E782BAB6B0200710E14 /* FilterOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterOption.swift; sourceTree = ""; }; 02909E7A2BAB6D2E00710E14 /* Bundle+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+Constants.swift"; sourceTree = ""; }; 02909E7C2BAB7FFE00710E14 /* Review+DTOs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Review+DTOs.swift"; sourceTree = ""; }; @@ -168,6 +170,7 @@ children = ( 0220ADA22BA90646001E6A9F /* FeedItemView.swift */, 02EACF312BABB23A00FF8ECD /* TopWordsView.swift */, + 028134892BAD08AB0074AB4B /* FeedUnavailableView.swift */, ); path = Views; sourceTree = ""; @@ -498,6 +501,7 @@ 02DC7FAC2BA51B4C000EEEBE /* FeedItemViewController.swift in Sources */, 02909E7B2BAB6D2E00710E14 /* Bundle+Constants.swift in Sources */, 02EACF2E2BABA34600FF8ECD /* FeedItemCell.swift in Sources */, + 0281348A2BAD08AB0074AB4B /* FeedUnavailableView.swift in Sources */, 028134842BACD0B20074AB4B /* FeedItemCoordinator.swift in Sources */, 02909E7D2BAB7FFE00710E14 /* Review+DTOs.swift in Sources */, 0220ADA32BA90646001E6A9F /* FeedItemView.swift in Sources */,