Showing
33 changed files
with
49 additions
and
51 deletions
No preview for this file type
| ... | ... | @@ -10,7 +10,7 @@ import UIKit |
| 10 | 10 | import Realm |
| 11 | 11 | import RealmSwift |
| 12 | 12 | |
| 13 | -class BrowserTabDataBase: Object { | |
| 13 | +final class BrowserTabDataBase: Object { | |
| 14 | 14 | @Persisted(primaryKey: true) var tabId: String = UUID().uuidString |
| 15 | 15 | @Persisted var tabTitle: String |
| 16 | 16 | @Persisted var TabUrl: String | ... | ... |
| ... | ... | @@ -10,7 +10,7 @@ import UIKit |
| 10 | 10 | import Realm |
| 11 | 11 | import RealmSwift |
| 12 | 12 | |
| 13 | -class HistoryDataBase: Object { | |
| 13 | +final class HistoryDataBase: Object { | |
| 14 | 14 | @Persisted(primaryKey: true) var historyCellId: String = UUID().uuidString |
| 15 | 15 | @Persisted var siteTitle: String |
| 16 | 16 | @Persisted var siteUrl: String | ... | ... |
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 29.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 7 | + | |
| 8 | 8 | import UIKit |
| 9 | 9 | import RealmSwift |
| 10 | 10 | |
| ... | ... | @@ -34,6 +34,7 @@ final class HistoryViewController: UIViewController { |
| 34 | 34 | override func viewDidLoad() { |
| 35 | 35 | super.viewDidLoad() |
| 36 | 36 | |
| 37 | + historyData = HistoryDBManager.shared.getHistoryDataForTableView() | |
| 37 | 38 | initViewController() |
| 38 | 39 | } |
| 39 | 40 | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 29.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | import SnapKit |
| ... | ... | @@ -67,26 +66,26 @@ final class HistoryTableViewCell: UITableViewCell { |
| 67 | 66 | |
| 68 | 67 | private func setupConstraints() { |
| 69 | 68 | searchImageLogo.snp.makeConstraints { make in |
| 70 | - make.leading.equalToSuperview().inset(8.sizeW) | |
| 71 | 69 | make.top.equalToSuperview().inset(8.sizeH) |
| 70 | + make.leading.equalToSuperview().inset(8.sizeW) | |
| 72 | 71 | make.height.equalTo(18.sizeW) |
| 73 | 72 | make.width.equalTo(18.sizeW) |
| 74 | 73 | } |
| 75 | 74 | |
| 76 | 75 | lastVisitSiteLabel.snp.makeConstraints { make in |
| 76 | + make.top.equalToSuperview().inset(8.sizeH) | |
| 77 | 77 | make.leading.equalTo(searchImageLogo.snp.trailing).offset(8.sizeW) |
| 78 | 78 | make.trailing.equalTo(lastVisitDateLabel.snp.leading).offset(-8.sizeW) |
| 79 | - make.top.equalToSuperview().inset(8.sizeH) | |
| 80 | 79 | } |
| 81 | 80 | |
| 82 | 81 | lastVisitDateLabel.snp.makeConstraints { make in |
| 83 | - make.trailing.equalToSuperview().inset(8.sizeW) | |
| 84 | 82 | make.top.equalToSuperview().inset(8.sizeH) |
| 83 | + make.trailing.equalToSuperview().inset(8.sizeW) | |
| 85 | 84 | } |
| 86 | 85 | |
| 87 | 86 | lastVisitSiteUrlLabel.snp.makeConstraints { make in |
| 88 | - make.leading.equalToSuperview().offset(34.sizeW) | |
| 89 | 87 | make.top.equalTo(lastVisitSiteLabel.snp.bottom).offset(4.sizeH) |
| 88 | + make.leading.equalToSuperview().offset(34.sizeW) | |
| 90 | 89 | make.bottom.equalToSuperview().inset(8.sizeH) |
| 91 | 90 | make.trailing.equalToSuperview().inset(61.sizeW) |
| 92 | 91 | } | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 01.10.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | |
| ... | ... | @@ -14,6 +13,7 @@ final class HistorySearchBarView: UIView { |
| 14 | 13 | let magnifyImage = UIImage(systemName: "magnifyingglass")?.withTintColor(.gray, renderingMode: .alwaysOriginal) |
| 15 | 14 | obj.image = magnifyImage |
| 16 | 15 | obj.contentMode = .scaleAspectFit |
| 16 | + | |
| 17 | 17 | return obj |
| 18 | 18 | }() |
| 19 | 19 | |
| ... | ... | @@ -21,6 +21,7 @@ final class HistorySearchBarView: UIView { |
| 21 | 21 | let obj = UITextField() |
| 22 | 22 | obj.text = StringConstants.search |
| 23 | 23 | obj.textColor = ColorConstants.gray |
| 24 | + | |
| 24 | 25 | return obj |
| 25 | 26 | }() |
| 26 | 27 | |
| ... | ... | @@ -43,14 +44,14 @@ final class HistorySearchBarView: UIView { |
| 43 | 44 | |
| 44 | 45 | private func setupConstraints() { |
| 45 | 46 | searchImageView.snp.makeConstraints { make in |
| 46 | - make.leading.equalToSuperview().offset(16.sizeW) | |
| 47 | 47 | make.top.bottom.equalToSuperview().inset(8.sizeH) |
| 48 | + make.leading.equalToSuperview().offset(16.sizeW) | |
| 48 | 49 | make.height.equalTo(16.sizeH) |
| 49 | 50 | } |
| 50 | 51 | searchTextFieldView.snp.makeConstraints { make in |
| 52 | + make.top.bottom.equalToSuperview().inset(8.sizeH) | |
| 51 | 53 | make.leading.equalTo(searchImageView).offset(32.sizeW) |
| 52 | 54 | make.trailing.equalToSuperview().offset(-16.sizeW) |
| 53 | - make.top.bottom.equalToSuperview().inset(8.sizeH) | |
| 54 | 55 | } |
| 55 | 56 | } |
| 56 | 57 | } | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 29.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | |
| ... | ... | @@ -22,11 +21,13 @@ final class HistoryToolbarView: UIView { |
| 22 | 21 | let menuItems: [UIMenuElement] = menuCases.allCases.map { $0.action } |
| 23 | 22 | obj.menu = UIMenu(title: StringConstants.menuTitle, children: menuItems) |
| 24 | 23 | obj.showsMenuAsPrimaryAction = true |
| 24 | + | |
| 25 | 25 | return obj |
| 26 | 26 | }() |
| 27 | 27 | |
| 28 | 28 | override init(frame: CGRect) { |
| 29 | 29 | super.init(frame: frame) |
| 30 | + | |
| 30 | 31 | setupUI() |
| 31 | 32 | } |
| 32 | 33 | |
| ... | ... | @@ -43,9 +44,9 @@ final class HistoryToolbarView: UIView { |
| 43 | 44 | |
| 44 | 45 | private func setupConstraints() { |
| 45 | 46 | cleanHistoryButton.snp.makeConstraints { make in |
| 47 | + make.top.bottom.equalToSuperview() | |
| 46 | 48 | make.trailing.equalToSuperview().inset(20.sizeW) |
| 47 | 49 | make.height.equalTo(20.sizeH) |
| 48 | - make.top.bottom.equalToSuperview() | |
| 49 | 50 | } |
| 50 | 51 | } |
| 51 | 52 | } | ... | ... |
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 29.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 7 | + | |
| 8 | 8 | import UIKit |
| 9 | 9 | |
| 10 | 10 | final class HistoryView: UIView { |
| ... | ... | @@ -12,22 +12,26 @@ final class HistoryView: UIView { |
| 12 | 12 | let obj = HistorySearchBarView() |
| 13 | 13 | obj.layer.cornerRadius = 10 |
| 14 | 14 | obj.backgroundColor = UIColor(red: 0.913, green: 0.913, blue: 0.947, alpha: 1) |
| 15 | + | |
| 15 | 16 | return obj |
| 16 | 17 | }() |
| 17 | 18 | |
| 18 | 19 | let historyTabsTableView: UITableView = { |
| 19 | 20 | let obj = UITableView() |
| 20 | 21 | obj.separatorStyle = .none |
| 22 | + | |
| 21 | 23 | return obj |
| 22 | 24 | }() |
| 23 | 25 | |
| 24 | 26 | let historyToolbarView: HistoryToolbarView = { |
| 25 | 27 | let obj = HistoryToolbarView() |
| 28 | + | |
| 26 | 29 | return obj |
| 27 | 30 | }() |
| 28 | 31 | |
| 29 | 32 | override init(frame: CGRect) { |
| 30 | 33 | super.init(frame: frame) |
| 34 | + | |
| 31 | 35 | setupUI() |
| 32 | 36 | } |
| 33 | 37 | ... | ... |
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 05.10.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 7 | + | |
| 8 | 8 | |
| 9 | 9 | import UIKit |
| 10 | 10 | import WebKit |
| ... | ... | @@ -39,7 +39,7 @@ final class SearchResultViewController: UIViewController { |
| 39 | 39 | urlChecker(searchLink) |
| 40 | 40 | setupAdBlocker() |
| 41 | 41 | } |
| 42 | - | |
| 42 | + | |
| 43 | 43 | override func viewIsAppearing(_ animated: Bool) { |
| 44 | 44 | navigationController?.isNavigationBarHidden = true |
| 45 | 45 | } |
| ... | ... | @@ -47,8 +47,8 @@ final class SearchResultViewController: UIViewController { |
| 47 | 47 | |
| 48 | 48 | extension SearchResultViewController { |
| 49 | 49 | private func urlChecker(_ url: String) { |
| 50 | - let request = URLRequest(url: URL(string: url) ?? URL(fileURLWithPath: "")) | |
| 51 | - mainView.searchResultView.load(request) | |
| 50 | + let request = URLRequest(url: URL(string: url) ?? URL(fileURLWithPath: "")) | |
| 51 | + mainView.searchResultView.load(request) | |
| 52 | 52 | } |
| 53 | 53 | } |
| 54 | 54 | |
| ... | ... | @@ -56,17 +56,17 @@ extension SearchResultViewController { |
| 56 | 56 | //MARK: AdBlocker |
| 57 | 57 | extension SearchResultViewController { |
| 58 | 58 | private func setupAdBlocker() { |
| 59 | - let userDefaultsValue = CachingManager.shared.isAdBlocking | |
| 60 | - if userDefaultsValue { | |
| 59 | + let userDefaultsAdblockKey = CachingManager.shared.isAdBlocking | |
| 60 | + if userDefaultsAdblockKey { | |
| 61 | 61 | WKContentRuleListStore.default().getAvailableContentRuleListIdentifiers { res in |
| 62 | - if let url = Bundle.main.url(forResource: "blockerList", withExtension: "json"), | |
| 63 | - let str = try? String(contentsOf: url) { | |
| 64 | - WKContentRuleListStore.default().compileContentRuleList(forIdentifier: "blockerList", encodedContentRuleList: str) { list, error in | |
| 65 | - if let list { | |
| 66 | - self.mainView.searchResultView.configuration.userContentController.add(list) | |
| 67 | - } | |
| 62 | + if let url = Bundle.main.url(forResource: "blockerList", withExtension: "json"), | |
| 63 | + let str = try? String(contentsOf: url) { | |
| 64 | + WKContentRuleListStore.default().compileContentRuleList(forIdentifier: "blockerList", encodedContentRuleList: str) { list, error in | |
| 65 | + if let list { | |
| 66 | + self.mainView.searchResultView.configuration.userContentController.add(list) | |
| 68 | 67 | } |
| 69 | 68 | } |
| 69 | + } | |
| 70 | 70 | } |
| 71 | 71 | } else { |
| 72 | 72 | WKContentRuleListStore.default().getAvailableContentRuleListIdentifiers { res in | ... | ... |
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 05.10.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 7 | + | |
| 8 | 8 | import UIKit |
| 9 | 9 | import WebKit |
| 10 | 10 | |
| ... | ... | @@ -13,6 +13,7 @@ final class SearchResultView: UIView { |
| 13 | 13 | let obj = WKWebView() |
| 14 | 14 | obj.allowsBackForwardNavigationGestures = true |
| 15 | 15 | obj.allowsLinkPreview = true |
| 16 | + | |
| 16 | 17 | return obj |
| 17 | 18 | }() |
| 18 | 19 | |
| ... | ... | @@ -28,8 +29,8 @@ final class SearchResultView: UIView { |
| 28 | 29 | |
| 29 | 30 | private func setup() { |
| 30 | 31 | backgroundColor = .white |
| 31 | - | |
| 32 | 32 | addSubview(searchResultView) |
| 33 | + | |
| 33 | 34 | setupConstaraints() |
| 34 | 35 | } |
| 35 | 36 | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 29.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | |
| ... | ... | @@ -56,6 +55,7 @@ extension SearchingViewController: UITableViewDelegate, UITableViewDataSource { |
| 56 | 55 | } |
| 57 | 56 | let searchCellData = searchRequestData[indexPath.row] |
| 58 | 57 | cell.model = searchCellData |
| 58 | + | |
| 59 | 59 | return cell |
| 60 | 60 | } |
| 61 | 61 | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 29.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | |
| ... | ... | @@ -62,6 +61,7 @@ final class SearchingTableViewCell: UITableViewCell { |
| 62 | 61 | contentView.addSubview(searchLabel) |
| 63 | 62 | contentView.addSubview(siteLogoImage) |
| 64 | 63 | contentView.addSubview(linkImage) |
| 64 | + | |
| 65 | 65 | setupConstraints() |
| 66 | 66 | } |
| 67 | 67 | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 08.11.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | |
| ... | ... | @@ -15,6 +14,7 @@ final class PrivacyView: UIView { |
| 15 | 14 | obj.numberOfLines = 0 |
| 16 | 15 | obj.textAlignment = .center |
| 17 | 16 | obj.font = FontConstants.semiboldFont_18 |
| 17 | + | |
| 18 | 18 | return obj |
| 19 | 19 | }() |
| 20 | 20 | |
| ... | ... | @@ -23,6 +23,7 @@ final class PrivacyView: UIView { |
| 23 | 23 | obj.text = StringConstants.settingTerms |
| 24 | 24 | obj.numberOfLines = 0 |
| 25 | 25 | obj.font = FontConstants.regularFont_18 |
| 26 | + | |
| 26 | 27 | return obj |
| 27 | 28 | }() |
| 28 | 29 | |
| ... | ... | @@ -32,18 +33,21 @@ final class PrivacyView: UIView { |
| 32 | 33 | obj.layer.cornerRadius = 10 |
| 33 | 34 | obj.setTitle(StringConstants.settingAgreeButtonText, for: .normal) |
| 34 | 35 | obj.setTitleColor(.black, for: .normal) |
| 36 | + | |
| 35 | 37 | return obj |
| 36 | 38 | }() |
| 37 | 39 | |
| 38 | 40 | private let privacyStackView: UIStackView = { |
| 39 | 41 | let obj = UIStackView() |
| 40 | 42 | obj.axis = .vertical |
| 43 | + | |
| 41 | 44 | return obj |
| 42 | 45 | }() |
| 43 | 46 | |
| 44 | 47 | private let privacyScrollView: UIScrollView = { |
| 45 | 48 | let obj = UIScrollView() |
| 46 | 49 | obj.showsVerticalScrollIndicator = false |
| 50 | + | |
| 47 | 51 | return obj |
| 48 | 52 | }() |
| 49 | 53 | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 28.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | import SnapKit |
| ... | ... | @@ -27,6 +26,7 @@ final class OpenedTabsCollectionViewCell: UICollectionViewCell { |
| 27 | 26 | private let siteNameLabel: UILabel = { |
| 28 | 27 | let obj = UILabel() |
| 29 | 28 | obj.font = FontConstants.regularFont_14 |
| 29 | + | |
| 30 | 30 | return obj |
| 31 | 31 | }() |
| 32 | 32 | |
| ... | ... | @@ -34,12 +34,14 @@ final class OpenedTabsCollectionViewCell: UICollectionViewCell { |
| 34 | 34 | let obj = UIView() |
| 35 | 35 | obj.clipsToBounds = true |
| 36 | 36 | obj.layer.cornerRadius = 10 |
| 37 | + | |
| 37 | 38 | return obj |
| 38 | 39 | }() |
| 39 | 40 | |
| 40 | 41 | private let sitePreviewImage: UIImageView = { |
| 41 | 42 | let obj = UIImageView() |
| 42 | 43 | obj.contentMode = .scaleAspectFill |
| 44 | + | |
| 43 | 45 | return obj |
| 44 | 46 | }() |
| 45 | 47 | |
| ... | ... | @@ -48,6 +50,7 @@ final class OpenedTabsCollectionViewCell: UICollectionViewCell { |
| 48 | 50 | obj.setImage(UIImage(systemName: "xmark"), for: .normal) |
| 49 | 51 | obj.contentMode = .scaleAspectFill |
| 50 | 52 | obj.tintColor = .gray |
| 53 | + | |
| 51 | 54 | return obj |
| 52 | 55 | }() |
| 53 | 56 | ... | ... |
| ... | ... | @@ -4,7 +4,6 @@ |
| 4 | 4 | // |
| 5 | 5 | // Created by Artem Talko on 28.09.2023. |
| 6 | 6 | // |
| 7 | -//MARK: Checked | |
| 8 | 7 | |
| 9 | 8 | import UIKit |
| 10 | 9 | import SnapKit |
| ... | ... | @@ -31,6 +30,7 @@ final class TabsView: UIView { |
| 31 | 30 | |
| 32 | 31 | override init(frame: CGRect) { |
| 33 | 32 | super.init(frame: frame) |
| 33 | + | |
| 34 | 34 | setupUI() |
| 35 | 35 | } |
| 36 | 36 | ... | ... |
Please
register
or
login
to post a comment