Implemented the FilterOption enumeration in the Feed framework.

This commit is contained in:
Javier Cicchelli 2024-03-20 21:20:48 +01:00
parent 249281424f
commit 05c4ed08d9
2 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,102 @@
//
// FilterOption.swift
// ReviewsFeed
//
// Created by Javier Cicchelli on 20/03/2024.
// Copyright © 2024 Röck+Cöde. All rights reserved.
//
import Foundation
import ReviewsFoundationKit
import ReviewsUIKit
import UIKit
enum FilterOption: Int {
case all = 0
case only1Star
case only2Star
case only3Star
case only4Star
case only5Star
}
// MARK: - Computed
extension FilterOption {
var icon: String {
switch self {
case .all: .Icon.starAll
case .only1Star: .Icon.star1
case .only2Star: .Icon.star2
case .only3Star: .Icon.star3
case .only4Star: .Icon.star4
case .only5Star: .Icon.star5
}
}
var text: String {
switch self {
case .all: NSLocalizedString(
.Key.Menu.Action.allReviews,
bundle: .module,
comment: .empty
)
case .only1Star: NSLocalizedString(
.Key.Menu.Action.only1StarReviews,
bundle: .module,
comment: .empty
)
case .only2Star: NSLocalizedString(
.Key.Menu.Action.only2StarReviews,
bundle: .module,
comment: .empty
)
case .only3Star: NSLocalizedString(
.Key.Menu.Action.only3StarReviews,
bundle: .module,
comment: .empty
)
case .only4Star: NSLocalizedString(
.Key.Menu.Action.only4StarReviews,
bundle: .module,
comment: .empty
)
case .only5Star: NSLocalizedString(
.Key.Menu.Action.only5StarReviews,
bundle: .module,
comment: .empty
)
}
}
}
// MARK: - CaseIterable
extension FilterOption: CaseIterable {
// MARK: Computed
static var allCases: [FilterOption] = [
.only1Star,
.only2Star,
.only3Star,
.only4Star,
.only5Star
]
}
// MARK: - String+Constants
private extension String {
enum Key {
enum Menu {
enum Action {
static let allReviews = "common.filter.menu.all-reviews.action.title.text"
static let only1StarReviews = "common.filter.menu.only-1-star-reviews.action.title.text"
static let only2StarReviews = "common.filter.menu.only-2-star-reviews.action.title.text"
static let only3StarReviews = "common.filter.menu.only-3-star-reviews.action.title.text"
static let only4StarReviews = "common.filter.menu.only-4-star-reviews.action.title.text"
static let only5StarReviews = "common.filter.menu.only-5-star-reviews.action.title.text"
}
}
}
}

View File

@ -10,6 +10,7 @@
0220ADA32BA90646001E6A9F /* FeedItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0220ADA22BA90646001E6A9F /* FeedItemCell.swift */; };
023AC7FC2BAA3EC10027D064 /* Int+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 023AC7FB2BAA3EC10027D064 /* Int+Constants.swift */; };
02620B8C2BA89C9A00DE7137 /* FeedViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02620B8B2BA89C9A00DE7137 /* FeedViewModel.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 */; };
02DA924E2BAAE3FD00C47985 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 02DA924D2BAAE3FD00C47985 /* Localizable.xcstrings */; };
02DC7F9F2BA51793000EEEBE /* ReviewsFeed.h in Headers */ = {isa = PBXBuildFile; fileRef = 02DC7F912BA51793000EEEBE /* ReviewsFeed.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -53,6 +54,7 @@
0220ADA22BA90646001E6A9F /* FeedItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedItemCell.swift; sourceTree = "<group>"; };
023AC7FB2BAA3EC10027D064 /* Int+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Constants.swift"; sourceTree = "<group>"; };
02620B8B2BA89C9A00DE7137 /* FeedViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedViewModel.swift; sourceTree = "<group>"; };
02909E782BAB6B0200710E14 /* FilterOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterOption.swift; sourceTree = "<group>"; };
02909E7A2BAB6D2E00710E14 /* Bundle+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+Constants.swift"; sourceTree = "<group>"; };
02DA924D2BAAE3FD00C47985 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ReviewsFeed.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@ -118,6 +120,7 @@
02620B862BA89C0000DE7137 /* Logic */ = {
isa = PBXGroup;
children = (
02909E772BAB6AD500710E14 /* Enumerations */,
023AC7FA2BAA3EB60027D064 /* Extensions */,
02620B8A2BA89C3300DE7137 /* Models */,
02620B872BA89C0700DE7137 /* View Models */,
@ -158,6 +161,14 @@
path = Models;
sourceTree = "<group>";
};
02909E772BAB6AD500710E14 /* Enumerations */ = {
isa = PBXGroup;
children = (
02909E782BAB6B0200710E14 /* FilterOption.swift */,
);
path = Enumerations;
sourceTree = "<group>";
};
02A6DA2F2BA591C000B943E2 /* Bundle */ = {
isa = PBXGroup;
children = (
@ -414,6 +425,7 @@
0220ADA32BA90646001E6A9F /* FeedItemCell.swift in Sources */,
02DC7FAF2BA51B4C000EEEBE /* Review.swift in Sources */,
02DC7FAE2BA51B4C000EEEBE /* FeedListViewController.swift in Sources */,
02909E792BAB6B0200710E14 /* FilterOption.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};